diff options
-rw-r--r-- | 4.6.5/1004_linux-4.6.5.patch | 7262 | ||||
-rw-r--r-- | 4.7.0/0000_README (renamed from 4.6.5/0000_README) | 6 | ||||
-rw-r--r-- | 4.7.0/4420_grsecurity-3.1-4.7-201608131240.patch (renamed from 4.6.5/4420_grsecurity-3.1-4.6.5-201607312210.patch) | 12491 | ||||
-rw-r--r-- | 4.7.0/4425_grsec_remove_EI_PAX.patch (renamed from 4.6.5/4425_grsec_remove_EI_PAX.patch) | 2 | ||||
-rw-r--r-- | 4.7.0/4427_force_XATTR_PAX_tmpfs.patch (renamed from 4.6.5/4427_force_XATTR_PAX_tmpfs.patch) | 12 | ||||
-rw-r--r-- | 4.7.0/4430_grsec-remove-localversion-grsec.patch (renamed from 4.6.5/4430_grsec-remove-localversion-grsec.patch) | 0 | ||||
-rw-r--r-- | 4.7.0/4435_grsec-mute-warnings.patch (renamed from 4.6.5/4435_grsec-mute-warnings.patch) | 2 | ||||
-rw-r--r-- | 4.7.0/4440_grsec-remove-protected-paths.patch (renamed from 4.6.5/4440_grsec-remove-protected-paths.patch) | 0 | ||||
-rw-r--r-- | 4.7.0/4450_grsec-kconfig-default-gids.patch (renamed from 4.6.5/4450_grsec-kconfig-default-gids.patch) | 8 | ||||
-rw-r--r-- | 4.7.0/4465_selinux-avc_audit-log-curr_ip.patch (renamed from 4.6.5/4465_selinux-avc_audit-log-curr_ip.patch) | 0 | ||||
-rw-r--r-- | 4.7.0/4470_disable-compat_vdso.patch (renamed from 4.6.5/4470_disable-compat_vdso.patch) | 2 | ||||
-rw-r--r-- | 4.7.0/4475_emutramp_default_on.patch (renamed from 4.6.5/4475_emutramp_default_on.patch) | 4 |
12 files changed, 6598 insertions, 13191 deletions
diff --git a/4.6.5/1004_linux-4.6.5.patch b/4.6.5/1004_linux-4.6.5.patch deleted file mode 100644 index 98b6b74..0000000 --- a/4.6.5/1004_linux-4.6.5.patch +++ /dev/null @@ -1,7262 +0,0 @@ -diff --git a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 -index 6708c5e..33e96f7 100644 ---- a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 -+++ b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 -@@ -1,4 +1,4 @@ --What /sys/bus/iio/devices/iio:deviceX/in_proximity_raw -+What /sys/bus/iio/devices/iio:deviceX/in_proximity_input - Date: March 2014 - KernelVersion: 3.15 - Contact: Matt Ranostay <mranostay@gmail.com> -diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt -index 8638f61..37eca00 100644 ---- a/Documentation/scsi/scsi_eh.txt -+++ b/Documentation/scsi/scsi_eh.txt -@@ -263,19 +263,23 @@ scmd->allowed. - - 3. scmd recovered - ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd -- - shost->host_failed-- - - clear scmd->eh_eflags - - scsi_setup_cmd_retry() - - move from local eh_work_q to local eh_done_q - LOCKING: none -+ CONCURRENCY: at most one thread per separate eh_work_q to -+ keep queue manipulation lockless - - 4. EH completes - ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper -- layer of failure. -+ layer of failure. May be called concurrently but must have -+ a no more than one thread per separate eh_work_q to -+ manipulate the queue locklessly - - scmd is removed from eh_done_q and scmd->eh_entry is cleared - - if retry is necessary, scmd is requeued using - scsi_queue_insert() - - otherwise, scsi_finish_command() is invoked for scmd -+ - zero shost->host_failed - LOCKING: queue or finish function performs appropriate locking - - -diff --git a/Makefile b/Makefile -index cd37442..7d693a8 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,6 +1,6 @@ - VERSION = 4 - PATCHLEVEL = 6 --SUBLEVEL = 4 -+SUBLEVEL = 5 - EXTRAVERSION = - NAME = Charred Weasel - -diff --git a/arch/arm/boot/dts/armada-385-linksys.dtsi b/arch/arm/boot/dts/armada-385-linksys.dtsi -index 8450944..22f7a13 100644 ---- a/arch/arm/boot/dts/armada-385-linksys.dtsi -+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi -@@ -58,8 +58,8 @@ - soc { - ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 - MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000 -- MBUS_ID(0x09, 0x09) 0 0xf1100000 0x10000 -- MBUS_ID(0x09, 0x05) 0 0xf1110000 0x10000>; -+ MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 -+ MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>; - - internal-regs { - -diff --git a/arch/arm/boot/dts/sun5i-r8-chip.dts b/arch/arm/boot/dts/sun5i-r8-chip.dts -index f6898c6..c937c85 100644 ---- a/arch/arm/boot/dts/sun5i-r8-chip.dts -+++ b/arch/arm/boot/dts/sun5i-r8-chip.dts -@@ -52,7 +52,7 @@ - - / { - model = "NextThing C.H.I.P."; -- compatible = "nextthing,chip", "allwinner,sun5i-r8"; -+ compatible = "nextthing,chip", "allwinner,sun5i-r8", "allwinner,sun5i-a13"; - - aliases { - i2c0 = &i2c0; -diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts -index 68b479b..73c133f 100644 ---- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts -@@ -176,8 +176,6 @@ - }; - - ®_dc1sw { -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; - regulator-name = "vcc-lcd"; - }; - -diff --git a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -index 360adfb..d6ad619 100644 ---- a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -@@ -135,8 +135,6 @@ - - ®_dc1sw { - regulator-name = "vcc-lcd-usb2"; -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; - }; - - ®_dc5ldo { -diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h -index aeddd28..92fd2c8 100644 ---- a/arch/arm/include/asm/pgtable-2level.h -+++ b/arch/arm/include/asm/pgtable-2level.h -@@ -193,6 +193,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr) - - #define pmd_large(pmd) (pmd_val(pmd) & 2) - #define pmd_bad(pmd) (pmd_val(pmd) & 2) -+#define pmd_present(pmd) (pmd_val(pmd)) - - #define copy_pmd(pmdpd,pmdps) \ - do { \ -diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h -index dc46398..7411466 100644 ---- a/arch/arm/include/asm/pgtable-3level.h -+++ b/arch/arm/include/asm/pgtable-3level.h -@@ -211,6 +211,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr) - : !!(pmd_val(pmd) & (val))) - #define pmd_isclear(pmd, val) (!(pmd_val(pmd) & (val))) - -+#define pmd_present(pmd) (pmd_isset((pmd), L_PMD_SECT_VALID)) - #define pmd_young(pmd) (pmd_isset((pmd), PMD_SECT_AF)) - #define pte_special(pte) (pte_isset((pte), L_PTE_SPECIAL)) - static inline pte_t pte_mkspecial(pte_t pte) -@@ -249,10 +250,10 @@ PMD_BIT_FUNC(mkyoung, |= PMD_SECT_AF); - #define pfn_pmd(pfn,prot) (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))) - #define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot) - --/* represent a notpresent pmd by zero, this is used by pmdp_invalidate */ -+/* represent a notpresent pmd by faulting entry, this is used by pmdp_invalidate */ - static inline pmd_t pmd_mknotpresent(pmd_t pmd) - { -- return __pmd(0); -+ return __pmd(pmd_val(pmd) & ~L_PMD_SECT_VALID); - } - - static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) -diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h -index 348caab..d622040 100644 ---- a/arch/arm/include/asm/pgtable.h -+++ b/arch/arm/include/asm/pgtable.h -@@ -182,7 +182,6 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; - #define pgd_offset_k(addr) pgd_offset(&init_mm, addr) - - #define pmd_none(pmd) (!pmd_val(pmd)) --#define pmd_present(pmd) (pmd_val(pmd)) - - static inline pte_t *pmd_page_vaddr(pmd_t pmd) - { -diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c -index dded1b7..72b11d9 100644 ---- a/arch/arm/kvm/arm.c -+++ b/arch/arm/kvm/arm.c -@@ -267,6 +267,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) - kvm_timer_vcpu_terminate(vcpu); - kvm_vgic_vcpu_destroy(vcpu); - kvm_pmu_vcpu_destroy(vcpu); -+ kvm_vcpu_uninit(vcpu); - kmem_cache_free(kvm_vcpu_cache, vcpu); - } - -diff --git a/arch/arm/mach-imx/mach-imx6ul.c b/arch/arm/mach-imx/mach-imx6ul.c -index a38b16b..b56de4b 100644 ---- a/arch/arm/mach-imx/mach-imx6ul.c -+++ b/arch/arm/mach-imx/mach-imx6ul.c -@@ -46,7 +46,7 @@ static int ksz8081_phy_fixup(struct phy_device *dev) - static void __init imx6ul_enet_phy_init(void) - { - if (IS_BUILTIN(CONFIG_PHYLIB)) -- phy_register_fixup_for_uid(PHY_ID_KSZ8081, 0xffffffff, -+ phy_register_fixup_for_uid(PHY_ID_KSZ8081, MICREL_PHY_ID_MASK, - ksz8081_phy_fixup); - } - -diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c -index 7e989d6..474abff 100644 ---- a/arch/arm/mach-mvebu/coherency.c -+++ b/arch/arm/mach-mvebu/coherency.c -@@ -162,22 +162,16 @@ exit: - } - - /* -- * This ioremap hook is used on Armada 375/38x to ensure that PCIe -- * memory areas are mapped as MT_UNCACHED instead of MT_DEVICE. This -- * is needed as a workaround for a deadlock issue between the PCIe -- * interface and the cache controller. -+ * This ioremap hook is used on Armada 375/38x to ensure that all MMIO -+ * areas are mapped as MT_UNCACHED instead of MT_DEVICE. This is -+ * needed for the HW I/O coherency mechanism to work properly without -+ * deadlock. - */ - static void __iomem * --armada_pcie_wa_ioremap_caller(phys_addr_t phys_addr, size_t size, -- unsigned int mtype, void *caller) -+armada_wa_ioremap_caller(phys_addr_t phys_addr, size_t size, -+ unsigned int mtype, void *caller) - { -- struct resource pcie_mem; -- -- mvebu_mbus_get_pcie_mem_aperture(&pcie_mem); -- -- if (pcie_mem.start <= phys_addr && (phys_addr + size) <= pcie_mem.end) -- mtype = MT_UNCACHED; -- -+ mtype = MT_UNCACHED; - return __arm_ioremap_caller(phys_addr, size, mtype, caller); - } - -@@ -186,7 +180,7 @@ static void __init armada_375_380_coherency_init(struct device_node *np) - struct device_node *cache_dn; - - coherency_cpu_base = of_iomap(np, 0); -- arch_ioremap_caller = armada_pcie_wa_ioremap_caller; -+ arch_ioremap_caller = armada_wa_ioremap_caller; - - /* - * We should switch the PL310 to I/O coherency mode only if -diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h -index a307eb6..7f94755 100644 ---- a/arch/arm64/include/asm/ptrace.h -+++ b/arch/arm64/include/asm/ptrace.h -@@ -117,6 +117,8 @@ struct pt_regs { - }; - u64 orig_x0; - u64 syscallno; -+ u64 orig_addr_limit; -+ u64 unused; // maintain 16 byte alignment - }; - - #define arch_has_single_step() (1) -diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c -index 3ae6b31..1abcd88 100644 ---- a/arch/arm64/kernel/asm-offsets.c -+++ b/arch/arm64/kernel/asm-offsets.c -@@ -59,6 +59,7 @@ int main(void) - DEFINE(S_PC, offsetof(struct pt_regs, pc)); - DEFINE(S_ORIG_X0, offsetof(struct pt_regs, orig_x0)); - DEFINE(S_SYSCALLNO, offsetof(struct pt_regs, syscallno)); -+ DEFINE(S_ORIG_ADDR_LIMIT, offsetof(struct pt_regs, orig_addr_limit)); - DEFINE(S_FRAME_SIZE, sizeof(struct pt_regs)); - BLANK(); - DEFINE(MM_CONTEXT_ID, offsetof(struct mm_struct, context.id.counter)); -diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S -index 12e8d2b..6c3b734 100644 ---- a/arch/arm64/kernel/entry.S -+++ b/arch/arm64/kernel/entry.S -@@ -28,6 +28,7 @@ - #include <asm/errno.h> - #include <asm/esr.h> - #include <asm/irq.h> -+#include <asm/memory.h> - #include <asm/thread_info.h> - #include <asm/unistd.h> - -@@ -97,7 +98,14 @@ - mov x29, xzr // fp pointed to user-space - .else - add x21, sp, #S_FRAME_SIZE -- .endif -+ get_thread_info tsk -+ /* Save the task's original addr_limit and set USER_DS (TASK_SIZE_64) */ -+ ldr x20, [tsk, #TI_ADDR_LIMIT] -+ str x20, [sp, #S_ORIG_ADDR_LIMIT] -+ mov x20, #TASK_SIZE_64 -+ str x20, [tsk, #TI_ADDR_LIMIT] -+ ALTERNATIVE(nop, SET_PSTATE_UAO(0), ARM64_HAS_UAO, CONFIG_ARM64_UAO) -+ .endif /* \el == 0 */ - mrs x22, elr_el1 - mrs x23, spsr_el1 - stp lr, x21, [sp, #S_LR] -@@ -128,6 +136,14 @@ - .endm - - .macro kernel_exit, el -+ .if \el != 0 -+ /* Restore the task's original addr_limit. */ -+ ldr x20, [sp, #S_ORIG_ADDR_LIMIT] -+ str x20, [tsk, #TI_ADDR_LIMIT] -+ -+ /* No need to restore UAO, it will be restored from SPSR_EL1 */ -+ .endif -+ - ldp x21, x22, [sp, #S_PC] // load ELR, SPSR - .if \el == 0 - ct_user_enter -@@ -406,7 +422,6 @@ el1_irq: - bl trace_hardirqs_off - #endif - -- get_thread_info tsk - irq_handler - - #ifdef CONFIG_PREEMPT -diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c -index c539208..58651a9 100644 ---- a/arch/arm64/kernel/traps.c -+++ b/arch/arm64/kernel/traps.c -@@ -64,8 +64,7 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom, - - /* - * We need to switch to kernel mode so that we can use __get_user -- * to safely read from kernel space. Note that we now dump the -- * code first, just in case the backtrace kills us. -+ * to safely read from kernel space. - */ - fs = get_fs(); - set_fs(KERNEL_DS); -@@ -111,21 +110,12 @@ static void dump_backtrace_entry(unsigned long where) - print_ip_sym(where); - } - --static void dump_instr(const char *lvl, struct pt_regs *regs) -+static void __dump_instr(const char *lvl, struct pt_regs *regs) - { - unsigned long addr = instruction_pointer(regs); -- mm_segment_t fs; - char str[sizeof("00000000 ") * 5 + 2 + 1], *p = str; - int i; - -- /* -- * We need to switch to kernel mode so that we can use __get_user -- * to safely read from kernel space. Note that we now dump the -- * code first, just in case the backtrace kills us. -- */ -- fs = get_fs(); -- set_fs(KERNEL_DS); -- - for (i = -4; i < 1; i++) { - unsigned int val, bad; - -@@ -139,8 +129,18 @@ static void dump_instr(const char *lvl, struct pt_regs *regs) - } - } - printk("%sCode: %s\n", lvl, str); -+} - -- set_fs(fs); -+static void dump_instr(const char *lvl, struct pt_regs *regs) -+{ -+ if (!user_mode(regs)) { -+ mm_segment_t fs = get_fs(); -+ set_fs(KERNEL_DS); -+ __dump_instr(lvl, regs); -+ set_fs(fs); -+ } else { -+ __dump_instr(lvl, regs); -+ } - } - - static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) -diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c -index 10b79e9..e22849a9 100644 ---- a/arch/arm64/mm/fault.c -+++ b/arch/arm64/mm/fault.c -@@ -284,7 +284,8 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, - } - - if (permission_fault(esr) && (addr < USER_DS)) { -- if (get_fs() == KERNEL_DS) -+ /* regs->orig_addr_limit may be 0 if we entered from EL0 */ -+ if (regs->orig_addr_limit == KERNEL_DS) - die("Accessing user space memory with fs=KERNEL_DS", regs, esr); - - if (!search_exception_tables(regs->pc)) -diff --git a/arch/arm64/mm/flush.c b/arch/arm64/mm/flush.c -index dbd12ea..43a76b0 100644 ---- a/arch/arm64/mm/flush.c -+++ b/arch/arm64/mm/flush.c -@@ -71,10 +71,6 @@ void __sync_icache_dcache(pte_t pte, unsigned long addr) - { - struct page *page = pte_page(pte); - -- /* no flushing needed for anonymous pages */ -- if (!page_mapping(page)) -- return; -- - if (!test_and_set_bit(PG_dcache_clean, &page->flags)) - sync_icache_aliases(page_address(page), - PAGE_SIZE << compound_order(page)); -diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h -index 942b8f6..1907ab3 100644 ---- a/arch/mips/include/asm/kvm_host.h -+++ b/arch/mips/include/asm/kvm_host.h -@@ -336,6 +336,7 @@ struct kvm_mips_tlb { - #define KVM_MIPS_GUEST_TLB_SIZE 64 - struct kvm_vcpu_arch { - void *host_ebase, *guest_ebase; -+ int (*vcpu_run)(struct kvm_run *run, struct kvm_vcpu *vcpu); - unsigned long host_stack; - unsigned long host_gp; - -diff --git a/arch/mips/kvm/interrupt.h b/arch/mips/kvm/interrupt.h -index 4ab4bdf..2143884 100644 ---- a/arch/mips/kvm/interrupt.h -+++ b/arch/mips/kvm/interrupt.h -@@ -28,6 +28,7 @@ - #define MIPS_EXC_MAX 12 - /* XXXSL More to follow */ - -+extern char __kvm_mips_vcpu_run_end[]; - extern char mips32_exception[], mips32_exceptionEnd[]; - extern char mips32_GuestException[], mips32_GuestExceptionEnd[]; - -diff --git a/arch/mips/kvm/locore.S b/arch/mips/kvm/locore.S -index 81687ab..fc93a08 100644 ---- a/arch/mips/kvm/locore.S -+++ b/arch/mips/kvm/locore.S -@@ -227,6 +227,7 @@ FEXPORT(__kvm_mips_load_k0k1) - - /* Jump to guest */ - eret -+EXPORT(__kvm_mips_vcpu_run_end) - - VECTOR(MIPSX(exception), unknown) - /* Find out what mode we came from and jump to the proper handler. */ -diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c -index 70ef1a4..e223cb3 100644 ---- a/arch/mips/kvm/mips.c -+++ b/arch/mips/kvm/mips.c -@@ -314,6 +314,15 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id) - memcpy(gebase + offset, mips32_GuestException, - mips32_GuestExceptionEnd - mips32_GuestException); - -+#ifdef MODULE -+ offset += mips32_GuestExceptionEnd - mips32_GuestException; -+ memcpy(gebase + offset, (char *)__kvm_mips_vcpu_run, -+ __kvm_mips_vcpu_run_end - (char *)__kvm_mips_vcpu_run); -+ vcpu->arch.vcpu_run = gebase + offset; -+#else -+ vcpu->arch.vcpu_run = __kvm_mips_vcpu_run; -+#endif -+ - /* Invalidate the icache for these ranges */ - local_flush_icache_range((unsigned long)gebase, - (unsigned long)gebase + ALIGN(size, PAGE_SIZE)); -@@ -403,7 +412,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) - /* Disable hardware page table walking while in guest */ - htw_stop(); - -- r = __kvm_mips_vcpu_run(run, vcpu); -+ r = vcpu->arch.vcpu_run(run, vcpu); - - /* Re-enable HTW before enabling interrupts */ - htw_start(); -diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c -index b8500b4..bec85055 100644 ---- a/arch/powerpc/kernel/process.c -+++ b/arch/powerpc/kernel/process.c -@@ -1501,6 +1501,16 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp) - current->thread.regs = regs - 1; - } - -+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM -+ /* -+ * Clear any transactional state, we're exec()ing. The cause is -+ * not important as there will never be a recheckpoint so it's not -+ * user visible. -+ */ -+ if (MSR_TM_SUSPENDED(mfmsr())) -+ tm_reclaim_current(0); -+#endif -+ - memset(regs->gpr, 0, sizeof(regs->gpr)); - regs->ctr = 0; - regs->link = 0; -diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c -index ccd2037..6ee4b72 100644 ---- a/arch/powerpc/kernel/prom_init.c -+++ b/arch/powerpc/kernel/prom_init.c -@@ -719,7 +719,7 @@ unsigned char ibm_architecture_vec[] = { - * must match by the macro below. Update the definition if - * the structure layout changes. - */ --#define IBM_ARCH_VEC_NRCORES_OFFSET 125 -+#define IBM_ARCH_VEC_NRCORES_OFFSET 133 - W(NR_CPUS), /* number of cores supported */ - 0, - 0, -diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c -index bd98ce2..3e8865b 100644 ---- a/arch/powerpc/platforms/pseries/iommu.c -+++ b/arch/powerpc/platforms/pseries/iommu.c -@@ -912,7 +912,8 @@ machine_arch_initcall(pseries, find_existing_ddw_windows); - static int query_ddw(struct pci_dev *dev, const u32 *ddw_avail, - struct ddw_query_response *query) - { -- struct eeh_dev *edev; -+ struct device_node *dn; -+ struct pci_dn *pdn; - u32 cfg_addr; - u64 buid; - int ret; -@@ -923,11 +924,10 @@ static int query_ddw(struct pci_dev *dev, const u32 *ddw_avail, - * Retrieve them from the pci device, not the node with the - * dma-window property - */ -- edev = pci_dev_to_eeh_dev(dev); -- cfg_addr = edev->config_addr; -- if (edev->pe_config_addr) -- cfg_addr = edev->pe_config_addr; -- buid = edev->phb->buid; -+ dn = pci_device_to_OF_node(dev); -+ pdn = PCI_DN(dn); -+ buid = pdn->phb->buid; -+ cfg_addr = ((pdn->busno << 16) | (pdn->devfn << 8)); - - ret = rtas_call(ddw_avail[0], 3, 5, (u32 *)query, - cfg_addr, BUID_HI(buid), BUID_LO(buid)); -@@ -941,7 +941,8 @@ static int create_ddw(struct pci_dev *dev, const u32 *ddw_avail, - struct ddw_create_response *create, int page_shift, - int window_shift) - { -- struct eeh_dev *edev; -+ struct device_node *dn; -+ struct pci_dn *pdn; - u32 cfg_addr; - u64 buid; - int ret; -@@ -952,11 +953,10 @@ static int create_ddw(struct pci_dev *dev, const u32 *ddw_avail, - * Retrieve them from the pci device, not the node with the - * dma-window property - */ -- edev = pci_dev_to_eeh_dev(dev); -- cfg_addr = edev->config_addr; -- if (edev->pe_config_addr) -- cfg_addr = edev->pe_config_addr; -- buid = edev->phb->buid; -+ dn = pci_device_to_OF_node(dev); -+ pdn = PCI_DN(dn); -+ buid = pdn->phb->buid; -+ cfg_addr = ((pdn->busno << 16) | (pdn->devfn << 8)); - - do { - /* extra outputs are LIOBN and dma-addr (hi, lo) */ -diff --git a/arch/s390/include/asm/fpu/api.h b/arch/s390/include/asm/fpu/api.h -index 5e04f3c..8ae236b0 100644 ---- a/arch/s390/include/asm/fpu/api.h -+++ b/arch/s390/include/asm/fpu/api.h -@@ -22,7 +22,7 @@ static inline int test_fp_ctl(u32 fpc) - " la %0,0\n" - "1:\n" - EX_TABLE(0b,1b) -- : "=d" (rc), "=d" (orig_fpc) -+ : "=d" (rc), "=&d" (orig_fpc) - : "d" (fpc), "0" (-EINVAL)); - return rc; - } -diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c -index f20abdb..d14069d 100644 ---- a/arch/s390/kernel/ipl.c -+++ b/arch/s390/kernel/ipl.c -@@ -2064,12 +2064,5 @@ void s390_reset_system(void) - S390_lowcore.program_new_psw.addr = - (unsigned long) s390_base_pgm_handler; - -- /* -- * Clear subchannel ID and number to signal new kernel that no CCW or -- * SCSI IPL has been done (for kexec and kdump) -- */ -- S390_lowcore.subchannel_id = 0; -- S390_lowcore.subchannel_nr = 0; -- - do_reset_calls(); - } -diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c -index 4324b87..9f0ce0e 100644 ---- a/arch/s390/mm/pgtable.c -+++ b/arch/s390/mm/pgtable.c -@@ -437,7 +437,7 @@ void ptep_zap_unused(struct mm_struct *mm, unsigned long addr, - pgste = pgste_get_lock(ptep); - pgstev = pgste_val(pgste); - pte = *ptep; -- if (pte_swap(pte) && -+ if (!reset && pte_swap(pte) && - ((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED || - (pgstev & _PGSTE_GPS_ZERO))) { - ptep_zap_swap_entry(mm, pte_to_swp_entry(pte)); -diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile -index b1ef9e4..b67f9e8 100644 ---- a/arch/x86/boot/Makefile -+++ b/arch/x86/boot/Makefile -@@ -171,6 +171,9 @@ isoimage: $(obj)/bzImage - for i in lib lib64 share end ; do \ - if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \ - cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \ -+ if [ -f /usr/$$i/syslinux/ldlinux.c32 ]; then \ -+ cp /usr/$$i/syslinux/ldlinux.c32 $(obj)/isoimage ; \ -+ fi ; \ - break ; \ - fi ; \ - if [ $$i = end ] ; then exit 1 ; fi ; \ -diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c -index 041e442..7eb806c 100644 ---- a/arch/x86/events/core.c -+++ b/arch/x86/events/core.c -@@ -2313,7 +2313,7 @@ void - perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) - { - struct stack_frame frame; -- const void __user *fp; -+ const unsigned long __user *fp; - - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) { - /* TODO: We don't support guest os callchain now */ -@@ -2326,7 +2326,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) - if (regs->flags & (X86_VM_MASK | PERF_EFLAGS_VM)) - return; - -- fp = (void __user *)regs->bp; -+ fp = (unsigned long __user *)regs->bp; - - perf_callchain_store(entry, regs->ip); - -@@ -2339,16 +2339,17 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) - pagefault_disable(); - while (entry->nr < PERF_MAX_STACK_DEPTH) { - unsigned long bytes; -+ - frame.next_frame = NULL; - frame.return_address = 0; - -- if (!access_ok(VERIFY_READ, fp, 16)) -+ if (!access_ok(VERIFY_READ, fp, sizeof(*fp) * 2)) - break; - -- bytes = __copy_from_user_nmi(&frame.next_frame, fp, 8); -+ bytes = __copy_from_user_nmi(&frame.next_frame, fp, sizeof(*fp)); - if (bytes != 0) - break; -- bytes = __copy_from_user_nmi(&frame.return_address, fp+8, 8); -+ bytes = __copy_from_user_nmi(&frame.return_address, fp + 1, sizeof(*fp)); - if (bytes != 0) - break; - -diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c -index 1705c9d..78ee9eb 100644 ---- a/arch/x86/events/intel/rapl.c -+++ b/arch/x86/events/intel/rapl.c -@@ -665,7 +665,7 @@ static void __init cleanup_rapl_pmus(void) - int i; - - for (i = 0; i < rapl_pmus->maxpkg; i++) -- kfree(rapl_pmus->pmus + i); -+ kfree(rapl_pmus->pmus[i]); - kfree(rapl_pmus); - } - -diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h -index 7a79ee2..33c709c 100644 ---- a/arch/x86/include/asm/msr.h -+++ b/arch/x86/include/asm/msr.h -@@ -112,7 +112,7 @@ static inline void native_write_msr(unsigned int msr, - unsigned low, unsigned high) - { - asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory"); -- if (msr_tracepoint_active(__tracepoint_read_msr)) -+ if (msr_tracepoint_active(__tracepoint_write_msr)) - do_trace_write_msr(msr, ((u64)high << 32 | low), 0); - } - -@@ -131,7 +131,7 @@ notrace static inline int native_write_msr_safe(unsigned int msr, - : "c" (msr), "0" (low), "d" (high), - [fault] "i" (-EIO) - : "memory"); -- if (msr_tracepoint_active(__tracepoint_read_msr)) -+ if (msr_tracepoint_active(__tracepoint_write_msr)) - do_trace_write_msr(msr, ((u64)high << 32 | low), err); - return err; - } -diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c -index a147e67..e991d5c 100644 ---- a/arch/x86/kernel/amd_nb.c -+++ b/arch/x86/kernel/amd_nb.c -@@ -71,8 +71,8 @@ int amd_cache_northbridges(void) - while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL) - i++; - -- if (i == 0) -- return 0; -+ if (!i) -+ return -ENODEV; - - nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL); - if (!nb) -diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c -index ae703ac..44bcd57 100644 ---- a/arch/x86/kernel/kprobes/core.c -+++ b/arch/x86/kernel/kprobes/core.c -@@ -960,7 +960,19 @@ int kprobe_fault_handler(struct pt_regs *regs, int trapnr) - * normal page fault. - */ - regs->ip = (unsigned long)cur->addr; -+ /* -+ * Trap flag (TF) has been set here because this fault -+ * happened where the single stepping will be done. -+ * So clear it by resetting the current kprobe: -+ */ -+ regs->flags &= ~X86_EFLAGS_TF; -+ -+ /* -+ * If the TF flag was set before the kprobe hit, -+ * don't touch it: -+ */ - regs->flags |= kcb->kprobe_old_flags; -+ - if (kcb->kprobe_status == KPROBE_REENTER) - restore_previous_kprobe(kcb); - else -diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index faf52bac..c4217a2 100644 ---- a/arch/x86/kvm/vmx.c -+++ b/arch/x86/kvm/vmx.c -@@ -2072,7 +2072,8 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu) - unsigned int dest; - - if (!kvm_arch_has_assigned_device(vcpu->kvm) || -- !irq_remapping_cap(IRQ_POSTING_CAP)) -+ !irq_remapping_cap(IRQ_POSTING_CAP) || -+ !kvm_vcpu_apicv_active(vcpu)) - return; - - do { -@@ -2180,7 +2181,8 @@ static void vmx_vcpu_pi_put(struct kvm_vcpu *vcpu) - struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); - - if (!kvm_arch_has_assigned_device(vcpu->kvm) || -- !irq_remapping_cap(IRQ_POSTING_CAP)) -+ !irq_remapping_cap(IRQ_POSTING_CAP) || -+ !kvm_vcpu_apicv_active(vcpu)) - return; - - /* Set SN when the vCPU is preempted */ -@@ -6657,7 +6659,13 @@ static int get_vmx_mem_address(struct kvm_vcpu *vcpu, - - /* Checks for #GP/#SS exceptions. */ - exn = false; -- if (is_protmode(vcpu)) { -+ if (is_long_mode(vcpu)) { -+ /* Long mode: #GP(0)/#SS(0) if the memory address is in a -+ * non-canonical form. This is the only check on the memory -+ * destination for long mode! -+ */ -+ exn = is_noncanonical_address(*ret); -+ } else if (is_protmode(vcpu)) { - /* Protected mode: apply checks for segment validity in the - * following order: - * - segment type check (#GP(0) may be thrown) -@@ -6674,17 +6682,10 @@ static int get_vmx_mem_address(struct kvm_vcpu *vcpu, - * execute-only code segment - */ - exn = ((s.type & 0xa) == 8); -- } -- if (exn) { -- kvm_queue_exception_e(vcpu, GP_VECTOR, 0); -- return 1; -- } -- if (is_long_mode(vcpu)) { -- /* Long mode: #GP(0)/#SS(0) if the memory address is in a -- * non-canonical form. This is an only check for long mode. -- */ -- exn = is_noncanonical_address(*ret); -- } else if (is_protmode(vcpu)) { -+ if (exn) { -+ kvm_queue_exception_e(vcpu, GP_VECTOR, 0); -+ return 1; -+ } - /* Protected mode: #GP(0)/#SS(0) if the segment is unusable. - */ - exn = (s.unusable != 0); -@@ -10702,7 +10703,8 @@ static int vmx_pre_block(struct kvm_vcpu *vcpu) - struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); - - if (!kvm_arch_has_assigned_device(vcpu->kvm) || -- !irq_remapping_cap(IRQ_POSTING_CAP)) -+ !irq_remapping_cap(IRQ_POSTING_CAP) || -+ !kvm_vcpu_apicv_active(vcpu)) - return 0; - - vcpu->pre_pcpu = vcpu->cpu; -@@ -10768,7 +10770,8 @@ static void vmx_post_block(struct kvm_vcpu *vcpu) - unsigned long flags; - - if (!kvm_arch_has_assigned_device(vcpu->kvm) || -- !irq_remapping_cap(IRQ_POSTING_CAP)) -+ !irq_remapping_cap(IRQ_POSTING_CAP) || -+ !kvm_vcpu_apicv_active(vcpu)) - return; - - do { -@@ -10821,7 +10824,8 @@ static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq, - int idx, ret = -EINVAL; - - if (!kvm_arch_has_assigned_device(kvm) || -- !irq_remapping_cap(IRQ_POSTING_CAP)) -+ !irq_remapping_cap(IRQ_POSTING_CAP) || -+ !kvm_vcpu_apicv_active(kvm->vcpus[0])) - return 0; - - idx = srcu_read_lock(&kvm->irq_srcu); -diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c -index ead8dc0..8ba4266 100644 ---- a/crypto/rsa-pkcs1pad.c -+++ b/crypto/rsa-pkcs1pad.c -@@ -102,10 +102,10 @@ struct pkcs1pad_inst_ctx { - }; - - struct pkcs1pad_request { -- struct akcipher_request child_req; -- - struct scatterlist in_sg[3], out_sg[2]; - uint8_t *in_buf, *out_buf; -+ -+ struct akcipher_request child_req; - }; - - static int pkcs1pad_set_pub_key(struct crypto_akcipher *tfm, const void *key, -diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c -index 961acc7..91a9e6a 100644 ---- a/drivers/ata/libata-eh.c -+++ b/drivers/ata/libata-eh.c -@@ -606,7 +606,7 @@ void ata_scsi_error(struct Scsi_Host *host) - ata_scsi_port_error_handler(host, ap); - - /* finish or retry handled scmd's and clean up */ -- WARN_ON(host->host_failed || !list_empty(&eh_work_q)); -+ WARN_ON(!list_empty(&eh_work_q)); - - DPRINTK("EXIT\n"); - } -diff --git a/drivers/base/module.c b/drivers/base/module.c -index db930d3..2a21578 100644 ---- a/drivers/base/module.c -+++ b/drivers/base/module.c -@@ -24,10 +24,12 @@ static char *make_driver_name(struct device_driver *drv) - - static void module_create_drivers_dir(struct module_kobject *mk) - { -- if (!mk || mk->drivers_dir) -- return; -+ static DEFINE_MUTEX(drivers_dir_mutex); - -- mk->drivers_dir = kobject_create_and_add("drivers", &mk->kobj); -+ mutex_lock(&drivers_dir_mutex); -+ if (mk && !mk->drivers_dir) -+ mk->drivers_dir = kobject_create_and_add("drivers", &mk->kobj); -+ mutex_unlock(&drivers_dir_mutex); - } - - void module_add_driver(struct module *mod, struct device_driver *drv) -diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c -index 94fb407..44b1bd6 100644 ---- a/drivers/char/ipmi/ipmi_msghandler.c -+++ b/drivers/char/ipmi/ipmi_msghandler.c -@@ -3820,6 +3820,7 @@ static void handle_new_recv_msgs(ipmi_smi_t intf) - while (!list_empty(&intf->waiting_rcv_msgs)) { - smi_msg = list_entry(intf->waiting_rcv_msgs.next, - struct ipmi_smi_msg, link); -+ list_del(&smi_msg->link); - if (!run_to_completion) - spin_unlock_irqrestore(&intf->waiting_rcv_msgs_lock, - flags); -@@ -3829,11 +3830,14 @@ static void handle_new_recv_msgs(ipmi_smi_t intf) - if (rv > 0) { - /* - * To preserve message order, quit if we -- * can't handle a message. -+ * can't handle a message. Add the message -+ * back at the head, this is safe because this -+ * tasklet is the only thing that pulls the -+ * messages. - */ -+ list_add(&smi_msg->link, &intf->waiting_rcv_msgs); - break; - } else { -- list_del(&smi_msg->link); - if (rv == 0) - /* Message handled */ - ipmi_free_smi_msg(smi_msg); -diff --git a/drivers/crypto/qat/qat_common/Makefile b/drivers/crypto/qat/qat_common/Makefile -index 29c7c53..92561c8 100644 ---- a/drivers/crypto/qat/qat_common/Makefile -+++ b/drivers/crypto/qat/qat_common/Makefile -@@ -2,6 +2,7 @@ $(obj)/qat_rsapubkey-asn1.o: $(obj)/qat_rsapubkey-asn1.c \ - $(obj)/qat_rsapubkey-asn1.h - $(obj)/qat_rsaprivkey-asn1.o: $(obj)/qat_rsaprivkey-asn1.c \ - $(obj)/qat_rsaprivkey-asn1.h -+$(obj)/qat_asym_algs.o: $(obj)/qat_rsapubkey-asn1.h $(obj)/qat_rsaprivkey-asn1.h - - clean-files += qat_rsapubkey-asn1.c qat_rsapubkey-asn1.h - clean-files += qat_rsaprivkey-asn1.c qat_rsaprivkey-asn1.h -diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c -index 1472f48..ff51b51 100644 ---- a/drivers/edac/edac_mc.c -+++ b/drivers/edac/edac_mc.c -@@ -565,7 +565,8 @@ void edac_mc_reset_delay_period(unsigned long value) - list_for_each(item, &mc_devices) { - mci = list_entry(item, struct mem_ctl_info, link); - -- edac_mod_work(&mci->work, value); -+ if (mci->op_state == OP_RUNNING_POLL) -+ edac_mod_work(&mci->work, value); - } - mutex_unlock(&mem_ctls_mutex); - } -diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c -index 8bf745d..b274fa2 100644 ---- a/drivers/edac/sb_edac.c -+++ b/drivers/edac/sb_edac.c -@@ -239,8 +239,11 @@ static const u32 rir_offset[MAX_RIR_RANGES][MAX_RIR_WAY] = { - { 0x1a0, 0x1a4, 0x1a8, 0x1ac, 0x1b0, 0x1b4, 0x1b8, 0x1bc }, - }; - --#define RIR_RNK_TGT(reg) GET_BITFIELD(reg, 16, 19) --#define RIR_OFFSET(reg) GET_BITFIELD(reg, 2, 14) -+#define RIR_RNK_TGT(type, reg) (((type) == BROADWELL) ? \ -+ GET_BITFIELD(reg, 20, 23) : GET_BITFIELD(reg, 16, 19)) -+ -+#define RIR_OFFSET(type, reg) (((type) == HASWELL || (type) == BROADWELL) ? \ -+ GET_BITFIELD(reg, 2, 15) : GET_BITFIELD(reg, 2, 14)) - - /* Device 16, functions 2-7 */ - -@@ -1916,14 +1919,14 @@ static void get_memory_layout(const struct mem_ctl_info *mci) - pci_read_config_dword(pvt->pci_tad[i], - rir_offset[j][k], - ®); -- tmp_mb = RIR_OFFSET(reg) << 6; -+ tmp_mb = RIR_OFFSET(pvt->info.type, reg) << 6; - - gb = div_u64_rem(tmp_mb, 1024, &mb); - edac_dbg(0, "CH#%d RIR#%d INTL#%d, offset %u.%03u GB (0x%016Lx), tgt: %d, reg=0x%08x\n", - i, j, k, - gb, (mb*1000)/1024, - ((u64)tmp_mb) << 20L, -- (u32)RIR_RNK_TGT(reg), -+ (u32)RIR_RNK_TGT(pvt->info.type, reg), - reg); - } - } -@@ -2256,7 +2259,7 @@ static int get_memory_error_data(struct mem_ctl_info *mci, - pci_read_config_dword(pvt->pci_tad[ch_add + base_ch], - rir_offset[n_rir][idx], - ®); -- *rank = RIR_RNK_TGT(reg); -+ *rank = RIR_RNK_TGT(pvt->info.type, reg); - - edac_dbg(0, "RIR#%d: channel address 0x%08Lx < 0x%08Lx, RIR interleave %d, index %d\n", - n_rir, -diff --git a/drivers/extcon/extcon-palmas.c b/drivers/extcon/extcon-palmas.c -index 8b3226d..caff46c 100644 ---- a/drivers/extcon/extcon-palmas.c -+++ b/drivers/extcon/extcon-palmas.c -@@ -360,6 +360,8 @@ static int palmas_usb_probe(struct platform_device *pdev) - - palmas_enable_irq(palmas_usb); - /* perform initial detection */ -+ if (palmas_usb->enable_gpio_vbus_detection) -+ palmas_vbus_irq_handler(palmas_usb->gpio_vbus_irq, palmas_usb); - palmas_gpio_id_detect(&palmas_usb->wq_detectid.work); - device_set_wakeup_capable(&pdev->dev, true); - return 0; -diff --git a/drivers/gpio/gpio-sch.c b/drivers/gpio/gpio-sch.c -index e85e753..eb43ae4 100644 ---- a/drivers/gpio/gpio-sch.c -+++ b/drivers/gpio/gpio-sch.c -@@ -61,9 +61,8 @@ static unsigned sch_gpio_bit(struct sch_gpio *sch, unsigned gpio) - return gpio % 8; - } - --static int sch_gpio_reg_get(struct gpio_chip *gc, unsigned gpio, unsigned reg) -+static int sch_gpio_reg_get(struct sch_gpio *sch, unsigned gpio, unsigned reg) - { -- struct sch_gpio *sch = gpiochip_get_data(gc); - unsigned short offset, bit; - u8 reg_val; - -@@ -75,10 +74,9 @@ static int sch_gpio_reg_get(struct gpio_chip *gc, unsigned gpio, unsigned reg) - return reg_val; - } - --static void sch_gpio_reg_set(struct gpio_chip *gc, unsigned gpio, unsigned reg, -+static void sch_gpio_reg_set(struct sch_gpio *sch, unsigned gpio, unsigned reg, - int val) - { -- struct sch_gpio *sch = gpiochip_get_data(gc); - unsigned short offset, bit; - u8 reg_val; - -@@ -98,14 +96,15 @@ static int sch_gpio_direction_in(struct gpio_chip *gc, unsigned gpio_num) - struct sch_gpio *sch = gpiochip_get_data(gc); - - spin_lock(&sch->lock); -- sch_gpio_reg_set(gc, gpio_num, GIO, 1); -+ sch_gpio_reg_set(sch, gpio_num, GIO, 1); - spin_unlock(&sch->lock); - return 0; - } - - static int sch_gpio_get(struct gpio_chip *gc, unsigned gpio_num) - { -- return sch_gpio_reg_get(gc, gpio_num, GLV); -+ struct sch_gpio *sch = gpiochip_get_data(gc); -+ return sch_gpio_reg_get(sch, gpio_num, GLV); - } - - static void sch_gpio_set(struct gpio_chip *gc, unsigned gpio_num, int val) -@@ -113,7 +112,7 @@ static void sch_gpio_set(struct gpio_chip *gc, unsigned gpio_num, int val) - struct sch_gpio *sch = gpiochip_get_data(gc); - - spin_lock(&sch->lock); -- sch_gpio_reg_set(gc, gpio_num, GLV, val); -+ sch_gpio_reg_set(sch, gpio_num, GLV, val); - spin_unlock(&sch->lock); - } - -@@ -123,7 +122,7 @@ static int sch_gpio_direction_out(struct gpio_chip *gc, unsigned gpio_num, - struct sch_gpio *sch = gpiochip_get_data(gc); - - spin_lock(&sch->lock); -- sch_gpio_reg_set(gc, gpio_num, GIO, 0); -+ sch_gpio_reg_set(sch, gpio_num, GIO, 0); - spin_unlock(&sch->lock); - - /* -@@ -182,13 +181,13 @@ static int sch_gpio_probe(struct platform_device *pdev) - * GPIO7 is configured by the CMC as SLPIOVR - * Enable GPIO[9:8] core powered gpios explicitly - */ -- sch_gpio_reg_set(&sch->chip, 8, GEN, 1); -- sch_gpio_reg_set(&sch->chip, 9, GEN, 1); -+ sch_gpio_reg_set(sch, 8, GEN, 1); -+ sch_gpio_reg_set(sch, 9, GEN, 1); - /* - * SUS_GPIO[2:0] enabled by default - * Enable SUS_GPIO3 resume powered gpio explicitly - */ -- sch_gpio_reg_set(&sch->chip, 13, GEN, 1); -+ sch_gpio_reg_set(sch, 13, GEN, 1); - break; - - case PCI_DEVICE_ID_INTEL_ITC_LPC: -diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c -index 3a5c701..8b83099 100644 ---- a/drivers/gpio/gpiolib-legacy.c -+++ b/drivers/gpio/gpiolib-legacy.c -@@ -28,6 +28,10 @@ int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) - if (!desc && gpio_is_valid(gpio)) - return -EPROBE_DEFER; - -+ err = gpiod_request(desc, label); -+ if (err) -+ return err; -+ - if (flags & GPIOF_OPEN_DRAIN) - set_bit(FLAG_OPEN_DRAIN, &desc->flags); - -@@ -37,10 +41,6 @@ int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) - if (flags & GPIOF_ACTIVE_LOW) - set_bit(FLAG_ACTIVE_LOW, &desc->flags); - -- err = gpiod_request(desc, label); -- if (err) -- return err; -- - if (flags & GPIOF_DIR_IN) - err = gpiod_direction_input(desc); - else -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index cf3e712..996a733 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1324,14 +1324,6 @@ static int __gpiod_request(struct gpio_desc *desc, const char *label) - spin_lock_irqsave(&gpio_lock, flags); - } - done: -- if (status < 0) { -- /* Clear flags that might have been set by the caller before -- * requesting the GPIO. -- */ -- clear_bit(FLAG_ACTIVE_LOW, &desc->flags); -- clear_bit(FLAG_OPEN_DRAIN, &desc->flags); -- clear_bit(FLAG_OPEN_SOURCE, &desc->flags); -- } - spin_unlock_irqrestore(&gpio_lock, flags); - return status; - } -@@ -1345,8 +1337,12 @@ done: - #define VALIDATE_DESC(desc) do { \ - if (!desc) \ - return 0; \ -+ if (IS_ERR(desc)) { \ -+ pr_warn("%s: invalid GPIO (errorpointer)\n", __func__); \ -+ return PTR_ERR(desc); \ -+ } \ - if (!desc->gdev) { \ -- pr_warn("%s: invalid GPIO\n", __func__); \ -+ pr_warn("%s: invalid GPIO (no device)\n", __func__); \ - return -EINVAL; \ - } \ - if ( !desc->gdev->chip ) { \ -@@ -1358,8 +1354,12 @@ done: - #define VALIDATE_DESC_VOID(desc) do { \ - if (!desc) \ - return; \ -+ if (IS_ERR(desc)) { \ -+ pr_warn("%s: invalid GPIO (errorpointer)\n", __func__); \ -+ return; \ -+ } \ - if (!desc->gdev) { \ -- pr_warn("%s: invalid GPIO\n", __func__); \ -+ pr_warn("%s: invalid GPIO (no device)\n", __func__); \ - return; \ - } \ - if (!desc->gdev->chip) { \ -@@ -2011,7 +2011,7 @@ int gpiod_to_irq(const struct gpio_desc *desc) - * requires this function to not return zero on an invalid descriptor - * but rather a negative error number. - */ -- if (!desc || !desc->gdev || !desc->gdev->chip) -+ if (!desc || IS_ERR(desc) || !desc->gdev || !desc->gdev->chip) - return -EINVAL; - - chip = desc->gdev->chip; -@@ -2507,28 +2507,13 @@ struct gpio_desc *__must_check gpiod_get_optional(struct device *dev, - } - EXPORT_SYMBOL_GPL(gpiod_get_optional); - --/** -- * gpiod_parse_flags - helper function to parse GPIO lookup flags -- * @desc: gpio to be setup -- * @lflags: gpio_lookup_flags - returned from of_find_gpio() or -- * of_get_gpio_hog() -- * -- * Set the GPIO descriptor flags based on the given GPIO lookup flags. -- */ --static void gpiod_parse_flags(struct gpio_desc *desc, unsigned long lflags) --{ -- if (lflags & GPIO_ACTIVE_LOW) -- set_bit(FLAG_ACTIVE_LOW, &desc->flags); -- if (lflags & GPIO_OPEN_DRAIN) -- set_bit(FLAG_OPEN_DRAIN, &desc->flags); -- if (lflags & GPIO_OPEN_SOURCE) -- set_bit(FLAG_OPEN_SOURCE, &desc->flags); --} - - /** - * gpiod_configure_flags - helper function to configure a given GPIO - * @desc: gpio whose value will be assigned - * @con_id: function within the GPIO consumer -+ * @lflags: gpio_lookup_flags - returned from of_find_gpio() or -+ * of_get_gpio_hog() - * @dflags: gpiod_flags - optional GPIO initialization flags - * - * Return 0 on success, -ENOENT if no GPIO has been assigned to the -@@ -2536,10 +2521,17 @@ static void gpiod_parse_flags(struct gpio_desc *desc, unsigned long lflags) - * occurred while trying to acquire the GPIO. - */ - static int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id, -- enum gpiod_flags dflags) -+ unsigned long lflags, enum gpiod_flags dflags) - { - int status; - -+ if (lflags & GPIO_ACTIVE_LOW) -+ set_bit(FLAG_ACTIVE_LOW, &desc->flags); -+ if (lflags & GPIO_OPEN_DRAIN) -+ set_bit(FLAG_OPEN_DRAIN, &desc->flags); -+ if (lflags & GPIO_OPEN_SOURCE) -+ set_bit(FLAG_OPEN_SOURCE, &desc->flags); -+ - /* No particular flag request, return here... */ - if (!(dflags & GPIOD_FLAGS_BIT_DIR_SET)) { - pr_debug("no flags found for %s\n", con_id); -@@ -2606,13 +2598,11 @@ struct gpio_desc *__must_check gpiod_get_index(struct device *dev, - return desc; - } - -- gpiod_parse_flags(desc, lookupflags); -- - status = gpiod_request(desc, con_id); - if (status < 0) - return ERR_PTR(status); - -- status = gpiod_configure_flags(desc, con_id, flags); -+ status = gpiod_configure_flags(desc, con_id, lookupflags, flags); - if (status < 0) { - dev_dbg(dev, "setup of GPIO %s failed\n", con_id); - gpiod_put(desc); -@@ -2668,6 +2658,10 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, - if (IS_ERR(desc)) - return desc; - -+ ret = gpiod_request(desc, NULL); -+ if (ret) -+ return ERR_PTR(ret); -+ - if (active_low) - set_bit(FLAG_ACTIVE_LOW, &desc->flags); - -@@ -2678,10 +2672,6 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, - set_bit(FLAG_OPEN_SOURCE, &desc->flags); - } - -- ret = gpiod_request(desc, NULL); -- if (ret) -- return ERR_PTR(ret); -- - return desc; - } - EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod); -@@ -2734,8 +2724,6 @@ int gpiod_hog(struct gpio_desc *desc, const char *name, - chip = gpiod_to_chip(desc); - hwnum = gpio_chip_hwgpio(desc); - -- gpiod_parse_flags(desc, lflags); -- - local_desc = gpiochip_request_own_desc(chip, hwnum, name); - if (IS_ERR(local_desc)) { - pr_err("requesting hog GPIO %s (chip %s, offset %d) failed\n", -@@ -2743,7 +2731,7 @@ int gpiod_hog(struct gpio_desc *desc, const char *name, - return PTR_ERR(local_desc); - } - -- status = gpiod_configure_flags(desc, name, dflags); -+ status = gpiod_configure_flags(desc, name, lflags, dflags); - if (status < 0) { - pr_err("setup of hog GPIO %s (chip %s, offset %d) failed\n", - name, chip->label, hwnum); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -index 6043dc7..3e21732 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -@@ -880,7 +880,7 @@ static int amdgpu_cgs_acpi_eval_object(void *cgs_device, - struct cgs_acpi_method_argument *argument = NULL; - uint32_t i, count; - acpi_status status; -- int result; -+ int result = 0; - uint32_t func_no = 0xFFFFFFFF; - - handle = ACPI_HANDLE(&adev->pdev->dev); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -index b04337d..d78739d 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -@@ -448,7 +448,8 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file - dev_info.max_memory_clock = adev->pm.default_mclk * 10; - } - dev_info.enabled_rb_pipes_mask = adev->gfx.config.backend_enable_mask; -- dev_info.num_rb_pipes = adev->gfx.config.num_rbs; -+ dev_info.num_rb_pipes = adev->gfx.config.max_backends_per_se * -+ adev->gfx.config.max_shader_engines; - dev_info.num_hw_gfx_contexts = adev->gfx.config.max_hw_contexts; - dev_info._pad = 0; - dev_info.ids_flags = 0; -diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c -index bb8709066..d2216f8 100644 ---- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c -@@ -5074,7 +5074,7 @@ static int gfx_v7_0_eop_irq(struct amdgpu_device *adev, - case 2: - for (i = 0; i < adev->gfx.num_compute_rings; i++) { - ring = &adev->gfx.compute_ring[i]; -- if ((ring->me == me_id) & (ring->pipe == pipe_id)) -+ if ((ring->me == me_id) && (ring->pipe == pipe_id)) - amdgpu_fence_process(ring); - } - break; -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -index ac00579..7708d90 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -@@ -242,13 +242,19 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn, - pqm_uninit(&p->pqm); - - /* Iterate over all process device data structure and check -- * if we should reset all wavefronts */ -- list_for_each_entry(pdd, &p->per_device_data, per_device_list) -+ * if we should delete debug managers and reset all wavefronts -+ */ -+ list_for_each_entry(pdd, &p->per_device_data, per_device_list) { -+ if ((pdd->dev->dbgmgr) && -+ (pdd->dev->dbgmgr->pasid == p->pasid)) -+ kfd_dbgmgr_destroy(pdd->dev->dbgmgr); -+ - if (pdd->reset_wavefronts) { - pr_warn("amdkfd: Resetting all wave fronts\n"); - dbgdev_wave_reset_wavefronts(pdd->dev, p); - pdd->reset_wavefronts = false; - } -+ } - - mutex_unlock(&p->mutex); - -@@ -404,42 +410,52 @@ void kfd_unbind_process_from_device(struct kfd_dev *dev, unsigned int pasid) - - idx = srcu_read_lock(&kfd_processes_srcu); - -+ /* -+ * Look for the process that matches the pasid. If there is no such -+ * process, we either released it in amdkfd's own notifier, or there -+ * is a bug. Unfortunately, there is no way to tell... -+ */ - hash_for_each_rcu(kfd_processes_table, i, p, kfd_processes) -- if (p->pasid == pasid) -- break; -+ if (p->pasid == pasid) { - -- srcu_read_unlock(&kfd_processes_srcu, idx); -+ srcu_read_unlock(&kfd_processes_srcu, idx); - -- BUG_ON(p->pasid != pasid); -+ pr_debug("Unbinding process %d from IOMMU\n", pasid); - -- mutex_lock(&p->mutex); -+ mutex_lock(&p->mutex); - -- if ((dev->dbgmgr) && (dev->dbgmgr->pasid == p->pasid)) -- kfd_dbgmgr_destroy(dev->dbgmgr); -+ if ((dev->dbgmgr) && (dev->dbgmgr->pasid == p->pasid)) -+ kfd_dbgmgr_destroy(dev->dbgmgr); - -- pqm_uninit(&p->pqm); -+ pqm_uninit(&p->pqm); - -- pdd = kfd_get_process_device_data(dev, p); -+ pdd = kfd_get_process_device_data(dev, p); - -- if (!pdd) { -- mutex_unlock(&p->mutex); -- return; -- } -+ if (!pdd) { -+ mutex_unlock(&p->mutex); -+ return; -+ } - -- if (pdd->reset_wavefronts) { -- dbgdev_wave_reset_wavefronts(pdd->dev, p); -- pdd->reset_wavefronts = false; -- } -+ if (pdd->reset_wavefronts) { -+ dbgdev_wave_reset_wavefronts(pdd->dev, p); -+ pdd->reset_wavefronts = false; -+ } - -- /* -- * Just mark pdd as unbound, because we still need it to call -- * amd_iommu_unbind_pasid() in when the process exits. -- * We don't call amd_iommu_unbind_pasid() here -- * because the IOMMU called us. -- */ -- pdd->bound = false; -+ /* -+ * Just mark pdd as unbound, because we still need it -+ * to call amd_iommu_unbind_pasid() in when the -+ * process exits. -+ * We don't call amd_iommu_unbind_pasid() here -+ * because the IOMMU called us. -+ */ -+ pdd->bound = false; - -- mutex_unlock(&p->mutex); -+ mutex_unlock(&p->mutex); -+ -+ return; -+ } -+ -+ srcu_read_unlock(&kfd_processes_srcu, idx); - } - - struct kfd_process_device *kfd_get_first_process_device_data(struct kfd_process *p) -diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c -index fa208ad..efb77ed 100644 ---- a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c -+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c -@@ -306,10 +306,14 @@ int phm_store_dal_configuration_data(struct pp_hwmgr *hwmgr, - { - PHM_FUNC_CHECK(hwmgr); - -- if (hwmgr->hwmgr_func->store_cc6_data == NULL) -+ if (display_config == NULL) - return -EINVAL; - - hwmgr->display_config = *display_config; -+ -+ if (hwmgr->hwmgr_func->store_cc6_data == NULL) -+ return -EINVAL; -+ - /* to do pass other display configuration in furture */ - - if (hwmgr->hwmgr_func->store_cc6_data) -diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c -index 7b2d500..7cce483 100644 ---- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c -+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c -@@ -21,6 +21,20 @@ bool acpi_atcs_functions_supported(void *device, uint32_t index) - return result == 0 ? (output_buf.function_bits & (1 << (index - 1))) != 0 : false; - } - -+bool acpi_atcs_notify_pcie_device_ready(void *device) -+{ -+ int32_t temp_buffer = 1; -+ -+ return cgs_call_acpi_method(device, CGS_ACPI_METHOD_ATCS, -+ ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION, -+ &temp_buffer, -+ NULL, -+ 0, -+ sizeof(temp_buffer), -+ 0); -+} -+ -+ - int acpi_pcie_perf_request(void *device, uint8_t perf_req, bool advertise) - { - struct atcs_pref_req_input atcs_input; -@@ -29,7 +43,7 @@ int acpi_pcie_perf_request(void *device, uint8_t perf_req, bool advertise) - int result; - struct cgs_system_info info = {0}; - -- if (!acpi_atcs_functions_supported(device, ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST)) -+ if( 0 != acpi_atcs_notify_pcie_device_ready(device)) - return -EINVAL; - - info.size = sizeof(struct cgs_system_info); -@@ -54,7 +68,7 @@ int acpi_pcie_perf_request(void *device, uint8_t perf_req, bool advertise) - ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST, - &atcs_input, - &atcs_output, -- 0, -+ 1, - sizeof(atcs_input), - sizeof(atcs_output)); - if (result != 0) -diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -index 0d5d837..aae2e8e 100644 ---- a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -@@ -1298,7 +1298,7 @@ static int tonga_populate_smc_mvdd_table(struct pp_hwmgr *hwmgr, - table->Smio[count] |= - data->mvdd_voltage_table.entries[count].smio_low; - } -- table->SmioMask2 = data->vddci_voltage_table.mask_low; -+ table->SmioMask2 = data->mvdd_voltage_table.mask_low; - - CONVERT_FROM_HOST_TO_SMC_UL(table->MvddLevelCount); - } -diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c -index b156481..17766e8 100644 ---- a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c -+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c -@@ -299,7 +299,7 @@ static int init_dpm_2_parameters( - (((unsigned long)powerplay_table) + le16_to_cpu(powerplay_table->usPPMTableOffset)); - - if (0 != powerplay_table->usPPMTableOffset) { -- if (1 == get_platform_power_management_table(hwmgr, atom_ppm_table)) { -+ if (get_platform_power_management_table(hwmgr, atom_ppm_table) == 0) { - phm_cap_set(hwmgr->platform_descriptor.platformCaps, - PHM_PlatformCaps_EnablePlatformPowerManagement); - } -diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_acpi.h b/drivers/gpu/drm/amd/powerplay/inc/pp_acpi.h -index 3bd5e69..3df5de2 100644 ---- a/drivers/gpu/drm/amd/powerplay/inc/pp_acpi.h -+++ b/drivers/gpu/drm/amd/powerplay/inc/pp_acpi.h -@@ -26,3 +26,4 @@ extern bool acpi_atcs_functions_supported(void *device, - extern int acpi_pcie_perf_request(void *device, - uint8_t perf_req, - bool advertise); -+extern bool acpi_atcs_notify_pcie_device_ready(void *device); -diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c -index d65dcae..6d9c0f5 100644 ---- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c -+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c -@@ -335,6 +335,8 @@ atmel_hlcdc_plane_update_pos_and_size(struct atmel_hlcdc_plane *plane, - - atmel_hlcdc_layer_update_cfg(&plane->layer, 13, 0xffffffff, - factor_reg); -+ } else { -+ atmel_hlcdc_layer_update_cfg(&plane->layer, 13, 0xffffffff, 0); - } - } - -diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c -index d307d96..080a090 100644 ---- a/drivers/gpu/drm/drm_atomic.c -+++ b/drivers/gpu/drm/drm_atomic.c -@@ -354,6 +354,8 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state, - drm_property_unreference_blob(state->mode_blob); - state->mode_blob = NULL; - -+ memset(&state->mode, 0, sizeof(state->mode)); -+ - if (blob) { - if (blob->length != sizeof(struct drm_mode_modeinfo) || - drm_mode_convert_umode(&state->mode, -@@ -366,7 +368,6 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state, - DRM_DEBUG_ATOMIC("Set [MODE:%s] for CRTC state %p\n", - state->mode.name, state); - } else { -- memset(&state->mode, 0, sizeof(state->mode)); - state->enable = false; - DRM_DEBUG_ATOMIC("Set [NOMODE] for CRTC state %p\n", - state); -@@ -1287,14 +1288,39 @@ EXPORT_SYMBOL(drm_atomic_add_affected_planes); - */ - void drm_atomic_legacy_backoff(struct drm_atomic_state *state) - { -+ struct drm_device *dev = state->dev; -+ unsigned crtc_mask = 0; -+ struct drm_crtc *crtc; - int ret; -+ bool global = false; -+ -+ drm_for_each_crtc(crtc, dev) { -+ if (crtc->acquire_ctx != state->acquire_ctx) -+ continue; -+ -+ crtc_mask |= drm_crtc_mask(crtc); -+ crtc->acquire_ctx = NULL; -+ } -+ -+ if (WARN_ON(dev->mode_config.acquire_ctx == state->acquire_ctx)) { -+ global = true; -+ -+ dev->mode_config.acquire_ctx = NULL; -+ } - - retry: - drm_modeset_backoff(state->acquire_ctx); - -- ret = drm_modeset_lock_all_ctx(state->dev, state->acquire_ctx); -+ ret = drm_modeset_lock_all_ctx(dev, state->acquire_ctx); - if (ret) - goto retry; -+ -+ drm_for_each_crtc(crtc, dev) -+ if (drm_crtc_mask(crtc) & crtc_mask) -+ crtc->acquire_ctx = state->acquire_ctx; -+ -+ if (global) -+ dev->mode_config.acquire_ctx = state->acquire_ctx; - } - EXPORT_SYMBOL(drm_atomic_legacy_backoff); - -diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c -index f30de80..691a1b9 100644 ---- a/drivers/gpu/drm/drm_crtc.c -+++ b/drivers/gpu/drm/drm_crtc.c -@@ -2800,8 +2800,6 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, - goto out; - } - -- drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); -- - /* - * Check whether the primary plane supports the fb pixel format. - * Drivers not implementing the universal planes API use a -diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c -index 71ea052..ccfe7e7 100644 ---- a/drivers/gpu/drm/drm_dp_mst_topology.c -+++ b/drivers/gpu/drm/drm_dp_mst_topology.c -@@ -2908,11 +2908,9 @@ static void drm_dp_destroy_connector_work(struct work_struct *work) - drm_dp_port_teardown_pdt(port, port->pdt); - - if (!port->input && port->vcpi.vcpi > 0) { -- if (mgr->mst_state) { -- drm_dp_mst_reset_vcpi_slots(mgr, port); -- drm_dp_update_payload_part1(mgr); -- drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); -- } -+ drm_dp_mst_reset_vcpi_slots(mgr, port); -+ drm_dp_update_payload_part1(mgr); -+ drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); - } - - kref_put(&port->kref, drm_dp_free_mst_port); -diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c -index bb88e3d..e619b00 100644 ---- a/drivers/gpu/drm/drm_fb_cma_helper.c -+++ b/drivers/gpu/drm/drm_fb_cma_helper.c -@@ -301,7 +301,7 @@ static int drm_fbdev_cma_create(struct drm_fb_helper *helper, - err_fb_info_destroy: - drm_fb_helper_release_fbi(helper); - err_gem_free_object: -- dev->driver->gem_free_object(&obj->base); -+ drm_gem_object_unreference_unlocked(&obj->base); - return ret; - } - -diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c -index 1f500a1..d988ca0 100644 ---- a/drivers/gpu/drm/drm_gem_cma_helper.c -+++ b/drivers/gpu/drm/drm_gem_cma_helper.c -@@ -121,7 +121,7 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, - return cma_obj; - - error: -- drm->driver->gem_free_object(&cma_obj->base); -+ drm_gem_object_unreference_unlocked(&cma_obj->base); - return ERR_PTR(ret); - } - EXPORT_SYMBOL_GPL(drm_gem_cma_create); -@@ -162,18 +162,12 @@ drm_gem_cma_create_with_handle(struct drm_file *file_priv, - * and handle has the id what user can see. - */ - ret = drm_gem_handle_create(file_priv, gem_obj, handle); -- if (ret) -- goto err_handle_create; -- - /* drop reference from allocate - handle holds it now. */ - drm_gem_object_unreference_unlocked(gem_obj); -+ if (ret) -+ return ERR_PTR(ret); - - return cma_obj; -- --err_handle_create: -- drm->driver->gem_free_object(gem_obj); -- -- return ERR_PTR(ret); - } - - /** -diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c -index f7448a5..5d0fc26 100644 ---- a/drivers/gpu/drm/drm_modes.c -+++ b/drivers/gpu/drm/drm_modes.c -@@ -1518,6 +1518,8 @@ int drm_mode_convert_umode(struct drm_display_mode *out, - if (out->status != MODE_OK) - goto out; - -+ drm_mode_set_crtcinfo(out, CRTC_INTERLACE_HALVE_V); -+ - ret = 0; - - out: -diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c -index e8d9337..77886f1 100644 ---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c -+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c -@@ -40,9 +40,10 @@ static const struct regmap_config fsl_dcu_regmap_config = { - .reg_bits = 32, - .reg_stride = 4, - .val_bits = 32, -- .cache_type = REGCACHE_RBTREE, -+ .cache_type = REGCACHE_FLAT, - - .volatile_reg = fsl_dcu_drm_is_volatile_reg, -+ .max_register = 0x11fc, - }; - - static int fsl_dcu_drm_irq_init(struct drm_device *dev) -diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c -index d3c473f..3af4061 100644 ---- a/drivers/gpu/drm/i915/i915_gem_shrinker.c -+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c -@@ -39,7 +39,7 @@ static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task) - if (!mutex_is_locked(mutex)) - return false; - --#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES) -+#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_MUTEX_SPIN_ON_OWNER) - return mutex->owner == task; - #else - /* Since UP may be pre-empted, we cannot assume that we own the lock */ -diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index 7741efb..e5db9e1 100644 ---- a/drivers/gpu/drm/i915/intel_display.c -+++ b/drivers/gpu/drm/i915/intel_display.c -@@ -8229,12 +8229,14 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) - { - struct drm_i915_private *dev_priv = dev->dev_private; - struct intel_encoder *encoder; -+ int i; - u32 val, final; - bool has_lvds = false; - bool has_cpu_edp = false; - bool has_panel = false; - bool has_ck505 = false; - bool can_ssc = false; -+ bool using_ssc_source = false; - - /* We need to take the global config into account */ - for_each_intel_encoder(dev, encoder) { -@@ -8261,8 +8263,22 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) - can_ssc = true; - } - -- DRM_DEBUG_KMS("has_panel %d has_lvds %d has_ck505 %d\n", -- has_panel, has_lvds, has_ck505); -+ /* Check if any DPLLs are using the SSC source */ -+ for (i = 0; i < dev_priv->num_shared_dpll; i++) { -+ u32 temp = I915_READ(PCH_DPLL(i)); -+ -+ if (!(temp & DPLL_VCO_ENABLE)) -+ continue; -+ -+ if ((temp & PLL_REF_INPUT_MASK) == -+ PLLB_REF_INPUT_SPREADSPECTRUMIN) { -+ using_ssc_source = true; -+ break; -+ } -+ } -+ -+ DRM_DEBUG_KMS("has_panel %d has_lvds %d has_ck505 %d using_ssc_source %d\n", -+ has_panel, has_lvds, has_ck505, using_ssc_source); - - /* Ironlake: try to setup display ref clock before DPLL - * enabling. This is only under driver's control after -@@ -8299,9 +8315,9 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) - final |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD; - } else - final |= DREF_CPU_SOURCE_OUTPUT_DISABLE; -- } else { -- final |= DREF_SSC_SOURCE_DISABLE; -- final |= DREF_CPU_SOURCE_OUTPUT_DISABLE; -+ } else if (using_ssc_source) { -+ final |= DREF_SSC_SOURCE_ENABLE; -+ final |= DREF_SSC1_ENABLE; - } - - if (final == val) -@@ -8347,7 +8363,7 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) - POSTING_READ(PCH_DREF_CONTROL); - udelay(200); - } else { -- DRM_DEBUG_KMS("Disabling SSC entirely\n"); -+ DRM_DEBUG_KMS("Disabling CPU source output\n"); - - val &= ~DREF_CPU_SOURCE_OUTPUT_MASK; - -@@ -8358,16 +8374,20 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) - POSTING_READ(PCH_DREF_CONTROL); - udelay(200); - -- /* Turn off the SSC source */ -- val &= ~DREF_SSC_SOURCE_MASK; -- val |= DREF_SSC_SOURCE_DISABLE; -+ if (!using_ssc_source) { -+ DRM_DEBUG_KMS("Disabling SSC source\n"); - -- /* Turn off SSC1 */ -- val &= ~DREF_SSC1_ENABLE; -+ /* Turn off the SSC source */ -+ val &= ~DREF_SSC_SOURCE_MASK; -+ val |= DREF_SSC_SOURCE_DISABLE; - -- I915_WRITE(PCH_DREF_CONTROL, val); -- POSTING_READ(PCH_DREF_CONTROL); -- udelay(200); -+ /* Turn off SSC1 */ -+ val &= ~DREF_SSC1_ENABLE; -+ -+ I915_WRITE(PCH_DREF_CONTROL, val); -+ POSTING_READ(PCH_DREF_CONTROL); -+ udelay(200); -+ } - } - - BUG_ON(val != final); -diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c -index 412a34c..69054ef 100644 ---- a/drivers/gpu/drm/i915/intel_dp.c -+++ b/drivers/gpu/drm/i915/intel_dp.c -@@ -4942,13 +4942,15 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp) - - void intel_dp_encoder_reset(struct drm_encoder *encoder) - { -- struct intel_dp *intel_dp; -+ struct drm_i915_private *dev_priv = to_i915(encoder->dev); -+ struct intel_dp *intel_dp = enc_to_intel_dp(encoder); -+ -+ if (!HAS_DDI(dev_priv)) -+ intel_dp->DP = I915_READ(intel_dp->output_reg); - - if (to_intel_encoder(encoder)->type != INTEL_OUTPUT_EDP) - return; - -- intel_dp = enc_to_intel_dp(encoder); -- - pps_lock(intel_dp); - - /* -@@ -5020,9 +5022,6 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) - intel_display_power_get(dev_priv, power_domain); - - if (long_hpd) { -- /* indicate that we need to restart link training */ -- intel_dp->train_set_valid = false; -- - if (!intel_digital_port_connected(dev_priv, intel_dig_port)) - goto mst_fail; - -diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c -index 0b8eefc..926a1e6 100644 ---- a/drivers/gpu/drm/i915/intel_dp_link_training.c -+++ b/drivers/gpu/drm/i915/intel_dp_link_training.c -@@ -85,8 +85,7 @@ static bool - intel_dp_reset_link_train(struct intel_dp *intel_dp, - uint8_t dp_train_pat) - { -- if (!intel_dp->train_set_valid) -- memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set)); -+ memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set)); - intel_dp_set_signal_levels(intel_dp); - return intel_dp_set_link_train(intel_dp, dp_train_pat); - } -@@ -161,22 +160,6 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp) - break; - } - -- /* -- * if we used previously trained voltage and pre-emphasis values -- * and we don't get clock recovery, reset link training values -- */ -- if (intel_dp->train_set_valid) { -- DRM_DEBUG_KMS("clock recovery not ok, reset"); -- /* clear the flag as we are not reusing train set */ -- intel_dp->train_set_valid = false; -- if (!intel_dp_reset_link_train(intel_dp, -- DP_TRAINING_PATTERN_1 | -- DP_LINK_SCRAMBLING_DISABLE)) { -- DRM_ERROR("failed to enable link training\n"); -- return; -- } -- continue; -- } - - /* Check to see if we've tried the max voltage */ - for (i = 0; i < intel_dp->lane_count; i++) -@@ -284,7 +267,6 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) - /* Make sure clock is still ok */ - if (!drm_dp_clock_recovery_ok(link_status, - intel_dp->lane_count)) { -- intel_dp->train_set_valid = false; - intel_dp_link_training_clock_recovery(intel_dp); - intel_dp_set_link_train(intel_dp, - training_pattern | -@@ -301,7 +283,6 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) - - /* Try 5 times, then try clock recovery if that fails */ - if (tries > 5) { -- intel_dp->train_set_valid = false; - intel_dp_link_training_clock_recovery(intel_dp); - intel_dp_set_link_train(intel_dp, - training_pattern | -@@ -322,10 +303,8 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) - - intel_dp_set_idle_link_train(intel_dp); - -- if (channel_eq) { -- intel_dp->train_set_valid = true; -+ if (channel_eq) - DRM_DEBUG_KMS("Channel EQ done. DP Training successful\n"); -- } - } - - void intel_dp_stop_link_train(struct intel_dp *intel_dp) -diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h -index 3a30b37..8dd2cc5 100644 ---- a/drivers/gpu/drm/i915/intel_drv.h -+++ b/drivers/gpu/drm/i915/intel_drv.h -@@ -811,8 +811,6 @@ struct intel_dp { - /* This is called before a link training is starterd */ - void (*prepare_link_retrain)(struct intel_dp *intel_dp); - -- bool train_set_valid; -- - /* Displayport compliance testing */ - unsigned long compliance_test_type; - unsigned long compliance_test_data; -diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c -index 0f0492f..28f4407 100644 ---- a/drivers/gpu/drm/i915/intel_fbc.c -+++ b/drivers/gpu/drm/i915/intel_fbc.c -@@ -823,8 +823,7 @@ static bool intel_fbc_can_choose(struct intel_crtc *crtc) - { - struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; - struct intel_fbc *fbc = &dev_priv->fbc; -- bool enable_by_default = IS_HASWELL(dev_priv) || -- IS_BROADWELL(dev_priv); -+ bool enable_by_default = IS_BROADWELL(dev_priv); - - if (intel_vgpu_active(dev_priv->dev)) { - fbc->no_fbc_reason = "VGPU is active"; -diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c -index 14e64e0..d347dca 100644 ---- a/drivers/gpu/drm/mgag200/mgag200_mode.c -+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c -@@ -182,7 +182,7 @@ static int mga_g200se_set_plls(struct mga_device *mdev, long clock) - } - } - -- fvv = pllreffreq * testn / testm; -+ fvv = pllreffreq * (n + 1) / (m + 1); - fvv = (fvv - 800000) / 50000; - - if (fvv > 15) -@@ -202,6 +202,14 @@ static int mga_g200se_set_plls(struct mga_device *mdev, long clock) - WREG_DAC(MGA1064_PIX_PLLC_M, m); - WREG_DAC(MGA1064_PIX_PLLC_N, n); - WREG_DAC(MGA1064_PIX_PLLC_P, p); -+ -+ if (mdev->unique_rev_id >= 0x04) { -+ WREG_DAC(0x1a, 0x09); -+ msleep(20); -+ WREG_DAC(0x1a, 0x01); -+ -+ } -+ - return 0; - } - -diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h -index db10c11..c5a6ebd 100644 ---- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h -+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h -@@ -25,7 +25,8 @@ u16 nvbios_outp_match(struct nvkm_bios *, u16 type, u16 mask, - u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_outp *); - - struct nvbios_ocfg { -- u16 match; -+ u8 proto; -+ u8 flags; - u16 clkcmp[2]; - }; - -@@ -33,7 +34,7 @@ u16 nvbios_ocfg_entry(struct nvkm_bios *, u16 outp, u8 idx, - u8 *ver, u8 *hdr, u8 *cnt, u8 *len); - u16 nvbios_ocfg_parse(struct nvkm_bios *, u16 outp, u8 idx, - u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ocfg *); --u16 nvbios_ocfg_match(struct nvkm_bios *, u16 outp, u16 type, -+u16 nvbios_ocfg_match(struct nvkm_bios *, u16 outp, u8 proto, u8 flags, - u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ocfg *); - u16 nvbios_oclk_match(struct nvkm_bios *, u16 cmp, u32 khz); - #endif -diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c -index 59f27e7..e40a1b0 100644 ---- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c -+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c -@@ -557,6 +557,8 @@ nouveau_fbcon_init(struct drm_device *dev) - if (ret) - goto fini; - -+ if (fbcon->helper.fbdev) -+ fbcon->helper.fbdev->pixmap.buf_align = 4; - return 0; - - fini: -diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c -index 789dc29..8f715fe 100644 ---- a/drivers/gpu/drm/nouveau/nv04_fbcon.c -+++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c -@@ -82,7 +82,6 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - uint32_t fg; - uint32_t bg; - uint32_t dsize; -- uint32_t width; - uint32_t *data = (uint32_t *)image->data; - int ret; - -@@ -93,9 +92,6 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - if (ret) - return ret; - -- width = ALIGN(image->width, 8); -- dsize = ALIGN(width * image->height, 32) >> 5; -- - if (info->fix.visual == FB_VISUAL_TRUECOLOR || - info->fix.visual == FB_VISUAL_DIRECTCOLOR) { - fg = ((uint32_t *) info->pseudo_palette)[image->fg_color]; -@@ -111,10 +107,11 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - ((image->dx + image->width) & 0xffff)); - OUT_RING(chan, bg); - OUT_RING(chan, fg); -- OUT_RING(chan, (image->height << 16) | width); -+ OUT_RING(chan, (image->height << 16) | image->width); - OUT_RING(chan, (image->height << 16) | image->width); - OUT_RING(chan, (image->dy << 16) | (image->dx & 0xffff)); - -+ dsize = ALIGN(image->width * image->height, 32) >> 5; - while (dsize) { - int iter_len = dsize > 128 ? 128 : dsize; - -diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c -index e05499d..a4e259a 100644 ---- a/drivers/gpu/drm/nouveau/nv50_fbcon.c -+++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c -@@ -95,7 +95,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - struct nouveau_fbdev *nfbdev = info->par; - struct nouveau_drm *drm = nouveau_drm(nfbdev->dev); - struct nouveau_channel *chan = drm->channel; -- uint32_t width, dwords, *data = (uint32_t *)image->data; -+ uint32_t dwords, *data = (uint32_t *)image->data; - uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel)); - uint32_t *palette = info->pseudo_palette; - int ret; -@@ -107,9 +107,6 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - if (ret) - return ret; - -- width = ALIGN(image->width, 32); -- dwords = (width * image->height) >> 5; -- - BEGIN_NV04(chan, NvSub2D, 0x0814, 2); - if (info->fix.visual == FB_VISUAL_TRUECOLOR || - info->fix.visual == FB_VISUAL_DIRECTCOLOR) { -@@ -128,6 +125,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - OUT_RING(chan, 0); - OUT_RING(chan, image->dy); - -+ dwords = ALIGN(image->width * image->height, 32) >> 5; - while (dwords) { - int push = dwords > 2047 ? 2047 : dwords; - -diff --git a/drivers/gpu/drm/nouveau/nvc0_fbcon.c b/drivers/gpu/drm/nouveau/nvc0_fbcon.c -index c97395b..f28315e 100644 ---- a/drivers/gpu/drm/nouveau/nvc0_fbcon.c -+++ b/drivers/gpu/drm/nouveau/nvc0_fbcon.c -@@ -95,7 +95,7 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - struct nouveau_fbdev *nfbdev = info->par; - struct nouveau_drm *drm = nouveau_drm(nfbdev->dev); - struct nouveau_channel *chan = drm->channel; -- uint32_t width, dwords, *data = (uint32_t *)image->data; -+ uint32_t dwords, *data = (uint32_t *)image->data; - uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel)); - uint32_t *palette = info->pseudo_palette; - int ret; -@@ -107,9 +107,6 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - if (ret) - return ret; - -- width = ALIGN(image->width, 32); -- dwords = (width * image->height) >> 5; -- - BEGIN_NVC0(chan, NvSub2D, 0x0814, 2); - if (info->fix.visual == FB_VISUAL_TRUECOLOR || - info->fix.visual == FB_VISUAL_DIRECTCOLOR) { -@@ -128,6 +125,7 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) - OUT_RING (chan, 0); - OUT_RING (chan, image->dy); - -+ dwords = ALIGN(image->width * image->height, 32) >> 5; - while (dwords) { - int push = dwords > 2047 ? 2047 : dwords; - -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c -index 18fab397..62ad030 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c -@@ -1614,7 +1614,7 @@ nvkm_device_pci_func = { - .fini = nvkm_device_pci_fini, - .resource_addr = nvkm_device_pci_resource_addr, - .resource_size = nvkm_device_pci_resource_size, -- .cpu_coherent = !IS_ENABLED(CONFIG_ARM) && !IS_ENABLED(CONFIG_ARM64), -+ .cpu_coherent = !IS_ENABLED(CONFIG_ARM), - }; - - int -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild -index a74c5dd..e2a64ed 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild -@@ -18,6 +18,7 @@ nvkm-y += nvkm/engine/disp/piornv50.o - nvkm-y += nvkm/engine/disp/sornv50.o - nvkm-y += nvkm/engine/disp/sorg94.o - nvkm-y += nvkm/engine/disp/sorgf119.o -+nvkm-y += nvkm/engine/disp/sorgm107.o - nvkm-y += nvkm/engine/disp/sorgm200.o - nvkm-y += nvkm/engine/disp/dport.o - -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c -index f031466..5dd3438 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c -@@ -76,6 +76,7 @@ exec_lookup(struct nv50_disp *disp, int head, int or, u32 ctrl, - mask |= 0x0001 << or; - mask |= 0x0100 << head; - -+ - list_for_each_entry(outp, &disp->base.outp, head) { - if ((outp->info.hasht & 0xff) == type && - (outp->info.hashm & mask) == mask) { -@@ -155,25 +156,21 @@ exec_clkcmp(struct nv50_disp *disp, int head, int id, u32 pclk, u32 *conf) - if (!outp) - return NULL; - -+ *conf = (ctrl & 0x00000f00) >> 8; - switch (outp->info.type) { - case DCB_OUTPUT_TMDS: -- *conf = (ctrl & 0x00000f00) >> 8; - if (*conf == 5) - *conf |= 0x0100; - break; - case DCB_OUTPUT_LVDS: -- *conf = disp->sor.lvdsconf; -- break; -- case DCB_OUTPUT_DP: -- *conf = (ctrl & 0x00000f00) >> 8; -+ *conf |= disp->sor.lvdsconf; - break; -- case DCB_OUTPUT_ANALOG: - default: -- *conf = 0x00ff; - break; - } - -- data = nvbios_ocfg_match(bios, data, *conf, &ver, &hdr, &cnt, &len, &info2); -+ data = nvbios_ocfg_match(bios, data, *conf & 0xff, *conf >> 8, -+ &ver, &hdr, &cnt, &len, &info2); - if (data && id < 0xff) { - data = nvbios_oclk_match(bios, info2.clkcmp[id], pclk); - if (data) { -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c -index b694414..f4b9cf8 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c -@@ -36,7 +36,7 @@ gm107_disp = { - .outp.internal.crt = nv50_dac_output_new, - .outp.internal.tmds = nv50_sor_output_new, - .outp.internal.lvds = nv50_sor_output_new, -- .outp.internal.dp = gf119_sor_dp_new, -+ .outp.internal.dp = gm107_sor_dp_new, - .dac.nr = 3, - .dac.power = nv50_dac_power, - .dac.sense = nv50_dac_sense, -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c -index 4226d21..fcb1b0c 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c -@@ -387,22 +387,17 @@ exec_clkcmp(struct nv50_disp *disp, int head, int id, u32 pclk, u32 *conf) - if (!outp) - return NULL; - -+ *conf = (ctrl & 0x00000f00) >> 8; - if (outp->info.location == 0) { - switch (outp->info.type) { - case DCB_OUTPUT_TMDS: -- *conf = (ctrl & 0x00000f00) >> 8; - if (*conf == 5) - *conf |= 0x0100; - break; - case DCB_OUTPUT_LVDS: -- *conf = disp->sor.lvdsconf; -+ *conf |= disp->sor.lvdsconf; - break; -- case DCB_OUTPUT_DP: -- *conf = (ctrl & 0x00000f00) >> 8; -- break; -- case DCB_OUTPUT_ANALOG: - default: -- *conf = 0x00ff; - break; - } - } else { -@@ -410,7 +405,8 @@ exec_clkcmp(struct nv50_disp *disp, int head, int id, u32 pclk, u32 *conf) - pclk = pclk / 2; - } - -- data = nvbios_ocfg_match(bios, data, *conf, &ver, &hdr, &cnt, &len, &info2); -+ data = nvbios_ocfg_match(bios, data, *conf & 0xff, *conf >> 8, -+ &ver, &hdr, &cnt, &len, &info2); - if (data && id < 0xff) { - data = nvbios_oclk_match(bios, info2.clkcmp[id], pclk); - if (data) { -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h -index e9067ba..4e983f6 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h -@@ -62,7 +62,12 @@ int g94_sor_dp_lnk_pwr(struct nvkm_output_dp *, int); - int gf119_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *, - struct nvkm_output **); - int gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *, int, int, bool); -+int gf119_sor_dp_drv_ctl(struct nvkm_output_dp *, int, int, int, int); - --int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *, -- struct nvkm_output **); -+int gm107_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *, -+ struct nvkm_output **); -+int gm107_sor_dp_pattern(struct nvkm_output_dp *, int); -+ -+int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *, -+ struct nvkm_output **); - #endif -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c -index b4b41b1..49bd5da 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c -@@ -40,8 +40,8 @@ static int - gf119_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern) - { - struct nvkm_device *device = outp->base.disp->engine.subdev.device; -- const u32 loff = gf119_sor_loff(outp); -- nvkm_mask(device, 0x61c110 + loff, 0x0f0f0f0f, 0x01010101 * pattern); -+ const u32 soff = gf119_sor_soff(outp); -+ nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, 0x01010101 * pattern); - return 0; - } - -@@ -64,7 +64,7 @@ gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *outp, int nr, int bw, bool ef) - return 0; - } - --static int -+int - gf119_sor_dp_drv_ctl(struct nvkm_output_dp *outp, - int ln, int vs, int pe, int pc) - { -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c -new file mode 100644 -index 0000000..37790b2 ---- /dev/null -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c -@@ -0,0 +1,53 @@ -+/* -+ * Copyright 2016 Red Hat Inc. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Authors: Ben Skeggs <bskeggs@redhat.com> -+ */ -+#include "nv50.h" -+#include "outpdp.h" -+ -+int -+gm107_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern) -+{ -+ struct nvkm_device *device = outp->base.disp->engine.subdev.device; -+ const u32 soff = outp->base.or * 0x800; -+ const u32 data = 0x01010101 * pattern; -+ if (outp->base.info.sorconf.link & 1) -+ nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, data); -+ else -+ nvkm_mask(device, 0x61c12c + soff, 0x0f0f0f0f, data); -+ return 0; -+} -+ -+static const struct nvkm_output_dp_func -+gm107_sor_dp_func = { -+ .pattern = gm107_sor_dp_pattern, -+ .lnk_pwr = g94_sor_dp_lnk_pwr, -+ .lnk_ctl = gf119_sor_dp_lnk_ctl, -+ .drv_ctl = gf119_sor_dp_drv_ctl, -+}; -+ -+int -+gm107_sor_dp_new(struct nvkm_disp *disp, int index, -+ struct dcb_output *dcbE, struct nvkm_output **poutp) -+{ -+ return nvkm_output_dp_new_(&gm107_sor_dp_func, disp, index, dcbE, poutp); -+} -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c -index 2cfbef9..c44fa7e 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c -@@ -57,19 +57,6 @@ gm200_sor_dp_lane_map(struct nvkm_device *device, u8 lane) - } - - static int --gm200_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern) --{ -- struct nvkm_device *device = outp->base.disp->engine.subdev.device; -- const u32 soff = gm200_sor_soff(outp); -- const u32 data = 0x01010101 * pattern; -- if (outp->base.info.sorconf.link & 1) -- nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, data); -- else -- nvkm_mask(device, 0x61c12c + soff, 0x0f0f0f0f, data); -- return 0; --} -- --static int - gm200_sor_dp_lnk_pwr(struct nvkm_output_dp *outp, int nr) - { - struct nvkm_device *device = outp->base.disp->engine.subdev.device; -@@ -129,7 +116,7 @@ gm200_sor_dp_drv_ctl(struct nvkm_output_dp *outp, - - static const struct nvkm_output_dp_func - gm200_sor_dp_func = { -- .pattern = gm200_sor_dp_pattern, -+ .pattern = gm107_sor_dp_pattern, - .lnk_pwr = gm200_sor_dp_lnk_pwr, - .lnk_ctl = gf119_sor_dp_lnk_ctl, - .drv_ctl = gm200_sor_dp_drv_ctl, -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c -index b2de290..b0c7216 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c -@@ -942,22 +942,41 @@ gf100_gr_trap_gpc_rop(struct gf100_gr *gr, int gpc) - } - - static const struct nvkm_enum gf100_mp_warp_error[] = { -- { 0x00, "NO_ERROR" }, -- { 0x01, "STACK_MISMATCH" }, -+ { 0x01, "STACK_ERROR" }, -+ { 0x02, "API_STACK_ERROR" }, -+ { 0x03, "RET_EMPTY_STACK_ERROR" }, -+ { 0x04, "PC_WRAP" }, - { 0x05, "MISALIGNED_PC" }, -- { 0x08, "MISALIGNED_GPR" }, -- { 0x09, "INVALID_OPCODE" }, -- { 0x0d, "GPR_OUT_OF_BOUNDS" }, -- { 0x0e, "MEM_OUT_OF_BOUNDS" }, -- { 0x0f, "UNALIGNED_MEM_ACCESS" }, -+ { 0x06, "PC_OVERFLOW" }, -+ { 0x07, "MISALIGNED_IMMC_ADDR" }, -+ { 0x08, "MISALIGNED_REG" }, -+ { 0x09, "ILLEGAL_INSTR_ENCODING" }, -+ { 0x0a, "ILLEGAL_SPH_INSTR_COMBO" }, -+ { 0x0b, "ILLEGAL_INSTR_PARAM" }, -+ { 0x0c, "INVALID_CONST_ADDR" }, -+ { 0x0d, "OOR_REG" }, -+ { 0x0e, "OOR_ADDR" }, -+ { 0x0f, "MISALIGNED_ADDR" }, - { 0x10, "INVALID_ADDR_SPACE" }, -- { 0x11, "INVALID_PARAM" }, -+ { 0x11, "ILLEGAL_INSTR_PARAM2" }, -+ { 0x12, "INVALID_CONST_ADDR_LDC" }, -+ { 0x13, "GEOMETRY_SM_ERROR" }, -+ { 0x14, "DIVERGENT" }, -+ { 0x15, "WARP_EXIT" }, - {} - }; - - static const struct nvkm_bitfield gf100_mp_global_error[] = { -+ { 0x00000001, "SM_TO_SM_FAULT" }, -+ { 0x00000002, "L1_ERROR" }, - { 0x00000004, "MULTIPLE_WARP_ERRORS" }, -- { 0x00000008, "OUT_OF_STACK_SPACE" }, -+ { 0x00000008, "PHYSICAL_STACK_OVERFLOW" }, -+ { 0x00000010, "BPT_INT" }, -+ { 0x00000020, "BPT_PAUSE" }, -+ { 0x00000040, "SINGLE_STEP_COMPLETE" }, -+ { 0x20000000, "ECC_SEC_ERROR" }, -+ { 0x40000000, "ECC_DED_ERROR" }, -+ { 0x80000000, "TIMEOUT" }, - {} - }; - -diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.c -index a5e9213..9efb1b4 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.c -+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.c -@@ -141,7 +141,8 @@ nvbios_ocfg_parse(struct nvkm_bios *bios, u16 outp, u8 idx, - { - u16 data = nvbios_ocfg_entry(bios, outp, idx, ver, hdr, cnt, len); - if (data) { -- info->match = nvbios_rd16(bios, data + 0x00); -+ info->proto = nvbios_rd08(bios, data + 0x00); -+ info->flags = nvbios_rd16(bios, data + 0x01); - info->clkcmp[0] = nvbios_rd16(bios, data + 0x02); - info->clkcmp[1] = nvbios_rd16(bios, data + 0x04); - } -@@ -149,12 +150,13 @@ nvbios_ocfg_parse(struct nvkm_bios *bios, u16 outp, u8 idx, - } - - u16 --nvbios_ocfg_match(struct nvkm_bios *bios, u16 outp, u16 type, -+nvbios_ocfg_match(struct nvkm_bios *bios, u16 outp, u8 proto, u8 flags, - u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ocfg *info) - { - u16 data, idx = 0; - while ((data = nvbios_ocfg_parse(bios, outp, idx++, ver, hdr, cnt, len, info))) { -- if (info->match == type) -+ if ((info->proto == proto || info->proto == 0xff) && -+ (info->flags == flags)) - break; - } - return data; -diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c -index e292f56..389fb13 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c -+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c -@@ -69,11 +69,11 @@ gm107_ltc_zbc_clear_depth(struct nvkm_ltc *ltc, int i, const u32 depth) - } - - static void --gm107_ltc_lts_isr(struct nvkm_ltc *ltc, int c, int s) -+gm107_ltc_intr_lts(struct nvkm_ltc *ltc, int c, int s) - { - struct nvkm_subdev *subdev = <c->subdev; - struct nvkm_device *device = subdev->device; -- u32 base = 0x140000 + (c * 0x2000) + (s * 0x200); -+ u32 base = 0x140400 + (c * 0x2000) + (s * 0x200); - u32 stat = nvkm_rd32(device, base + 0x00c); - - if (stat) { -@@ -92,7 +92,7 @@ gm107_ltc_intr(struct nvkm_ltc *ltc) - while (mask) { - u32 s, c = __ffs(mask); - for (s = 0; s < ltc->lts_nr; s++) -- gm107_ltc_lts_isr(ltc, c, s); -+ gm107_ltc_intr_lts(ltc, c, s); - mask &= ~(1 << c); - } - } -diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.c b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.c -index 2a29bfd..e18e0dc 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.c -+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.c -@@ -46,7 +46,7 @@ static const struct nvkm_ltc_func - gm200_ltc = { - .oneinit = gm200_ltc_oneinit, - .init = gm200_ltc_init, -- .intr = gm107_ltc_intr, /*XXX: not validated */ -+ .intr = gm107_ltc_intr, - .cbc_clear = gm107_ltc_cbc_clear, - .cbc_wait = gm107_ltc_cbc_wait, - .zbc = 16, -diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c -index d0826fb..cb29868 100644 ---- a/drivers/gpu/drm/radeon/radeon_device.c -+++ b/drivers/gpu/drm/radeon/radeon_device.c -@@ -630,6 +630,23 @@ void radeon_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc) - /* - * GPU helpers function. - */ -+ -+/** -+ * radeon_device_is_virtual - check if we are running is a virtual environment -+ * -+ * Check if the asic has been passed through to a VM (all asics). -+ * Used at driver startup. -+ * Returns true if virtual or false if not. -+ */ -+static bool radeon_device_is_virtual(void) -+{ -+#ifdef CONFIG_X86 -+ return boot_cpu_has(X86_FEATURE_HYPERVISOR); -+#else -+ return false; -+#endif -+} -+ - /** - * radeon_card_posted - check if the hw has already been initialized - * -@@ -643,6 +660,10 @@ bool radeon_card_posted(struct radeon_device *rdev) - { - uint32_t reg; - -+ /* for pass through, always force asic_init */ -+ if (radeon_device_is_virtual()) -+ return false; -+ - /* required for EFI mode on macbook2,1 which uses an r5xx asic */ - if (efi_enabled(EFI_BOOT) && - (rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) && -diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c -index e3daafa..3e7c9ac 100644 ---- a/drivers/gpu/drm/ttm/ttm_bo.c -+++ b/drivers/gpu/drm/ttm/ttm_bo.c -@@ -1016,9 +1016,9 @@ out_unlock: - return ret; - } - --static bool ttm_bo_mem_compat(struct ttm_placement *placement, -- struct ttm_mem_reg *mem, -- uint32_t *new_flags) -+bool ttm_bo_mem_compat(struct ttm_placement *placement, -+ struct ttm_mem_reg *mem, -+ uint32_t *new_flags) - { - int i; - -@@ -1050,6 +1050,7 @@ static bool ttm_bo_mem_compat(struct ttm_placement *placement, - - return false; - } -+EXPORT_SYMBOL(ttm_bo_mem_compat); - - int ttm_bo_validate(struct ttm_buffer_object *bo, - struct ttm_placement *placement, -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c -index 299925a..eadc981 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c -@@ -49,6 +49,7 @@ int vmw_dmabuf_pin_in_placement(struct vmw_private *dev_priv, - { - struct ttm_buffer_object *bo = &buf->base; - int ret; -+ uint32_t new_flags; - - ret = ttm_write_lock(&dev_priv->reservation_sem, interruptible); - if (unlikely(ret != 0)) -@@ -60,7 +61,12 @@ int vmw_dmabuf_pin_in_placement(struct vmw_private *dev_priv, - if (unlikely(ret != 0)) - goto err; - -- ret = ttm_bo_validate(bo, placement, interruptible, false); -+ if (buf->pin_count > 0) -+ ret = ttm_bo_mem_compat(placement, &bo->mem, -+ &new_flags) == true ? 0 : -EINVAL; -+ else -+ ret = ttm_bo_validate(bo, placement, interruptible, false); -+ - if (!ret) - vmw_bo_pin_reserved(buf, true); - -@@ -91,6 +97,7 @@ int vmw_dmabuf_pin_in_vram_or_gmr(struct vmw_private *dev_priv, - { - struct ttm_buffer_object *bo = &buf->base; - int ret; -+ uint32_t new_flags; - - ret = ttm_write_lock(&dev_priv->reservation_sem, interruptible); - if (unlikely(ret != 0)) -@@ -102,6 +109,12 @@ int vmw_dmabuf_pin_in_vram_or_gmr(struct vmw_private *dev_priv, - if (unlikely(ret != 0)) - goto err; - -+ if (buf->pin_count > 0) { -+ ret = ttm_bo_mem_compat(&vmw_vram_gmr_placement, &bo->mem, -+ &new_flags) == true ? 0 : -EINVAL; -+ goto out_unreserve; -+ } -+ - ret = ttm_bo_validate(bo, &vmw_vram_gmr_placement, interruptible, - false); - if (likely(ret == 0) || ret == -ERESTARTSYS) -@@ -161,6 +174,7 @@ int vmw_dmabuf_pin_in_start_of_vram(struct vmw_private *dev_priv, - struct ttm_placement placement; - struct ttm_place place; - int ret = 0; -+ uint32_t new_flags; - - place = vmw_vram_placement.placement[0]; - place.lpfn = bo->num_pages; -@@ -185,10 +199,15 @@ int vmw_dmabuf_pin_in_start_of_vram(struct vmw_private *dev_priv, - */ - if (bo->mem.mem_type == TTM_PL_VRAM && - bo->mem.start < bo->num_pages && -- bo->mem.start > 0) -+ bo->mem.start > 0 && -+ buf->pin_count == 0) - (void) ttm_bo_validate(bo, &vmw_sys_placement, false, false); - -- ret = ttm_bo_validate(bo, &placement, interruptible, false); -+ if (buf->pin_count > 0) -+ ret = ttm_bo_mem_compat(&placement, &bo->mem, -+ &new_flags) == true ? 0 : -EINVAL; -+ else -+ ret = ttm_bo_validate(bo, &placement, interruptible, false); - - /* For some reason we didn't end up at the start of vram */ - WARN_ON(ret == 0 && bo->offset != 0); -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -index f2cf923..2a50546 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -@@ -227,6 +227,7 @@ static int vmw_force_iommu; - static int vmw_restrict_iommu; - static int vmw_force_coherent; - static int vmw_restrict_dma_mask; -+static int vmw_assume_16bpp; - - static int vmw_probe(struct pci_dev *, const struct pci_device_id *); - static void vmw_master_init(struct vmw_master *); -@@ -243,6 +244,8 @@ MODULE_PARM_DESC(force_coherent, "Force coherent TTM pages"); - module_param_named(force_coherent, vmw_force_coherent, int, 0600); - MODULE_PARM_DESC(restrict_dma_mask, "Restrict DMA mask to 44 bits with IOMMU"); - module_param_named(restrict_dma_mask, vmw_restrict_dma_mask, int, 0600); -+MODULE_PARM_DESC(assume_16bpp, "Assume 16-bpp when filtering modes"); -+module_param_named(assume_16bpp, vmw_assume_16bpp, int, 0600); - - - static void vmw_print_capabilities(uint32_t capabilities) -@@ -653,6 +656,8 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) - dev_priv->vram_start = pci_resource_start(dev->pdev, 1); - dev_priv->mmio_start = pci_resource_start(dev->pdev, 2); - -+ dev_priv->assume_16bpp = !!vmw_assume_16bpp; -+ - dev_priv->enable_fb = enable_fbdev; - - vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2); -@@ -699,6 +704,13 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) - vmw_read(dev_priv, - SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB); - -+ /* -+ * Workaround for low memory 2D VMs to compensate for the -+ * allocation taken by fbdev -+ */ -+ if (!(dev_priv->capabilities & SVGA_CAP_3D)) -+ mem_size *= 2; -+ - dev_priv->max_mob_pages = mem_size * 1024 / PAGE_SIZE; - dev_priv->prim_bb_mem = - vmw_read(dev_priv, -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -index 6db358a..cab0c54 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -@@ -386,6 +386,7 @@ struct vmw_private { - spinlock_t hw_lock; - spinlock_t cap_lock; - bool has_dx; -+ bool assume_16bpp; - - /* - * VGA registers. -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c -index 679a4cb..d2d9395 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c -@@ -517,28 +517,6 @@ static int vmw_fb_kms_framebuffer(struct fb_info *info) - - par->set_fb = &vfb->base; - -- if (!par->bo_ptr) { -- /* -- * Pin before mapping. Since we don't know in what placement -- * to pin, call into KMS to do it for us. -- */ -- ret = vfb->pin(vfb); -- if (ret) { -- DRM_ERROR("Could not pin the fbdev framebuffer.\n"); -- return ret; -- } -- -- ret = ttm_bo_kmap(&par->vmw_bo->base, 0, -- par->vmw_bo->base.num_pages, &par->map); -- if (ret) { -- vfb->unpin(vfb); -- DRM_ERROR("Could not map the fbdev framebuffer.\n"); -- return ret; -- } -- -- par->bo_ptr = ttm_kmap_obj_virtual(&par->map, &par->bo_iowrite); -- } -- - return 0; - } - -@@ -601,6 +579,31 @@ static int vmw_fb_set_par(struct fb_info *info) - if (ret) - goto out_unlock; - -+ if (!par->bo_ptr) { -+ struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(set.fb); -+ -+ /* -+ * Pin before mapping. Since we don't know in what placement -+ * to pin, call into KMS to do it for us. -+ */ -+ ret = vfb->pin(vfb); -+ if (ret) { -+ DRM_ERROR("Could not pin the fbdev framebuffer.\n"); -+ goto out_unlock; -+ } -+ -+ ret = ttm_bo_kmap(&par->vmw_bo->base, 0, -+ par->vmw_bo->base.num_pages, &par->map); -+ if (ret) { -+ vfb->unpin(vfb); -+ DRM_ERROR("Could not map the fbdev framebuffer.\n"); -+ goto out_unlock; -+ } -+ -+ par->bo_ptr = ttm_kmap_obj_virtual(&par->map, &par->bo_iowrite); -+ } -+ -+ - vmw_fb_dirty_mark(par, par->fb_x, par->fb_y, - par->set_fb->width, par->set_fb->height); - -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c -index b07543b..6ccd61d 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c -@@ -1553,14 +1553,10 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector, - DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) - }; - int i; -- u32 assumed_bpp = 2; -+ u32 assumed_bpp = 4; - -- /* -- * If using screen objects, then assume 32-bpp because that's what the -- * SVGA device is assuming -- */ -- if (dev_priv->active_display_unit == vmw_du_screen_object) -- assumed_bpp = 4; -+ if (dev_priv->assume_16bpp) -+ assumed_bpp = 2; - - if (dev_priv->active_display_unit == vmw_du_screen_target) { - max_width = min(max_width, dev_priv->stdu_max_width); -diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c -index 9ca818f..41932a7 100644 ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c -@@ -399,8 +399,10 @@ static int vmw_stdu_bind_fb(struct vmw_private *dev_priv, - - WARN_ON_ONCE(!stdu->defined); - -- if (!vfb->dmabuf && new_fb->width == mode->hdisplay && -- new_fb->height == mode->vdisplay) -+ new_vfbs = (vfb->dmabuf) ? NULL : vmw_framebuffer_to_vfbs(new_fb); -+ -+ if (new_vfbs && new_vfbs->surface->base_size.width == mode->hdisplay && -+ new_vfbs->surface->base_size.height == mode->vdisplay) - new_content_type = SAME_AS_DISPLAY; - else if (vfb->dmabuf) - new_content_type = SEPARATE_DMA; -@@ -444,7 +446,6 @@ static int vmw_stdu_bind_fb(struct vmw_private *dev_priv, - content_srf.mip_levels[0] = 1; - content_srf.multisample_count = 0; - } else { -- new_vfbs = vmw_framebuffer_to_vfbs(new_fb); - content_srf = *new_vfbs->surface; - } - -@@ -464,7 +465,6 @@ static int vmw_stdu_bind_fb(struct vmw_private *dev_priv, - return ret; - } - } else if (new_content_type == SAME_AS_DISPLAY) { -- new_vfbs = vmw_framebuffer_to_vfbs(new_fb); - new_display_srf = vmw_surface_reference(new_vfbs->surface); - } - -diff --git a/drivers/hid/hid-elo.c b/drivers/hid/hid-elo.c -index aad8c16..0cd4f72 100644 ---- a/drivers/hid/hid-elo.c -+++ b/drivers/hid/hid-elo.c -@@ -261,7 +261,7 @@ static void elo_remove(struct hid_device *hdev) - struct elo_priv *priv = hid_get_drvdata(hdev); - - hid_hw_stop(hdev); -- flush_workqueue(wq); -+ cancel_delayed_work_sync(&priv->work); - kfree(priv); - } - -diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c -index c741f5e..0088979 100644 ---- a/drivers/hid/hid-multitouch.c -+++ b/drivers/hid/hid-multitouch.c -@@ -61,6 +61,7 @@ MODULE_LICENSE("GPL"); - #define MT_QUIRK_ALWAYS_VALID (1 << 4) - #define MT_QUIRK_VALID_IS_INRANGE (1 << 5) - #define MT_QUIRK_VALID_IS_CONFIDENCE (1 << 6) -+#define MT_QUIRK_CONFIDENCE (1 << 7) - #define MT_QUIRK_SLOT_IS_CONTACTID_MINUS_ONE (1 << 8) - #define MT_QUIRK_NO_AREA (1 << 9) - #define MT_QUIRK_IGNORE_DUPLICATES (1 << 10) -@@ -78,6 +79,7 @@ struct mt_slot { - __s32 contactid; /* the device ContactID assigned to this slot */ - bool touch_state; /* is the touch valid? */ - bool inrange_state; /* is the finger in proximity of the sensor? */ -+ bool confidence_state; /* is the touch made by a finger? */ - }; - - struct mt_class { -@@ -503,10 +505,8 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi, - return 1; - case HID_DG_CONFIDENCE: - if (cls->name == MT_CLS_WIN_8 && -- field->application == HID_DG_TOUCHPAD) { -- cls->quirks &= ~MT_QUIRK_ALWAYS_VALID; -- cls->quirks |= MT_QUIRK_VALID_IS_CONFIDENCE; -- } -+ field->application == HID_DG_TOUCHPAD) -+ cls->quirks |= MT_QUIRK_CONFIDENCE; - mt_store_field(usage, td, hi); - return 1; - case HID_DG_TIPSWITCH: -@@ -619,6 +619,7 @@ static void mt_complete_slot(struct mt_device *td, struct input_dev *input) - return; - - if (td->curvalid || (td->mtclass.quirks & MT_QUIRK_ALWAYS_VALID)) { -+ int active; - int slotnum = mt_compute_slot(td, input); - struct mt_slot *s = &td->curdata; - struct input_mt *mt = input->mt; -@@ -633,10 +634,14 @@ static void mt_complete_slot(struct mt_device *td, struct input_dev *input) - return; - } - -+ if (!(td->mtclass.quirks & MT_QUIRK_CONFIDENCE)) -+ s->confidence_state = 1; -+ active = (s->touch_state || s->inrange_state) && -+ s->confidence_state; -+ - input_mt_slot(input, slotnum); -- input_mt_report_slot_state(input, MT_TOOL_FINGER, -- s->touch_state || s->inrange_state); -- if (s->touch_state || s->inrange_state) { -+ input_mt_report_slot_state(input, MT_TOOL_FINGER, active); -+ if (active) { - /* this finger is in proximity of the sensor */ - int wide = (s->w > s->h); - /* divided by two to match visual scale of touch */ -@@ -701,6 +706,8 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field, - td->curdata.touch_state = value; - break; - case HID_DG_CONFIDENCE: -+ if (quirks & MT_QUIRK_CONFIDENCE) -+ td->curdata.confidence_state = value; - if (quirks & MT_QUIRK_VALID_IS_CONFIDENCE) - td->curvalid = value; - break; -diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c -index 2f1ddca..700145b 100644 ---- a/drivers/hid/usbhid/hiddev.c -+++ b/drivers/hid/usbhid/hiddev.c -@@ -516,13 +516,13 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd, - goto inval; - } else if (uref->usage_index >= field->report_count) - goto inval; -- -- else if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && -- (uref_multi->num_values > HID_MAX_MULTI_USAGES || -- uref->usage_index + uref_multi->num_values > field->report_count)) -- goto inval; - } - -+ if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && -+ (uref_multi->num_values > HID_MAX_MULTI_USAGES || -+ uref->usage_index + uref_multi->num_values > field->report_count)) -+ goto inval; -+ - switch (cmd) { - case HIDIOCGUSAGE: - uref->value = field->value[uref->usage_index]; -diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c -index c43318d..a9356a3 100644 ---- a/drivers/hwmon/dell-smm-hwmon.c -+++ b/drivers/hwmon/dell-smm-hwmon.c -@@ -66,11 +66,13 @@ - - static DEFINE_MUTEX(i8k_mutex); - static char bios_version[4]; -+static char bios_machineid[16]; - static struct device *i8k_hwmon_dev; - static u32 i8k_hwmon_flags; - static uint i8k_fan_mult = I8K_FAN_MULT; - static uint i8k_pwm_mult; - static uint i8k_fan_max = I8K_FAN_HIGH; -+static bool disallow_fan_type_call; - - #define I8K_HWMON_HAVE_TEMP1 (1 << 0) - #define I8K_HWMON_HAVE_TEMP2 (1 << 1) -@@ -94,13 +96,13 @@ module_param(ignore_dmi, bool, 0); - MODULE_PARM_DESC(ignore_dmi, "Continue probing hardware even if DMI data does not match"); - - #if IS_ENABLED(CONFIG_I8K) --static bool restricted; -+static bool restricted = true; - module_param(restricted, bool, 0); --MODULE_PARM_DESC(restricted, "Allow fan control if SYS_ADMIN capability set"); -+MODULE_PARM_DESC(restricted, "Restrict fan control and serial number to CAP_SYS_ADMIN (default: 1)"); - - static bool power_status; - module_param(power_status, bool, 0600); --MODULE_PARM_DESC(power_status, "Report power status in /proc/i8k"); -+MODULE_PARM_DESC(power_status, "Report power status in /proc/i8k (default: 0)"); - #endif - - static uint fan_mult; -@@ -235,14 +237,28 @@ static int i8k_get_fan_speed(int fan) - /* - * Read the fan type. - */ --static int i8k_get_fan_type(int fan) -+static int _i8k_get_fan_type(int fan) - { - struct smm_regs regs = { .eax = I8K_SMM_GET_FAN_TYPE, }; - -+ if (disallow_fan_type_call) -+ return -EINVAL; -+ - regs.ebx = fan & 0xff; - return i8k_smm(®s) ? : regs.eax & 0xff; - } - -+static int i8k_get_fan_type(int fan) -+{ -+ /* I8K_SMM_GET_FAN_TYPE SMM call is expensive, so cache values */ -+ static int types[2] = { INT_MIN, INT_MIN }; -+ -+ if (types[fan] == INT_MIN) -+ types[fan] = _i8k_get_fan_type(fan); -+ -+ return types[fan]; -+} -+ - /* - * Read the fan nominal rpm for specific fan speed. - */ -@@ -392,9 +408,11 @@ i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg) - break; - - case I8K_MACHINE_ID: -- memset(buff, 0, 16); -- strlcpy(buff, i8k_get_dmi_data(DMI_PRODUCT_SERIAL), -- sizeof(buff)); -+ if (restricted && !capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ -+ memset(buff, 0, sizeof(buff)); -+ strlcpy(buff, bios_machineid, sizeof(buff)); - break; - - case I8K_FN_STATUS: -@@ -511,7 +529,7 @@ static int i8k_proc_show(struct seq_file *seq, void *offset) - seq_printf(seq, "%s %s %s %d %d %d %d %d %d %d\n", - I8K_PROC_FMT, - bios_version, -- i8k_get_dmi_data(DMI_PRODUCT_SERIAL), -+ (restricted && !capable(CAP_SYS_ADMIN)) ? "-1" : bios_machineid, - cpu_temp, - left_fan, right_fan, left_speed, right_speed, - ac_power, fn_key); -@@ -718,6 +736,9 @@ static struct attribute *i8k_attrs[] = { - static umode_t i8k_is_visible(struct kobject *kobj, struct attribute *attr, - int index) - { -+ if (disallow_fan_type_call && -+ (index == 9 || index == 12)) -+ return 0; - if (index >= 0 && index <= 1 && - !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP1)) - return 0; -@@ -767,13 +788,17 @@ static int __init i8k_init_hwmon(void) - if (err >= 0) - i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP4; - -- /* First fan attributes, if fan type is OK */ -- err = i8k_get_fan_type(0); -+ /* First fan attributes, if fan status or type is OK */ -+ err = i8k_get_fan_status(0); -+ if (err < 0) -+ err = i8k_get_fan_type(0); - if (err >= 0) - i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN1; - -- /* Second fan attributes, if fan type is OK */ -- err = i8k_get_fan_type(1); -+ /* Second fan attributes, if fan status or type is OK */ -+ err = i8k_get_fan_status(1); -+ if (err < 0) -+ err = i8k_get_fan_type(1); - if (err >= 0) - i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN2; - -@@ -929,12 +954,14 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = { - - MODULE_DEVICE_TABLE(dmi, i8k_dmi_table); - --static struct dmi_system_id i8k_blacklist_dmi_table[] __initdata = { -+/* -+ * On some machines once I8K_SMM_GET_FAN_TYPE is issued then CPU fan speed -+ * randomly going up and down due to bug in Dell SMM or BIOS. Here is blacklist -+ * of affected Dell machines for which we disallow I8K_SMM_GET_FAN_TYPE call. -+ * See bug: https://bugzilla.kernel.org/show_bug.cgi?id=100121 -+ */ -+static struct dmi_system_id i8k_blacklist_fan_type_dmi_table[] __initdata = { - { -- /* -- * CPU fan speed going up and down on Dell Studio XPS 8000 -- * for unknown reasons. -- */ - .ident = "Dell Studio XPS 8000", - .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), -@@ -942,16 +969,19 @@ static struct dmi_system_id i8k_blacklist_dmi_table[] __initdata = { - }, - }, - { -- /* -- * CPU fan speed going up and down on Dell Studio XPS 8100 -- * for unknown reasons. -- */ - .ident = "Dell Studio XPS 8100", - .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Studio XPS 8100"), - }, - }, -+ { -+ .ident = "Dell Inspiron 580", -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Inspiron 580 "), -+ }, -+ }, - { } - }; - -@@ -966,8 +996,7 @@ static int __init i8k_probe(void) - /* - * Get DMI information - */ -- if (!dmi_check_system(i8k_dmi_table) || -- dmi_check_system(i8k_blacklist_dmi_table)) { -+ if (!dmi_check_system(i8k_dmi_table)) { - if (!ignore_dmi && !force) - return -ENODEV; - -@@ -978,8 +1007,13 @@ static int __init i8k_probe(void) - i8k_get_dmi_data(DMI_BIOS_VERSION)); - } - -+ if (dmi_check_system(i8k_blacklist_fan_type_dmi_table)) -+ disallow_fan_type_call = true; -+ - strlcpy(bios_version, i8k_get_dmi_data(DMI_BIOS_VERSION), - sizeof(bios_version)); -+ strlcpy(bios_machineid, i8k_get_dmi_data(DMI_PRODUCT_SERIAL), -+ sizeof(bios_machineid)); - - /* - * Get SMM Dell signature -diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c -index 923f565..3a9f106 100644 ---- a/drivers/iio/accel/kxsd9.c -+++ b/drivers/iio/accel/kxsd9.c -@@ -81,7 +81,7 @@ static int kxsd9_write_scale(struct iio_dev *indio_dev, int micro) - - mutex_lock(&st->buf_lock); - ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C)); -- if (ret) -+ if (ret < 0) - goto error_ret; - st->tx[0] = KXSD9_WRITE(KXSD9_REG_CTRL_C); - st->tx[1] = (ret & ~KXSD9_FS_MASK) | i; -@@ -163,7 +163,7 @@ static int kxsd9_read_raw(struct iio_dev *indio_dev, - break; - case IIO_CHAN_INFO_SCALE: - ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C)); -- if (ret) -+ if (ret < 0) - goto error_ret; - *val2 = kxsd9_micro_scales[ret & KXSD9_FS_MASK]; - ret = IIO_VAL_INT_PLUS_MICRO; -diff --git a/drivers/iio/adc/ad7266.c b/drivers/iio/adc/ad7266.c -index 21e19b6..2123f0a 100644 ---- a/drivers/iio/adc/ad7266.c -+++ b/drivers/iio/adc/ad7266.c -@@ -396,8 +396,8 @@ static int ad7266_probe(struct spi_device *spi) - - st = iio_priv(indio_dev); - -- st->reg = devm_regulator_get(&spi->dev, "vref"); -- if (!IS_ERR_OR_NULL(st->reg)) { -+ st->reg = devm_regulator_get_optional(&spi->dev, "vref"); -+ if (!IS_ERR(st->reg)) { - ret = regulator_enable(st->reg); - if (ret) - return ret; -@@ -408,6 +408,9 @@ static int ad7266_probe(struct spi_device *spi) - - st->vref_mv = ret / 1000; - } else { -+ /* Any other error indicates that the regulator does exist */ -+ if (PTR_ERR(st->reg) != -ENODEV) -+ return PTR_ERR(st->reg); - /* Use internal reference */ - st->vref_mv = 2500; - } -diff --git a/drivers/iio/humidity/hdc100x.c b/drivers/iio/humidity/hdc100x.c -index fa47676..a03832a 100644 ---- a/drivers/iio/humidity/hdc100x.c -+++ b/drivers/iio/humidity/hdc100x.c -@@ -55,7 +55,7 @@ static const struct { - }, - { /* IIO_HUMIDITYRELATIVE channel */ - .shift = 8, -- .mask = 2, -+ .mask = 3, - }, - }; - -@@ -164,14 +164,14 @@ static int hdc100x_get_measurement(struct hdc100x_data *data, - dev_err(&client->dev, "cannot read high byte measurement"); - return ret; - } -- val = ret << 6; -+ val = ret << 8; - - ret = i2c_smbus_read_byte(client); - if (ret < 0) { - dev_err(&client->dev, "cannot read low byte measurement"); - return ret; - } -- val |= ret >> 2; -+ val |= ret; - - return val; - } -@@ -211,18 +211,18 @@ static int hdc100x_read_raw(struct iio_dev *indio_dev, - return IIO_VAL_INT_PLUS_MICRO; - case IIO_CHAN_INFO_SCALE: - if (chan->type == IIO_TEMP) { -- *val = 165; -- *val2 = 65536 >> 2; -+ *val = 165000; -+ *val2 = 65536; - return IIO_VAL_FRACTIONAL; - } else { -- *val = 0; -- *val2 = 10000; -- return IIO_VAL_INT_PLUS_MICRO; -+ *val = 100; -+ *val2 = 65536; -+ return IIO_VAL_FRACTIONAL; - } - break; - case IIO_CHAN_INFO_OFFSET: -- *val = -3971; -- *val2 = 879096; -+ *val = -15887; -+ *val2 = 515151; - return IIO_VAL_INT_PLUS_MICRO; - default: - return -EINVAL; -diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c -index ae2806a..0c52dfe 100644 ---- a/drivers/iio/industrialio-trigger.c -+++ b/drivers/iio/industrialio-trigger.c -@@ -210,22 +210,35 @@ static int iio_trigger_attach_poll_func(struct iio_trigger *trig, - - /* Prevent the module from being removed whilst attached to a trigger */ - __module_get(pf->indio_dev->info->driver_module); -+ -+ /* Get irq number */ - pf->irq = iio_trigger_get_irq(trig); -+ if (pf->irq < 0) -+ goto out_put_module; -+ -+ /* Request irq */ - ret = request_threaded_irq(pf->irq, pf->h, pf->thread, - pf->type, pf->name, - pf); -- if (ret < 0) { -- module_put(pf->indio_dev->info->driver_module); -- return ret; -- } -+ if (ret < 0) -+ goto out_put_irq; - -+ /* Enable trigger in driver */ - if (trig->ops && trig->ops->set_trigger_state && notinuse) { - ret = trig->ops->set_trigger_state(trig, true); - if (ret < 0) -- module_put(pf->indio_dev->info->driver_module); -+ goto out_free_irq; - } - - return ret; -+ -+out_free_irq: -+ free_irq(pf->irq, pf); -+out_put_irq: -+ iio_trigger_put_irq(trig, pf->irq); -+out_put_module: -+ module_put(pf->indio_dev->info->driver_module); -+ return ret; - } - - static int iio_trigger_detach_poll_func(struct iio_trigger *trig, -diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c -index a6af56a..6443aad 100644 ---- a/drivers/iio/light/apds9960.c -+++ b/drivers/iio/light/apds9960.c -@@ -1006,6 +1006,7 @@ static int apds9960_probe(struct i2c_client *client, - - iio_device_attach_buffer(indio_dev, buffer); - -+ indio_dev->dev.parent = &client->dev; - indio_dev->info = &apds9960_info; - indio_dev->name = APDS9960_DRV_NAME; - indio_dev->channels = apds9960_channels; -diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c -index 172393a..d3ca320 100644 ---- a/drivers/iio/pressure/st_pressure_core.c -+++ b/drivers/iio/pressure/st_pressure_core.c -@@ -28,15 +28,21 @@ - #include <linux/iio/common/st_sensors.h> - #include "st_pressure.h" - -+#define MCELSIUS_PER_CELSIUS 1000 -+ -+/* Default pressure sensitivity */ - #define ST_PRESS_LSB_PER_MBAR 4096UL - #define ST_PRESS_KPASCAL_NANO_SCALE (100000000UL / \ - ST_PRESS_LSB_PER_MBAR) -+ -+/* Default temperature sensitivity */ - #define ST_PRESS_LSB_PER_CELSIUS 480UL --#define ST_PRESS_CELSIUS_NANO_SCALE (1000000000UL / \ -- ST_PRESS_LSB_PER_CELSIUS) -+#define ST_PRESS_MILLI_CELSIUS_OFFSET 42500UL -+ - #define ST_PRESS_NUMBER_DATA_CHANNELS 1 - - /* FULLSCALE */ -+#define ST_PRESS_FS_AVL_1100MB 1100 - #define ST_PRESS_FS_AVL_1260MB 1260 - - #define ST_PRESS_1_OUT_XL_ADDR 0x28 -@@ -54,9 +60,6 @@ - #define ST_PRESS_LPS331AP_PW_MASK 0x80 - #define ST_PRESS_LPS331AP_FS_ADDR 0x23 - #define ST_PRESS_LPS331AP_FS_MASK 0x30 --#define ST_PRESS_LPS331AP_FS_AVL_1260_VAL 0x00 --#define ST_PRESS_LPS331AP_FS_AVL_1260_GAIN ST_PRESS_KPASCAL_NANO_SCALE --#define ST_PRESS_LPS331AP_FS_AVL_TEMP_GAIN ST_PRESS_CELSIUS_NANO_SCALE - #define ST_PRESS_LPS331AP_BDU_ADDR 0x20 - #define ST_PRESS_LPS331AP_BDU_MASK 0x04 - #define ST_PRESS_LPS331AP_DRDY_IRQ_ADDR 0x22 -@@ -65,9 +68,14 @@ - #define ST_PRESS_LPS331AP_IHL_IRQ_ADDR 0x22 - #define ST_PRESS_LPS331AP_IHL_IRQ_MASK 0x80 - #define ST_PRESS_LPS331AP_MULTIREAD_BIT true --#define ST_PRESS_LPS331AP_TEMP_OFFSET 42500 - - /* CUSTOM VALUES FOR LPS001WP SENSOR */ -+ -+/* LPS001WP pressure resolution */ -+#define ST_PRESS_LPS001WP_LSB_PER_MBAR 16UL -+/* LPS001WP temperature resolution */ -+#define ST_PRESS_LPS001WP_LSB_PER_CELSIUS 64UL -+ - #define ST_PRESS_LPS001WP_WAI_EXP 0xba - #define ST_PRESS_LPS001WP_ODR_ADDR 0x20 - #define ST_PRESS_LPS001WP_ODR_MASK 0x30 -@@ -76,6 +84,8 @@ - #define ST_PRESS_LPS001WP_ODR_AVL_13HZ_VAL 0x03 - #define ST_PRESS_LPS001WP_PW_ADDR 0x20 - #define ST_PRESS_LPS001WP_PW_MASK 0x40 -+#define ST_PRESS_LPS001WP_FS_AVL_PRESS_GAIN \ -+ (100000000UL / ST_PRESS_LPS001WP_LSB_PER_MBAR) - #define ST_PRESS_LPS001WP_BDU_ADDR 0x20 - #define ST_PRESS_LPS001WP_BDU_MASK 0x04 - #define ST_PRESS_LPS001WP_MULTIREAD_BIT true -@@ -92,11 +102,6 @@ - #define ST_PRESS_LPS25H_ODR_AVL_25HZ_VAL 0x04 - #define ST_PRESS_LPS25H_PW_ADDR 0x20 - #define ST_PRESS_LPS25H_PW_MASK 0x80 --#define ST_PRESS_LPS25H_FS_ADDR 0x00 --#define ST_PRESS_LPS25H_FS_MASK 0x00 --#define ST_PRESS_LPS25H_FS_AVL_1260_VAL 0x00 --#define ST_PRESS_LPS25H_FS_AVL_1260_GAIN ST_PRESS_KPASCAL_NANO_SCALE --#define ST_PRESS_LPS25H_FS_AVL_TEMP_GAIN ST_PRESS_CELSIUS_NANO_SCALE - #define ST_PRESS_LPS25H_BDU_ADDR 0x20 - #define ST_PRESS_LPS25H_BDU_MASK 0x04 - #define ST_PRESS_LPS25H_DRDY_IRQ_ADDR 0x23 -@@ -105,7 +110,6 @@ - #define ST_PRESS_LPS25H_IHL_IRQ_ADDR 0x22 - #define ST_PRESS_LPS25H_IHL_IRQ_MASK 0x80 - #define ST_PRESS_LPS25H_MULTIREAD_BIT true --#define ST_PRESS_LPS25H_TEMP_OFFSET 42500 - #define ST_PRESS_LPS25H_OUT_XL_ADDR 0x28 - #define ST_TEMP_LPS25H_OUT_L_ADDR 0x2b - -@@ -157,7 +161,9 @@ static const struct iio_chan_spec st_press_lps001wp_channels[] = { - .storagebits = 16, - .endianness = IIO_LE, - }, -- .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), -+ .info_mask_separate = -+ BIT(IIO_CHAN_INFO_RAW) | -+ BIT(IIO_CHAN_INFO_SCALE), - .modified = 0, - }, - { -@@ -173,7 +179,7 @@ static const struct iio_chan_spec st_press_lps001wp_channels[] = { - }, - .info_mask_separate = - BIT(IIO_CHAN_INFO_RAW) | -- BIT(IIO_CHAN_INFO_OFFSET), -+ BIT(IIO_CHAN_INFO_SCALE), - .modified = 0, - }, - IIO_CHAN_SOFT_TIMESTAMP(1) -@@ -208,11 +214,14 @@ static const struct st_sensor_settings st_press_sensors_settings[] = { - .addr = ST_PRESS_LPS331AP_FS_ADDR, - .mask = ST_PRESS_LPS331AP_FS_MASK, - .fs_avl = { -+ /* -+ * Pressure and temperature sensitivity values -+ * as defined in table 3 of LPS331AP datasheet. -+ */ - [0] = { - .num = ST_PRESS_FS_AVL_1260MB, -- .value = ST_PRESS_LPS331AP_FS_AVL_1260_VAL, -- .gain = ST_PRESS_LPS331AP_FS_AVL_1260_GAIN, -- .gain2 = ST_PRESS_LPS331AP_FS_AVL_TEMP_GAIN, -+ .gain = ST_PRESS_KPASCAL_NANO_SCALE, -+ .gain2 = ST_PRESS_LSB_PER_CELSIUS, - }, - }, - }, -@@ -254,7 +263,17 @@ static const struct st_sensor_settings st_press_sensors_settings[] = { - .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, - }, - .fs = { -- .addr = 0, -+ .fs_avl = { -+ /* -+ * Pressure and temperature resolution values -+ * as defined in table 3 of LPS001WP datasheet. -+ */ -+ [0] = { -+ .num = ST_PRESS_FS_AVL_1100MB, -+ .gain = ST_PRESS_LPS001WP_FS_AVL_PRESS_GAIN, -+ .gain2 = ST_PRESS_LPS001WP_LSB_PER_CELSIUS, -+ }, -+ }, - }, - .bdu = { - .addr = ST_PRESS_LPS001WP_BDU_ADDR, -@@ -291,14 +310,15 @@ static const struct st_sensor_settings st_press_sensors_settings[] = { - .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, - }, - .fs = { -- .addr = ST_PRESS_LPS25H_FS_ADDR, -- .mask = ST_PRESS_LPS25H_FS_MASK, - .fs_avl = { -+ /* -+ * Pressure and temperature sensitivity values -+ * as defined in table 3 of LPS25H datasheet. -+ */ - [0] = { - .num = ST_PRESS_FS_AVL_1260MB, -- .value = ST_PRESS_LPS25H_FS_AVL_1260_VAL, -- .gain = ST_PRESS_LPS25H_FS_AVL_1260_GAIN, -- .gain2 = ST_PRESS_LPS25H_FS_AVL_TEMP_GAIN, -+ .gain = ST_PRESS_KPASCAL_NANO_SCALE, -+ .gain2 = ST_PRESS_LSB_PER_CELSIUS, - }, - }, - }, -@@ -354,26 +374,26 @@ static int st_press_read_raw(struct iio_dev *indio_dev, - - return IIO_VAL_INT; - case IIO_CHAN_INFO_SCALE: -- *val = 0; -- - switch (ch->type) { - case IIO_PRESSURE: -+ *val = 0; - *val2 = press_data->current_fullscale->gain; -- break; -+ return IIO_VAL_INT_PLUS_NANO; - case IIO_TEMP: -+ *val = MCELSIUS_PER_CELSIUS; - *val2 = press_data->current_fullscale->gain2; -- break; -+ return IIO_VAL_FRACTIONAL; - default: - err = -EINVAL; - goto read_error; - } - -- return IIO_VAL_INT_PLUS_NANO; - case IIO_CHAN_INFO_OFFSET: - switch (ch->type) { - case IIO_TEMP: -- *val = 425; -- *val2 = 10; -+ *val = ST_PRESS_MILLI_CELSIUS_OFFSET * -+ press_data->current_fullscale->gain2; -+ *val2 = MCELSIUS_PER_CELSIUS; - break; - default: - err = -EINVAL; -diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c -index f4d29d5..e2f926c 100644 ---- a/drivers/iio/proximity/as3935.c -+++ b/drivers/iio/proximity/as3935.c -@@ -64,6 +64,7 @@ struct as3935_state { - struct delayed_work work; - - u32 tune_cap; -+ u8 buffer[16]; /* 8-bit data + 56-bit padding + 64-bit timestamp */ - u8 buf[2] ____cacheline_aligned; - }; - -@@ -72,7 +73,8 @@ static const struct iio_chan_spec as3935_channels[] = { - .type = IIO_PROXIMITY, - .info_mask_separate = - BIT(IIO_CHAN_INFO_RAW) | -- BIT(IIO_CHAN_INFO_PROCESSED), -+ BIT(IIO_CHAN_INFO_PROCESSED) | -+ BIT(IIO_CHAN_INFO_SCALE), - .scan_index = 0, - .scan_type = { - .sign = 'u', -@@ -181,7 +183,12 @@ static int as3935_read_raw(struct iio_dev *indio_dev, - /* storm out of range */ - if (*val == AS3935_DATA_MASK) - return -EINVAL; -- *val *= 1000; -+ -+ if (m == IIO_CHAN_INFO_PROCESSED) -+ *val *= 1000; -+ break; -+ case IIO_CHAN_INFO_SCALE: -+ *val = 1000; - break; - default: - return -EINVAL; -@@ -206,10 +213,10 @@ static irqreturn_t as3935_trigger_handler(int irq, void *private) - ret = as3935_read(st, AS3935_DATA, &val); - if (ret) - goto err_read; -- val &= AS3935_DATA_MASK; -- val *= 1000; - -- iio_push_to_buffers_with_timestamp(indio_dev, &val, pf->timestamp); -+ st->buffer[0] = val & AS3935_DATA_MASK; -+ iio_push_to_buffers_with_timestamp(indio_dev, &st->buffer, -+ pf->timestamp); - err_read: - iio_trigger_notify_done(indio_dev->trig); - -diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c -index 1d92e09..c995255 100644 ---- a/drivers/infiniband/core/cm.c -+++ b/drivers/infiniband/core/cm.c -@@ -3452,14 +3452,14 @@ static int cm_establish(struct ib_cm_id *cm_id) - work->cm_event.event = IB_CM_USER_ESTABLISHED; - - /* Check if the device started its remove_one */ -- spin_lock_irq(&cm.lock); -+ spin_lock_irqsave(&cm.lock, flags); - if (!cm_dev->going_down) { - queue_delayed_work(cm.wq, &work->work, 0); - } else { - kfree(work); - ret = -ENODEV; - } -- spin_unlock_irq(&cm.lock); -+ spin_unlock_irqrestore(&cm.lock, flags); - - out: - return ret; -diff --git a/drivers/infiniband/hw/mlx4/ah.c b/drivers/infiniband/hw/mlx4/ah.c -index 105246f..5fc6233 100644 ---- a/drivers/infiniband/hw/mlx4/ah.c -+++ b/drivers/infiniband/hw/mlx4/ah.c -@@ -47,6 +47,7 @@ static struct ib_ah *create_ib_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr, - - ah->av.ib.port_pd = cpu_to_be32(to_mpd(pd)->pdn | (ah_attr->port_num << 24)); - ah->av.ib.g_slid = ah_attr->src_path_bits; -+ ah->av.ib.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 28); - if (ah_attr->ah_flags & IB_AH_GRH) { - ah->av.ib.g_slid |= 0x80; - ah->av.ib.gid_index = ah_attr->grh.sgid_index; -@@ -64,7 +65,6 @@ static struct ib_ah *create_ib_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr, - !(1 << ah->av.ib.stat_rate & dev->caps.stat_rate_support)) - --ah->av.ib.stat_rate; - } -- ah->av.ib.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 28); - - return &ah->ibah; - } -diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c -index a9e3bcc..a0ecf08 100644 ---- a/drivers/infiniband/sw/rdmavt/qp.c -+++ b/drivers/infiniband/sw/rdmavt/qp.c -@@ -683,8 +683,10 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd, - * initialization that is needed. - */ - priv = rdi->driver_f.qp_priv_alloc(rdi, qp, gfp); -- if (!priv) -+ if (IS_ERR(priv)) { -+ ret = priv; - goto bail_qp; -+ } - qp->priv = priv; - qp->timeout_jiffies = - usecs_to_jiffies((4096UL * (1UL << qp->timeout)) / -diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c -index bf4959f..94f1bf7 100644 ---- a/drivers/iommu/amd_iommu_init.c -+++ b/drivers/iommu/amd_iommu_init.c -@@ -1363,13 +1363,23 @@ static int __init amd_iommu_init_pci(void) - break; - } - -+ /* -+ * Order is important here to make sure any unity map requirements are -+ * fulfilled. The unity mappings are created and written to the device -+ * table during the amd_iommu_init_api() call. -+ * -+ * After that we call init_device_table_dma() to make sure any -+ * uninitialized DTE will block DMA, and in the end we flush the caches -+ * of all IOMMUs to make sure the changes to the device table are -+ * active. -+ */ -+ ret = amd_iommu_init_api(); -+ - init_device_table_dma(); - - for_each_iommu(iommu) - iommu_flush_all_caches(iommu); - -- ret = amd_iommu_init_api(); -- - if (!ret) - print_iommu_info(); - -diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c -index 4ff73ff..3e20208 100644 ---- a/drivers/iommu/arm-smmu-v3.c -+++ b/drivers/iommu/arm-smmu-v3.c -@@ -1942,6 +1942,7 @@ static struct iommu_ops arm_smmu_ops = { - .attach_dev = arm_smmu_attach_dev, - .map = arm_smmu_map, - .unmap = arm_smmu_unmap, -+ .map_sg = default_iommu_map_sg, - .iova_to_phys = arm_smmu_iova_to_phys, - .add_device = arm_smmu_add_device, - .remove_device = arm_smmu_remove_device, -diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c -index e1852e8..ae364e0 100644 ---- a/drivers/iommu/intel-iommu.c -+++ b/drivers/iommu/intel-iommu.c -@@ -3169,11 +3169,6 @@ static int __init init_dmars(void) - } - } - -- iommu_flush_write_buffer(iommu); -- iommu_set_root_entry(iommu); -- iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL); -- iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); -- - if (!ecap_pass_through(iommu->ecap)) - hw_pass_through = 0; - #ifdef CONFIG_INTEL_IOMMU_SVM -@@ -3182,6 +3177,18 @@ static int __init init_dmars(void) - #endif - } - -+ /* -+ * Now that qi is enabled on all iommus, set the root entry and flush -+ * caches. This is required on some Intel X58 chipsets, otherwise the -+ * flush_context function will loop forever and the boot hangs. -+ */ -+ for_each_active_iommu(iommu, drhd) { -+ iommu_flush_write_buffer(iommu); -+ iommu_set_root_entry(iommu); -+ iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL); -+ iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); -+ } -+ - if (iommu_pass_through) - iommu_identity_mapping |= IDENTMAP_ALL; - -diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c -index 5710a06..0ea8d9a 100644 ---- a/drivers/iommu/rockchip-iommu.c -+++ b/drivers/iommu/rockchip-iommu.c -@@ -815,7 +815,7 @@ static int rk_iommu_attach_device(struct iommu_domain *domain, - dte_addr = virt_to_phys(rk_domain->dt); - for (i = 0; i < iommu->num_mmu; i++) { - rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR, dte_addr); -- rk_iommu_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE); -+ rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE); - rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, RK_MMU_IRQ_MASK); - } - -diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c -index 4dffccf..40fb120 100644 ---- a/drivers/irqchip/irq-mips-gic.c -+++ b/drivers/irqchip/irq-mips-gic.c -@@ -734,6 +734,12 @@ static int gic_irq_domain_alloc(struct irq_domain *d, unsigned int virq, - /* verify that it doesn't conflict with an IPI irq */ - if (test_bit(spec->hwirq, ipi_resrv)) - return -EBUSY; -+ -+ hwirq = GIC_SHARED_TO_HWIRQ(spec->hwirq); -+ -+ return irq_domain_set_hwirq_and_chip(d, virq, hwirq, -+ &gic_level_irq_controller, -+ NULL); - } else { - base_hwirq = find_first_bit(ipi_resrv, gic_shared_intrs); - if (base_hwirq == gic_shared_intrs) { -@@ -855,10 +861,14 @@ static int gic_dev_domain_alloc(struct irq_domain *d, unsigned int virq, - &gic_level_irq_controller, - NULL); - if (ret) -- return ret; -+ goto error; - } - - return 0; -+ -+error: -+ irq_domain_free_irqs_parent(d, virq, nr_irqs); -+ return ret; - } - - void gic_dev_domain_free(struct irq_domain *d, unsigned int virq, -diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c -index d7723ce..12690c1 100644 ---- a/drivers/media/usb/uvc/uvc_v4l2.c -+++ b/drivers/media/usb/uvc/uvc_v4l2.c -@@ -1408,47 +1408,44 @@ static int uvc_v4l2_put_xu_query(const struct uvc_xu_control_query *kp, - static long uvc_v4l2_compat_ioctl32(struct file *file, - unsigned int cmd, unsigned long arg) - { -+ struct uvc_fh *handle = file->private_data; - union { - struct uvc_xu_control_mapping xmap; - struct uvc_xu_control_query xqry; - } karg; - void __user *up = compat_ptr(arg); -- mm_segment_t old_fs; - long ret; - - switch (cmd) { - case UVCIOC_CTRL_MAP32: -- cmd = UVCIOC_CTRL_MAP; - ret = uvc_v4l2_get_xu_mapping(&karg.xmap, up); -+ if (ret) -+ return ret; -+ ret = uvc_ioctl_ctrl_map(handle->chain, &karg.xmap); -+ if (ret) -+ return ret; -+ ret = uvc_v4l2_put_xu_mapping(&karg.xmap, up); -+ if (ret) -+ return ret; -+ - break; - - case UVCIOC_CTRL_QUERY32: -- cmd = UVCIOC_CTRL_QUERY; - ret = uvc_v4l2_get_xu_query(&karg.xqry, up); -+ if (ret) -+ return ret; -+ ret = uvc_xu_ctrl_query(handle->chain, &karg.xqry); -+ if (ret) -+ return ret; -+ ret = uvc_v4l2_put_xu_query(&karg.xqry, up); -+ if (ret) -+ return ret; - break; - - default: - return -ENOIOCTLCMD; - } - -- old_fs = get_fs(); -- set_fs(KERNEL_DS); -- ret = video_ioctl2(file, cmd, (unsigned long)&karg); -- set_fs(old_fs); -- -- if (ret < 0) -- return ret; -- -- switch (cmd) { -- case UVCIOC_CTRL_MAP: -- ret = uvc_v4l2_put_xu_mapping(&karg.xmap, up); -- break; -- -- case UVCIOC_CTRL_QUERY: -- ret = uvc_v4l2_put_xu_query(&karg.xqry, up); -- break; -- } -- - return ret; - } - #endif -diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c -index 21825dd..859b4a1 100644 ---- a/drivers/memory/omap-gpmc.c -+++ b/drivers/memory/omap-gpmc.c -@@ -394,7 +394,7 @@ static void gpmc_cs_bool_timings(int cs, const struct gpmc_bool_timings *p) - gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG4, - GPMC_CONFIG4_OEEXTRADELAY, p->oe_extra_delay); - gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG4, -- GPMC_CONFIG4_OEEXTRADELAY, p->we_extra_delay); -+ GPMC_CONFIG4_WEEXTRADELAY, p->we_extra_delay); - gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG6, - GPMC_CONFIG6_CYCLE2CYCLESAMECSEN, - p->cycle2cyclesamecsen); -diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c -index 96fddb0..4dd0391 100644 ---- a/drivers/mtd/ubi/eba.c -+++ b/drivers/mtd/ubi/eba.c -@@ -575,6 +575,7 @@ static int recover_peb(struct ubi_device *ubi, int pnum, int vol_id, int lnum, - int err, idx = vol_id2idx(ubi, vol_id), new_pnum, data_size, tries = 0; - struct ubi_volume *vol = ubi->volumes[idx]; - struct ubi_vid_hdr *vid_hdr; -+ uint32_t crc; - - vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); - if (!vid_hdr) -@@ -599,14 +600,8 @@ retry: - goto out_put; - } - -- vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); -- err = ubi_io_write_vid_hdr(ubi, new_pnum, vid_hdr); -- if (err) { -- up_read(&ubi->fm_eba_sem); -- goto write_error; -- } -+ ubi_assert(vid_hdr->vol_type == UBI_VID_DYNAMIC); - -- data_size = offset + len; - mutex_lock(&ubi->buf_mutex); - memset(ubi->peb_buf + offset, 0xFF, len); - -@@ -621,6 +616,19 @@ retry: - - memcpy(ubi->peb_buf + offset, buf, len); - -+ data_size = offset + len; -+ crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); -+ vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); -+ vid_hdr->copy_flag = 1; -+ vid_hdr->data_size = cpu_to_be32(data_size); -+ vid_hdr->data_crc = cpu_to_be32(crc); -+ err = ubi_io_write_vid_hdr(ubi, new_pnum, vid_hdr); -+ if (err) { -+ mutex_unlock(&ubi->buf_mutex); -+ up_read(&ubi->fm_eba_sem); -+ goto write_error; -+ } -+ - err = ubi_io_write_data(ubi, ubi->peb_buf, new_pnum, 0, data_size); - if (err) { - mutex_unlock(&ubi->buf_mutex); -diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c -index 9fcb489..c70e515 100644 ---- a/drivers/net/geneve.c -+++ b/drivers/net/geneve.c -@@ -1092,12 +1092,17 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev) - - static int __geneve_change_mtu(struct net_device *dev, int new_mtu, bool strict) - { -+ struct geneve_dev *geneve = netdev_priv(dev); - /* The max_mtu calculation does not take account of GENEVE - * options, to avoid excluding potentially valid - * configurations. - */ -- int max_mtu = IP_MAX_MTU - GENEVE_BASE_HLEN - sizeof(struct iphdr) -- - dev->hard_header_len; -+ int max_mtu = IP_MAX_MTU - GENEVE_BASE_HLEN - dev->hard_header_len; -+ -+ if (geneve->remote.sa.sa_family == AF_INET6) -+ max_mtu -= sizeof(struct ipv6hdr); -+ else -+ max_mtu -= sizeof(struct iphdr); - - if (new_mtu < 68) - return -EINVAL; -diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c -index 9e803bb..8f3c55d 100644 ---- a/drivers/net/macsec.c -+++ b/drivers/net/macsec.c -@@ -2564,6 +2564,7 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb, - u64_stats_update_begin(&secy_stats->syncp); - secy_stats->stats.OutPktsUntagged++; - u64_stats_update_end(&secy_stats->syncp); -+ skb->dev = macsec->real_dev; - len = skb->len; - ret = dev_queue_xmit(skb); - count_tx(dev, ret, len); -diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c -index 2fb31ed..d4425c56 100644 ---- a/drivers/net/usb/cdc_ncm.c -+++ b/drivers/net/usb/cdc_ncm.c -@@ -852,6 +852,13 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_ - if (cdc_ncm_init(dev)) - goto error2; - -+ /* Some firmwares need a pause here or they will silently fail -+ * to set up the interface properly. This value was decided -+ * empirically on a Sierra Wireless MC7455 running 02.08.02.00 -+ * firmware. -+ */ -+ usleep_range(10000, 20000); -+ - /* configure data interface */ - temp = usb_set_interface(dev->udev, iface_no, data_altsetting); - if (temp) { -diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c -index e85e073..06664ba 100644 ---- a/drivers/net/wireless/mac80211_hwsim.c -+++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -2771,6 +2771,7 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2, - if (!info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER] || - !info->attrs[HWSIM_ATTR_FLAGS] || - !info->attrs[HWSIM_ATTR_COOKIE] || -+ !info->attrs[HWSIM_ATTR_SIGNAL] || - !info->attrs[HWSIM_ATTR_TX_INFO]) - goto out; - -diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c b/drivers/net/wireless/realtek/rtlwifi/core.c -index 0f48048..3a0faa8 100644 ---- a/drivers/net/wireless/realtek/rtlwifi/core.c -+++ b/drivers/net/wireless/realtek/rtlwifi/core.c -@@ -54,7 +54,7 @@ EXPORT_SYMBOL(channel5g_80m); - void rtl_addr_delay(u32 addr) - { - if (addr == 0xfe) -- msleep(50); -+ mdelay(50); - else if (addr == 0xfd) - msleep(5); - else if (addr == 0xfc) -@@ -75,7 +75,7 @@ void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr, - rtl_addr_delay(addr); - } else { - rtl_set_rfreg(hw, rfpath, addr, mask, data); -- usleep_range(1, 2); -+ udelay(1); - } - } - EXPORT_SYMBOL(rtl_rfreg_delay); -@@ -86,7 +86,7 @@ void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data) - rtl_addr_delay(addr); - } else { - rtl_set_bbreg(hw, addr, MASKDWORD, data); -- usleep_range(1, 2); -+ udelay(1); - } - } - EXPORT_SYMBOL(rtl_bb_delay); -diff --git a/drivers/of/irq.c b/drivers/of/irq.c -index e7bfc17..6ec743f 100644 ---- a/drivers/of/irq.c -+++ b/drivers/of/irq.c -@@ -386,13 +386,13 @@ int of_irq_to_resource(struct device_node *dev, int index, struct resource *r) - EXPORT_SYMBOL_GPL(of_irq_to_resource); - - /** -- * of_irq_get - Decode a node's IRQ and return it as a Linux irq number -+ * of_irq_get - Decode a node's IRQ and return it as a Linux IRQ number - * @dev: pointer to device tree node -- * @index: zero-based index of the irq -- * -- * Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain -- * is not yet created. -+ * @index: zero-based index of the IRQ - * -+ * Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or -+ * -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case -+ * of any other failure. - */ - int of_irq_get(struct device_node *dev, int index) - { -@@ -413,12 +413,13 @@ int of_irq_get(struct device_node *dev, int index) - EXPORT_SYMBOL_GPL(of_irq_get); - - /** -- * of_irq_get_byname - Decode a node's IRQ and return it as a Linux irq number -+ * of_irq_get_byname - Decode a node's IRQ and return it as a Linux IRQ number - * @dev: pointer to device tree node -- * @name: irq name -+ * @name: IRQ name - * -- * Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain -- * is not yet created, or error code in case of any other failure. -+ * Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or -+ * -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case -+ * of any other failure. - */ - int of_irq_get_byname(struct device_node *dev, const char *name) - { -diff --git a/drivers/pci/vc.c b/drivers/pci/vc.c -index dfbab61..1fa3a32 100644 ---- a/drivers/pci/vc.c -+++ b/drivers/pci/vc.c -@@ -221,9 +221,9 @@ static int pci_vc_do_save_buffer(struct pci_dev *dev, int pos, - else - pci_write_config_word(dev, pos + PCI_VC_PORT_CTRL, - *(u16 *)buf); -- buf += 2; -+ buf += 4; - } -- len += 2; -+ len += 4; - - /* - * If we have any Low Priority VCs and a VC Arbitration Table Offset -diff --git a/drivers/regulator/qcom_smd-regulator.c b/drivers/regulator/qcom_smd-regulator.c -index 56a17ec..6c7fe477 100644 ---- a/drivers/regulator/qcom_smd-regulator.c -+++ b/drivers/regulator/qcom_smd-regulator.c -@@ -140,6 +140,18 @@ static const struct regulator_ops rpm_smps_ldo_ops = { - .enable = rpm_reg_enable, - .disable = rpm_reg_disable, - .is_enabled = rpm_reg_is_enabled, -+ .list_voltage = regulator_list_voltage_linear_range, -+ -+ .get_voltage = rpm_reg_get_voltage, -+ .set_voltage = rpm_reg_set_voltage, -+ -+ .set_load = rpm_reg_set_load, -+}; -+ -+static const struct regulator_ops rpm_smps_ldo_ops_fixed = { -+ .enable = rpm_reg_enable, -+ .disable = rpm_reg_disable, -+ .is_enabled = rpm_reg_is_enabled, - - .get_voltage = rpm_reg_get_voltage, - .set_voltage = rpm_reg_set_voltage, -@@ -247,7 +259,7 @@ static const struct regulator_desc pm8941_nldo = { - static const struct regulator_desc pm8941_lnldo = { - .fixed_uV = 1740000, - .n_voltages = 1, -- .ops = &rpm_smps_ldo_ops, -+ .ops = &rpm_smps_ldo_ops_fixed, - }; - - static const struct regulator_desc pm8941_switch = { -diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c -index d4c2856..3ddc85e 100644 ---- a/drivers/scsi/53c700.c -+++ b/drivers/scsi/53c700.c -@@ -1122,7 +1122,7 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp, - } else { - struct scsi_cmnd *SCp; - -- SCp = scsi_host_find_tag(SDp->host, SCSI_NO_TAG); -+ SCp = SDp->current_cmnd; - if(unlikely(SCp == NULL)) { - sdev_printk(KERN_ERR, SDp, - "no saved request for untagged cmd\n"); -@@ -1826,7 +1826,7 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *) - slot->tag, slot); - } else { - slot->tag = SCSI_NO_TAG; -- /* must populate current_cmnd for scsi_host_find_tag to work */ -+ /* save current command for reselection */ - SCp->device->current_cmnd = SCp; - } - /* sanity check: some of the commands generated by the mid-layer -diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c -index 984ddcb..1b9c049 100644 ---- a/drivers/scsi/scsi_error.c -+++ b/drivers/scsi/scsi_error.c -@@ -1127,7 +1127,6 @@ static int scsi_eh_action(struct scsi_cmnd *scmd, int rtn) - */ - void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q) - { -- scmd->device->host->host_failed--; - scmd->eh_eflags = 0; - list_move_tail(&scmd->eh_entry, done_q); - } -@@ -2226,6 +2225,9 @@ int scsi_error_handler(void *data) - else - scsi_unjam_host(shost); - -+ /* All scmds have been handled */ -+ shost->host_failed = 0; -+ - /* - * Note - if the above fails completely, the action is to take - * individual devices offline and flush the queue of any -diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index f52b74c..41c3a2c 100644 ---- a/drivers/scsi/sd.c -+++ b/drivers/scsi/sd.c -@@ -2862,10 +2862,10 @@ static int sd_revalidate_disk(struct gendisk *disk) - if (sdkp->opt_xfer_blocks && - sdkp->opt_xfer_blocks <= dev_max && - sdkp->opt_xfer_blocks <= SD_DEF_XFER_BLOCKS && -- sdkp->opt_xfer_blocks * sdp->sector_size >= PAGE_SIZE) -- rw_max = q->limits.io_opt = -- sdkp->opt_xfer_blocks * sdp->sector_size; -- else -+ logical_to_bytes(sdp, sdkp->opt_xfer_blocks) >= PAGE_SIZE) { -+ q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks); -+ rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks); -+ } else - rw_max = BLK_DEF_MAX_SECTORS; - - /* Combine with controller limits */ -diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h -index 654630b..765a6f1 100644 ---- a/drivers/scsi/sd.h -+++ b/drivers/scsi/sd.h -@@ -151,6 +151,11 @@ static inline sector_t logical_to_sectors(struct scsi_device *sdev, sector_t blo - return blocks << (ilog2(sdev->sector_size) - 9); - } - -+static inline unsigned int logical_to_bytes(struct scsi_device *sdev, sector_t blocks) -+{ -+ return blocks * sdev->sector_size; -+} -+ - /* - * A DIF-capable target device can be formatted with different - * protection schemes. Currently 0 through 3 are defined: -diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c -index a8f533a..ec12181 100644 ---- a/drivers/staging/iio/accel/sca3000_core.c -+++ b/drivers/staging/iio/accel/sca3000_core.c -@@ -594,7 +594,7 @@ static ssize_t sca3000_read_frequency(struct device *dev, - goto error_ret_mut; - ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL); - mutex_unlock(&st->lock); -- if (ret) -+ if (ret < 0) - goto error_ret; - val = ret; - if (base_freq > 0) -diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c -index 6ceac4f..5b4b47e 100644 ---- a/drivers/thermal/cpu_cooling.c -+++ b/drivers/thermal/cpu_cooling.c -@@ -857,14 +857,6 @@ __cpufreq_cooling_register(struct device_node *np, - goto free_power_table; - } - -- snprintf(dev_name, sizeof(dev_name), "thermal-cpufreq-%d", -- cpufreq_dev->id); -- -- cool_dev = thermal_of_cooling_device_register(np, dev_name, cpufreq_dev, -- &cpufreq_cooling_ops); -- if (IS_ERR(cool_dev)) -- goto remove_idr; -- - /* Fill freq-table in descending order of frequencies */ - for (i = 0, freq = -1; i <= cpufreq_dev->max_level; i++) { - freq = find_next_max(table, freq); -@@ -877,6 +869,14 @@ __cpufreq_cooling_register(struct device_node *np, - pr_debug("%s: freq:%u KHz\n", __func__, freq); - } - -+ snprintf(dev_name, sizeof(dev_name), "thermal-cpufreq-%d", -+ cpufreq_dev->id); -+ -+ cool_dev = thermal_of_cooling_device_register(np, dev_name, cpufreq_dev, -+ &cpufreq_cooling_ops); -+ if (IS_ERR(cool_dev)) -+ goto remove_idr; -+ - cpufreq_dev->clipped_freq = cpufreq_dev->freq_table[0]; - cpufreq_dev->cool_dev = cool_dev; - -diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c -index f973bfc..1e93a37 100644 ---- a/drivers/tty/vt/keyboard.c -+++ b/drivers/tty/vt/keyboard.c -@@ -366,34 +366,22 @@ static void to_utf8(struct vc_data *vc, uint c) - - static void do_compute_shiftstate(void) - { -- unsigned int i, j, k, sym, val; -+ unsigned int k, sym, val; - - shift_state = 0; - memset(shift_down, 0, sizeof(shift_down)); - -- for (i = 0; i < ARRAY_SIZE(key_down); i++) { -- -- if (!key_down[i]) -+ for_each_set_bit(k, key_down, min(NR_KEYS, KEY_CNT)) { -+ sym = U(key_maps[0][k]); -+ if (KTYP(sym) != KT_SHIFT && KTYP(sym) != KT_SLOCK) - continue; - -- k = i * BITS_PER_LONG; -- -- for (j = 0; j < BITS_PER_LONG; j++, k++) { -- -- if (!test_bit(k, key_down)) -- continue; -+ val = KVAL(sym); -+ if (val == KVAL(K_CAPSSHIFT)) -+ val = KVAL(K_SHIFT); - -- sym = U(key_maps[0][k]); -- if (KTYP(sym) != KT_SHIFT && KTYP(sym) != KT_SLOCK) -- continue; -- -- val = KVAL(sym); -- if (val == KVAL(K_CAPSSHIFT)) -- val = KVAL(K_SHIFT); -- -- shift_down[val]++; -- shift_state |= (1 << val); -- } -+ shift_down[val]++; -+ shift_state |= BIT(val); - } - } - -diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c -index bd523ad..e9e29de 100644 ---- a/drivers/tty/vt/vt.c -+++ b/drivers/tty/vt/vt.c -@@ -750,6 +750,7 @@ static void visual_init(struct vc_data *vc, int num, int init) - vc->vc_complement_mask = 0; - vc->vc_can_do_color = 0; - vc->vc_panic_force_write = false; -+ vc->vc_cur_blink_ms = DEFAULT_CURSOR_BLINK_MS; - vc->vc_sw->con_init(vc, init); - if (!vc->vc_complement_mask) - vc->vc_complement_mask = vc->vc_can_do_color ? 0x7700 : 0x0800; -diff --git a/drivers/usb/common/usb-otg-fsm.c b/drivers/usb/common/usb-otg-fsm.c -index 504708f..6c6040c 100644 ---- a/drivers/usb/common/usb-otg-fsm.c -+++ b/drivers/usb/common/usb-otg-fsm.c -@@ -21,6 +21,7 @@ - * 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#include <linux/module.h> - #include <linux/kernel.h> - #include <linux/types.h> - #include <linux/mutex.h> -@@ -452,3 +453,4 @@ int otg_statemachine(struct otg_fsm *fsm) - return state_changed; - } - EXPORT_SYMBOL_GPL(otg_statemachine); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index 980fc57..2d107d0 100644 ---- a/drivers/usb/core/hcd.c -+++ b/drivers/usb/core/hcd.c -@@ -2597,26 +2597,23 @@ EXPORT_SYMBOL_GPL(usb_create_hcd); - * Don't deallocate the bandwidth_mutex until the last shared usb_hcd is - * deallocated. - * -- * Make sure to only deallocate the bandwidth_mutex when the primary HCD is -- * freed. When hcd_release() is called for either hcd in a peer set -- * invalidate the peer's ->shared_hcd and ->primary_hcd pointers to -- * block new peering attempts -+ * Make sure to deallocate the bandwidth_mutex only when the last HCD is -+ * freed. When hcd_release() is called for either hcd in a peer set, -+ * invalidate the peer's ->shared_hcd and ->primary_hcd pointers. - */ - static void hcd_release(struct kref *kref) - { - struct usb_hcd *hcd = container_of (kref, struct usb_hcd, kref); - - mutex_lock(&usb_port_peer_mutex); -- if (usb_hcd_is_primary_hcd(hcd)) { -- kfree(hcd->address0_mutex); -- kfree(hcd->bandwidth_mutex); -- } - if (hcd->shared_hcd) { - struct usb_hcd *peer = hcd->shared_hcd; - - peer->shared_hcd = NULL; -- if (peer->primary_hcd == hcd) -- peer->primary_hcd = NULL; -+ peer->primary_hcd = NULL; -+ } else { -+ kfree(hcd->address0_mutex); -+ kfree(hcd->bandwidth_mutex); - } - mutex_unlock(&usb_port_peer_mutex); - kfree(hcd); -diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h -index 3c58d63..dec0b21 100644 ---- a/drivers/usb/dwc2/core.h -+++ b/drivers/usb/dwc2/core.h -@@ -64,6 +64,17 @@ - DWC2_TRACE_SCHEDULER_VB(pr_fmt("%s: SCH: " fmt), \ - dev_name(hsotg->dev), ##__VA_ARGS__) - -+#ifdef CONFIG_MIPS -+/* -+ * There are some MIPS machines that can run in either big-endian -+ * or little-endian mode and that use the dwc2 register without -+ * a byteswap in both ways. -+ * Unlike other architectures, MIPS apparently does not require a -+ * barrier before the __raw_writel() to synchronize with DMA but does -+ * require the barrier after the __raw_writel() to serialize a set of -+ * writes. This set of operations was added specifically for MIPS and -+ * should only be used there. -+ */ - static inline u32 dwc2_readl(const void __iomem *addr) - { - u32 value = __raw_readl(addr); -@@ -90,6 +101,22 @@ static inline void dwc2_writel(u32 value, void __iomem *addr) - pr_info("INFO:: wrote %08x to %p\n", value, addr); - #endif - } -+#else -+/* Normal architectures just use readl/write */ -+static inline u32 dwc2_readl(const void __iomem *addr) -+{ -+ return readl(addr); -+} -+ -+static inline void dwc2_writel(u32 value, void __iomem *addr) -+{ -+ writel(value, addr); -+ -+#ifdef DWC2_LOG_WRITES -+ pr_info("info:: wrote %08x to %p\n", value, addr); -+#endif -+} -+#endif - - /* Maximum number of Endpoints/HostChannels */ - #define MAX_EPS_CHANNELS 16 -diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c -index 7b6d74f..476c0e3 100644 ---- a/drivers/virtio/virtio_balloon.c -+++ b/drivers/virtio/virtio_balloon.c -@@ -75,7 +75,7 @@ struct virtio_balloon { - - /* The array of pfns we tell the Host about. */ - unsigned int num_pfns; -- u32 pfns[VIRTIO_BALLOON_ARRAY_PFNS_MAX]; -+ __virtio32 pfns[VIRTIO_BALLOON_ARRAY_PFNS_MAX]; - - /* Memory statistics */ - struct virtio_balloon_stat stats[VIRTIO_BALLOON_S_NR]; -@@ -127,14 +127,16 @@ static void tell_host(struct virtio_balloon *vb, struct virtqueue *vq) - - } - --static void set_page_pfns(u32 pfns[], struct page *page) -+static void set_page_pfns(struct virtio_balloon *vb, -+ __virtio32 pfns[], struct page *page) - { - unsigned int i; - - /* Set balloon pfns pointing at this page. - * Note that the first pfn points at start of the page. */ - for (i = 0; i < VIRTIO_BALLOON_PAGES_PER_PAGE; i++) -- pfns[i] = page_to_balloon_pfn(page) + i; -+ pfns[i] = cpu_to_virtio32(vb->vdev, -+ page_to_balloon_pfn(page) + i); - } - - static unsigned fill_balloon(struct virtio_balloon *vb, size_t num) -@@ -158,7 +160,7 @@ static unsigned fill_balloon(struct virtio_balloon *vb, size_t num) - msleep(200); - break; - } -- set_page_pfns(vb->pfns + vb->num_pfns, page); -+ set_page_pfns(vb, vb->pfns + vb->num_pfns, page); - vb->num_pages += VIRTIO_BALLOON_PAGES_PER_PAGE; - if (!virtio_has_feature(vb->vdev, - VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) -@@ -177,10 +179,12 @@ static unsigned fill_balloon(struct virtio_balloon *vb, size_t num) - static void release_pages_balloon(struct virtio_balloon *vb) - { - unsigned int i; -+ struct page *page; - - /* Find pfns pointing at start of each page, get pages and free them. */ - for (i = 0; i < vb->num_pfns; i += VIRTIO_BALLOON_PAGES_PER_PAGE) { -- struct page *page = balloon_pfn_to_page(vb->pfns[i]); -+ page = balloon_pfn_to_page(virtio32_to_cpu(vb->vdev, -+ vb->pfns[i])); - if (!virtio_has_feature(vb->vdev, - VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) - adjust_managed_page_count(page, 1); -@@ -203,7 +207,7 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num) - page = balloon_page_dequeue(vb_dev_info); - if (!page) - break; -- set_page_pfns(vb->pfns + vb->num_pfns, page); -+ set_page_pfns(vb, vb->pfns + vb->num_pfns, page); - vb->num_pages -= VIRTIO_BALLOON_PAGES_PER_PAGE; - } - -@@ -471,13 +475,13 @@ static int virtballoon_migratepage(struct balloon_dev_info *vb_dev_info, - __count_vm_event(BALLOON_MIGRATE); - spin_unlock_irqrestore(&vb_dev_info->pages_lock, flags); - vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE; -- set_page_pfns(vb->pfns, newpage); -+ set_page_pfns(vb, vb->pfns, newpage); - tell_host(vb, vb->inflate_vq); - - /* balloon's page migration 2nd step -- deflate "page" */ - balloon_page_delete(page); - vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE; -- set_page_pfns(vb->pfns, page); -+ set_page_pfns(vb, vb->pfns, page); - tell_host(vb, vb->deflate_vq); - - mutex_unlock(&vb->balloon_lock); -diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c -index d46839f..e4db19e 100644 ---- a/drivers/xen/balloon.c -+++ b/drivers/xen/balloon.c -@@ -151,8 +151,6 @@ static DECLARE_WAIT_QUEUE_HEAD(balloon_wq); - static void balloon_process(struct work_struct *work); - static DECLARE_DELAYED_WORK(balloon_worker, balloon_process); - --static void release_memory_resource(struct resource *resource); -- - /* When ballooning out (allocating memory to return to Xen) we don't really - want the kernel to try too hard since that can trigger the oom killer. */ - #define GFP_BALLOON \ -@@ -248,6 +246,19 @@ static enum bp_state update_schedule(enum bp_state state) - } - - #ifdef CONFIG_XEN_BALLOON_MEMORY_HOTPLUG -+static void release_memory_resource(struct resource *resource) -+{ -+ if (!resource) -+ return; -+ -+ /* -+ * No need to reset region to identity mapped since we now -+ * know that no I/O can be in this region -+ */ -+ release_resource(resource); -+ kfree(resource); -+} -+ - static struct resource *additional_memory_resource(phys_addr_t size) - { - struct resource *res; -@@ -286,19 +297,6 @@ static struct resource *additional_memory_resource(phys_addr_t size) - return res; - } - --static void release_memory_resource(struct resource *resource) --{ -- if (!resource) -- return; -- -- /* -- * No need to reset region to identity mapped since we now -- * know that no I/O can be in this region -- */ -- release_resource(resource); -- kfree(resource); --} -- - static enum bp_state reserve_additional_memory(void) - { - long credit; -diff --git a/drivers/xen/xen-acpi-processor.c b/drivers/xen/xen-acpi-processor.c -index 076970a..4ce10bc 100644 ---- a/drivers/xen/xen-acpi-processor.c -+++ b/drivers/xen/xen-acpi-processor.c -@@ -423,36 +423,7 @@ upload: - - return 0; - } --static int __init check_prereq(void) --{ -- struct cpuinfo_x86 *c = &cpu_data(0); -- -- if (!xen_initial_domain()) -- return -ENODEV; -- -- if (!acpi_gbl_FADT.smi_command) -- return -ENODEV; -- -- if (c->x86_vendor == X86_VENDOR_INTEL) { -- if (!cpu_has(c, X86_FEATURE_EST)) -- return -ENODEV; - -- return 0; -- } -- if (c->x86_vendor == X86_VENDOR_AMD) { -- /* Copied from powernow-k8.h, can't include ../cpufreq/powernow -- * as we get compile warnings for the static functions. -- */ --#define CPUID_FREQ_VOLT_CAPABILITIES 0x80000007 --#define USE_HW_PSTATE 0x00000080 -- u32 eax, ebx, ecx, edx; -- cpuid(CPUID_FREQ_VOLT_CAPABILITIES, &eax, &ebx, &ecx, &edx); -- if ((edx & USE_HW_PSTATE) != USE_HW_PSTATE) -- return -ENODEV; -- return 0; -- } -- return -ENODEV; --} - /* acpi_perf_data is a pointer to percpu data. */ - static struct acpi_processor_performance __percpu *acpi_perf_data; - -@@ -509,10 +480,10 @@ struct notifier_block xen_acpi_processor_resume_nb = { - static int __init xen_acpi_processor_init(void) - { - unsigned int i; -- int rc = check_prereq(); -+ int rc; - -- if (rc) -- return rc; -+ if (!xen_initial_domain()) -+ return -ENODEV; - - nr_acpi_bits = get_max_acpi_id() + 1; - acpi_ids_done = kcalloc(BITS_TO_LONGS(nr_acpi_bits), sizeof(unsigned long), GFP_KERNEL); -diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c -index ec7928a..234707c 100644 ---- a/fs/btrfs/ctree.c -+++ b/fs/btrfs/ctree.c -@@ -1552,6 +1552,7 @@ noinline int btrfs_cow_block(struct btrfs_trans_handle *trans, - trans->transid, root->fs_info->generation); - - if (!should_cow_block(trans, root, buf)) { -+ trans->dirty = true; - *cow_ret = buf; - return 0; - } -@@ -2773,8 +2774,10 @@ again: - * then we don't want to set the path blocking, - * so we test it here - */ -- if (!should_cow_block(trans, root, b)) -+ if (!should_cow_block(trans, root, b)) { -+ trans->dirty = true; - goto cow_done; -+ } - - /* - * must have write locks on this node and the -diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c -index 84e060e..78f1b57 100644 ---- a/fs/btrfs/extent-tree.c -+++ b/fs/btrfs/extent-tree.c -@@ -7929,7 +7929,7 @@ btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root, - set_extent_dirty(&trans->transaction->dirty_pages, buf->start, - buf->start + buf->len - 1, GFP_NOFS); - } -- trans->blocks_used++; -+ trans->dirty = true; - /* this returns a buffer locked for blocking */ - return buf; - } -diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c -index 00b8f37..d7c138f 100644 ---- a/fs/btrfs/super.c -+++ b/fs/btrfs/super.c -@@ -239,7 +239,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, - trans->aborted = errno; - /* Nothing used. The other threads that have joined this - * transaction may be able to continue. */ -- if (!trans->blocks_used && list_empty(&trans->new_bgs)) { -+ if (!trans->dirty && list_empty(&trans->new_bgs)) { - const char *errstr; - - errstr = btrfs_decode_error(errno); -diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h -index 72be51f..c0b501a 100644 ---- a/fs/btrfs/transaction.h -+++ b/fs/btrfs/transaction.h -@@ -110,7 +110,6 @@ struct btrfs_trans_handle { - u64 chunk_bytes_reserved; - unsigned long use_count; - unsigned long blocks_reserved; -- unsigned long blocks_used; - unsigned long delayed_ref_updates; - struct btrfs_transaction *transaction; - struct btrfs_block_rsv *block_rsv; -@@ -121,6 +120,7 @@ struct btrfs_trans_handle { - bool can_flush_pending_bgs; - bool reloc_reserved; - bool sync; -+ bool dirty; - unsigned int type; - /* - * this root is only needed to validate that the root passed to -diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c -index 5a53ac6..02b071bf 100644 ---- a/fs/cifs/cifs_unicode.c -+++ b/fs/cifs/cifs_unicode.c -@@ -101,6 +101,12 @@ convert_sfm_char(const __u16 src_char, char *target) - case SFM_SLASH: - *target = '\\'; - break; -+ case SFM_SPACE: -+ *target = ' '; -+ break; -+ case SFM_PERIOD: -+ *target = '.'; -+ break; - default: - return false; - } -@@ -404,7 +410,7 @@ static __le16 convert_to_sfu_char(char src_char) - return dest_char; - } - --static __le16 convert_to_sfm_char(char src_char) -+static __le16 convert_to_sfm_char(char src_char, bool end_of_string) - { - __le16 dest_char; - -@@ -427,6 +433,18 @@ static __le16 convert_to_sfm_char(char src_char) - case '|': - dest_char = cpu_to_le16(SFM_PIPE); - break; -+ case '.': -+ if (end_of_string) -+ dest_char = cpu_to_le16(SFM_PERIOD); -+ else -+ dest_char = 0; -+ break; -+ case ' ': -+ if (end_of_string) -+ dest_char = cpu_to_le16(SFM_SPACE); -+ else -+ dest_char = 0; -+ break; - default: - dest_char = 0; - } -@@ -469,9 +487,16 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen, - /* see if we must remap this char */ - if (map_chars == SFU_MAP_UNI_RSVD) - dst_char = convert_to_sfu_char(src_char); -- else if (map_chars == SFM_MAP_UNI_RSVD) -- dst_char = convert_to_sfm_char(src_char); -- else -+ else if (map_chars == SFM_MAP_UNI_RSVD) { -+ bool end_of_string; -+ -+ if (i == srclen - 1) -+ end_of_string = true; -+ else -+ end_of_string = false; -+ -+ dst_char = convert_to_sfm_char(src_char, end_of_string); -+ } else - dst_char = 0; - /* - * FIXME: We can not handle remapping backslash (UNI_SLASH) -diff --git a/fs/cifs/cifs_unicode.h b/fs/cifs/cifs_unicode.h -index bdc52cb..479bc0a 100644 ---- a/fs/cifs/cifs_unicode.h -+++ b/fs/cifs/cifs_unicode.h -@@ -64,6 +64,8 @@ - #define SFM_LESSTHAN ((__u16) 0xF023) - #define SFM_PIPE ((__u16) 0xF027) - #define SFM_SLASH ((__u16) 0xF026) -+#define SFM_PERIOD ((__u16) 0xF028) -+#define SFM_SPACE ((__u16) 0xF029) - - /* - * Mapping mechanism to use when one of the seven reserved characters is -diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c -index 6f62ac8..34cbc58 100644 ---- a/fs/cifs/connect.c -+++ b/fs/cifs/connect.c -@@ -428,7 +428,9 @@ cifs_echo_request(struct work_struct *work) - * server->ops->need_neg() == true. Also, no need to ping if - * we got a response recently. - */ -- if (!server->ops->need_neg || server->ops->need_neg(server) || -+ -+ if (server->tcpStatus == CifsNeedReconnect || -+ server->tcpStatus == CifsExiting || server->tcpStatus == CifsNew || - (server->ops->can_echo && !server->ops->can_echo(server)) || - time_before(jiffies, server->lstrp + echo_interval - HZ)) - goto requeue_echo; -diff --git a/fs/cifs/ntlmssp.h b/fs/cifs/ntlmssp.h -index 848249f..3079b38 100644 ---- a/fs/cifs/ntlmssp.h -+++ b/fs/cifs/ntlmssp.h -@@ -133,6 +133,6 @@ typedef struct _AUTHENTICATE_MESSAGE { - - int decode_ntlmssp_challenge(char *bcc_ptr, int blob_len, struct cifs_ses *ses); - void build_ntlmssp_negotiate_blob(unsigned char *pbuffer, struct cifs_ses *ses); --int build_ntlmssp_auth_blob(unsigned char *pbuffer, u16 *buflen, -+int build_ntlmssp_auth_blob(unsigned char **pbuffer, u16 *buflen, - struct cifs_ses *ses, - const struct nls_table *nls_cp); -diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c -index af0ec2d..e88ffe1 100644 ---- a/fs/cifs/sess.c -+++ b/fs/cifs/sess.c -@@ -364,19 +364,43 @@ void build_ntlmssp_negotiate_blob(unsigned char *pbuffer, - sec_blob->DomainName.MaximumLength = 0; - } - --/* We do not malloc the blob, it is passed in pbuffer, because its -- maximum possible size is fixed and small, making this approach cleaner. -- This function returns the length of the data in the blob */ --int build_ntlmssp_auth_blob(unsigned char *pbuffer, -+static int size_of_ntlmssp_blob(struct cifs_ses *ses) -+{ -+ int sz = sizeof(AUTHENTICATE_MESSAGE) + ses->auth_key.len -+ - CIFS_SESS_KEY_SIZE + CIFS_CPHTXT_SIZE + 2; -+ -+ if (ses->domainName) -+ sz += 2 * strnlen(ses->domainName, CIFS_MAX_DOMAINNAME_LEN); -+ else -+ sz += 2; -+ -+ if (ses->user_name) -+ sz += 2 * strnlen(ses->user_name, CIFS_MAX_USERNAME_LEN); -+ else -+ sz += 2; -+ -+ return sz; -+} -+ -+int build_ntlmssp_auth_blob(unsigned char **pbuffer, - u16 *buflen, - struct cifs_ses *ses, - const struct nls_table *nls_cp) - { - int rc; -- AUTHENTICATE_MESSAGE *sec_blob = (AUTHENTICATE_MESSAGE *)pbuffer; -+ AUTHENTICATE_MESSAGE *sec_blob; - __u32 flags; - unsigned char *tmp; - -+ rc = setup_ntlmv2_rsp(ses, nls_cp); -+ if (rc) { -+ cifs_dbg(VFS, "Error %d during NTLMSSP authentication\n", rc); -+ *buflen = 0; -+ goto setup_ntlmv2_ret; -+ } -+ *pbuffer = kmalloc(size_of_ntlmssp_blob(ses), GFP_KERNEL); -+ sec_blob = (AUTHENTICATE_MESSAGE *)*pbuffer; -+ - memcpy(sec_blob->Signature, NTLMSSP_SIGNATURE, 8); - sec_blob->MessageType = NtLmAuthenticate; - -@@ -391,7 +415,7 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - flags |= NTLMSSP_NEGOTIATE_KEY_XCH; - } - -- tmp = pbuffer + sizeof(AUTHENTICATE_MESSAGE); -+ tmp = *pbuffer + sizeof(AUTHENTICATE_MESSAGE); - sec_blob->NegotiateFlags = cpu_to_le32(flags); - - sec_blob->LmChallengeResponse.BufferOffset = -@@ -399,13 +423,9 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - sec_blob->LmChallengeResponse.Length = 0; - sec_blob->LmChallengeResponse.MaximumLength = 0; - -- sec_blob->NtChallengeResponse.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->NtChallengeResponse.BufferOffset = -+ cpu_to_le32(tmp - *pbuffer); - if (ses->user_name != NULL) { -- rc = setup_ntlmv2_rsp(ses, nls_cp); -- if (rc) { -- cifs_dbg(VFS, "Error %d during NTLMSSP authentication\n", rc); -- goto setup_ntlmv2_ret; -- } - memcpy(tmp, ses->auth_key.response + CIFS_SESS_KEY_SIZE, - ses->auth_key.len - CIFS_SESS_KEY_SIZE); - tmp += ses->auth_key.len - CIFS_SESS_KEY_SIZE; -@@ -423,7 +443,7 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - } - - if (ses->domainName == NULL) { -- sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->DomainName.Length = 0; - sec_blob->DomainName.MaximumLength = 0; - tmp += 2; -@@ -432,14 +452,14 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - len = cifs_strtoUTF16((__le16 *)tmp, ses->domainName, - CIFS_MAX_USERNAME_LEN, nls_cp); - len *= 2; /* unicode is 2 bytes each */ -- sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->DomainName.Length = cpu_to_le16(len); - sec_blob->DomainName.MaximumLength = cpu_to_le16(len); - tmp += len; - } - - if (ses->user_name == NULL) { -- sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->UserName.Length = 0; - sec_blob->UserName.MaximumLength = 0; - tmp += 2; -@@ -448,13 +468,13 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - len = cifs_strtoUTF16((__le16 *)tmp, ses->user_name, - CIFS_MAX_USERNAME_LEN, nls_cp); - len *= 2; /* unicode is 2 bytes each */ -- sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->UserName.Length = cpu_to_le16(len); - sec_blob->UserName.MaximumLength = cpu_to_le16(len); - tmp += len; - } - -- sec_blob->WorkstationName.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->WorkstationName.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->WorkstationName.Length = 0; - sec_blob->WorkstationName.MaximumLength = 0; - tmp += 2; -@@ -463,19 +483,19 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer, - (ses->ntlmssp->server_flags & NTLMSSP_NEGOTIATE_EXTENDED_SEC)) - && !calc_seckey(ses)) { - memcpy(tmp, ses->ntlmssp->ciphertext, CIFS_CPHTXT_SIZE); -- sec_blob->SessionKey.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->SessionKey.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->SessionKey.Length = cpu_to_le16(CIFS_CPHTXT_SIZE); - sec_blob->SessionKey.MaximumLength = - cpu_to_le16(CIFS_CPHTXT_SIZE); - tmp += CIFS_CPHTXT_SIZE; - } else { -- sec_blob->SessionKey.BufferOffset = cpu_to_le32(tmp - pbuffer); -+ sec_blob->SessionKey.BufferOffset = cpu_to_le32(tmp - *pbuffer); - sec_blob->SessionKey.Length = 0; - sec_blob->SessionKey.MaximumLength = 0; - } - -+ *buflen = tmp - *pbuffer; - setup_ntlmv2_ret: -- *buflen = tmp - pbuffer; - return rc; - } - -@@ -1266,7 +1286,7 @@ sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data) - struct cifs_ses *ses = sess_data->ses; - __u16 bytes_remaining; - char *bcc_ptr; -- char *ntlmsspblob = NULL; -+ unsigned char *ntlmsspblob = NULL; - u16 blob_len; - - cifs_dbg(FYI, "rawntlmssp session setup authenticate phase\n"); -@@ -1279,19 +1299,7 @@ sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data) - /* Build security blob before we assemble the request */ - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; - smb_buf = (struct smb_hdr *)pSMB; -- /* -- * 5 is an empirical value, large enough to hold -- * authenticate message plus max 10 of av paris, -- * domain, user, workstation names, flags, etc. -- */ -- ntlmsspblob = kzalloc(5*sizeof(struct _AUTHENTICATE_MESSAGE), -- GFP_KERNEL); -- if (!ntlmsspblob) { -- rc = -ENOMEM; -- goto out; -- } -- -- rc = build_ntlmssp_auth_blob(ntlmsspblob, -+ rc = build_ntlmssp_auth_blob(&ntlmsspblob, - &blob_len, ses, sess_data->nls_cp); - if (rc) - goto out_free_ntlmsspblob; -diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c -index 8f38e33..29e06db 100644 ---- a/fs/cifs/smb2pdu.c -+++ b/fs/cifs/smb2pdu.c -@@ -588,7 +588,7 @@ SMB2_sess_setup(const unsigned int xid, struct cifs_ses *ses, - u16 blob_length = 0; - struct key *spnego_key = NULL; - char *security_blob = NULL; -- char *ntlmssp_blob = NULL; -+ unsigned char *ntlmssp_blob = NULL; - bool use_spnego = false; /* else use raw ntlmssp */ - - cifs_dbg(FYI, "Session Setup\n"); -@@ -713,13 +713,7 @@ ssetup_ntlmssp_authenticate: - iov[1].iov_len = blob_length; - } else if (phase == NtLmAuthenticate) { - req->hdr.SessionId = ses->Suid; -- ntlmssp_blob = kzalloc(sizeof(struct _NEGOTIATE_MESSAGE) + 500, -- GFP_KERNEL); -- if (ntlmssp_blob == NULL) { -- rc = -ENOMEM; -- goto ssetup_exit; -- } -- rc = build_ntlmssp_auth_blob(ntlmssp_blob, &blob_length, ses, -+ rc = build_ntlmssp_auth_blob(&ntlmssp_blob, &blob_length, ses, - nls_cp); - if (rc) { - cifs_dbg(FYI, "build_ntlmssp_auth_blob failed %d\n", -@@ -1818,6 +1812,33 @@ SMB2_echo(struct TCP_Server_Info *server) - - cifs_dbg(FYI, "In echo request\n"); - -+ if (server->tcpStatus == CifsNeedNegotiate) { -+ struct list_head *tmp, *tmp2; -+ struct cifs_ses *ses; -+ struct cifs_tcon *tcon; -+ -+ cifs_dbg(FYI, "Need negotiate, reconnecting tcons\n"); -+ spin_lock(&cifs_tcp_ses_lock); -+ list_for_each(tmp, &server->smb_ses_list) { -+ ses = list_entry(tmp, struct cifs_ses, smb_ses_list); -+ list_for_each(tmp2, &ses->tcon_list) { -+ tcon = list_entry(tmp2, struct cifs_tcon, -+ tcon_list); -+ /* add check for persistent handle reconnect */ -+ if (tcon && tcon->need_reconnect) { -+ spin_unlock(&cifs_tcp_ses_lock); -+ rc = smb2_reconnect(SMB2_ECHO, tcon); -+ spin_lock(&cifs_tcp_ses_lock); -+ } -+ } -+ } -+ spin_unlock(&cifs_tcp_ses_lock); -+ } -+ -+ /* if no session, renegotiate failed above */ -+ if (server->tcpStatus == CifsNeedNegotiate) -+ return -EIO; -+ - rc = small_smb2_init(SMB2_ECHO, NULL, (void **)&req); - if (rc) - return rc; -diff --git a/fs/namei.c b/fs/namei.c -index 30145f8..aaa3b69 100644 ---- a/fs/namei.c -+++ b/fs/namei.c -@@ -3173,6 +3173,10 @@ retry_lookup: - got_write = false; - } - -+ error = follow_managed(&path, nd); -+ if (unlikely(error < 0)) -+ return error; -+ - if (unlikely(d_is_negative(path.dentry))) { - path_to_nameidata(&path, nd); - return -ENOENT; -@@ -3188,10 +3192,6 @@ retry_lookup: - return -EEXIST; - } - -- error = follow_managed(&path, nd); -- if (unlikely(error < 0)) -- return error; -- - seq = 0; /* out of RCU mode, so the value doesn't matter */ - inode = d_backing_inode(path.dentry); - finish_lookup: -diff --git a/fs/namespace.c b/fs/namespace.c -index 4fb1691..783004a 100644 ---- a/fs/namespace.c -+++ b/fs/namespace.c -@@ -2409,8 +2409,10 @@ static int do_new_mount(struct path *path, const char *fstype, int flags, - mnt_flags |= MNT_NODEV | MNT_LOCK_NODEV; - } - if (type->fs_flags & FS_USERNS_VISIBLE) { -- if (!fs_fully_visible(type, &mnt_flags)) -+ if (!fs_fully_visible(type, &mnt_flags)) { -+ put_filesystem(type); - return -EPERM; -+ } - } - } - -@@ -3245,6 +3247,10 @@ static bool fs_fully_visible(struct file_system_type *type, int *new_mnt_flags) - if (mnt->mnt.mnt_sb->s_iflags & SB_I_NOEXEC) - mnt_flags &= ~(MNT_LOCK_NOSUID | MNT_LOCK_NOEXEC); - -+ /* Don't miss readonly hidden in the superblock flags */ -+ if (mnt->mnt.mnt_sb->s_flags & MS_RDONLY) -+ mnt_flags |= MNT_LOCK_READONLY; -+ - /* Verify the mount flags are equal to or more permissive - * than the proposed new mount. - */ -@@ -3271,7 +3277,7 @@ static bool fs_fully_visible(struct file_system_type *type, int *new_mnt_flags) - list_for_each_entry(child, &mnt->mnt_mounts, mnt_child) { - struct inode *inode = child->mnt_mountpoint->d_inode; - /* Only worry about locked mounts */ -- if (!(mnt_flags & MNT_LOCKED)) -+ if (!(child->mnt.mnt_flags & MNT_LOCKED)) - continue; - /* Is the directory permanetly empty? */ - if (!is_empty_dir_inode(inode)) -diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c -index 33eb817..a7dd1fe 100644 ---- a/fs/nfs/dir.c -+++ b/fs/nfs/dir.c -@@ -1527,9 +1527,9 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry, - err = PTR_ERR(inode); - trace_nfs_atomic_open_exit(dir, ctx, open_flags, err); - put_nfs_open_context(ctx); -+ d_drop(dentry); - switch (err) { - case -ENOENT: -- d_drop(dentry); - d_add(dentry, NULL); - nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); - break; -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index 327b8c3..de2523f 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -2860,12 +2860,11 @@ static void nfs4_close_prepare(struct rpc_task *task, void *data) - call_close |= is_wronly; - else if (is_wronly) - calldata->arg.fmode |= FMODE_WRITE; -+ if (calldata->arg.fmode != (FMODE_READ|FMODE_WRITE)) -+ call_close |= is_rdwr; - } else if (is_rdwr) - calldata->arg.fmode |= FMODE_READ|FMODE_WRITE; - -- if (calldata->arg.fmode == 0) -- call_close |= is_rdwr; -- - if (!nfs4_valid_open_stateid(state)) - call_close = 0; - spin_unlock(&state->owner->so_lock); -diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c -index 776dccb..dcb7000 100644 ---- a/fs/nfs/pnfs_nfs.c -+++ b/fs/nfs/pnfs_nfs.c -@@ -247,7 +247,11 @@ void pnfs_fetch_commit_bucket_list(struct list_head *pages, - } - - /* Helper function for pnfs_generic_commit_pagelist to catch an empty -- * page list. This can happen when two commits race. */ -+ * page list. This can happen when two commits race. -+ * -+ * This must be called instead of nfs_init_commit - call one or the other, but -+ * not both! -+ */ - static bool - pnfs_generic_commit_cancel_empty_pagelist(struct list_head *pages, - struct nfs_commit_data *data, -@@ -256,7 +260,11 @@ pnfs_generic_commit_cancel_empty_pagelist(struct list_head *pages, - if (list_empty(pages)) { - if (atomic_dec_and_test(&cinfo->mds->rpcs_out)) - wake_up_atomic_t(&cinfo->mds->rpcs_out); -- nfs_commitdata_release(data); -+ /* don't call nfs_commitdata_release - it tries to put -+ * the open_context which is not acquired until nfs_init_commit -+ * which has not been called on @data */ -+ WARN_ON_ONCE(data->context); -+ nfs_commit_free(data); - return true; - } - -diff --git a/fs/nfs/read.c b/fs/nfs/read.c -index 6776d7a..572e5b3 100644 ---- a/fs/nfs/read.c -+++ b/fs/nfs/read.c -@@ -367,13 +367,13 @@ readpage_async_filler(void *data, struct page *page) - nfs_list_remove_request(new); - nfs_readpage_release(new); - error = desc->pgio->pg_error; -- goto out_unlock; -+ goto out; - } - return 0; - out_error: - error = PTR_ERR(new); --out_unlock: - unlock_page(page); -+out: - return error; - } - -diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c -index 1580ea6..d08cd88 100644 ---- a/fs/nfsd/nfs2acl.c -+++ b/fs/nfsd/nfs2acl.c -@@ -104,22 +104,21 @@ static __be32 nfsacld_proc_setacl(struct svc_rqst * rqstp, - goto out; - - inode = d_inode(fh->fh_dentry); -- if (!IS_POSIXACL(inode) || !inode->i_op->set_acl) { -- error = -EOPNOTSUPP; -- goto out_errno; -- } - - error = fh_want_write(fh); - if (error) - goto out_errno; - -- error = inode->i_op->set_acl(inode, argp->acl_access, ACL_TYPE_ACCESS); -+ fh_lock(fh); -+ -+ error = set_posix_acl(inode, ACL_TYPE_ACCESS, argp->acl_access); - if (error) -- goto out_drop_write; -- error = inode->i_op->set_acl(inode, argp->acl_default, -- ACL_TYPE_DEFAULT); -+ goto out_drop_lock; -+ error = set_posix_acl(inode, ACL_TYPE_DEFAULT, argp->acl_default); - if (error) -- goto out_drop_write; -+ goto out_drop_lock; -+ -+ fh_unlock(fh); - - fh_drop_write(fh); - -@@ -131,7 +130,8 @@ out: - posix_acl_release(argp->acl_access); - posix_acl_release(argp->acl_default); - return nfserr; --out_drop_write: -+out_drop_lock: -+ fh_unlock(fh); - fh_drop_write(fh); - out_errno: - nfserr = nfserrno(error); -diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c -index 01df4cd..0c89034 100644 ---- a/fs/nfsd/nfs3acl.c -+++ b/fs/nfsd/nfs3acl.c -@@ -95,22 +95,20 @@ static __be32 nfsd3_proc_setacl(struct svc_rqst * rqstp, - goto out; - - inode = d_inode(fh->fh_dentry); -- if (!IS_POSIXACL(inode) || !inode->i_op->set_acl) { -- error = -EOPNOTSUPP; -- goto out_errno; -- } - - error = fh_want_write(fh); - if (error) - goto out_errno; - -- error = inode->i_op->set_acl(inode, argp->acl_access, ACL_TYPE_ACCESS); -+ fh_lock(fh); -+ -+ error = set_posix_acl(inode, ACL_TYPE_ACCESS, argp->acl_access); - if (error) -- goto out_drop_write; -- error = inode->i_op->set_acl(inode, argp->acl_default, -- ACL_TYPE_DEFAULT); -+ goto out_drop_lock; -+ error = set_posix_acl(inode, ACL_TYPE_DEFAULT, argp->acl_default); - --out_drop_write: -+out_drop_lock: -+ fh_unlock(fh); - fh_drop_write(fh); - out_errno: - nfserr = nfserrno(error); -diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c -index 6adabd6..71292a0 100644 ---- a/fs/nfsd/nfs4acl.c -+++ b/fs/nfsd/nfs4acl.c -@@ -770,9 +770,6 @@ nfsd4_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp, - dentry = fhp->fh_dentry; - inode = d_inode(dentry); - -- if (!inode->i_op->set_acl || !IS_POSIXACL(inode)) -- return nfserr_attrnotsupp; -- - if (S_ISDIR(inode->i_mode)) - flags = NFS4_ACL_DIR; - -@@ -782,16 +779,19 @@ nfsd4_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp, - if (host_error < 0) - goto out_nfserr; - -- host_error = inode->i_op->set_acl(inode, pacl, ACL_TYPE_ACCESS); -+ fh_lock(fhp); -+ -+ host_error = set_posix_acl(inode, ACL_TYPE_ACCESS, pacl); - if (host_error < 0) -- goto out_release; -+ goto out_drop_lock; - - if (S_ISDIR(inode->i_mode)) { -- host_error = inode->i_op->set_acl(inode, dpacl, -- ACL_TYPE_DEFAULT); -+ host_error = set_posix_acl(inode, ACL_TYPE_DEFAULT, dpacl); - } - --out_release: -+out_drop_lock: -+ fh_unlock(fhp); -+ - posix_acl_release(pacl); - posix_acl_release(dpacl); - out_nfserr: -diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c -index 7389cb1..04c68d9 100644 ---- a/fs/nfsd/nfs4callback.c -+++ b/fs/nfsd/nfs4callback.c -@@ -710,22 +710,6 @@ static struct rpc_cred *get_backchannel_cred(struct nfs4_client *clp, struct rpc - } - } - --static struct rpc_clnt *create_backchannel_client(struct rpc_create_args *args) --{ -- struct rpc_xprt *xprt; -- -- if (args->protocol != XPRT_TRANSPORT_BC_TCP) -- return rpc_create(args); -- -- xprt = args->bc_xprt->xpt_bc_xprt; -- if (xprt) { -- xprt_get(xprt); -- return rpc_create_xprt(args, xprt); -- } -- -- return rpc_create(args); --} -- - static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *conn, struct nfsd4_session *ses) - { - int maxtime = max_cb_time(clp->net); -@@ -768,7 +752,7 @@ static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *c - args.authflavor = ses->se_cb_sec.flavor; - } - /* Create RPC client */ -- client = create_backchannel_client(&args); -+ client = rpc_create(&args); - if (IS_ERR(client)) { - dprintk("NFSD: couldn't create callback client: %ld\n", - PTR_ERR(client)); -diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c -index 0462eed..9e04e49 100644 ---- a/fs/nfsd/nfs4state.c -+++ b/fs/nfsd/nfs4state.c -@@ -3487,6 +3487,10 @@ init_open_stateid(struct nfs4_ol_stateid *stp, struct nfs4_file *fp, - struct nfs4_openowner *oo = open->op_openowner; - struct nfs4_ol_stateid *retstp = NULL; - -+ /* We are moving these outside of the spinlocks to avoid the warnings */ -+ mutex_init(&stp->st_mutex); -+ mutex_lock(&stp->st_mutex); -+ - spin_lock(&oo->oo_owner.so_client->cl_lock); - spin_lock(&fp->fi_lock); - -@@ -3502,13 +3506,17 @@ init_open_stateid(struct nfs4_ol_stateid *stp, struct nfs4_file *fp, - stp->st_access_bmap = 0; - stp->st_deny_bmap = 0; - stp->st_openstp = NULL; -- init_rwsem(&stp->st_rwsem); - list_add(&stp->st_perstateowner, &oo->oo_owner.so_stateids); - list_add(&stp->st_perfile, &fp->fi_stateids); - - out_unlock: - spin_unlock(&fp->fi_lock); - spin_unlock(&oo->oo_owner.so_client->cl_lock); -+ if (retstp) { -+ mutex_lock(&retstp->st_mutex); -+ /* Not that we need to, just for neatness */ -+ mutex_unlock(&stp->st_mutex); -+ } - return retstp; - } - -@@ -4335,32 +4343,34 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf - */ - if (stp) { - /* Stateid was found, this is an OPEN upgrade */ -- down_read(&stp->st_rwsem); -+ mutex_lock(&stp->st_mutex); - status = nfs4_upgrade_open(rqstp, fp, current_fh, stp, open); - if (status) { -- up_read(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - goto out; - } - } else { - stp = open->op_stp; - open->op_stp = NULL; -+ /* -+ * init_open_stateid() either returns a locked stateid -+ * it found, or initializes and locks the new one we passed in -+ */ - swapstp = init_open_stateid(stp, fp, open); - if (swapstp) { - nfs4_put_stid(&stp->st_stid); - stp = swapstp; -- down_read(&stp->st_rwsem); - status = nfs4_upgrade_open(rqstp, fp, current_fh, - stp, open); - if (status) { -- up_read(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - goto out; - } - goto upgrade_out; - } -- down_read(&stp->st_rwsem); - status = nfs4_get_vfs_file(rqstp, fp, current_fh, stp, open); - if (status) { -- up_read(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - release_open_stateid(stp); - goto out; - } -@@ -4372,7 +4382,7 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf - } - upgrade_out: - nfs4_inc_and_copy_stateid(&open->op_stateid, &stp->st_stid); -- up_read(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - - if (nfsd4_has_session(&resp->cstate)) { - if (open->op_deleg_want & NFS4_SHARE_WANT_NO_DELEG) { -@@ -4983,12 +4993,12 @@ static __be32 nfs4_seqid_op_checks(struct nfsd4_compound_state *cstate, stateid_ - * revoked delegations are kept only for free_stateid. - */ - return nfserr_bad_stateid; -- down_write(&stp->st_rwsem); -+ mutex_lock(&stp->st_mutex); - status = check_stateid_generation(stateid, &stp->st_stid.sc_stateid, nfsd4_has_session(cstate)); - if (status == nfs_ok) - status = nfs4_check_fh(current_fh, &stp->st_stid); - if (status != nfs_ok) -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - return status; - } - -@@ -5036,7 +5046,7 @@ static __be32 nfs4_preprocess_confirmed_seqid_op(struct nfsd4_compound_state *cs - return status; - oo = openowner(stp->st_stateowner); - if (!(oo->oo_flags & NFS4_OO_CONFIRMED)) { -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - nfs4_put_stid(&stp->st_stid); - return nfserr_bad_stateid; - } -@@ -5068,12 +5078,12 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - oo = openowner(stp->st_stateowner); - status = nfserr_bad_stateid; - if (oo->oo_flags & NFS4_OO_CONFIRMED) { -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - goto put_stateid; - } - oo->oo_flags |= NFS4_OO_CONFIRMED; - nfs4_inc_and_copy_stateid(&oc->oc_resp_stateid, &stp->st_stid); -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - dprintk("NFSD: %s: success, seqid=%d stateid=" STATEID_FMT "\n", - __func__, oc->oc_seqid, STATEID_VAL(&stp->st_stid.sc_stateid)); - -@@ -5149,7 +5159,7 @@ nfsd4_open_downgrade(struct svc_rqst *rqstp, - nfs4_inc_and_copy_stateid(&od->od_stateid, &stp->st_stid); - status = nfs_ok; - put_stateid: -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - nfs4_put_stid(&stp->st_stid); - out: - nfsd4_bump_seqid(cstate, status); -@@ -5202,7 +5212,7 @@ nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - if (status) - goto out; - nfs4_inc_and_copy_stateid(&close->cl_stateid, &stp->st_stid); -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - - nfsd4_close_open_stateid(stp); - -@@ -5428,7 +5438,7 @@ init_lock_stateid(struct nfs4_ol_stateid *stp, struct nfs4_lockowner *lo, - stp->st_access_bmap = 0; - stp->st_deny_bmap = open_stp->st_deny_bmap; - stp->st_openstp = open_stp; -- init_rwsem(&stp->st_rwsem); -+ mutex_init(&stp->st_mutex); - list_add(&stp->st_locks, &open_stp->st_locks); - list_add(&stp->st_perstateowner, &lo->lo_owner.so_stateids); - spin_lock(&fp->fi_lock); -@@ -5597,7 +5607,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - &open_stp, nn); - if (status) - goto out; -- up_write(&open_stp->st_rwsem); -+ mutex_unlock(&open_stp->st_mutex); - open_sop = openowner(open_stp->st_stateowner); - status = nfserr_bad_stateid; - if (!same_clid(&open_sop->oo_owner.so_client->cl_clientid, -@@ -5606,7 +5616,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - status = lookup_or_create_lock_state(cstate, open_stp, lock, - &lock_stp, &new); - if (status == nfs_ok) -- down_write(&lock_stp->st_rwsem); -+ mutex_lock(&lock_stp->st_mutex); - } else { - status = nfs4_preprocess_seqid_op(cstate, - lock->lk_old_lock_seqid, -@@ -5710,7 +5720,7 @@ out: - seqid_mutating_err(ntohl(status))) - lock_sop->lo_owner.so_seqid++; - -- up_write(&lock_stp->st_rwsem); -+ mutex_unlock(&lock_stp->st_mutex); - - /* - * If this is a new, never-before-used stateid, and we are -@@ -5880,7 +5890,7 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - fput: - fput(filp); - put_stateid: -- up_write(&stp->st_rwsem); -+ mutex_unlock(&stp->st_mutex); - nfs4_put_stid(&stp->st_stid); - out: - nfsd4_bump_seqid(cstate, status); -diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h -index c050c53..c89d7b5 100644 ---- a/fs/nfsd/state.h -+++ b/fs/nfsd/state.h -@@ -535,7 +535,7 @@ struct nfs4_ol_stateid { - unsigned char st_access_bmap; - unsigned char st_deny_bmap; - struct nfs4_ol_stateid *st_openstp; -- struct rw_semaphore st_rwsem; -+ struct mutex st_mutex; - }; - - static inline struct nfs4_ol_stateid *openlockstateid(struct nfs4_stid *s) -diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c -index b3fc0a3..fb35aa2 100644 ---- a/fs/overlayfs/dir.c -+++ b/fs/overlayfs/dir.c -@@ -511,6 +511,7 @@ static int ovl_remove_and_whiteout(struct dentry *dentry, bool is_dir) - struct dentry *upper; - struct dentry *opaquedir = NULL; - int err; -+ int flags = 0; - - if (WARN_ON(!workdir)) - return -EROFS; -@@ -540,46 +541,39 @@ static int ovl_remove_and_whiteout(struct dentry *dentry, bool is_dir) - if (err) - goto out_dput; - -- whiteout = ovl_whiteout(workdir, dentry); -- err = PTR_ERR(whiteout); -- if (IS_ERR(whiteout)) -+ upper = lookup_one_len(dentry->d_name.name, upperdir, -+ dentry->d_name.len); -+ err = PTR_ERR(upper); -+ if (IS_ERR(upper)) - goto out_unlock; - -- upper = ovl_dentry_upper(dentry); -- if (!upper) { -- upper = lookup_one_len(dentry->d_name.name, upperdir, -- dentry->d_name.len); -- err = PTR_ERR(upper); -- if (IS_ERR(upper)) -- goto kill_whiteout; -- -- err = ovl_do_rename(wdir, whiteout, udir, upper, 0); -- dput(upper); -- if (err) -- goto kill_whiteout; -- } else { -- int flags = 0; -+ err = -ESTALE; -+ if ((opaquedir && upper != opaquedir) || -+ (!opaquedir && ovl_dentry_upper(dentry) && -+ upper != ovl_dentry_upper(dentry))) { -+ goto out_dput_upper; -+ } - -- if (opaquedir) -- upper = opaquedir; -- err = -ESTALE; -- if (upper->d_parent != upperdir) -- goto kill_whiteout; -+ whiteout = ovl_whiteout(workdir, dentry); -+ err = PTR_ERR(whiteout); -+ if (IS_ERR(whiteout)) -+ goto out_dput_upper; - -- if (is_dir) -- flags |= RENAME_EXCHANGE; -+ if (d_is_dir(upper)) -+ flags = RENAME_EXCHANGE; - -- err = ovl_do_rename(wdir, whiteout, udir, upper, flags); -- if (err) -- goto kill_whiteout; -+ err = ovl_do_rename(wdir, whiteout, udir, upper, flags); -+ if (err) -+ goto kill_whiteout; -+ if (flags) -+ ovl_cleanup(wdir, upper); - -- if (is_dir) -- ovl_cleanup(wdir, upper); -- } - ovl_dentry_version_inc(dentry->d_parent); - out_d_drop: - d_drop(dentry); - dput(whiteout); -+out_dput_upper: -+ dput(upper); - out_unlock: - unlock_rename(workdir, upperdir); - out_dput: -diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c -index a4ff5d0..d46fa60 100644 ---- a/fs/overlayfs/inode.c -+++ b/fs/overlayfs/inode.c -@@ -59,16 +59,40 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr) - if (err) - goto out; - -+ if (attr->ia_valid & ATTR_SIZE) { -+ struct inode *realinode = d_inode(ovl_dentry_real(dentry)); -+ -+ err = -ETXTBSY; -+ if (atomic_read(&realinode->i_writecount) < 0) -+ goto out_drop_write; -+ } -+ - err = ovl_copy_up(dentry); - if (!err) { -+ struct inode *winode = NULL; -+ - upperdentry = ovl_dentry_upper(dentry); - -+ if (attr->ia_valid & ATTR_SIZE) { -+ winode = d_inode(upperdentry); -+ err = get_write_access(winode); -+ if (err) -+ goto out_drop_write; -+ } -+ -+ if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) -+ attr->ia_valid &= ~ATTR_MODE; -+ - inode_lock(upperdentry->d_inode); - err = notify_change(upperdentry, attr, NULL); - if (!err) - ovl_copyattr(upperdentry->d_inode, dentry->d_inode); - inode_unlock(upperdentry->d_inode); -+ -+ if (winode) -+ put_write_access(winode); - } -+out_drop_write: - ovl_drop_write(dentry); - out: - return err; -@@ -121,16 +145,18 @@ int ovl_permission(struct inode *inode, int mask) - - err = vfs_getattr(&realpath, &stat); - if (err) -- return err; -+ goto out_dput; - -+ err = -ESTALE; - if ((stat.mode ^ inode->i_mode) & S_IFMT) -- return -ESTALE; -+ goto out_dput; - - inode->i_mode = stat.mode; - inode->i_uid = stat.uid; - inode->i_gid = stat.gid; - -- return generic_permission(inode, mask); -+ err = generic_permission(inode, mask); -+ goto out_dput; - } - - /* Careful in RCU walk mode */ -@@ -400,12 +426,11 @@ struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, - if (!inode) - return NULL; - -- mode &= S_IFMT; -- - inode->i_ino = get_next_ino(); - inode->i_mode = mode; - inode->i_flags |= S_NOATIME | S_NOCMTIME; - -+ mode &= S_IFMT; - switch (mode) { - case S_IFDIR: - inode->i_private = oe; -diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h -index 6a7090f..294ccc0 100644 ---- a/fs/overlayfs/overlayfs.h -+++ b/fs/overlayfs/overlayfs.h -@@ -185,6 +185,7 @@ static inline void ovl_copyattr(struct inode *from, struct inode *to) - { - to->i_uid = from->i_uid; - to->i_gid = from->i_gid; -+ to->i_mode = from->i_mode; - } - - /* dir.c */ -diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index 791235e..7952a50f 100644 ---- a/fs/overlayfs/super.c -+++ b/fs/overlayfs/super.c -@@ -1064,16 +1064,21 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) - /* - * Upper should support d_type, else whiteouts are visible. - * Given workdir and upper are on same fs, we can do -- * iterate_dir() on workdir. -+ * iterate_dir() on workdir. This check requires successful -+ * creation of workdir in previous step. - */ -- err = ovl_check_d_type_supported(&workpath); -- if (err < 0) -- goto out_put_workdir; -+ if (ufs->workdir) { -+ err = ovl_check_d_type_supported(&workpath); -+ if (err < 0) -+ goto out_put_workdir; - -- if (!err) { -- pr_err("overlayfs: upper fs needs to support d_type.\n"); -- err = -EINVAL; -- goto out_put_workdir; -+ /* -+ * We allowed this configuration and don't want to -+ * break users over kernel upgrade. So warn instead -+ * of erroring out. -+ */ -+ if (!err) -+ pr_warn("overlayfs: upper fs needs to support d_type.\n"); - } - } - -diff --git a/fs/posix_acl.c b/fs/posix_acl.c -index 711dd51..e11ea5f 100644 ---- a/fs/posix_acl.c -+++ b/fs/posix_acl.c -@@ -786,39 +786,43 @@ posix_acl_xattr_get(const struct xattr_handler *handler, - return error; - } - --static int --posix_acl_xattr_set(const struct xattr_handler *handler, -- struct dentry *dentry, const char *name, -- const void *value, size_t size, int flags) -+int -+set_posix_acl(struct inode *inode, int type, struct posix_acl *acl) - { -- struct inode *inode = d_backing_inode(dentry); -- struct posix_acl *acl = NULL; -- int ret; -- - if (!IS_POSIXACL(inode)) - return -EOPNOTSUPP; - if (!inode->i_op->set_acl) - return -EOPNOTSUPP; - -- if (handler->flags == ACL_TYPE_DEFAULT && !S_ISDIR(inode->i_mode)) -- return value ? -EACCES : 0; -+ if (type == ACL_TYPE_DEFAULT && !S_ISDIR(inode->i_mode)) -+ return acl ? -EACCES : 0; - if (!inode_owner_or_capable(inode)) - return -EPERM; - -+ if (acl) { -+ int ret = posix_acl_valid(acl); -+ if (ret) -+ return ret; -+ } -+ return inode->i_op->set_acl(inode, acl, type); -+} -+EXPORT_SYMBOL(set_posix_acl); -+ -+static int -+posix_acl_xattr_set(const struct xattr_handler *handler, -+ struct dentry *dentry, const char *name, -+ const void *value, size_t size, int flags) -+{ -+ struct inode *inode = d_backing_inode(dentry); -+ struct posix_acl *acl = NULL; -+ int ret; -+ - if (value) { - acl = posix_acl_from_xattr(&init_user_ns, value, size); - if (IS_ERR(acl)) - return PTR_ERR(acl); -- -- if (acl) { -- ret = posix_acl_valid(acl); -- if (ret) -- goto out; -- } - } -- -- ret = inode->i_op->set_acl(inode, acl, handler->flags); --out: -+ ret = set_posix_acl(inode, handler->flags, acl); - posix_acl_release(acl); - return ret; - } -diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c -index 446753d..5b5ec8d 100644 ---- a/fs/ubifs/file.c -+++ b/fs/ubifs/file.c -@@ -52,6 +52,7 @@ - #include "ubifs.h" - #include <linux/mount.h> - #include <linux/slab.h> -+#include <linux/migrate.h> - - static int read_block(struct inode *inode, void *addr, unsigned int block, - struct ubifs_data_node *dn) -@@ -1452,6 +1453,26 @@ static int ubifs_set_page_dirty(struct page *page) - return ret; - } - -+#ifdef CONFIG_MIGRATION -+static int ubifs_migrate_page(struct address_space *mapping, -+ struct page *newpage, struct page *page, enum migrate_mode mode) -+{ -+ int rc; -+ -+ rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode, 0); -+ if (rc != MIGRATEPAGE_SUCCESS) -+ return rc; -+ -+ if (PagePrivate(page)) { -+ ClearPagePrivate(page); -+ SetPagePrivate(newpage); -+ } -+ -+ migrate_page_copy(newpage, page); -+ return MIGRATEPAGE_SUCCESS; -+} -+#endif -+ - static int ubifs_releasepage(struct page *page, gfp_t unused_gfp_flags) - { - /* -@@ -1591,6 +1612,9 @@ const struct address_space_operations ubifs_file_address_operations = { - .write_end = ubifs_write_end, - .invalidatepage = ubifs_invalidatepage, - .set_page_dirty = ubifs_set_page_dirty, -+#ifdef CONFIG_MIGRATION -+ .migratepage = ubifs_migrate_page, -+#endif - .releasepage = ubifs_releasepage, - }; - -diff --git a/include/asm-generic/qspinlock.h b/include/asm-generic/qspinlock.h -index 6bd0570..05f05f1 100644 ---- a/include/asm-generic/qspinlock.h -+++ b/include/asm-generic/qspinlock.h -@@ -22,37 +22,33 @@ - #include <asm-generic/qspinlock_types.h> - - /** -+ * queued_spin_unlock_wait - wait until the _current_ lock holder releases the lock -+ * @lock : Pointer to queued spinlock structure -+ * -+ * There is a very slight possibility of live-lock if the lockers keep coming -+ * and the waiter is just unfortunate enough to not see any unlock state. -+ */ -+#ifndef queued_spin_unlock_wait -+extern void queued_spin_unlock_wait(struct qspinlock *lock); -+#endif -+ -+/** - * queued_spin_is_locked - is the spinlock locked? - * @lock: Pointer to queued spinlock structure - * Return: 1 if it is locked, 0 otherwise - */ -+#ifndef queued_spin_is_locked - static __always_inline int queued_spin_is_locked(struct qspinlock *lock) - { - /* -- * queued_spin_lock_slowpath() can ACQUIRE the lock before -- * issuing the unordered store that sets _Q_LOCKED_VAL. -- * -- * See both smp_cond_acquire() sites for more detail. -- * -- * This however means that in code like: -- * -- * spin_lock(A) spin_lock(B) -- * spin_unlock_wait(B) spin_is_locked(A) -- * do_something() do_something() -- * -- * Both CPUs can end up running do_something() because the store -- * setting _Q_LOCKED_VAL will pass through the loads in -- * spin_unlock_wait() and/or spin_is_locked(). -+ * See queued_spin_unlock_wait(). - * -- * Avoid this by issuing a full memory barrier between the spin_lock() -- * and the loads in spin_unlock_wait() and spin_is_locked(). -- * -- * Note that regular mutual exclusion doesn't care about this -- * delayed store. -+ * Any !0 state indicates it is locked, even if _Q_LOCKED_VAL -+ * isn't immediately observable. - */ -- smp_mb(); -- return atomic_read(&lock->val) & _Q_LOCKED_MASK; -+ return atomic_read(&lock->val); - } -+#endif - - /** - * queued_spin_value_unlocked - is the spinlock structure unlocked? -@@ -122,21 +118,6 @@ static __always_inline void queued_spin_unlock(struct qspinlock *lock) - } - #endif - --/** -- * queued_spin_unlock_wait - wait until current lock holder releases the lock -- * @lock : Pointer to queued spinlock structure -- * -- * There is a very slight possibility of live-lock if the lockers keep coming -- * and the waiter is just unfortunate enough to not see any unlock state. -- */ --static inline void queued_spin_unlock_wait(struct qspinlock *lock) --{ -- /* See queued_spin_is_locked() */ -- smp_mb(); -- while (atomic_read(&lock->val) & _Q_LOCKED_MASK) -- cpu_relax(); --} -- - #ifndef virt_spin_lock - static __always_inline bool virt_spin_lock(struct qspinlock *lock) - { -diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h -index 055a08d..a74c49d 100644 ---- a/include/drm/ttm/ttm_bo_api.h -+++ b/include/drm/ttm/ttm_bo_api.h -@@ -316,6 +316,20 @@ ttm_bo_reference(struct ttm_buffer_object *bo) - */ - extern int ttm_bo_wait(struct ttm_buffer_object *bo, bool lazy, - bool interruptible, bool no_wait); -+ -+/** -+ * ttm_bo_mem_compat - Check if proposed placement is compatible with a bo -+ * -+ * @placement: Return immediately if buffer is busy. -+ * @mem: The struct ttm_mem_reg indicating the region where the bo resides -+ * @new_flags: Describes compatible placement found -+ * -+ * Returns true if the placement is compatible -+ */ -+extern bool ttm_bo_mem_compat(struct ttm_placement *placement, -+ struct ttm_mem_reg *mem, -+ uint32_t *new_flags); -+ - /** - * ttm_bo_validate - * -diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h -index 786ad32..07b83d3 100644 ---- a/include/linux/cpuidle.h -+++ b/include/linux/cpuidle.h -@@ -152,6 +152,8 @@ extern void cpuidle_disable_device(struct cpuidle_device *dev); - extern int cpuidle_play_dead(void); - - extern struct cpuidle_driver *cpuidle_get_cpu_driver(struct cpuidle_device *dev); -+static inline struct cpuidle_device *cpuidle_get_device(void) -+{return __this_cpu_read(cpuidle_devices); } - #else - static inline void disable_cpuidle(void) { } - static inline bool cpuidle_not_available(struct cpuidle_driver *drv, -@@ -187,6 +189,7 @@ static inline void cpuidle_disable_device(struct cpuidle_device *dev) { } - static inline int cpuidle_play_dead(void) {return -ENODEV; } - static inline struct cpuidle_driver *cpuidle_get_cpu_driver( - struct cpuidle_device *dev) {return NULL; } -+static inline struct cpuidle_device *cpuidle_get_device(void) {return NULL; } - #endif - - #if defined(CONFIG_CPU_IDLE) && defined(CONFIG_SUSPEND) -diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index 7e9422c..ad5d582 100644 ---- a/include/linux/dcache.h -+++ b/include/linux/dcache.h -@@ -576,5 +576,17 @@ static inline struct inode *vfs_select_inode(struct dentry *dentry, - return inode; - } - -+/** -+ * d_real_inode - Return the real inode -+ * @dentry: The dentry to query -+ * -+ * If dentry is on an union/overlay, then return the underlying, real inode. -+ * Otherwise return d_inode(). -+ */ -+static inline struct inode *d_real_inode(struct dentry *dentry) -+{ -+ return d_backing_inode(d_real(dentry)); -+} -+ - - #endif /* __LINUX_DCACHE_H */ -diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h -index 0536524..6890446 100644 ---- a/include/linux/jump_label.h -+++ b/include/linux/jump_label.h -@@ -117,13 +117,18 @@ struct module; - - #include <linux/atomic.h> - -+#ifdef HAVE_JUMP_LABEL -+ - static inline int static_key_count(struct static_key *key) - { -- return atomic_read(&key->enabled); -+ /* -+ * -1 means the first static_key_slow_inc() is in progress. -+ * static_key_enabled() must return true, so return 1 here. -+ */ -+ int n = atomic_read(&key->enabled); -+ return n >= 0 ? n : 1; - } - --#ifdef HAVE_JUMP_LABEL -- - #define JUMP_TYPE_FALSE 0UL - #define JUMP_TYPE_TRUE 1UL - #define JUMP_TYPE_MASK 1UL -@@ -162,6 +167,11 @@ extern void jump_label_apply_nops(struct module *mod); - - #else /* !HAVE_JUMP_LABEL */ - -+static inline int static_key_count(struct static_key *key) -+{ -+ return atomic_read(&key->enabled); -+} -+ - static __always_inline void jump_label_init(void) - { - static_key_initialized = true; -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 15d0df9..794b924 100644 ---- a/include/linux/skbuff.h -+++ b/include/linux/skbuff.h -@@ -1062,6 +1062,7 @@ __skb_set_sw_hash(struct sk_buff *skb, __u32 hash, bool is_l4) - } - - void __skb_get_hash(struct sk_buff *skb); -+u32 __skb_get_hash_symmetric(struct sk_buff *skb); - u32 skb_get_poff(const struct sk_buff *skb); - u32 __skb_get_poff(const struct sk_buff *skb, void *data, - const struct flow_keys *keys, int hlen); -@@ -2860,6 +2861,25 @@ static inline void skb_postpush_rcsum(struct sk_buff *skb, - } - - /** -+ * skb_push_rcsum - push skb and update receive checksum -+ * @skb: buffer to update -+ * @len: length of data pulled -+ * -+ * This function performs an skb_push on the packet and updates -+ * the CHECKSUM_COMPLETE checksum. It should be used on -+ * receive path processing instead of skb_push unless you know -+ * that the checksum difference is zero (e.g., a valid IP header) -+ * or you are setting ip_summed to CHECKSUM_NONE. -+ */ -+static inline unsigned char *skb_push_rcsum(struct sk_buff *skb, -+ unsigned int len) -+{ -+ skb_push(skb, len); -+ skb_postpush_rcsum(skb, skb->data, len); -+ return skb->data; -+} -+ -+/** - * pskb_trim_rcsum - trim received skb and update checksum - * @skb: buffer to trim - * @len: new length -diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h -index 9a7ddba..14d70f5 100644 ---- a/include/linux/sunrpc/clnt.h -+++ b/include/linux/sunrpc/clnt.h -@@ -137,8 +137,6 @@ struct rpc_create_args { - #define RPC_CLNT_CREATE_NO_RETRANS_TIMEOUT (1UL << 9) - - struct rpc_clnt *rpc_create(struct rpc_create_args *args); --struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args, -- struct rpc_xprt *xprt); - struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *, - const struct rpc_program *, u32); - struct rpc_clnt *rpc_clone_client(struct rpc_clnt *); -diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h -index b7dabc4..79ba508 100644 ---- a/include/linux/sunrpc/svc_xprt.h -+++ b/include/linux/sunrpc/svc_xprt.h -@@ -84,6 +84,7 @@ struct svc_xprt { - - struct net *xpt_net; - struct rpc_xprt *xpt_bc_xprt; /* NFSv4.1 backchannel */ -+ struct rpc_xprt_switch *xpt_bc_xps; /* NFSv4.1 backchannel */ - }; - - static inline void unregister_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u) -diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h -index fb0d212..9f51e1d 100644 ---- a/include/linux/sunrpc/xprt.h -+++ b/include/linux/sunrpc/xprt.h -@@ -296,6 +296,7 @@ struct xprt_create { - size_t addrlen; - const char *servername; - struct svc_xprt *bc_xprt; /* NFSv4.1 backchannel */ -+ struct rpc_xprt_switch *bc_xps; - unsigned int flags; - }; - -diff --git a/include/linux/usb/ehci_def.h b/include/linux/usb/ehci_def.h -index 966889a..e479033 100644 ---- a/include/linux/usb/ehci_def.h -+++ b/include/linux/usb/ehci_def.h -@@ -180,11 +180,11 @@ struct ehci_regs { - * PORTSCx - */ - /* HOSTPC: offset 0x84 */ -- u32 hostpc[1]; /* HOSTPC extension */ -+ u32 hostpc[0]; /* HOSTPC extension */ - #define HOSTPC_PHCD (1<<22) /* Phy clock disable */ - #define HOSTPC_PSPD (3<<25) /* Port speed detection */ - -- u32 reserved5[16]; -+ u32 reserved5[17]; - - /* USBMODE_EX: offset 0xc8 */ - u32 usbmode_ex; /* USB Device mode extension */ -diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h -index fb2cef4..b8334a6 100644 ---- a/include/rdma/ib_verbs.h -+++ b/include/rdma/ib_verbs.h -@@ -217,7 +217,7 @@ enum ib_device_cap_flags { - IB_DEVICE_CROSS_CHANNEL = (1 << 27), - IB_DEVICE_MANAGED_FLOW_STEERING = (1 << 29), - IB_DEVICE_SIGNATURE_HANDOVER = (1 << 30), -- IB_DEVICE_ON_DEMAND_PAGING = (1 << 31), -+ IB_DEVICE_ON_DEMAND_PAGING = (1ULL << 31), - IB_DEVICE_SG_GAPS_REG = (1ULL << 32), - IB_DEVICE_VIRTUAL_FUNCTION = ((u64)1 << 33), - }; -diff --git a/include/rdma/rdma_vt.h b/include/rdma/rdma_vt.h -index a869655..6ee9d97 100644 ---- a/include/rdma/rdma_vt.h -+++ b/include/rdma/rdma_vt.h -@@ -203,7 +203,9 @@ struct rvt_driver_provided { - - /* - * Allocate a private queue pair data structure for driver specific -- * information which is opaque to rdmavt. -+ * information which is opaque to rdmavt. Errors are returned via -+ * ERR_PTR(err). The driver is free to return NULL or a valid -+ * pointer. - */ - void * (*qp_priv_alloc)(struct rvt_dev_info *rdi, struct rvt_qp *qp, - gfp_t gfp); -diff --git a/kernel/futex.c b/kernel/futex.c -index c20f06f..6555d54 100644 ---- a/kernel/futex.c -+++ b/kernel/futex.c -@@ -469,7 +469,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) - { - unsigned long address = (unsigned long)uaddr; - struct mm_struct *mm = current->mm; -- struct page *page; -+ struct page *page, *tail; - struct address_space *mapping; - int err, ro = 0; - -@@ -530,7 +530,15 @@ again: - * considered here and page lock forces unnecessarily serialization - * From this point on, mapping will be re-verified if necessary and - * page lock will be acquired only if it is unavoidable -- */ -+ * -+ * Mapping checks require the head page for any compound page so the -+ * head page and mapping is looked up now. For anonymous pages, it -+ * does not matter if the page splits in the future as the key is -+ * based on the address. For filesystem-backed pages, the tail is -+ * required as the index of the page determines the key. For -+ * base pages, there is no tail page and tail == page. -+ */ -+ tail = page; - page = compound_head(page); - mapping = READ_ONCE(page->mapping); - -@@ -654,7 +662,7 @@ again: - - key->both.offset |= FUT_OFF_INODE; /* inode-based key */ - key->shared.inode = inode; -- key->shared.pgoff = basepage_index(page); -+ key->shared.pgoff = basepage_index(tail); - rcu_read_unlock(); - } - -diff --git a/kernel/jump_label.c b/kernel/jump_label.c -index 05254ee..4b353e0 100644 ---- a/kernel/jump_label.c -+++ b/kernel/jump_label.c -@@ -58,13 +58,36 @@ static void jump_label_update(struct static_key *key); - - void static_key_slow_inc(struct static_key *key) - { -+ int v, v1; -+ - STATIC_KEY_CHECK_USE(); -- if (atomic_inc_not_zero(&key->enabled)) -- return; -+ -+ /* -+ * Careful if we get concurrent static_key_slow_inc() calls; -+ * later calls must wait for the first one to _finish_ the -+ * jump_label_update() process. At the same time, however, -+ * the jump_label_update() call below wants to see -+ * static_key_enabled(&key) for jumps to be updated properly. -+ * -+ * So give a special meaning to negative key->enabled: it sends -+ * static_key_slow_inc() down the slow path, and it is non-zero -+ * so it counts as "enabled" in jump_label_update(). Note that -+ * atomic_inc_unless_negative() checks >= 0, so roll our own. -+ */ -+ for (v = atomic_read(&key->enabled); v > 0; v = v1) { -+ v1 = atomic_cmpxchg(&key->enabled, v, v + 1); -+ if (likely(v1 == v)) -+ return; -+ } - - jump_label_lock(); -- if (atomic_inc_return(&key->enabled) == 1) -+ if (atomic_read(&key->enabled) == 0) { -+ atomic_set(&key->enabled, -1); - jump_label_update(key); -+ atomic_set(&key->enabled, 1); -+ } else { -+ atomic_inc(&key->enabled); -+ } - jump_label_unlock(); - } - EXPORT_SYMBOL_GPL(static_key_slow_inc); -@@ -72,6 +95,13 @@ EXPORT_SYMBOL_GPL(static_key_slow_inc); - static void __static_key_slow_dec(struct static_key *key, - unsigned long rate_limit, struct delayed_work *work) - { -+ /* -+ * The negative count check is valid even when a negative -+ * key->enabled is in use by static_key_slow_inc(); a -+ * __static_key_slow_dec() before the first static_key_slow_inc() -+ * returns is unbalanced, because all other static_key_slow_inc() -+ * instances block while the update is in progress. -+ */ - if (!atomic_dec_and_mutex_lock(&key->enabled, &jump_label_mutex)) { - WARN(atomic_read(&key->enabled) < 0, - "jump label: negative count!\n"); -diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c -index e364b42..79d2d76 100644 ---- a/kernel/locking/mutex.c -+++ b/kernel/locking/mutex.c -@@ -486,9 +486,6 @@ __ww_mutex_lock_check_stamp(struct mutex *lock, struct ww_acquire_ctx *ctx) - if (!hold_ctx) - return 0; - -- if (unlikely(ctx == hold_ctx)) -- return -EALREADY; -- - if (ctx->stamp - hold_ctx->stamp <= LONG_MAX && - (ctx->stamp != hold_ctx->stamp || ctx > hold_ctx)) { - #ifdef CONFIG_DEBUG_MUTEXES -@@ -514,6 +511,12 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, - unsigned long flags; - int ret; - -+ if (use_ww_ctx) { -+ struct ww_mutex *ww = container_of(lock, struct ww_mutex, base); -+ if (unlikely(ww_ctx == READ_ONCE(ww->ctx))) -+ return -EALREADY; -+ } -+ - preempt_disable(); - mutex_acquire_nest(&lock->dep_map, subclass, 0, nest_lock, ip); - -diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c -index ce2f75e..5fc8c31 100644 ---- a/kernel/locking/qspinlock.c -+++ b/kernel/locking/qspinlock.c -@@ -267,6 +267,66 @@ static __always_inline u32 __pv_wait_head_or_lock(struct qspinlock *lock, - #define queued_spin_lock_slowpath native_queued_spin_lock_slowpath - #endif - -+/* -+ * queued_spin_lock_slowpath() can (load-)ACQUIRE the lock before -+ * issuing an _unordered_ store to set _Q_LOCKED_VAL. -+ * -+ * This means that the store can be delayed, but no later than the -+ * store-release from the unlock. This means that simply observing -+ * _Q_LOCKED_VAL is not sufficient to determine if the lock is acquired. -+ * -+ * There are two paths that can issue the unordered store: -+ * -+ * (1) clear_pending_set_locked(): *,1,0 -> *,0,1 -+ * -+ * (2) set_locked(): t,0,0 -> t,0,1 ; t != 0 -+ * atomic_cmpxchg_relaxed(): t,0,0 -> 0,0,1 -+ * -+ * However, in both cases we have other !0 state we've set before to queue -+ * ourseves: -+ * -+ * For (1) we have the atomic_cmpxchg_acquire() that set _Q_PENDING_VAL, our -+ * load is constrained by that ACQUIRE to not pass before that, and thus must -+ * observe the store. -+ * -+ * For (2) we have a more intersting scenario. We enqueue ourselves using -+ * xchg_tail(), which ends up being a RELEASE. This in itself is not -+ * sufficient, however that is followed by an smp_cond_acquire() on the same -+ * word, giving a RELEASE->ACQUIRE ordering. This again constrains our load and -+ * guarantees we must observe that store. -+ * -+ * Therefore both cases have other !0 state that is observable before the -+ * unordered locked byte store comes through. This means we can use that to -+ * wait for the lock store, and then wait for an unlock. -+ */ -+#ifndef queued_spin_unlock_wait -+void queued_spin_unlock_wait(struct qspinlock *lock) -+{ -+ u32 val; -+ -+ for (;;) { -+ val = atomic_read(&lock->val); -+ -+ if (!val) /* not locked, we're done */ -+ goto done; -+ -+ if (val & _Q_LOCKED_MASK) /* locked, go wait for unlock */ -+ break; -+ -+ /* not locked, but pending, wait until we observe the lock */ -+ cpu_relax(); -+ } -+ -+ /* any unlock is good */ -+ while (atomic_read(&lock->val) & _Q_LOCKED_MASK) -+ cpu_relax(); -+ -+done: -+ smp_rmb(); /* CTRL + RMB -> ACQUIRE */ -+} -+EXPORT_SYMBOL(queued_spin_unlock_wait); -+#endif -+ - #endif /* _GEN_PV_LOCK_SLOWPATH */ - - /** -diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index e7dd0ec..eeaf920 100644 ---- a/kernel/sched/fair.c -+++ b/kernel/sched/fair.c -@@ -2821,6 +2821,23 @@ static inline void update_tg_load_avg(struct cfs_rq *cfs_rq, int force) {} - - static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq); - -+/* -+ * Unsigned subtract and clamp on underflow. -+ * -+ * Explicitly do a load-store to ensure the intermediate value never hits -+ * memory. This allows lockless observations without ever seeing the negative -+ * values. -+ */ -+#define sub_positive(_ptr, _val) do { \ -+ typeof(_ptr) ptr = (_ptr); \ -+ typeof(*ptr) val = (_val); \ -+ typeof(*ptr) res, var = READ_ONCE(*ptr); \ -+ res = var - val; \ -+ if (res > var) \ -+ res = 0; \ -+ WRITE_ONCE(*ptr, res); \ -+} while (0) -+ - /* Group cfs_rq's load_avg is used for task_h_load and update_cfs_share */ - static inline int update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq) - { -@@ -2829,15 +2846,15 @@ static inline int update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq) - - if (atomic_long_read(&cfs_rq->removed_load_avg)) { - s64 r = atomic_long_xchg(&cfs_rq->removed_load_avg, 0); -- sa->load_avg = max_t(long, sa->load_avg - r, 0); -- sa->load_sum = max_t(s64, sa->load_sum - r * LOAD_AVG_MAX, 0); -+ sub_positive(&sa->load_avg, r); -+ sub_positive(&sa->load_sum, r * LOAD_AVG_MAX); - removed = 1; - } - - if (atomic_long_read(&cfs_rq->removed_util_avg)) { - long r = atomic_long_xchg(&cfs_rq->removed_util_avg, 0); -- sa->util_avg = max_t(long, sa->util_avg - r, 0); -- sa->util_sum = max_t(s32, sa->util_sum - r * LOAD_AVG_MAX, 0); -+ sub_positive(&sa->util_avg, r); -+ sub_positive(&sa->util_sum, r * LOAD_AVG_MAX); - } - - decayed = __update_load_avg(now, cpu_of(rq_of(cfs_rq)), sa, -@@ -2927,10 +2944,10 @@ static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s - &se->avg, se->on_rq * scale_load_down(se->load.weight), - cfs_rq->curr == se, NULL); - -- cfs_rq->avg.load_avg = max_t(long, cfs_rq->avg.load_avg - se->avg.load_avg, 0); -- cfs_rq->avg.load_sum = max_t(s64, cfs_rq->avg.load_sum - se->avg.load_sum, 0); -- cfs_rq->avg.util_avg = max_t(long, cfs_rq->avg.util_avg - se->avg.util_avg, 0); -- cfs_rq->avg.util_sum = max_t(s32, cfs_rq->avg.util_sum - se->avg.util_sum, 0); -+ sub_positive(&cfs_rq->avg.load_avg, se->avg.load_avg); -+ sub_positive(&cfs_rq->avg.load_sum, se->avg.load_sum); -+ sub_positive(&cfs_rq->avg.util_avg, se->avg.util_avg); -+ sub_positive(&cfs_rq->avg.util_sum, se->avg.util_sum); - } - - /* Add the load generated by se into cfs_rq's load average */ -diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c -index bd12c6c..c5aeedf 100644 ---- a/kernel/sched/idle.c -+++ b/kernel/sched/idle.c -@@ -127,7 +127,7 @@ static int call_cpuidle(struct cpuidle_driver *drv, struct cpuidle_device *dev, - */ - static void cpuidle_idle_call(void) - { -- struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); -+ struct cpuidle_device *dev = cpuidle_get_device(); - struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); - int next_state, entered_state; - -diff --git a/kernel/trace/trace_printk.c b/kernel/trace/trace_printk.c -index f96f038..ad1d616 100644 ---- a/kernel/trace/trace_printk.c -+++ b/kernel/trace/trace_printk.c -@@ -36,6 +36,10 @@ struct trace_bprintk_fmt { - static inline struct trace_bprintk_fmt *lookup_format(const char *fmt) - { - struct trace_bprintk_fmt *pos; -+ -+ if (!fmt) -+ return ERR_PTR(-EINVAL); -+ - list_for_each_entry(pos, &trace_bprintk_fmt_list, list) { - if (!strcmp(pos->fmt, fmt)) - return pos; -@@ -57,7 +61,8 @@ void hold_module_trace_bprintk_format(const char **start, const char **end) - for (iter = start; iter < end; iter++) { - struct trace_bprintk_fmt *tb_fmt = lookup_format(*iter); - if (tb_fmt) { -- *iter = tb_fmt->fmt; -+ if (!IS_ERR(tb_fmt)) -+ *iter = tb_fmt->fmt; - continue; - } - -diff --git a/mm/migrate.c b/mm/migrate.c -index f9dfb18..bdf3410 100644 ---- a/mm/migrate.c -+++ b/mm/migrate.c -@@ -431,6 +431,7 @@ int migrate_page_move_mapping(struct address_space *mapping, - - return MIGRATEPAGE_SUCCESS; - } -+EXPORT_SYMBOL(migrate_page_move_mapping); - - /* - * The expected number of remaining references is the same as that -@@ -586,6 +587,7 @@ void migrate_page_copy(struct page *newpage, struct page *page) - - mem_cgroup_migrate(page, newpage); - } -+EXPORT_SYMBOL(migrate_page_copy); - - /************************************************************ - * Migration functions -diff --git a/mm/page-writeback.c b/mm/page-writeback.c -index bc5149d..e389f0a 100644 ---- a/mm/page-writeback.c -+++ b/mm/page-writeback.c -@@ -369,8 +369,9 @@ static void domain_dirty_limits(struct dirty_throttle_control *dtc) - struct dirty_throttle_control *gdtc = mdtc_gdtc(dtc); - unsigned long bytes = vm_dirty_bytes; - unsigned long bg_bytes = dirty_background_bytes; -- unsigned long ratio = vm_dirty_ratio; -- unsigned long bg_ratio = dirty_background_ratio; -+ /* convert ratios to per-PAGE_SIZE for higher precision */ -+ unsigned long ratio = (vm_dirty_ratio * PAGE_SIZE) / 100; -+ unsigned long bg_ratio = (dirty_background_ratio * PAGE_SIZE) / 100; - unsigned long thresh; - unsigned long bg_thresh; - struct task_struct *tsk; -@@ -382,26 +383,28 @@ static void domain_dirty_limits(struct dirty_throttle_control *dtc) - /* - * The byte settings can't be applied directly to memcg - * domains. Convert them to ratios by scaling against -- * globally available memory. -+ * globally available memory. As the ratios are in -+ * per-PAGE_SIZE, they can be obtained by dividing bytes by -+ * number of pages. - */ - if (bytes) -- ratio = min(DIV_ROUND_UP(bytes, PAGE_SIZE) * 100 / -- global_avail, 100UL); -+ ratio = min(DIV_ROUND_UP(bytes, global_avail), -+ PAGE_SIZE); - if (bg_bytes) -- bg_ratio = min(DIV_ROUND_UP(bg_bytes, PAGE_SIZE) * 100 / -- global_avail, 100UL); -+ bg_ratio = min(DIV_ROUND_UP(bg_bytes, global_avail), -+ PAGE_SIZE); - bytes = bg_bytes = 0; - } - - if (bytes) - thresh = DIV_ROUND_UP(bytes, PAGE_SIZE); - else -- thresh = (ratio * available_memory) / 100; -+ thresh = (ratio * available_memory) / PAGE_SIZE; - - if (bg_bytes) - bg_thresh = DIV_ROUND_UP(bg_bytes, PAGE_SIZE); - else -- bg_thresh = (bg_ratio * available_memory) / 100; -+ bg_thresh = (bg_ratio * available_memory) / PAGE_SIZE; - - if (bg_thresh >= thresh) - bg_thresh = thresh / 2; -diff --git a/mm/percpu.c b/mm/percpu.c -index 0c59684..9903830 100644 ---- a/mm/percpu.c -+++ b/mm/percpu.c -@@ -112,7 +112,7 @@ struct pcpu_chunk { - int map_used; /* # of map entries used before the sentry */ - int map_alloc; /* # of map entries allocated */ - int *map; /* allocation map */ -- struct work_struct map_extend_work;/* async ->map[] extension */ -+ struct list_head map_extend_list;/* on pcpu_map_extend_chunks */ - - void *data; /* chunk data */ - int first_free; /* no free below this */ -@@ -162,10 +162,13 @@ static struct pcpu_chunk *pcpu_reserved_chunk; - static int pcpu_reserved_chunk_limit; - - static DEFINE_SPINLOCK(pcpu_lock); /* all internal data structures */ --static DEFINE_MUTEX(pcpu_alloc_mutex); /* chunk create/destroy, [de]pop */ -+static DEFINE_MUTEX(pcpu_alloc_mutex); /* chunk create/destroy, [de]pop, map ext */ - - static struct list_head *pcpu_slot __read_mostly; /* chunk list slots */ - -+/* chunks which need their map areas extended, protected by pcpu_lock */ -+static LIST_HEAD(pcpu_map_extend_chunks); -+ - /* - * The number of empty populated pages, protected by pcpu_lock. The - * reserved chunk doesn't contribute to the count. -@@ -395,13 +398,19 @@ static int pcpu_need_to_extend(struct pcpu_chunk *chunk, bool is_atomic) - { - int margin, new_alloc; - -+ lockdep_assert_held(&pcpu_lock); -+ - if (is_atomic) { - margin = 3; - - if (chunk->map_alloc < -- chunk->map_used + PCPU_ATOMIC_MAP_MARGIN_LOW && -- pcpu_async_enabled) -- schedule_work(&chunk->map_extend_work); -+ chunk->map_used + PCPU_ATOMIC_MAP_MARGIN_LOW) { -+ if (list_empty(&chunk->map_extend_list)) { -+ list_add_tail(&chunk->map_extend_list, -+ &pcpu_map_extend_chunks); -+ pcpu_schedule_balance_work(); -+ } -+ } - } else { - margin = PCPU_ATOMIC_MAP_MARGIN_HIGH; - } -@@ -435,6 +444,8 @@ static int pcpu_extend_area_map(struct pcpu_chunk *chunk, int new_alloc) - size_t old_size = 0, new_size = new_alloc * sizeof(new[0]); - unsigned long flags; - -+ lockdep_assert_held(&pcpu_alloc_mutex); -+ - new = pcpu_mem_zalloc(new_size); - if (!new) - return -ENOMEM; -@@ -467,20 +478,6 @@ out_unlock: - return 0; - } - --static void pcpu_map_extend_workfn(struct work_struct *work) --{ -- struct pcpu_chunk *chunk = container_of(work, struct pcpu_chunk, -- map_extend_work); -- int new_alloc; -- -- spin_lock_irq(&pcpu_lock); -- new_alloc = pcpu_need_to_extend(chunk, false); -- spin_unlock_irq(&pcpu_lock); -- -- if (new_alloc) -- pcpu_extend_area_map(chunk, new_alloc); --} -- - /** - * pcpu_fit_in_area - try to fit the requested allocation in a candidate area - * @chunk: chunk the candidate area belongs to -@@ -740,7 +737,7 @@ static struct pcpu_chunk *pcpu_alloc_chunk(void) - chunk->map_used = 1; - - INIT_LIST_HEAD(&chunk->list); -- INIT_WORK(&chunk->map_extend_work, pcpu_map_extend_workfn); -+ INIT_LIST_HEAD(&chunk->map_extend_list); - chunk->free_size = pcpu_unit_size; - chunk->contig_hint = pcpu_unit_size; - -@@ -895,6 +892,9 @@ static void __percpu *pcpu_alloc(size_t size, size_t align, bool reserved, - return NULL; - } - -+ if (!is_atomic) -+ mutex_lock(&pcpu_alloc_mutex); -+ - spin_lock_irqsave(&pcpu_lock, flags); - - /* serve reserved allocations from the reserved chunk if available */ -@@ -967,12 +967,9 @@ restart: - if (is_atomic) - goto fail; - -- mutex_lock(&pcpu_alloc_mutex); -- - if (list_empty(&pcpu_slot[pcpu_nr_slots - 1])) { - chunk = pcpu_create_chunk(); - if (!chunk) { -- mutex_unlock(&pcpu_alloc_mutex); - err = "failed to allocate new chunk"; - goto fail; - } -@@ -983,7 +980,6 @@ restart: - spin_lock_irqsave(&pcpu_lock, flags); - } - -- mutex_unlock(&pcpu_alloc_mutex); - goto restart; - - area_found: -@@ -993,8 +989,6 @@ area_found: - if (!is_atomic) { - int page_start, page_end, rs, re; - -- mutex_lock(&pcpu_alloc_mutex); -- - page_start = PFN_DOWN(off); - page_end = PFN_UP(off + size); - -@@ -1005,7 +999,6 @@ area_found: - - spin_lock_irqsave(&pcpu_lock, flags); - if (ret) { -- mutex_unlock(&pcpu_alloc_mutex); - pcpu_free_area(chunk, off, &occ_pages); - err = "failed to populate"; - goto fail_unlock; -@@ -1045,6 +1038,8 @@ fail: - /* see the flag handling in pcpu_blance_workfn() */ - pcpu_atomic_alloc_failed = true; - pcpu_schedule_balance_work(); -+ } else { -+ mutex_unlock(&pcpu_alloc_mutex); - } - return NULL; - } -@@ -1129,6 +1124,7 @@ static void pcpu_balance_workfn(struct work_struct *work) - if (chunk == list_first_entry(free_head, struct pcpu_chunk, list)) - continue; - -+ list_del_init(&chunk->map_extend_list); - list_move(&chunk->list, &to_free); - } - -@@ -1146,6 +1142,25 @@ static void pcpu_balance_workfn(struct work_struct *work) - pcpu_destroy_chunk(chunk); - } - -+ /* service chunks which requested async area map extension */ -+ do { -+ int new_alloc = 0; -+ -+ spin_lock_irq(&pcpu_lock); -+ -+ chunk = list_first_entry_or_null(&pcpu_map_extend_chunks, -+ struct pcpu_chunk, map_extend_list); -+ if (chunk) { -+ list_del_init(&chunk->map_extend_list); -+ new_alloc = pcpu_need_to_extend(chunk, false); -+ } -+ -+ spin_unlock_irq(&pcpu_lock); -+ -+ if (new_alloc) -+ pcpu_extend_area_map(chunk, new_alloc); -+ } while (chunk); -+ - /* - * Ensure there are certain number of free populated pages for - * atomic allocs. Fill up from the most packed so that atomic -@@ -1644,7 +1659,7 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, - */ - schunk = memblock_virt_alloc(pcpu_chunk_struct_size, 0); - INIT_LIST_HEAD(&schunk->list); -- INIT_WORK(&schunk->map_extend_work, pcpu_map_extend_workfn); -+ INIT_LIST_HEAD(&schunk->map_extend_list); - schunk->base_addr = base_addr; - schunk->map = smap; - schunk->map_alloc = ARRAY_SIZE(smap); -@@ -1673,7 +1688,7 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, - if (dyn_size) { - dchunk = memblock_virt_alloc(pcpu_chunk_struct_size, 0); - INIT_LIST_HEAD(&dchunk->list); -- INIT_WORK(&dchunk->map_extend_work, pcpu_map_extend_workfn); -+ INIT_LIST_HEAD(&dchunk->map_extend_list); - dchunk->base_addr = base_addr; - dchunk->map = dmap; - dchunk->map_alloc = ARRAY_SIZE(dmap); -diff --git a/mm/shmem.c b/mm/shmem.c -index 719bd6b..9ca09f5 100644 ---- a/mm/shmem.c -+++ b/mm/shmem.c -@@ -2236,9 +2236,11 @@ static long shmem_fallocate(struct file *file, int mode, loff_t offset, - NULL); - if (error) { - /* Remove the !PageUptodate pages we added */ -- shmem_undo_range(inode, -- (loff_t)start << PAGE_SHIFT, -- (loff_t)index << PAGE_SHIFT, true); -+ if (index > start) { -+ shmem_undo_range(inode, -+ (loff_t)start << PAGE_SHIFT, -+ ((loff_t)index << PAGE_SHIFT) - 1, true); -+ } - goto undone; - } - -diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c -index a669dea..61ad43f 100644 ---- a/net/core/flow_dissector.c -+++ b/net/core/flow_dissector.c -@@ -651,6 +651,23 @@ void make_flow_keys_digest(struct flow_keys_digest *digest, - } - EXPORT_SYMBOL(make_flow_keys_digest); - -+static struct flow_dissector flow_keys_dissector_symmetric __read_mostly; -+ -+u32 __skb_get_hash_symmetric(struct sk_buff *skb) -+{ -+ struct flow_keys keys; -+ -+ __flow_hash_secret_init(); -+ -+ memset(&keys, 0, sizeof(keys)); -+ __skb_flow_dissect(skb, &flow_keys_dissector_symmetric, &keys, -+ NULL, 0, 0, 0, -+ FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL); -+ -+ return __flow_hash_from_keys(&keys, hashrnd); -+} -+EXPORT_SYMBOL_GPL(__skb_get_hash_symmetric); -+ - /** - * __skb_get_hash: calculate a flow hash - * @skb: sk_buff to calculate flow hash from -@@ -868,6 +885,29 @@ static const struct flow_dissector_key flow_keys_dissector_keys[] = { - }, - }; - -+static const struct flow_dissector_key flow_keys_dissector_symmetric_keys[] = { -+ { -+ .key_id = FLOW_DISSECTOR_KEY_CONTROL, -+ .offset = offsetof(struct flow_keys, control), -+ }, -+ { -+ .key_id = FLOW_DISSECTOR_KEY_BASIC, -+ .offset = offsetof(struct flow_keys, basic), -+ }, -+ { -+ .key_id = FLOW_DISSECTOR_KEY_IPV4_ADDRS, -+ .offset = offsetof(struct flow_keys, addrs.v4addrs), -+ }, -+ { -+ .key_id = FLOW_DISSECTOR_KEY_IPV6_ADDRS, -+ .offset = offsetof(struct flow_keys, addrs.v6addrs), -+ }, -+ { -+ .key_id = FLOW_DISSECTOR_KEY_PORTS, -+ .offset = offsetof(struct flow_keys, ports), -+ }, -+}; -+ - static const struct flow_dissector_key flow_keys_buf_dissector_keys[] = { - { - .key_id = FLOW_DISSECTOR_KEY_CONTROL, -@@ -889,6 +929,9 @@ static int __init init_default_flow_dissectors(void) - skb_flow_dissector_init(&flow_keys_dissector, - flow_keys_dissector_keys, - ARRAY_SIZE(flow_keys_dissector_keys)); -+ skb_flow_dissector_init(&flow_keys_dissector_symmetric, -+ flow_keys_dissector_symmetric_keys, -+ ARRAY_SIZE(flow_keys_dissector_symmetric_keys)); - skb_flow_dissector_init(&flow_keys_buf_dissector, - flow_keys_buf_dissector_keys, - ARRAY_SIZE(flow_keys_buf_dissector_keys)); -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index e561f9f..59bf4d7 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -3016,24 +3016,6 @@ int skb_append_pagefrags(struct sk_buff *skb, struct page *page, - EXPORT_SYMBOL_GPL(skb_append_pagefrags); - - /** -- * skb_push_rcsum - push skb and update receive checksum -- * @skb: buffer to update -- * @len: length of data pulled -- * -- * This function performs an skb_push on the packet and updates -- * the CHECKSUM_COMPLETE checksum. It should be used on -- * receive path processing instead of skb_push unless you know -- * that the checksum difference is zero (e.g., a valid IP header) -- * or you are setting ip_summed to CHECKSUM_NONE. -- */ --static unsigned char *skb_push_rcsum(struct sk_buff *skb, unsigned len) --{ -- skb_push(skb, len); -- skb_postpush_rcsum(skb, skb->data, len); -- return skb->data; --} -- --/** - * skb_pull_rcsum - pull skb and update receive checksum - * @skb: buffer to update - * @len: length of data pulled -diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c -index ea071fa..c26fac2 100644 ---- a/net/ipv6/ip6_fib.c -+++ b/net/ipv6/ip6_fib.c -@@ -177,6 +177,7 @@ static void rt6_free_pcpu(struct rt6_info *non_pcpu_rt) - } - } - -+ free_percpu(non_pcpu_rt->rt6i_pcpu); - non_pcpu_rt->rt6i_pcpu = NULL; - } - -diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c -index d32cefc..34a5712 100644 ---- a/net/mac80211/mesh.c -+++ b/net/mac80211/mesh.c -@@ -150,19 +150,26 @@ u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata) - void mesh_sta_cleanup(struct sta_info *sta) - { - struct ieee80211_sub_if_data *sdata = sta->sdata; -- u32 changed; -+ u32 changed = 0; - - /* - * maybe userspace handles peer allocation and peering, but in either - * case the beacon is still generated by the kernel and we might need - * an update. - */ -- changed = mesh_accept_plinks_update(sdata); -+ if (sdata->u.mesh.user_mpm && -+ sta->mesh->plink_state == NL80211_PLINK_ESTAB) -+ changed |= mesh_plink_dec_estab_count(sdata); -+ changed |= mesh_accept_plinks_update(sdata); - if (!sdata->u.mesh.user_mpm) { - changed |= mesh_plink_deactivate(sta); - del_timer_sync(&sta->mesh->plink_timer); - } - -+ /* make sure no readers can access nexthop sta from here on */ -+ mesh_path_flush_by_nexthop(sta); -+ synchronize_net(); -+ - if (changed) - ieee80211_mbss_info_change_notify(sdata, changed); - } -diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h -index 62193f4..ba7ce53 100644 ---- a/net/mac80211/sta_info.h -+++ b/net/mac80211/sta_info.h -@@ -275,7 +275,7 @@ struct ieee80211_fast_tx { - u8 sa_offs, da_offs, pn_offs; - u8 band; - u8 hdr[30 + 2 + IEEE80211_FAST_XMIT_MAX_IV + -- sizeof(rfc1042_header)]; -+ sizeof(rfc1042_header)] __aligned(2); - - struct rcu_head rcu_head; - }; -diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index 18d0bec..8012f67 100644 ---- a/net/packet/af_packet.c -+++ b/net/packet/af_packet.c -@@ -1340,7 +1340,7 @@ static unsigned int fanout_demux_hash(struct packet_fanout *f, - struct sk_buff *skb, - unsigned int num) - { -- return reciprocal_scale(skb_get_hash(skb), num); -+ return reciprocal_scale(__skb_get_hash_symmetric(skb), num); - } - - static unsigned int fanout_demux_lb(struct packet_fanout *f, -diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c -index 8f3948d..934336e 100644 ---- a/net/sched/act_mirred.c -+++ b/net/sched/act_mirred.c -@@ -180,7 +180,7 @@ static int tcf_mirred(struct sk_buff *skb, const struct tc_action *a, - - if (!(at & AT_EGRESS)) { - if (m->tcfm_ok_push) -- skb_push(skb2, skb->mac_len); -+ skb_push_rcsum(skb2, skb->mac_len); - } - - /* mirror is always swallowed */ -diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c -index 7e0c9bf..837dd91 100644 ---- a/net/sunrpc/clnt.c -+++ b/net/sunrpc/clnt.c -@@ -446,16 +446,27 @@ out_no_rpciod: - return ERR_PTR(err); - } - --struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args, -+static struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args, - struct rpc_xprt *xprt) - { - struct rpc_clnt *clnt = NULL; - struct rpc_xprt_switch *xps; - -- xps = xprt_switch_alloc(xprt, GFP_KERNEL); -- if (xps == NULL) -- return ERR_PTR(-ENOMEM); -- -+ if (args->bc_xprt && args->bc_xprt->xpt_bc_xps) { -+ WARN_ON(args->protocol != XPRT_TRANSPORT_BC_TCP); -+ xps = args->bc_xprt->xpt_bc_xps; -+ xprt_switch_get(xps); -+ } else { -+ xps = xprt_switch_alloc(xprt, GFP_KERNEL); -+ if (xps == NULL) { -+ xprt_put(xprt); -+ return ERR_PTR(-ENOMEM); -+ } -+ if (xprt->bc_xprt) { -+ xprt_switch_get(xps); -+ xprt->bc_xprt->xpt_bc_xps = xps; -+ } -+ } - clnt = rpc_new_client(args, xps, xprt, NULL); - if (IS_ERR(clnt)) - return clnt; -@@ -483,7 +494,6 @@ struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args, - - return clnt; - } --EXPORT_SYMBOL_GPL(rpc_create_xprt); - - /** - * rpc_create - create an RPC client and transport with one call -@@ -509,6 +519,15 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args) - }; - char servername[48]; - -+ if (args->bc_xprt) { -+ WARN_ON(args->protocol != XPRT_TRANSPORT_BC_TCP); -+ xprt = args->bc_xprt->xpt_bc_xprt; -+ if (xprt) { -+ xprt_get(xprt); -+ return rpc_create_xprt(args, xprt); -+ } -+ } -+ - if (args->flags & RPC_CLNT_CREATE_INFINITE_SLOTS) - xprtargs.flags |= XPRT_CREATE_INFINITE_SLOTS; - if (args->flags & RPC_CLNT_CREATE_NO_IDLE_TIMEOUT) -diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c -index 7422f28..7231cb4 100644 ---- a/net/sunrpc/svc_xprt.c -+++ b/net/sunrpc/svc_xprt.c -@@ -136,6 +136,8 @@ static void svc_xprt_free(struct kref *kref) - /* See comment on corresponding get in xs_setup_bc_tcp(): */ - if (xprt->xpt_bc_xprt) - xprt_put(xprt->xpt_bc_xprt); -+ if (xprt->xpt_bc_xps) -+ xprt_switch_put(xprt->xpt_bc_xps); - xprt->xpt_ops->xpo_free(xprt); - module_put(owner); - } -diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c -index 65e7595..e9e5dd0 100644 ---- a/net/sunrpc/xprtsock.c -+++ b/net/sunrpc/xprtsock.c -@@ -3050,6 +3050,7 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args) - return xprt; - - args->bc_xprt->xpt_bc_xprt = NULL; -+ args->bc_xprt->xpt_bc_xps = NULL; - xprt_put(xprt); - ret = ERR_PTR(-EINVAL); - out_err: -diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c -index 8269da7..7748199 100644 ---- a/net/unix/af_unix.c -+++ b/net/unix/af_unix.c -@@ -315,7 +315,7 @@ static struct sock *unix_find_socket_byinode(struct inode *i) - &unix_socket_table[i->i_ino & (UNIX_HASH_SIZE - 1)]) { - struct dentry *dentry = unix_sk(s)->path.dentry; - -- if (dentry && d_backing_inode(dentry) == i) { -+ if (dentry && d_real_inode(dentry) == i) { - sock_hold(s); - goto found; - } -@@ -911,7 +911,7 @@ static struct sock *unix_find_other(struct net *net, - err = kern_path(sunname->sun_path, LOOKUP_FOLLOW, &path); - if (err) - goto fail; -- inode = d_backing_inode(path.dentry); -+ inode = d_real_inode(path.dentry); - err = inode_permission(inode, MAY_WRITE); - if (err) - goto put_fail; -@@ -1048,7 +1048,7 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) - goto out_up; - } - addr->hash = UNIX_HASH_SIZE; -- hash = d_backing_inode(dentry)->i_ino & (UNIX_HASH_SIZE - 1); -+ hash = d_real_inode(dentry)->i_ino & (UNIX_HASH_SIZE - 1); - spin_lock(&unix_table_lock); - u->path = u_path; - list = &unix_socket_table[hash]; -diff --git a/net/wireless/core.c b/net/wireless/core.c -index 9f1c4aa..c878045 100644 ---- a/net/wireless/core.c -+++ b/net/wireless/core.c -@@ -360,8 +360,6 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, - WARN_ON(ops->remain_on_channel && !ops->cancel_remain_on_channel); - WARN_ON(ops->tdls_channel_switch && !ops->tdls_cancel_channel_switch); - WARN_ON(ops->add_tx_ts && !ops->del_tx_ts); -- WARN_ON(ops->set_tx_power && !ops->get_tx_power); -- WARN_ON(ops->set_antenna && !ops->get_antenna); - - alloc_size = sizeof(*rdev) + sizeof_priv; - -diff --git a/net/wireless/util.c b/net/wireless/util.c -index 9f440a9..47b9178 100644 ---- a/net/wireless/util.c -+++ b/net/wireless/util.c -@@ -509,7 +509,7 @@ static int __ieee80211_data_to_8023(struct sk_buff *skb, struct ethhdr *ehdr, - * replace EtherType */ - hdrlen += ETH_ALEN + 2; - else -- tmp.h_proto = htons(skb->len); -+ tmp.h_proto = htons(skb->len - hdrlen); - - pskb_pull(skb, hdrlen); - -diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c -index a915507..fec7578 100644 ---- a/scripts/mod/file2alias.c -+++ b/scripts/mod/file2alias.c -@@ -384,7 +384,7 @@ static void do_of_entry_multi(void *symval, struct module *mod) - len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*", - (*type)[0] ? *type : "*"); - -- if (compatible[0]) -+ if ((*compatible)[0]) - sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "", - *compatible); - -diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c -index dec607c..5ee8201 100644 ---- a/security/apparmor/lsm.c -+++ b/security/apparmor/lsm.c -@@ -523,34 +523,34 @@ static int apparmor_setprocattr(struct task_struct *task, char *name, - { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; -- char *command, *args = value; -+ char *command, *largs = NULL, *args = value; - size_t arg_size; - int error; - - if (size == 0) - return -EINVAL; -- /* args points to a PAGE_SIZE buffer, AppArmor requires that -- * the buffer must be null terminated or have size <= PAGE_SIZE -1 -- * so that AppArmor can null terminate them -- */ -- if (args[size - 1] != '\0') { -- if (size == PAGE_SIZE) -- return -EINVAL; -- args[size] = '\0'; -- } -- - /* task can only write its own attributes */ - if (current != task) - return -EACCES; - -- args = value; -+ /* AppArmor requires that the buffer must be null terminated atm */ -+ if (args[size - 1] != '\0') { -+ /* null terminate */ -+ largs = args = kmalloc(size + 1, GFP_KERNEL); -+ if (!args) -+ return -ENOMEM; -+ memcpy(args, value, size); -+ args[size] = '\0'; -+ } -+ -+ error = -EINVAL; - args = strim(args); - command = strsep(&args, " "); - if (!args) -- return -EINVAL; -+ goto out; - args = skip_spaces(args); - if (!*args) -- return -EINVAL; -+ goto out; - - arg_size = size - (args - (char *) value); - if (strcmp(name, "current") == 0) { -@@ -576,10 +576,12 @@ static int apparmor_setprocattr(struct task_struct *task, char *name, - goto fail; - } else - /* only support the "current" and "exec" process attributes */ -- return -EINVAL; -+ goto fail; - - if (!error) - error = size; -+out: -+ kfree(largs); - return error; - - fail: -@@ -588,9 +590,9 @@ fail: - aad.profile = aa_current_profile(); - aad.op = OP_SETPROCATTR; - aad.info = name; -- aad.error = -EINVAL; -+ aad.error = error = -EINVAL; - aa_audit_msg(AUDIT_APPARMOR_DENIED, &sa, NULL); -- return -EINVAL; -+ goto out; - } - - static int apparmor_task_setrlimit(struct task_struct *task, -diff --git a/security/keys/key.c b/security/keys/key.c -index b287551..af7f682 100644 ---- a/security/keys/key.c -+++ b/security/keys/key.c -@@ -584,7 +584,7 @@ int key_reject_and_link(struct key *key, - - mutex_unlock(&key_construction_mutex); - -- if (keyring) -+ if (keyring && link_ret == 0) - __key_link_end(keyring, &key->index_key, edit); - - /* wake up anyone waiting for a key to be constructed */ -diff --git a/sound/core/control.c b/sound/core/control.c -index a85d455..b4fe9b0 100644 ---- a/sound/core/control.c -+++ b/sound/core/control.c -@@ -160,6 +160,8 @@ void snd_ctl_notify(struct snd_card *card, unsigned int mask, - - if (snd_BUG_ON(!card || !id)) - return; -+ if (card->shutdown) -+ return; - read_lock(&card->ctl_files_rwlock); - #if IS_ENABLED(CONFIG_SND_MIXER_OSS) - card->mixer_oss_change_count++; -diff --git a/sound/core/pcm.c b/sound/core/pcm.c -index 308c9ec..8e980aa 100644 ---- a/sound/core/pcm.c -+++ b/sound/core/pcm.c -@@ -849,6 +849,14 @@ int snd_pcm_new_internal(struct snd_card *card, const char *id, int device, - } - EXPORT_SYMBOL(snd_pcm_new_internal); - -+static void free_chmap(struct snd_pcm_str *pstr) -+{ -+ if (pstr->chmap_kctl) { -+ snd_ctl_remove(pstr->pcm->card, pstr->chmap_kctl); -+ pstr->chmap_kctl = NULL; -+ } -+} -+ - static void snd_pcm_free_stream(struct snd_pcm_str * pstr) - { - struct snd_pcm_substream *substream, *substream_next; -@@ -871,6 +879,7 @@ static void snd_pcm_free_stream(struct snd_pcm_str * pstr) - kfree(setup); - } - #endif -+ free_chmap(pstr); - if (pstr->substream_count) - put_device(&pstr->dev); - } -@@ -1135,10 +1144,7 @@ static int snd_pcm_dev_disconnect(struct snd_device *device) - for (cidx = 0; cidx < 2; cidx++) { - if (!pcm->internal) - snd_unregister_device(&pcm->streams[cidx].dev); -- if (pcm->streams[cidx].chmap_kctl) { -- snd_ctl_remove(pcm->card, pcm->streams[cidx].chmap_kctl); -- pcm->streams[cidx].chmap_kctl = NULL; -- } -+ free_chmap(&pcm->streams[cidx]); - } - mutex_unlock(&pcm->open_mutex); - mutex_unlock(®ister_mutex); -diff --git a/sound/core/timer.c b/sound/core/timer.c -index 6469bed..23b73f6 100644 ---- a/sound/core/timer.c -+++ b/sound/core/timer.c -@@ -1954,6 +1954,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, - - qhead = tu->qhead++; - tu->qhead %= tu->queue_size; -+ tu->qused--; - spin_unlock_irq(&tu->qlock); - - if (tu->tread) { -@@ -1967,7 +1968,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, - } - - spin_lock_irq(&tu->qlock); -- tu->qused--; - if (err < 0) - goto _error; - result += unit; -diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c -index c0f8f61..172dacd 100644 ---- a/sound/drivers/dummy.c -+++ b/sound/drivers/dummy.c -@@ -420,6 +420,7 @@ static int dummy_hrtimer_stop(struct snd_pcm_substream *substream) - - static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm) - { -+ hrtimer_cancel(&dpcm->timer); - tasklet_kill(&dpcm->tasklet); - } - -diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c -index 87041dd..47a358f 100644 ---- a/sound/hda/hdac_regmap.c -+++ b/sound/hda/hdac_regmap.c -@@ -444,7 +444,7 @@ int snd_hdac_regmap_write_raw(struct hdac_device *codec, unsigned int reg, - err = reg_raw_write(codec, reg, val); - if (err == -EAGAIN) { - err = snd_hdac_power_up_pm(codec); -- if (!err) -+ if (err >= 0) - err = reg_raw_write(codec, reg, val); - snd_hdac_power_down_pm(codec); - } -@@ -470,7 +470,7 @@ static int __snd_hdac_regmap_read_raw(struct hdac_device *codec, - err = reg_raw_read(codec, reg, val, uncached); - if (err == -EAGAIN) { - err = snd_hdac_power_up_pm(codec); -- if (!err) -+ if (err >= 0) - err = reg_raw_read(codec, reg, val, uncached); - snd_hdac_power_down_pm(codec); - } -diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c -index 4667c32..7417718 100644 ---- a/sound/pci/au88x0/au88x0_core.c -+++ b/sound/pci/au88x0/au88x0_core.c -@@ -1444,9 +1444,8 @@ static int vortex_wtdma_bufshift(vortex_t * vortex, int wtdma) - int page, p, pp, delta, i; - - page = -- (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) & -- WT_SUBBUF_MASK) -- >> WT_SUBBUF_SHIFT; -+ (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) -+ >> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK; - if (dma->nr_periods >= 4) - delta = (page - dma->period_real) & 3; - else { -diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c -index 1cb85ae..286f5e3 100644 ---- a/sound/pci/echoaudio/echoaudio.c -+++ b/sound/pci/echoaudio/echoaudio.c -@@ -2200,11 +2200,11 @@ static int snd_echo_resume(struct device *dev) - u32 pipe_alloc_mask; - int err; - -- commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL); -+ commpage_bak = kmalloc(sizeof(*commpage), GFP_KERNEL); - if (commpage_bak == NULL) - return -ENOMEM; - commpage = chip->comm_page; -- memcpy(commpage_bak, commpage, sizeof(struct comm_page)); -+ memcpy(commpage_bak, commpage, sizeof(*commpage)); - - err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); - if (err < 0) { -diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c -index dfaf1a9..d77cc76 100644 ---- a/sound/pci/hda/hda_generic.c -+++ b/sound/pci/hda/hda_generic.c -@@ -3977,6 +3977,8 @@ static hda_nid_t set_path_power(struct hda_codec *codec, hda_nid_t nid, - - for (n = 0; n < spec->paths.used; n++) { - path = snd_array_elem(&spec->paths, n); -+ if (!path->depth) -+ continue; - if (path->path[0] == nid || - path->path[path->depth - 1] == nid) { - bool pin_old = path->pin_enabled; -diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c -index 94089fc..6f8ea13 100644 ---- a/sound/pci/hda/hda_intel.c -+++ b/sound/pci/hda/hda_intel.c -@@ -367,9 +367,10 @@ enum { - #define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) - #define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171) - #define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71) -+#define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0) - #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) - #define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \ -- IS_KBL(pci) || IS_KBL_LP(pci) -+ IS_KBL(pci) || IS_KBL_LP(pci) || IS_KBL_H(pci) - - static char *driver_short_names[] = { - [AZX_DRIVER_ICH] = "HDA Intel", -@@ -1217,8 +1218,10 @@ static int azx_free(struct azx *chip) - if (use_vga_switcheroo(hda)) { - if (chip->disabled && hda->probe_continued) - snd_hda_unlock_devices(&chip->bus); -- if (hda->vga_switcheroo_registered) -+ if (hda->vga_switcheroo_registered) { - vga_switcheroo_unregister_client(chip->pci); -+ vga_switcheroo_fini_domain_pm_ops(chip->card->dev); -+ } - } - - if (bus->chip_init) { -@@ -2190,6 +2193,9 @@ static const struct pci_device_id azx_ids[] = { - /* Kabylake-LP */ - { PCI_DEVICE(0x8086, 0x9d71), - .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, -+ /* Kabylake-H */ -+ { PCI_DEVICE(0x8086, 0xa2f0), -+ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, - /* Broxton-P(Apollolake) */ - { PCI_DEVICE(0x8086, 0x5a98), - .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, -@@ -2263,6 +2269,8 @@ static const struct pci_device_id azx_ids[] = { - .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, - { PCI_DEVICE(0x1002, 0x157a), - .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, -+ { PCI_DEVICE(0x1002, 0x15b3), -+ .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, - { PCI_DEVICE(0x1002, 0x793b), - .driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI }, - { PCI_DEVICE(0x1002, 0x7919), -diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c -index 0fe18ed..abcb5a6 100644 ---- a/sound/pci/hda/patch_realtek.c -+++ b/sound/pci/hda/patch_realtek.c -@@ -5650,6 +5650,9 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { - SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK), - SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK), - SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), -+ SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), -+ SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), -+ SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), - SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), - SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), - SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), -@@ -5735,7 +5738,6 @@ static const struct hda_model_fixup alc269_fixup_models[] = { - {} - }; - #define ALC225_STANDARD_PINS \ -- {0x12, 0xb7a60130}, \ - {0x21, 0x04211020} - - #define ALC256_STANDARD_PINS \ -@@ -5760,10 +5762,24 @@ static const struct hda_model_fixup alc269_fixup_models[] = { - static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { - SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, - ALC225_STANDARD_PINS, -+ {0x12, 0xb7a60130}, - {0x14, 0x901701a0}), - SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, - ALC225_STANDARD_PINS, -+ {0x12, 0xb7a60130}, - {0x14, 0x901701b0}), -+ SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, -+ ALC225_STANDARD_PINS, -+ {0x12, 0xb7a60150}, -+ {0x14, 0x901701a0}), -+ SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, -+ ALC225_STANDARD_PINS, -+ {0x12, 0xb7a60150}, -+ {0x14, 0x901701b0}), -+ SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, -+ ALC225_STANDARD_PINS, -+ {0x12, 0xb7a60130}, -+ {0x1b, 0x90170110}), - SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, - {0x14, 0x90170110}, - {0x21, 0x02211020}), -@@ -5832,6 +5848,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { - {0x14, 0x90170120}, - {0x21, 0x02211030}), - SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, -+ {0x12, 0x90a60170}, -+ {0x14, 0x90170120}, -+ {0x21, 0x02211030}), -+ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, - ALC256_STANDARD_PINS), - SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, - {0x12, 0x90a60130}, -diff --git a/sound/usb/card.c b/sound/usb/card.c -index 3fc6358..2d49350 100644 ---- a/sound/usb/card.c -+++ b/sound/usb/card.c -@@ -552,7 +552,6 @@ static int usb_audio_probe(struct usb_interface *intf, - goto __error; - } - chip = usb_chip[i]; -- dev_set_drvdata(&dev->dev, chip); - atomic_inc(&chip->active); /* avoid autopm */ - break; - } -@@ -578,6 +577,7 @@ static int usb_audio_probe(struct usb_interface *intf, - goto __error; - } - } -+ dev_set_drvdata(&dev->dev, chip); - - /* - * For devices with more than one control interface, we assume the -diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index 4fd482f..7cb1224 100644 ---- a/virt/kvm/kvm_main.c -+++ b/virt/kvm/kvm_main.c -@@ -2868,7 +2868,7 @@ static long kvm_vm_ioctl(struct file *filp, - if (copy_from_user(&routing, argp, sizeof(routing))) - goto out; - r = -EINVAL; -- if (routing.nr >= KVM_MAX_IRQ_ROUTES) -+ if (routing.nr > KVM_MAX_IRQ_ROUTES) - goto out; - if (routing.flags) - goto out; diff --git a/4.6.5/0000_README b/4.7.0/0000_README index a3be0b4..f41c54f 100644 --- a/4.6.5/0000_README +++ b/4.7.0/0000_README @@ -2,11 +2,7 @@ README ----------------------------------------------------------------------------- Individual Patch Descriptions: ----------------------------------------------------------------------------- -Patch: 1004_linux-4.6.5.patch -From: http://www.kernel.org -Desc: Linux 4.6.5 - -Patch: 4420_grsecurity-3.1-4.6.5-201607312210.patch +Patch: 4420_grsecurity-3.1-4.7-201608131240.patch From: http://www.grsecurity.net Desc: hardened-sources base patch from upstream grsecurity diff --git a/4.6.5/4420_grsecurity-3.1-4.6.5-201607312210.patch b/4.7.0/4420_grsecurity-3.1-4.7-201608131240.patch index 5a9676a..d3e1770 100644 --- a/4.6.5/4420_grsecurity-3.1-4.6.5-201607312210.patch +++ b/4.7.0/4420_grsecurity-3.1-4.7-201608131240.patch @@ -1,5 +1,5 @@ diff --git a/.gitignore b/.gitignore -index fd3a355..c47e86a 100644 +index 0c320bf..2be25f7 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ modules.builtin @@ -323,10 +323,10 @@ index 13f888a..250729b 100644 A typical pattern in a Kbuild file looks like this: diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index 0b3de80..550d8e8 100644 +index 82b42c9..7151845 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt -@@ -1320,6 +1320,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -1341,6 +1341,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. [KNL] Should the hard-lockup detector generate backtraces on all cpus. Format: <integer> @@ -339,7 +339,7 @@ index 0b3de80..550d8e8 100644 hashdist= [KNL,NUMA] Large hashes allocated during boot are distributed across NUMA nodes. Defaults on -@@ -2515,6 +2521,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -2556,6 +2562,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. noexec=on: enable non-executable mappings (default) noexec=off: disable non-executable mappings @@ -350,7 +350,7 @@ index 0b3de80..550d8e8 100644 nosmap [X86] Disable SMAP (Supervisor Mode Access Prevention) even if it is supported by processor. -@@ -2818,6 +2828,35 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -2862,6 +2872,35 @@ 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. @@ -387,7 +387,7 @@ index 0b3de80..550d8e8 100644 pcd. [PARIDE] diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt -index fcddfd5..71afd6b 100644 +index a3683ce..5ec8bf4 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -42,6 +42,7 @@ show up in /proc/sys/kernel: @@ -398,7 +398,7 @@ index fcddfd5..71afd6b 100644 - modprobe ==> Documentation/debugging-modules.txt - modules_disabled - msg_next_id [ sysv ipc ] -@@ -406,6 +407,20 @@ This flag controls the L2 cache of G3 processor boards. If +@@ -408,6 +409,20 @@ This flag controls the L2 cache of G3 processor boards. If ============================================================== @@ -420,10 +420,10 @@ index fcddfd5..71afd6b 100644 A toggle value indicating if modules are allowed to be loaded diff --git a/Makefile b/Makefile -index 7d693a8..28a594e 100644 +index 66da9a3..69d3a1ae 100644 --- a/Makefile +++ b/Makefile -@@ -298,7 +298,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ +@@ -302,7 +302,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 @@ -434,7 +434,7 @@ index 7d693a8..28a594e 100644 ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \ -@@ -548,7 +550,7 @@ ifeq ($(KBUILD_EXTMOD),) +@@ -554,7 +556,7 @@ ifeq ($(KBUILD_EXTMOD),) # in parallel PHONY += scripts scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \ @@ -443,7 +443,7 @@ index 7d693a8..28a594e 100644 $(Q)$(MAKE) $(build)=$(@) # Objects we will link into vmlinux / subdirs we need to visit -@@ -623,6 +625,8 @@ endif +@@ -633,6 +635,8 @@ endif # Tell gcc to never replace conditional load with a non-conditional one KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) @@ -452,7 +452,7 @@ index 7d693a8..28a594e 100644 ifdef CONFIG_READABLE_ASM # Disable optimizations that make assembler listings hard to read. # reorder blocks reorders the control in the function -@@ -724,7 +728,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) +@@ -734,7 +738,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) else KBUILD_CFLAGS += -g endif @@ -461,7 +461,7 @@ index 7d693a8..28a594e 100644 endif ifdef CONFIG_DEBUG_INFO_DWARF4 KBUILD_CFLAGS += $(call cc-option, -gdwarf-4,) -@@ -899,7 +903,7 @@ export mod_sign_cmd +@@ -909,7 +913,7 @@ export mod_sign_cmd ifeq ($(KBUILD_EXTMOD),) @@ -470,16 +470,16 @@ index 7d693a8..28a594e 100644 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ -@@ -1002,7 +1006,7 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ +@@ -1028,7 +1032,7 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ archprepare: archheaders archscripts prepare1 scripts_basic --prepare0: archprepare FORCE -+prepare0: archprepare gcc-plugins FORCE +-prepare0: archprepare ++prepare0: archprepare gcc-plugins $(Q)$(MAKE) $(build)=. # All the preparing.. -@@ -1220,7 +1224,11 @@ MRPROPER_FILES += .config .config.old .version .old_version \ +@@ -1247,7 +1251,11 @@ MRPROPER_FILES += .config .config.old .version .old_version \ Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ signing_key.pem signing_key.priv signing_key.x509 \ x509.genkey extra_certificates signing_key.x509.keyid \ @@ -492,7 +492,7 @@ index 7d693a8..28a594e 100644 # clean - Delete most, but leave enough to build external modules # -@@ -1259,7 +1267,7 @@ distclean: mrproper +@@ -1286,7 +1294,7 @@ distclean: mrproper @find $(srctree) $(RCS_FIND_IGNORE) \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ @@ -501,7 +501,7 @@ index 7d693a8..28a594e 100644 -type f -print | xargs rm -f -@@ -1480,6 +1488,7 @@ clean: $(clean-dirs) +@@ -1509,6 +1517,7 @@ clean: $(clean-dirs) -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ -o -name '*.symtypes' -o -name 'modules.order' \ -o -name modules.builtin -o -name '.tmp_*.o.*' \ @@ -510,10 +510,10 @@ index 7d693a8..28a594e 100644 # Generate tags for editors diff --git a/arch/Kconfig b/arch/Kconfig -index 81869a5..b10fc6c 100644 +index 1599629..1ef557b 100644 --- a/arch/Kconfig +++ b/arch/Kconfig -@@ -353,6 +353,20 @@ config SECCOMP_FILTER +@@ -357,6 +357,20 @@ config SECCOMP_FILTER See Documentation/prctl/seccomp_filter.txt for details. @@ -598,7 +598,7 @@ index 968d999..d36b2df 100644 registered using atexit. This provides a mean for the dynamic linker to call DT_FINI functions for shared libraries that have diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h -index aab14a0..b4fa3e7 100644 +index c2ebb6f..93a0613 100644 --- a/arch/alpha/include/asm/pgalloc.h +++ b/arch/alpha/include/asm/pgalloc.h @@ -29,6 +29,12 @@ pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) @@ -650,7 +650,7 @@ index 936bc8f..bb1859f 100644 for (i = 0; i < n; i++) { diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c -index 6cc0816..3dd424d 100644 +index ffb93f49..ced8233 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -1300,10 +1300,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p) @@ -865,10 +865,10 @@ index 4a905bd..0a4da53 100644 /* Allow reads even for write-only mappings */ if (!(vma->vm_flags & (VM_READ | VM_WRITE))) diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig -index a876743..fe2a193 100644 +index 0d3e59f..4418d65 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig -@@ -549,6 +549,7 @@ config ARC_DBG_TLB_MISS_COUNT +@@ -541,6 +541,7 @@ config ARC_DBG_TLB_MISS_COUNT bool "Profile TLB Misses" default n select DEBUG_FS @@ -877,10 +877,10 @@ index a876743..fe2a193 100644 Counts number of I and D TLB Misses and exports them via Debugfs The counters can be cleared via Debugfs as well diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index cdfa6c2..f39881d 100644 +index 90542db..769febf 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -53,6 +53,7 @@ config ARM +@@ -54,6 +54,7 @@ config ARM select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL) select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL) select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) @@ -888,7 +888,7 @@ index cdfa6c2..f39881d 100644 select HAVE_GENERIC_DMA_COHERENT select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)) select HAVE_IDE if PCI || ISA || PCMCIA -@@ -1561,6 +1562,7 @@ config AEABI +@@ -1581,6 +1582,7 @@ config AEABI config OABI_COMPAT bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" depends on AEABI && !THUMB2_KERNEL @@ -896,7 +896,7 @@ index cdfa6c2..f39881d 100644 help This option preserves the old syscall interface along with the new (ARM EABI) one. It also provides a compatibility layer to -@@ -1629,6 +1631,7 @@ config HIGHPTE +@@ -1649,6 +1651,7 @@ config HIGHPTE config CPU_SW_DOMAIN_PAN bool "Enable use of CPU domains to implement privileged no-access" depends on MMU && !ARM_LPAE @@ -904,7 +904,7 @@ index cdfa6c2..f39881d 100644 default y help Increase kernel security by ensuring that normal kernel accesses -@@ -1705,7 +1708,7 @@ config ALIGNMENT_TRAP +@@ -1725,7 +1728,7 @@ config ALIGNMENT_TRAP config UACCESS_WITH_MEMCPY bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" @@ -913,7 +913,7 @@ index cdfa6c2..f39881d 100644 default y if CPU_FEROCEON help Implement faster copy_to_user and clear_user methods for CPU -@@ -1960,6 +1963,7 @@ config KEXEC +@@ -1980,6 +1983,7 @@ config KEXEC depends on (!SMP || PM_SLEEP_SMP) depends on !CPU_V7M select KEXEC_CORE @@ -921,7 +921,7 @@ index cdfa6c2..f39881d 100644 help kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot -@@ -2004,7 +2008,7 @@ config EFI_STUB +@@ -2024,7 +2028,7 @@ config EFI_STUB config EFI bool "UEFI runtime support" @@ -931,7 +931,7 @@ index cdfa6c2..f39881d 100644 select EFI_PARAMS_FROM_FDT select EFI_STUB diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug -index 1098e91..d6415c8 100644 +index 19a3dcf..4a81b0e 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug @@ -7,6 +7,7 @@ config ARM_PTDUMP @@ -956,7 +956,7 @@ index d50430c..01cc53b 100644 # but it is being used too early to link to meaningful stack_chk logic. nossp_flags := $(call cc-option, -fno-stack-protector) diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h -index 9e10c45..5a423a2 100644 +index 9e10c45..330d7f2 100644 --- a/arch/arm/include/asm/atomic.h +++ b/arch/arm/include/asm/atomic.h @@ -18,17 +18,41 @@ @@ -1190,7 +1190,7 @@ index 9e10c45..5a423a2 100644 static inline int __atomic_add_unless(atomic_t *v, int a, int u) { int c, old; -@@ -201,16 +300,32 @@ ATOMIC_OP(xor, ^=, eor) +@@ -201,16 +300,29 @@ ATOMIC_OP(xor, ^=, eor) #undef ATOMIC_OPS #undef ATOMIC_OP_RETURN @@ -1199,10 +1199,7 @@ index 9e10c45..5a423a2 100644 +#undef __ATOMIC_OP #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) -+static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new) -+{ -+ return xchg_relaxed(&v->counter, new); -+} ++#define atomic_xchg_unchecked(v, new) (xchg(&((v)->counter), new)) #define atomic_inc(v) atomic_add(1, v) +static inline void atomic_inc_unchecked(atomic_unchecked_t *v) @@ -1223,7 +1220,7 @@ index 9e10c45..5a423a2 100644 #define atomic_dec_return_relaxed(v) (atomic_sub_return_relaxed(1, v)) #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0) -@@ -221,6 +336,14 @@ typedef struct { +@@ -221,6 +333,14 @@ typedef struct { long long counter; } atomic64_t; @@ -1238,7 +1235,7 @@ index 9e10c45..5a423a2 100644 #define ATOMIC64_INIT(i) { (i) } #ifdef CONFIG_ARM_LPAE -@@ -237,6 +360,19 @@ static inline long long atomic64_read(const atomic64_t *v) +@@ -237,6 +357,19 @@ static inline long long atomic64_read(const atomic64_t *v) return result; } @@ -1258,7 +1255,7 @@ index 9e10c45..5a423a2 100644 static inline void atomic64_set(atomic64_t *v, long long i) { __asm__ __volatile__("@ atomic64_set\n" -@@ -245,6 +381,15 @@ static inline void atomic64_set(atomic64_t *v, long long i) +@@ -245,6 +378,15 @@ static inline void atomic64_set(atomic64_t *v, long long i) : "r" (&v->counter), "r" (i) ); } @@ -1274,7 +1271,7 @@ index 9e10c45..5a423a2 100644 #else static inline long long atomic64_read(const atomic64_t *v) { -@@ -259,6 +404,19 @@ static inline long long atomic64_read(const atomic64_t *v) +@@ -259,6 +401,19 @@ static inline long long atomic64_read(const atomic64_t *v) return result; } @@ -1294,7 +1291,7 @@ index 9e10c45..5a423a2 100644 static inline void atomic64_set(atomic64_t *v, long long i) { long long tmp; -@@ -273,43 +431,73 @@ static inline void atomic64_set(atomic64_t *v, long long i) +@@ -273,43 +428,73 @@ static inline void atomic64_set(atomic64_t *v, long long i) : "r" (&v->counter), "r" (i) : "cc"); } @@ -1376,7 +1373,7 @@ index 9e10c45..5a423a2 100644 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) \ : "r" (&v->counter), "r" (i) \ : "cc"); \ -@@ -317,6 +505,9 @@ atomic64_##op##_return_relaxed(long long i, atomic64_t *v) \ +@@ -317,6 +502,9 @@ atomic64_##op##_return_relaxed(long long i, atomic64_t *v) \ return result; \ } @@ -1386,7 +1383,7 @@ index 9e10c45..5a423a2 100644 #define ATOMIC64_OPS(op, op1, op2) \ ATOMIC64_OP(op, op1, op2) \ ATOMIC64_OP_RETURN(op, op1, op2) -@@ -325,6 +516,7 @@ ATOMIC64_OPS(add, adds, adc) +@@ -325,6 +513,7 @@ ATOMIC64_OPS(add, adds, adc) ATOMIC64_OPS(sub, subs, sbc) #define atomic64_add_return_relaxed atomic64_add_return_relaxed @@ -1394,7 +1391,7 @@ index 9e10c45..5a423a2 100644 #define atomic64_sub_return_relaxed atomic64_sub_return_relaxed #define atomic64_andnot atomic64_andnot -@@ -336,7 +528,12 @@ ATOMIC64_OP(xor, eor, eor) +@@ -336,7 +525,12 @@ ATOMIC64_OP(xor, eor, eor) #undef ATOMIC64_OPS #undef ATOMIC64_OP_RETURN @@ -1407,7 +1404,7 @@ index 9e10c45..5a423a2 100644 static inline long long atomic64_cmpxchg_relaxed(atomic64_t *ptr, long long old, long long new) -@@ -361,6 +558,31 @@ atomic64_cmpxchg_relaxed(atomic64_t *ptr, long long old, long long new) +@@ -361,6 +555,31 @@ atomic64_cmpxchg_relaxed(atomic64_t *ptr, long long old, long long new) return oldval; } #define atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed @@ -1439,7 +1436,7 @@ index 9e10c45..5a423a2 100644 static inline long long atomic64_xchg_relaxed(atomic64_t *ptr, long long new) { -@@ -380,26 +602,60 @@ static inline long long atomic64_xchg_relaxed(atomic64_t *ptr, long long new) +@@ -380,26 +599,60 @@ static inline long long atomic64_xchg_relaxed(atomic64_t *ptr, long long new) return result; } @@ -1506,7 +1503,7 @@ index 9e10c45..5a423a2 100644 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter) : "cc"); -@@ -423,13 +679,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) +@@ -423,13 +676,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) " teq %0, %5\n" " teqeq %H0, %H5\n" " moveq %1, #0\n" @@ -1535,7 +1532,7 @@ index 9e10c45..5a423a2 100644 : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (u), "r" (a) : "cc"); -@@ -442,10 +710,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) +@@ -442,10 +707,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0) #define atomic64_inc(v) atomic64_add(1LL, (v)) @@ -1619,7 +1616,7 @@ index 97882f9..0cc6ef1 100644 #include <asm-generic/cmpxchg-local.h> diff --git a/arch/arm/include/asm/cpuidle.h b/arch/arm/include/asm/cpuidle.h -index 3848259..bee9d84 100644 +index baefe1d..29cb35a 100644 --- a/arch/arm/include/asm/cpuidle.h +++ b/arch/arm/include/asm/cpuidle.h @@ -32,7 +32,7 @@ struct device_node; @@ -1850,7 +1847,7 @@ index 4355f0e..cd9168e 100644 #ifdef MULTI_USER extern struct cpu_user_fns cpu_user; diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h -index 19cfab5..3f5c7e9 100644 +index 20febb3..8d498e1 100644 --- a/arch/arm/include/asm/pgalloc.h +++ b/arch/arm/include/asm/pgalloc.h @@ -17,6 +17,7 @@ @@ -1945,7 +1942,7 @@ index 92fd2c8..061dae1 100644 * These are the memory types, defined to be compatible with * pre-ARMv6 CPUs cacheable and bufferable bits: n/a,n/a,C,B diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h -index 7411466..c57e55a 100644 +index 2a029bc..a0524c7 100644 --- a/arch/arm/include/asm/pgtable-3level.h +++ b/arch/arm/include/asm/pgtable-3level.h @@ -80,6 +80,7 @@ @@ -2392,7 +2389,7 @@ index 7e45f69..2c047db 100644 EXPORT_SYMBOL(__csum_ipv6_magic); diff --git a/arch/arm/kernel/cpuidle.c b/arch/arm/kernel/cpuidle.c -index 703926e..39aa432 100644 +index a44b268e..eea8f58 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[]; @@ -2876,7 +2873,7 @@ 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 4adfb46..65a3b13 100644 +index 4a803c5..6c8688f 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -114,8 +114,8 @@ void __show_regs(struct pt_regs *regs) @@ -2908,7 +2905,7 @@ index 4adfb46..65a3b13 100644 return 0; } arch_initcall(gate_vma_init); -@@ -362,91 +362,13 @@ const char *arch_vma_name(struct vm_area_struct *vma) +@@ -362,92 +362,14 @@ const char *arch_vma_name(struct vm_area_struct *vma) return is_gate_vma(vma) ? "[vectors]" : NULL; } @@ -2970,7 +2967,8 @@ index 4adfb46..65a3b13 100644 - npages = 1; /* for sigpage */ - npages += vdso_total_pages; - down_write(&mm->mmap_sem); + if (down_write_killable(&mm->mmap_sem)) + return -EINTR; - hint = sigpage_addr(mm, npages); - addr = get_unmapped_area(NULL, hint, npages << PAGE_SHIFT, 0, 0); - if (IS_ERR_VALUE(addr)) { @@ -3027,10 +3025,10 @@ index 4d93758..c2f471f92 100644 #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 71a2ff9..7753acf 100644 +index 3fa867a..d610607 100644 --- a/arch/arm/kernel/reboot.c +++ b/arch/arm/kernel/reboot.c -@@ -122,6 +122,7 @@ void machine_power_off(void) +@@ -120,6 +120,7 @@ void machine_power_off(void) if (pm_power_off) pm_power_off(); @@ -3039,7 +3037,7 @@ index 71a2ff9..7753acf 100644 /* diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c -index 2c4bea3..3f5625e 100644 +index 7b53500..d25a7aa 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -113,21 +113,23 @@ EXPORT_SYMBOL(elf_hwcap); @@ -3145,7 +3143,7 @@ index 7b8f214..ece8e28 100644 - return page; -} diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index baee702..49e7294 100644 +index 8615216..f5be307 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -82,7 +82,7 @@ enum ipi_msg_type { @@ -3244,10 +3242,10 @@ index e2c6da0..6155a88 100644 . = ALIGN(1<<SECTION_SHIFT); #else diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c -index 72b11d9..505a0f5 100644 +index f1bde7c..6dc92ba 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c -@@ -59,7 +59,7 @@ static unsigned long hyp_default_vectors; +@@ -58,7 +58,7 @@ static unsigned long hyp_default_vectors; static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu); /* The VMID used in the VTTBR */ @@ -3256,7 +3254,7 @@ index 72b11d9..505a0f5 100644 static u32 kvm_next_vmid; static unsigned int kvm_vmid_bits __read_mostly; static DEFINE_SPINLOCK(kvm_vmid_lock); -@@ -393,7 +393,7 @@ void force_vm_exit(const cpumask_t *mask) +@@ -389,7 +389,7 @@ void force_vm_exit(const cpumask_t *mask) */ static bool need_new_vmid_gen(struct kvm *kvm) { @@ -3265,7 +3263,7 @@ index 72b11d9..505a0f5 100644 } /** -@@ -426,7 +426,7 @@ static void update_vttbr(struct kvm *kvm) +@@ -422,7 +422,7 @@ static void update_vttbr(struct kvm *kvm) /* First user of a new VMID generation? */ if (unlikely(kvm_next_vmid == 0)) { @@ -3274,7 +3272,7 @@ index 72b11d9..505a0f5 100644 kvm_next_vmid = 1; /* -@@ -443,7 +443,7 @@ static void update_vttbr(struct kvm *kvm) +@@ -439,7 +439,7 @@ static void update_vttbr(struct kvm *kvm) kvm_call_hyp(__kvm_flush_vm_context); } @@ -3346,10 +3344,10 @@ index 6bd1089..e999400 100644 { unsigned long ua_flags; diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c -index fee2b00..943ea95 100644 +index f216909..7b6776e 100644 --- a/arch/arm/mach-exynos/suspend.c +++ b/arch/arm/mach-exynos/suspend.c -@@ -734,8 +734,10 @@ void __init exynos_pm_init(void) +@@ -718,8 +718,10 @@ void __init exynos_pm_init(void) tmp |= pm_data->wake_disable_mask; pmu_raw_writel(tmp, S5P_WAKEUP_MASK); @@ -3393,7 +3391,7 @@ index 1ccbba9..7a95c29 100644 } diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c -index 474abff..0d6a05a 100644 +index e80f0dd..0262909 100644 --- a/arch/arm/mach-mvebu/coherency.c +++ b/arch/arm/mach-mvebu/coherency.c @@ -163,7 +163,7 @@ exit: @@ -3414,6 +3412,15 @@ index 474abff..0d6a05a 100644 return __arm_ioremap_caller(phys_addr, size, mtype, caller); } +@@ -181,7 +181,7 @@ static void __init armada_375_380_coherency_init(struct device_node *np) + + coherency_cpu_base = of_iomap(np, 0); + arch_ioremap_caller = armada_wa_ioremap_caller; +- pci_ioremap_set_mem_type(MT_UNCACHED); ++ pci_ioremap_set_mem_type(MT_UNCACHED_RW); + + /* + * We should switch the PL310 to I/O coherency mode only if diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index b6443a4..20a0b74 100644 --- a/arch/arm/mach-omap2/board-n8x0.c @@ -3450,7 +3457,7 @@ index 65024af..70bf184 100644 .resume = dummy_cpu_resume, .scu_prepare = dummy_scu_prepare, diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c -index c625cc1..3f47aae 100644 +index 8cd1de9..1fcee77 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c @@ -19,6 +19,7 @@ @@ -3503,7 +3510,7 @@ 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 2af6ff6..1f2959f 100644 +index 83cb527..e82f20f 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -200,10 +200,10 @@ struct omap_hwmod_soc_ops { @@ -3651,10 +3658,10 @@ index 7cd9865..a00b6ab 100644 #include "common.h" diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig -index 5534766..1ffd12a 100644 +index cb569b6..da9d9db 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig -@@ -442,6 +442,7 @@ config CPU_32v5 +@@ -445,6 +445,7 @@ config CPU_32v5 config CPU_32v6 bool @@ -3662,7 +3669,7 @@ index 5534766..1ffd12a 100644 select TLS_REG_EMUL if !CPU_32v6K && !MMU config CPU_32v6K -@@ -596,6 +597,7 @@ config CPU_CP15_MPU +@@ -599,6 +600,7 @@ config CPU_CP15_MPU config CPU_USE_DOMAINS bool @@ -3670,7 +3677,7 @@ index 5534766..1ffd12a 100644 help This option enables or disables the use of domain switching via the set_fs() function. -@@ -806,7 +808,7 @@ config NEED_KUSER_HELPERS +@@ -809,7 +811,7 @@ config NEED_KUSER_HELPERS config KUSER_HELPERS bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS @@ -3679,7 +3686,7 @@ index 5534766..1ffd12a 100644 default y help Warning: disabling this option may break user programs. -@@ -820,7 +822,7 @@ config KUSER_HELPERS +@@ -823,7 +825,7 @@ config KUSER_HELPERS See Documentation/arm/kernel_user_helpers.txt for details. However, the fixed address nature of these helpers can be used @@ -3688,7 +3695,7 @@ index 5534766..1ffd12a 100644 exploits. If all of the binaries and libraries which run on your platform -@@ -835,7 +837,7 @@ config KUSER_HELPERS +@@ -838,7 +840,7 @@ config KUSER_HELPERS config VDSO bool "Enable VDSO for acceleration of some system calls" @@ -3760,7 +3767,7 @@ index 7d5f4c7..c6a0816 100644 ai_sys += 1; diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c -index 9f9d542..5189649 100644 +index c61996c..56d36df 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -44,7 +44,7 @@ struct l2c_init_data { @@ -4136,10 +4143,10 @@ index 370581a..b985cc1 100644 free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link"); #endif diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c -index 66a978d..e808c4b 100644 +index ff0eed2..f17f1c9 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c -@@ -406,9 +406,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached) +@@ -411,9 +411,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached) unsigned int mtype; if (cached) @@ -4768,10 +4775,10 @@ index a5bc92d..0bb4730 100644 + pax_close_kernel(); } diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 4f43622..22c9473 100644 +index 5a0a691..658577c 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -72,6 +72,7 @@ config ARM64 +@@ -76,6 +76,7 @@ config ARM64 select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_TRACER select HAVE_FUNCTION_GRAPH_TRACER @@ -4780,7 +4787,7 @@ index 4f43622..22c9473 100644 select HAVE_HW_BREAKPOINT if PERF_EVENTS select HAVE_IRQ_TIME_ACCOUNTING diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug -index 7e76845..e5ce349 100644 +index 0cc758c..de67415 100644 --- a/arch/arm64/Kconfig.debug +++ b/arch/arm64/Kconfig.debug @@ -6,6 +6,7 @@ config ARM64_PTDUMP @@ -4792,10 +4799,19 @@ index 7e76845..e5ce349 100644 Say Y here if you want to show the kernel pagetable layout in a debugfs file. This information is only useful for kernel developers diff --git a/arch/arm64/include/asm/atomic.h b/arch/arm64/include/asm/atomic.h -index f3a3586..832c720 100644 +index f3a3586..5763299 100644 --- a/arch/arm64/include/asm/atomic.h +++ b/arch/arm64/include/asm/atomic.h -@@ -146,5 +146,15 @@ +@@ -98,6 +98,8 @@ + #define __atomic_add_unless(v, a, u) ___atomic_add_unless(v, a, u,) + #define atomic_andnot atomic_andnot + ++#define atomic_inc_return_unchecked_relaxed(v) atomic_add_return_relaxed(1, (v)) ++ + /* + * 64-bit atomic operations. + */ +@@ -146,5 +148,16 @@ #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) @@ -4808,9 +4824,26 @@ index f3a3586..832c720 100644 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v) +#define atomic64_dec_unchecked(v) atomic64_dec(v) +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n)) ++#define atomic64_xchg_unchecked(v, n) atomic64_xchg((v), (n)) + #endif #endif +diff --git a/arch/arm64/include/asm/cache.h b/arch/arm64/include/asm/cache.h +index 5082b30..79247453 100644 +--- a/arch/arm64/include/asm/cache.h ++++ b/arch/arm64/include/asm/cache.h +@@ -18,8 +18,10 @@ + + #include <asm/cachetype.h> + ++#include <linux/const.h> ++ + #define L1_CACHE_SHIFT 7 +-#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) ++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT) + + /* + * Memory returned by kmalloc() may be used for DMA, so we must make diff --git a/arch/arm64/include/asm/percpu.h b/arch/arm64/include/asm/percpu.h index 0a456be..7799ff5 100644 --- a/arch/arm64/include/asm/percpu.h @@ -4837,7 +4870,7 @@ index 0a456be..7799ff5 100644 default: BUILD_BUG(); diff --git a/arch/arm64/include/asm/pgalloc.h b/arch/arm64/include/asm/pgalloc.h -index ff98585..65eced1 100644 +index d25f4f1..0bd8842 100644 --- a/arch/arm64/include/asm/pgalloc.h +++ b/arch/arm64/include/asm/pgalloc.h @@ -51,6 +51,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) @@ -4852,6 +4885,20 @@ index ff98585..65eced1 100644 #else static inline void __pud_populate(pud_t *pud, phys_addr_t pmd, pudval_t prot) { +diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h +index 46472a9..9f2efc0 100644 +--- a/arch/arm64/include/asm/pgtable.h ++++ b/arch/arm64/include/asm/pgtable.h +@@ -23,6 +23,9 @@ + #include <asm/pgtable-hwdef.h> + #include <asm/pgtable-prot.h> + ++#define ktla_ktva(addr) (addr) ++#define ktva_ktla(addr) (addr) ++ + /* + * VMALLOC range. + * diff --git a/arch/arm64/include/asm/string.h b/arch/arm64/include/asm/string.h index 2eb714c..6c0fdb7 100644 --- a/arch/arm64/include/asm/string.h @@ -4909,10 +4956,10 @@ index 2eb714c..6c0fdb7 100644 #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__) diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h -index 0685d74..6898549 100644 +index 9e397a5..6cd98e5 100644 --- a/arch/arm64/include/asm/uaccess.h +++ b/arch/arm64/include/asm/uaccess.h -@@ -114,6 +114,7 @@ static inline void set_fs(mm_segment_t fs) +@@ -101,6 +101,7 @@ static inline void set_fs(mm_segment_t fs) flag; \ }) @@ -4920,8 +4967,82 @@ index 0685d74..6898549 100644 #define access_ok(type, addr, size) __range_ok(addr, size) #define user_addr_max get_fs +diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c +index 6cd2612..56d72e5c 100644 +--- a/arch/arm64/kernel/process.c ++++ b/arch/arm64/kernel/process.c +@@ -63,7 +63,7 @@ EXPORT_SYMBOL(__stack_chk_guard); + /* + * Function pointers to optional machine specific functions + */ +-void (*pm_power_off)(void); ++void (* pm_power_off)(void); + EXPORT_SYMBOL_GPL(pm_power_off); + + void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd); +@@ -109,7 +109,7 @@ void machine_shutdown(void) + * activity (executing tasks, handling interrupts). smp_send_stop() + * achieves this. + */ +-void machine_halt(void) ++void __noreturn machine_halt(void) + { + local_irq_disable(); + smp_send_stop(); +@@ -122,12 +122,13 @@ void machine_halt(void) + * achieves this. When the system power is turned off, it will take all CPUs + * with it. + */ +-void machine_power_off(void) ++void __noreturn machine_power_off(void) + { + local_irq_disable(); + smp_send_stop(); + if (pm_power_off) + pm_power_off(); ++ while(1); + } + + /* +@@ -139,7 +140,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) ++void __noreturn machine_restart(char *cmd) + { + /* Disable interrupts first */ + local_irq_disable(); +diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c +index d9751a4..aeda309 100644 +--- a/arch/arm64/kernel/stacktrace.c ++++ b/arch/arm64/kernel/stacktrace.c +@@ -92,8 +92,8 @@ int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) + struct pt_regs *irq_args; + unsigned long orig_sp = IRQ_STACK_TO_TASK_STACK(irq_stack_ptr); + +- if (object_is_on_stack((void *)orig_sp) && +- object_is_on_stack((void *)frame->fp)) { ++ if (object_starts_on_stack((void *)orig_sp) && ++ object_starts_on_stack((void *)frame->fp)) { + frame->sp = orig_sp; + + /* orig_sp is the saved pt_regs, find the elr */ +diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c +index 2a43012..3409956 100644 +--- a/arch/arm64/kernel/traps.c ++++ b/arch/arm64/kernel/traps.c +@@ -420,7 +420,7 @@ asmlinkage long do_ni_syscall(struct pt_regs *regs) + __show_regs(regs); + } + +- return sys_ni_syscall(); ++ return -ENOSYS; + } + + static const char *esr_class_str[] = { diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c -index a6e757c..00fc586 100644 +index c566ec8..3e01953 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -132,7 +132,7 @@ static void __dma_free_coherent(struct device *dev, size_t size, @@ -5195,10 +5316,10 @@ index 69952c18..4fa2908 100644 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig -index b534eba..ace220a 100644 +index e109ee9..a426a85 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig -@@ -518,6 +518,7 @@ config KEXEC +@@ -519,6 +519,7 @@ config KEXEC bool "kexec system call" depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU) select KEXEC_CORE @@ -5207,15 +5328,15 @@ index b534eba..ace220a 100644 kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile -index 970d0bd..e750b9b 100644 +index c100d78..07538cc 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile @@ -98,5 +98,6 @@ endef - archprepare: make_nr_irqs_h FORCE - PHONY += make_nr_irqs_h FORCE + archprepare: make_nr_irqs_h + PHONY += make_nr_irqs_h +make_nr_irqs_h: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) - make_nr_irqs_h: FORCE + make_nr_irqs_h: $(Q)$(MAKE) $(build)=arch/ia64/kernel include/generated/nr-irqs.h diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h index 8dfb5f6..d58bd69 100644 @@ -5696,7 +5817,7 @@ index 0395c51..5f26031 100644 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c -index b38700ae..15f5c87 100644 +index db1b7da..8e13684 100644 --- a/arch/metag/mm/hugetlbpage.c +++ b/arch/metag/mm/hugetlbpage.c @@ -189,6 +189,7 @@ hugetlb_get_unmapped_area_new_pmd(unsigned long len) @@ -5739,18 +5860,18 @@ index 5c3f688..f8cc1b3 100644 # platform specific definitions include arch/mips/Kbuild.platforms diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 2018c2b..fdd3972 100644 +index ac91939..a1df96d 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -49,6 +49,7 @@ config MIPS - select GENERIC_CMOS_UPDATE +@@ -50,6 +50,7 @@ config MIPS select HAVE_MOD_ARCH_SPECIFIC + select HAVE_NMI select VIRT_TO_BUS + select HAVE_GCC_PLUGINS select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_RELA if MODULES && 64BIT select CLONE_BACKWARDS -@@ -2648,6 +2649,7 @@ source "kernel/Kconfig.preempt" +@@ -2775,6 +2776,7 @@ source "kernel/Kconfig.preempt" config KEXEC bool "Kexec system call" select KEXEC_CORE @@ -6408,10 +6529,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 e090fc3..eae24400 100644 +index f5f4571..38cf967 100644 --- a/arch/mips/include/asm/elf.h +++ b/arch/mips/include/asm/elf.h -@@ -425,6 +425,13 @@ extern const char *__elf_platform; +@@ -458,6 +458,13 @@ extern const char *__elf_platform; #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) #endif @@ -6567,7 +6688,7 @@ index 21ed715..774a251 100644 typedef struct { unsigned long long pte; } pte_t; #define pte_val(x) ((x).pte) diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h -index b336037..5b874cc 100644 +index 93c079a..1d6bf7c 100644 --- a/arch/mips/include/asm/pgalloc.h +++ b/arch/mips/include/asm/pgalloc.h @@ -37,6 +37,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) @@ -6583,7 +6704,7 @@ index b336037..5b874cc 100644 /* diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h -index 65bf2c0..09b7819 100644 +index 7d44e88..6f28830 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h @@ -20,6 +20,9 @@ @@ -6651,10 +6772,10 @@ index 7f109d4..40b1195 100644 likely(__access_ok((addr), (size), __access_mask)) diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c -index 1b992c6..4f250db 100644 +index 58ad63d..051b4b7 100644 --- a/arch/mips/kernel/binfmt_elfn32.c +++ b/arch/mips/kernel/binfmt_elfn32.c -@@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; +@@ -36,6 +36,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; #undef ELF_ET_DYN_BASE #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) @@ -6669,10 +6790,10 @@ index 1b992c6..4f250db 100644 #include <linux/module.h> #include <linux/elfcore.h> diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c -index abd3aff..ab1b84a 100644 +index 49fb881..b9ab7c2 100644 --- a/arch/mips/kernel/binfmt_elfo32.c +++ b/arch/mips/kernel/binfmt_elfo32.c -@@ -70,6 +70,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; +@@ -40,6 +40,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; #undef ELF_ET_DYN_BASE #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) @@ -6700,7 +6821,7 @@ index 44a1f79..2bd6aa3 100644 void __init gt641xx_irq_init(void) diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c -index 8eb5af8..2baf465 100644 +index f25f7ea..19e1c62 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c @@ -34,17 +34,17 @@ void ack_bad_irq(unsigned int irq) @@ -6724,7 +6845,7 @@ index 8eb5af8..2baf465 100644 } void __init init_IRQ(void) -@@ -58,6 +58,8 @@ void __init init_IRQ(void) +@@ -61,6 +61,8 @@ void __init init_IRQ(void) } #ifdef CONFIG_DEBUG_STACKOVERFLOW @@ -6733,7 +6854,7 @@ index 8eb5af8..2baf465 100644 static inline void check_stack_overflow(void) { unsigned long sp; -@@ -73,6 +75,7 @@ static inline void check_stack_overflow(void) +@@ -76,6 +78,7 @@ static inline void check_stack_overflow(void) printk("do_IRQ: stack overflow: %ld\n", sp - sizeof(struct thread_info)); dump_stack(); @@ -6742,7 +6863,7 @@ index 8eb5af8..2baf465 100644 } #else diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c -index fa3f9eb..98ada7a 100644 +index adda3ff..ac067e2 100644 --- a/arch/mips/kernel/pm-cps.c +++ b/arch/mips/kernel/pm-cps.c @@ -172,7 +172,7 @@ int cps_pm_enter_state(enum cps_pm_state state) @@ -6755,10 +6876,10 @@ index fa3f9eb..98ada7a 100644 /* Run the generated entry code */ diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c -index d83730c..ced3459 100644 +index 813ed78..0acf903 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c -@@ -539,18 +539,6 @@ out: +@@ -531,18 +531,6 @@ out: return pc; } @@ -6778,10 +6899,10 @@ index d83730c..ced3459 100644 { struct pt_regs *regs; diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c -index 4285d8b..febcfeb 100644 +index 0dcf691..b75d89a 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c -@@ -881,6 +881,10 @@ long arch_ptrace(struct task_struct *child, long request, +@@ -882,6 +882,10 @@ long arch_ptrace(struct task_struct *child, long request, return ret; } @@ -6792,7 +6913,7 @@ index 4285d8b..febcfeb 100644 /* * Notification of system call entry/exit * - triggered by current->work.syscall_trace -@@ -899,6 +903,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) +@@ -900,6 +904,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) tracehook_report_syscall_entry(regs)) ret = -1; @@ -6874,10 +6995,10 @@ index 4472a7f..c5905e6 100644 } /* Arrange for an interrupt in a short while */ diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c -index 5aa1d5c..491df0d 100644 +index 4a1712b..a1348b9 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c -@@ -698,7 +698,18 @@ asmlinkage void do_ov(struct pt_regs *regs) +@@ -695,7 +695,18 @@ asmlinkage void do_ov(struct pt_regs *regs) }; prev_state = exception_enter(); @@ -7069,10 +7190,10 @@ index 4b88fa0..b16bc17 100644 tsk->thread.error_code = write; if (show_unhandled_signals && diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c -index 7e5fa09..65c1072 100644 +index 9b58eb5..b1f2558 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c -@@ -468,10 +468,10 @@ void __init mem_init(void) +@@ -472,10 +472,10 @@ void __init mem_init(void) #ifdef CONFIG_64BIT if ((unsigned long) &_text > (unsigned long) CKSEG0) @@ -7158,7 +7279,7 @@ index 3530376..754dde3 100644 } } diff --git a/arch/mips/sgi-ip27/ip27-nmi.c b/arch/mips/sgi-ip27/ip27-nmi.c -index a2358b4..7cead4f 100644 +index cfceaea..65deeb4 100644 --- a/arch/mips/sgi-ip27/ip27-nmi.c +++ b/arch/mips/sgi-ip27/ip27-nmi.c @@ -187,9 +187,9 @@ void @@ -7183,7 +7304,7 @@ index a2358b4..7cead4f 100644 /* diff --git a/arch/mips/sni/rm200.c b/arch/mips/sni/rm200.c -index a046b30..6799527 100644 +index 160b880..3b53fdc 100644 --- a/arch/mips/sni/rm200.c +++ b/arch/mips/sni/rm200.c @@ -270,7 +270,7 @@ spurious_8259A_irq: @@ -7351,7 +7472,7 @@ index 78c9fd3..42fa66a 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 f2fd327..2bb2a26 100644 +index f08dda3..ea6aa1b 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) @@ -7365,8 +7486,8 @@ index f2fd327..2bb2a26 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, -@@ -97,6 +102,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) + pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL, PMD_ORDER); +@@ -96,6 +101,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() @@ -7397,10 +7518,10 @@ index 291cee2..2ac33db 100644 #define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL_EXEC) #define PAGE_KERNEL_RWX __pgprot(_PAGE_KERNEL_RWX) diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h -index 7955e43..7f3661d 100644 +index 0f59fd9..c502784 100644 --- a/arch/parisc/include/asm/uaccess.h +++ b/arch/parisc/include/asm/uaccess.h -@@ -243,10 +243,10 @@ static inline unsigned long __must_check copy_from_user(void *to, +@@ -220,10 +220,10 @@ static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) { @@ -7751,10 +7872,10 @@ index 16dbe81..db2ed24 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 7cd32c0..30c918b 100644 +index 0a9d439..2b95815 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -144,6 +144,7 @@ config PPC +@@ -146,6 +146,7 @@ config PPC select ARCH_USE_BUILTIN_BSWAP select OLD_SIGSUSPEND select OLD_SIGACTION if PPC32 @@ -7762,7 +7883,7 @@ index 7cd32c0..30c918b 100644 select HAVE_DEBUG_STACKOVERFLOW select HAVE_IRQ_EXIT_ON_IRQ_STACK select ARCH_USE_CMPXCHG_LOCKREF if PPC64 -@@ -439,6 +440,7 @@ config KEXEC +@@ -443,6 +444,7 @@ config KEXEC bool "kexec system call" depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || PPC_BOOK3E select KEXEC_CORE @@ -7771,10 +7892,14 @@ index 7cd32c0..30c918b 100644 kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h -index ae0751e..c7fad52 100644 +index ae0751e..70e03dc 100644 --- a/arch/powerpc/include/asm/atomic.h +++ b/arch/powerpc/include/asm/atomic.h -@@ -12,6 +12,11 @@ +@@ -9,9 +9,15 @@ + #include <linux/types.h> + #include <asm/cmpxchg.h> + #include <asm/barrier.h> ++#include <asm/asm-compat.h> #define ATOMIC_INIT(i) { (i) } @@ -7786,7 +7911,7 @@ index ae0751e..c7fad52 100644 /* * Since *_return_relaxed and {cmp}xchg_relaxed are implemented with * a "bne-" instruction at the end, so an isync is enough as a acquire barrier -@@ -39,38 +44,79 @@ static __inline__ int atomic_read(const atomic_t *v) +@@ -39,38 +45,79 @@ static __inline__ int atomic_read(const atomic_t *v) return t; } @@ -7819,8 +7944,8 @@ index ae0751e..c7fad52 100644 + " bf 4*cr0+so, 3f\n" \ + "2: .long 0x00c00b00\n" \ + "3:\n" -+#define __OVERFLOW_EXTABLE \ -+ "\n4:\n" ++#define __OVERFLOW_EXTABLE \ ++ "\n4:\n" \ + _ASM_EXTABLE(2b, 4b) +#else +#define __REFCOUNT_OP(op) op @@ -7872,7 +7997,7 @@ index ae0751e..c7fad52 100644 : "=&r" (t), "+m" (v->counter) \ : "r" (a), "r" (&v->counter) \ : "cc"); \ -@@ -78,6 +124,9 @@ static inline int atomic_##op##_return_relaxed(int a, atomic_t *v) \ +@@ -78,6 +125,9 @@ static inline int atomic_##op##_return_relaxed(int a, atomic_t *v) \ return t; \ } @@ -7882,7 +8007,12 @@ index ae0751e..c7fad52 100644 #define ATOMIC_OPS(op, asm_op) \ ATOMIC_OP(op, asm_op) \ ATOMIC_OP_RETURN_RELAXED(op, asm_op) -@@ -94,40 +143,29 @@ ATOMIC_OP(xor, xor) +@@ -90,44 +140,34 @@ ATOMIC_OP(or, or) + ATOMIC_OP(xor, xor) + + #define atomic_add_return_relaxed atomic_add_return_relaxed ++#define atomic_add_return_unchecked_relaxed atomic_add_return_unchecked_relaxed + #define atomic_sub_return_relaxed atomic_sub_return_relaxed #undef ATOMIC_OPS #undef ATOMIC_OP_RETURN_RELAXED @@ -7938,13 +8068,13 @@ index ae0751e..c7fad52 100644 } /* -@@ -140,36 +178,23 @@ static __inline__ int atomic_inc_return_relaxed(atomic_t *v) +@@ -139,42 +179,22 @@ static __inline__ int atomic_inc_return_relaxed(atomic_t *v) + * other cases. */ #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0) - +- -static __inline__ void atomic_dec(atomic_t *v) -+static __inline__ int atomic_inc_and_test_unchecked(atomic_unchecked_t *v) - { +-{ - int t; - - __asm__ __volatile__( @@ -7956,10 +8086,11 @@ index ae0751e..c7fad52 100644 - : "=&r" (t), "+m" (v->counter) - : "r" (&v->counter) - : "cc", "xer"); -+ return atomic_add_return_unchecked(1, v) == 0; - } - +-} +- -static __inline__ int atomic_dec_return_relaxed(atomic_t *v) ++#define atomic_inc_and_test_unchecked(v) (atomic_add_return_unchecked(1, v) == 0) ++ +/* + * atomic_dec - decrement atomic variable + * @v: pointer of type atomic_t @@ -7987,8 +8118,13 @@ index ae0751e..c7fad52 100644 + atomic_sub_unchecked(1, v); } - #define atomic_inc_return_relaxed atomic_inc_return_relaxed -@@ -184,6 +209,16 @@ static __inline__ int atomic_dec_return_relaxed(atomic_t *v) +-#define atomic_inc_return_relaxed atomic_inc_return_relaxed +-#define atomic_dec_return_relaxed atomic_dec_return_relaxed +- + #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n))) + #define atomic_cmpxchg_relaxed(v, o, n) \ + cmpxchg_relaxed(&((v)->counter), (o), (n)) +@@ -184,6 +204,13 @@ static __inline__ int atomic_dec_return_relaxed(atomic_t *v) #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) #define atomic_xchg_relaxed(v, new) xchg_relaxed(&((v)->counter), (new)) @@ -7997,15 +8133,12 @@ index ae0751e..c7fad52 100644 + return cmpxchg(&(v->counter), old, new); +} + -+static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new) -+{ -+ return xchg(&(v->counter), new); -+} ++#define atomic_xchg_unchecked(v, new) (xchg(&((v)->counter), new)) + /** * __atomic_add_unless - add unless the number is a given value * @v: pointer of type atomic_t -@@ -201,11 +236,27 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u) +@@ -201,11 +228,27 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u) PPC_ATOMIC_ENTRY_BARRIER "1: lwarx %0,0,%1 # __atomic_add_unless\n\ cmpw 0,%0,%3 \n\ @@ -8035,7 +8168,7 @@ index ae0751e..c7fad52 100644 PPC_ATOMIC_EXIT_BARRIER " subf %0,%2,%0 \n\ 2:" -@@ -291,37 +342,59 @@ static __inline__ long atomic64_read(const atomic64_t *v) +@@ -291,37 +334,59 @@ static __inline__ long atomic64_read(const atomic64_t *v) return t; } @@ -8100,7 +8233,7 @@ index ae0751e..c7fad52 100644 : "=&r" (t), "+m" (v->counter) \ : "r" (a), "r" (&v->counter) \ : "cc"); \ -@@ -329,6 +402,9 @@ atomic64_##op##_return_relaxed(long a, atomic64_t *v) \ +@@ -329,6 +394,9 @@ atomic64_##op##_return_relaxed(long a, atomic64_t *v) \ return t; \ } @@ -8110,7 +8243,7 @@ index ae0751e..c7fad52 100644 #define ATOMIC64_OPS(op, asm_op) \ ATOMIC64_OP(op, asm_op) \ ATOMIC64_OP_RETURN_RELAXED(op, asm_op) -@@ -344,38 +420,33 @@ ATOMIC64_OP(xor, xor) +@@ -344,38 +412,33 @@ ATOMIC64_OP(xor, xor) #undef ATOPIC64_OPS #undef ATOMIC64_OP_RETURN_RELAXED @@ -8168,7 +8301,7 @@ index ae0751e..c7fad52 100644 } /* -@@ -388,34 +459,18 @@ static __inline__ long atomic64_inc_return_relaxed(atomic64_t *v) +@@ -388,39 +451,20 @@ static __inline__ long atomic64_inc_return_relaxed(atomic64_t *v) */ #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0) @@ -8194,8 +8327,9 @@ index ae0751e..c7fad52 100644 - : "=&r" (t), "+m" (v->counter) - : "r" (&v->counter) - : "cc", "xer"); --} -- ++ atomic64_sub_unchecked(1, v); + } + -static __inline__ long atomic64_dec_return_relaxed(atomic64_t *v) -{ - long t; @@ -8210,11 +8344,15 @@ index ae0751e..c7fad52 100644 - : "cc", "xer"); - - return t; -+ atomic64_sub_unchecked(1, v); - } +-} +- +-#define atomic64_inc_return_relaxed atomic64_inc_return_relaxed +-#define atomic64_dec_return_relaxed atomic64_dec_return_relaxed +- + #define atomic64_sub_and_test(a, v) (atomic64_sub_return((a), (v)) == 0) + #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0) - #define atomic64_inc_return_relaxed atomic64_inc_return_relaxed -@@ -457,6 +512,16 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v) +@@ -457,6 +501,13 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v) #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) #define atomic64_xchg_relaxed(v, new) xchg_relaxed(&((v)->counter), (new)) @@ -8223,15 +8361,12 @@ index ae0751e..c7fad52 100644 + return cmpxchg(&(v->counter), old, new); +} + -+static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new) -+{ -+ return xchg(&(v->counter), new); -+} ++#define atomic64_xchg_unchecked(v, new) (xchg(&((v)->counter), new)) + /** * atomic64_add_unless - add unless the number is a given value * @v: pointer of type atomic64_t -@@ -472,13 +537,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) +@@ -472,13 +523,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) __asm__ __volatile__ ( PPC_ATOMIC_ENTRY_BARRIER @@ -8265,7 +8400,7 @@ index ae0751e..c7fad52 100644 2:" : "=&r" (t) diff --git a/arch/powerpc/include/asm/book3s/32/hash.h b/arch/powerpc/include/asm/book3s/32/hash.h -index 264b754..187b7f6 100644 +index 880db13..017716c 100644 --- a/arch/powerpc/include/asm/book3s/32/hash.h +++ b/arch/powerpc/include/asm/book3s/32/hash.h @@ -20,6 +20,7 @@ @@ -8276,6 +8411,34 @@ index 264b754..187b7f6 100644 #define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */ #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */ #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */ +diff --git a/arch/powerpc/include/asm/book3s/64/pgalloc.h b/arch/powerpc/include/asm/book3s/64/pgalloc.h +index cd5e7aa..7709061 100644 +--- a/arch/powerpc/include/asm/book3s/64/pgalloc.h ++++ b/arch/powerpc/include/asm/book3s/64/pgalloc.h +@@ -91,6 +91,11 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) + pgd_set(pgd, __pgtable_ptr_val(pud) | PGD_VAL_BITS); + } + ++static inline void pgd_populate_kernel(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) ++{ ++ pgd_populate(mm, pgd, pud); ++} ++ + static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) + { + return kmem_cache_alloc(PGT_CACHE(PUD_INDEX_SIZE), GFP_KERNEL); +@@ -106,6 +111,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) + pud_set(pud, __pgtable_ptr_val(pmd) | PUD_VAL_BITS); + } + ++static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) ++{ ++ pud_populate_kernel(mm, pud, pmd); ++} ++ + static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, + unsigned long address) + { diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h index ffbafbf..71d037f 100644 --- a/arch/powerpc/include/asm/cache.h @@ -8438,8 +8601,40 @@ index 2563c43..d6fdd62 100644 { return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0); } +diff --git a/arch/powerpc/include/asm/nohash/64/pgalloc.h b/arch/powerpc/include/asm/nohash/64/pgalloc.h +index 897d2e1..399f34f 100644 +--- a/arch/powerpc/include/asm/nohash/64/pgalloc.h ++++ b/arch/powerpc/include/asm/nohash/64/pgalloc.h +@@ -54,6 +54,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) + #ifndef CONFIG_PPC_64K_PAGES + + #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, (unsigned long)PUD) ++#define pgd_populate_kernel(MM, PGD, PUD) pgd_populate((MM), (PGD), (PUD)) + + static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) + { +@@ -70,6 +71,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) + pud_set(pud, (unsigned long)pmd); + } + ++static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) ++{ ++ pud_populate(mm, pud, pmd); ++} ++ + static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, + pte_t *pte) + { +@@ -139,6 +145,7 @@ extern void __tlb_remove_table(void *_table); + #endif + + #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd) ++#define pud_populate_kernel(mm, pud, pmd) pud_populate((mm), (pud), (pmd)) + + static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, + pte_t *pte) diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h -index ab3d897..cbc0693 100644 +index 51db3a3..0bd72ae 100644 --- a/arch/powerpc/include/asm/page.h +++ b/arch/powerpc/include/asm/page.h @@ -230,8 +230,9 @@ extern long long virt_phys_offset; @@ -8465,10 +8660,10 @@ index ab3d897..cbc0693 100644 /* * Use the top bit of the higher-level page table entries to indicate whether diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h -index d908a46..3753f71 100644 +index dd5f071..0470718 100644 --- a/arch/powerpc/include/asm/page_64.h +++ b/arch/powerpc/include/asm/page_64.h -@@ -172,15 +172,18 @@ do { \ +@@ -169,15 +169,18 @@ do { \ * stack by default, so in the absence of a PT_GNU_STACK program header * we turn execute permission off. */ @@ -8489,44 +8684,8 @@ index d908a46..3753f71 100644 #include <asm-generic/getorder.h> -diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h -index 8d5fc3a..528a418 100644 ---- a/arch/powerpc/include/asm/pgalloc-64.h -+++ b/arch/powerpc/include/asm/pgalloc-64.h -@@ -54,6 +54,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - #ifndef CONFIG_PPC_64K_PAGES - - #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, __pgtable_ptr_val(PUD)) -+#define pgd_populate_kernel(MM, PGD, PUD) pgd_populate((MM), (PGD), (PUD)) - - static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) - { -@@ -71,6 +72,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - pud_set(pud, __pgtable_ptr_val(pmd)); - } - -+static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) -+{ -+ pud_populate(mm, pud, pmd); -+} -+ - static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, - pte_t *pte) - { -@@ -195,6 +201,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - pud_set(pud, __pgtable_ptr_val(pmd)); - } - -+static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) -+{ -+ pud_populate(mm, pud, pmd); -+} -+ - 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 47897a3..6d21683 100644 +index ee09e99..7e580ee 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -1,6 +1,7 @@ @@ -8538,7 +8697,7 @@ index 47897a3..6d21683 100644 #include <linux/mmdebug.h> #include <linux/mmzone.h> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h -index 166d863..7d5ebdf 100644 +index a0948f4..ddcf6be 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h @@ -261,6 +261,7 @@ @@ -8563,10 +8722,18 @@ index e1afd4c..d75924a 100644 extern void smp_send_debugger_break(void); extern void start_secondary_resume(void); diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h -index 523673d..4aeef3b 100644 +index 523673d..10dc784 100644 --- a/arch/powerpc/include/asm/spinlock.h +++ b/arch/powerpc/include/asm/spinlock.h -@@ -202,13 +202,29 @@ static inline long __arch_read_trylock(arch_rwlock_t *rw) +@@ -27,6 +27,7 @@ + #include <asm/asm-compat.h> + #include <asm/synch.h> + #include <asm/ppc-opcode.h> ++#include <asm/atomic.h> + + #ifdef CONFIG_PPC64 + /* use 0x800000yy when locked, where yy == CPU number */ +@@ -202,13 +203,29 @@ static inline long __arch_read_trylock(arch_rwlock_t *rw) __asm__ __volatile__( "1: " PPC_LWARX(%0,0,%1,1) "\n" __DO_SIGN_EXTEND @@ -8599,7 +8766,7 @@ index 523673d..4aeef3b 100644 : "r" (&rw->lock) : "cr0", "xer", "memory"); -@@ -284,11 +300,27 @@ static inline void arch_read_unlock(arch_rwlock_t *rw) +@@ -284,11 +301,27 @@ static inline void arch_read_unlock(arch_rwlock_t *rw) __asm__ __volatile__( "# read_unlock\n\t" PPC_RELEASE_BARRIER @@ -8661,10 +8828,10 @@ index e40010a..d3c3d6b 100644 #endif /* __KERNEL__ */ diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h -index 7efee4a..48d47cc 100644 +index 8febc3f..a4614f3 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h -@@ -101,6 +101,8 @@ static inline struct thread_info *current_thread_info(void) +@@ -103,6 +103,8 @@ static inline struct thread_info *current_thread_info(void) #if defined(CONFIG_PPC64) #define TIF_ELF2ABI 18 /* function descriptors must die! */ #endif @@ -8673,7 +8840,7 @@ index 7efee4a..48d47cc 100644 /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) -@@ -119,9 +121,10 @@ static inline struct thread_info *current_thread_info(void) +@@ -121,9 +123,10 @@ static inline struct thread_info *current_thread_info(void) #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) #define _TIF_NOHZ (1<<TIF_NOHZ) @@ -8913,10 +9080,10 @@ index 488e631..6cdd928 100644 ld r4,_DAR(r1) bl bad_page_fault diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S -index 2b66f25..80884d4 100644 +index 8bcc1b4..d2acf44 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S -@@ -1578,10 +1578,10 @@ handle_page_fault: +@@ -1488,10 +1488,10 @@ handle_page_fault: 11: ld r4,_DAR(r1) ld r5,_DSISR(r1) addi r3,r1,STACK_FRAME_OVERHEAD @@ -8929,10 +9096,10 @@ index 2b66f25..80884d4 100644 addi r3,r1,STACK_FRAME_OVERHEAD lwz r4,_DAR(r1) diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c -index 290559d..0094ddb 100644 +index 3cb46a3..a8c0477 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c -@@ -460,6 +460,8 @@ void migrate_irqs(void) +@@ -461,6 +461,8 @@ void migrate_irqs(void) } #endif @@ -8941,7 +9108,7 @@ index 290559d..0094ddb 100644 static inline void check_stack_overflow(void) { #ifdef CONFIG_DEBUG_STACKOVERFLOW -@@ -472,6 +474,7 @@ static inline void check_stack_overflow(void) +@@ -473,6 +475,7 @@ static inline void check_stack_overflow(void) pr_err("do_IRQ: stack overflow: %ld\n", sp - sizeof(struct thread_info)); dump_stack(); @@ -8992,10 +9159,10 @@ index 5a7a78f..c0e4207 100644 sechdrs, module); if (!module->arch.tramp) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c -index bec85055..8a6b0c2b 100644 +index 0b93893..4c72fc1 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c -@@ -1318,8 +1318,8 @@ void show_regs(struct pt_regs * regs) +@@ -1321,8 +1321,8 @@ void show_regs(struct pt_regs * regs) * Lookup NIP late so we have the best change of getting the * above info out without failing */ @@ -9006,7 +9173,7 @@ index bec85055..8a6b0c2b 100644 #endif show_stack(current, (unsigned long *) regs->gpr[1]); if (!user_mode(regs)) -@@ -1839,10 +1839,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) +@@ -1843,10 +1843,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) newsp = stack[0]; ip = stack[STACK_FRAME_LR_SAVE]; if (!firstframe || ip != lr) { @@ -9019,7 +9186,7 @@ index bec85055..8a6b0c2b 100644 (void *)current->ret_stack[curr_frame].ret); curr_frame--; } -@@ -1862,7 +1862,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) +@@ -1866,7 +1866,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; @@ -9028,7 +9195,7 @@ index bec85055..8a6b0c2b 100644 regs->trap, (void *)regs->nip, (void *)lr); firstframe = 1; } -@@ -1899,13 +1899,6 @@ void notrace __ppc64_runlatch_off(void) +@@ -1903,13 +1903,6 @@ void notrace __ppc64_runlatch_off(void) } #endif /* CONFIG_PPC64 */ @@ -9043,7 +9210,7 @@ index bec85055..8a6b0c2b 100644 { unsigned long rnd = 0; diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c -index 30a03c0..e2d507b 100644 +index 060b140..b67ca8c 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c @@ -1801,6 +1801,10 @@ static int do_seccomp(struct pt_regs *regs) @@ -9108,7 +9275,7 @@ index 2552079..a290dc8a 100644 } else { err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c -index 9229ba6..f6aaa3c 100644 +index 9229ba6..ddd4d5e 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -36,6 +36,7 @@ @@ -9148,7 +9315,7 @@ index 9229ba6..f6aaa3c 100644 + + if (reason & REASON_ILLEGAL) { + /* Check if PaX bad instruction */ -+ if (!probe_kernel_address(regs->nip, bkpt) && bkpt == 0xc00b00) { ++ if (!probe_kernel_address((void *)regs->nip, bkpt) && bkpt == 0xc00b00) { + current->thread.trap_nr = 0; + pax_report_refcount_overflow(regs); + /* fixup_exception() for PowerPC does not exist, simulate its job */ @@ -9166,7 +9333,7 @@ index 9229ba6..f6aaa3c 100644 * has no FPU, in that case the reason flags will be 0 */ diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c -index def1b8b..51ae209 100644 +index 6767605..75520c0 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -34,6 +34,7 @@ @@ -9186,7 +9353,7 @@ index def1b8b..51ae209 100644 /* vDSO has a problem and was disabled, just don't "enable" it for the * process -@@ -199,7 +200,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) +@@ -200,7 +201,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) vdso_base = get_unmapped_area(NULL, vdso_base, (vdso_pages << PAGE_SHIFT) + ((VDSO_ALIGNMENT - 1) & PAGE_MASK), @@ -9331,10 +9498,10 @@ index a67c6d7..a662e6d 100644 goto bail; } diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c -index 4087705..7e75693 100644 +index 2f1e443..de888bf 100644 --- a/arch/powerpc/mm/mmap.c +++ b/arch/powerpc/mm/mmap.c -@@ -86,6 +86,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -194,6 +194,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { unsigned long random_factor = 0UL; @@ -9345,7 +9512,7 @@ index 4087705..7e75693 100644 if (current->flags & PF_RANDOMIZE) random_factor = arch_mmap_rnd(); -@@ -95,9 +99,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -205,9 +209,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) */ if (mmap_is_legacy()) { mm->mmap_base = TASK_UNMAPPED_BASE; @@ -9368,7 +9535,7 @@ index 4087705..7e75693 100644 } } diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c -index 42954f0..a8252e2 100644 +index 2b27458..7c7c59b 100644 --- a/arch/powerpc/mm/slice.c +++ b/arch/powerpc/mm/slice.c @@ -105,7 +105,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr, @@ -9393,7 +9560,7 @@ index 42954f0..a8252e2 100644 while (addr < TASK_SIZE) { info.low_limit = addr; if (!slice_scan_available(addr, available, 1, &addr)) -@@ -409,6 +415,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, +@@ -410,6 +416,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, if (fixed && addr > (mm->task_size - len)) return -ENOMEM; @@ -9405,7 +9572,7 @@ index 42954f0..a8252e2 100644 /* If hint, make sure it matches our alignment restrictions */ if (!fixed && addr) { addr = _ALIGN_UP(addr, 1ul << pshift); -@@ -554,10 +565,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, +@@ -555,10 +566,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, } unsigned long arch_get_unmapped_area_topdown(struct file *filp, @@ -9554,10 +9721,10 @@ index e0900dd..72d683d 100644 return n; } diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c -index 7873e17..d21af5b 100644 +index fbc0789..e7962a1 100644 --- a/arch/s390/kernel/module.c +++ b/arch/s390/kernel/module.c -@@ -159,11 +159,11 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, +@@ -163,11 +163,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. */ @@ -9574,7 +9741,7 @@ index 7873e17..d21af5b 100644 return 0; } -@@ -279,7 +279,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -283,7 +283,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, if (info->got_initialized == 0) { Elf_Addr *gotent; @@ -9583,7 +9750,7 @@ index 7873e17..d21af5b 100644 info->got_offset; *gotent = val; info->got_initialized = 1; -@@ -302,7 +302,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -306,7 +306,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) { @@ -9592,7 +9759,7 @@ index 7873e17..d21af5b 100644 rc = apply_rela_bits(loc, val, 1, 32, 1); } break; -@@ -315,7 +315,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -319,7 +319,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; @@ -9601,7 +9768,7 @@ index 7873e17..d21af5b 100644 info->plt_offset; 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, +@@ -338,7 +338,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))) @@ -9610,7 +9777,7 @@ index 7873e17..d21af5b 100644 me->arch.plt_offset + info->plt_offset; val += rela->r_addend - loc; -@@ -356,7 +356,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -360,7 +360,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 - @@ -9619,7 +9786,7 @@ index 7873e17..d21af5b 100644 if (r_type == R_390_GOTOFF16) rc = apply_rela_bits(loc, val, 0, 16, 0); else if (r_type == R_390_GOTOFF32) -@@ -366,7 +366,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -370,7 +370,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. */ @@ -9629,10 +9796,10 @@ index 7873e17..d21af5b 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 2bba7df..8f1e6b5 100644 +index bba4fa7..9c32b3c 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c -@@ -234,13 +234,6 @@ unsigned long get_wchan(struct task_struct *p) +@@ -217,13 +217,6 @@ unsigned long get_wchan(struct task_struct *p) return 0; } @@ -9647,10 +9814,10 @@ index 2bba7df..8f1e6b5 100644 { return (get_random_int() & BRK_RND_MASK) << PAGE_SHIFT; diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c -index 89cf09e..cc41962 100644 +index eb9df28..7b686ba 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c -@@ -200,9 +200,9 @@ s390_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -201,9 +201,9 @@ s390_get_unmapped_area(struct file *filp, unsigned long addr, } static unsigned long @@ -9663,7 +9830,7 @@ index 89cf09e..cc41962 100644 { struct mm_struct *mm = current->mm; unsigned long area; -@@ -229,6 +229,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -230,6 +230,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { unsigned long random_factor = 0UL; @@ -9674,7 +9841,7 @@ index 89cf09e..cc41962 100644 if (current->flags & PF_RANDOMIZE) random_factor = arch_mmap_rnd(); -@@ -238,9 +242,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -239,9 +243,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) */ if (mmap_is_legacy()) { mm->mmap_base = mmap_base_legacy(random_factor); @@ -9724,10 +9891,10 @@ index f9f3cd5..58ff438 100644 #endif /* _ASM_SCORE_EXEC_H */ diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c -index a1519ad3..e8ac1ff 100644 +index aae9480..93e40a4 100644 --- a/arch/score/kernel/process.c +++ b/arch/score/kernel/process.c -@@ -116,8 +116,3 @@ unsigned long get_wchan(struct task_struct *task) +@@ -114,8 +114,3 @@ unsigned long get_wchan(struct task_struct *task) return task_pt_regs(task)->cp0_epc; } @@ -9847,7 +10014,7 @@ index 6777177..d44b592 100644 addr = vm_unmapped_area(&info); } diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig -index 57ffaf2..4d1fe9a 100644 +index 546293d..cb6ea17 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -39,6 +39,7 @@ config SPARC @@ -9859,7 +10026,7 @@ index 57ffaf2..4d1fe9a 100644 select OLD_SIGSUSPEND select ARCH_HAS_SG_CHAIN diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h -index f2fbf9e..c217c17 100644 +index f2fbf9e..470e701 100644 --- a/arch/sparc/include/asm/atomic_64.h +++ b/arch/sparc/include/asm/atomic_64.h @@ -15,18 +15,38 @@ @@ -10006,7 +10173,7 @@ index f2fbf9e..c217c17 100644 if (likely(old == c)) break; c = old; -@@ -93,21 +162,47 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u) +@@ -93,21 +162,42 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u) #define atomic64_cmpxchg(v, o, n) \ ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) @@ -10021,11 +10188,6 @@ index f2fbf9e..c217c17 100644 +{ + return xchg(&v->counter, new); +} -+static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, -+ long new) -+{ -+ return cmpxchg(&(v->counter), old, new); -+} static inline long atomic64_add_unless(atomic64_t *v, long a, long u) { @@ -10113,7 +10275,7 @@ index 9331083..59c0499 100644 #define ELF_HWCAP sparc64_elf_hwcap diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h -index a3890da..f6a408e 100644 +index 0346c7e..c5c25b9 100644 --- a/arch/sparc/include/asm/pgalloc_32.h +++ b/arch/sparc/include/asm/pgalloc_32.h @@ -35,6 +35,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp) @@ -10125,7 +10287,7 @@ index a3890da..f6a408e 100644 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) diff --git a/arch/sparc/include/asm/pgalloc_64.h b/arch/sparc/include/asm/pgalloc_64.h -index 5e31871..13469c6 100644 +index 3529f13..d98a28c 100644 --- a/arch/sparc/include/asm/pgalloc_64.h +++ b/arch/sparc/include/asm/pgalloc_64.h @@ -21,6 +21,7 @@ static inline void __pgd_populate(pgd_t *pgd, pud_t *pud) @@ -10158,7 +10320,7 @@ index 59ba6f6..4518128 100644 + #endif diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h -index 91b963a..9a806c1 100644 +index ce6f569..593b043 100644 --- a/arch/sparc/include/asm/pgtable_32.h +++ b/arch/sparc/include/asm/pgtable_32.h @@ -51,6 +51,9 @@ unsigned long __init bootmem_init(unsigned long *pages_avail); @@ -10532,7 +10694,7 @@ index fdb1332..1b10f89 100644 extra-y := head_$(BITS).o diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c -index c5113c7..52322e4 100644 +index b7780a5..28315f0 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c @@ -123,14 +123,14 @@ void show_regs(struct pt_regs *r) @@ -10562,7 +10724,7 @@ index c5113c7..52322e4 100644 } while (++count < 16); printk("\n"); diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c -index c16ef1a..8b38d7b 100644 +index fa14402..b2a7408 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -161,7 +161,7 @@ static void show_regwindow(struct pt_regs *regs) @@ -10654,7 +10816,7 @@ index 9ddc492..27a5619 100644 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c -index 8a6151a..fa3cbb1 100644 +index 8a6151a..fa3cbb19 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -891,7 +891,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu) @@ -12288,7 +12450,7 @@ index ba52e64..eee5791 100644 pte_t *huge_pte_alloc(struct mm_struct *mm, diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c -index 14bb0d5..ae289b8 100644 +index aec508e..ad807e7 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c @@ -189,9 +189,9 @@ unsigned long sparc64_kern_sec_context __read_mostly; @@ -12326,10 +12488,10 @@ index 14bb0d5..ae289b8 100644 #endif /* CONFIG_DEBUG_DCFLUSH */ } diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig -index 8171930..c60b093 100644 +index 4820a02..4366ab2 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig -@@ -203,6 +203,7 @@ source "kernel/Kconfig.hz" +@@ -194,6 +194,7 @@ source "kernel/Kconfig.hz" config KEXEC bool "kexec system call" select KEXEC_CORE @@ -12338,10 +12500,10 @@ index 8171930..c60b093 100644 kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h -index 51cabc2..77cceee 100644 +index b0531a6..555a389 100644 --- a/arch/tile/include/asm/atomic_64.h +++ b/arch/tile/include/asm/atomic_64.h -@@ -145,6 +145,16 @@ static inline void atomic64_xor(long i, atomic64_t *v) +@@ -158,6 +158,16 @@ static inline void atomic64_xor(long i, atomic64_t *v) #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) @@ -12393,7 +12555,7 @@ index 0a9c4265..bfb62d1 100644 else copy_from_user_overflow(); diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c -index e212c64..5f238fc 100644 +index 77ceaa3..3630dea 100644 --- a/arch/tile/mm/hugetlbpage.c +++ b/arch/tile/mm/hugetlbpage.c @@ -174,6 +174,7 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, @@ -12484,10 +12646,10 @@ index bae8523..ba9484b 100644 #ifdef CONFIG_64BIT #define set_pud(pudptr, pudval) set_64bit((u64 *) (pudptr), pud_val(pudval)) diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c -index 48af59a..4c75105 100644 +index 034b42c7..5c186ce 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c -@@ -347,22 +347,6 @@ int singlestepping(void * t) +@@ -343,22 +343,6 @@ int singlestepping(void * t) return 2; } @@ -12528,7 +12690,7 @@ index ad8f795..2c7eec6 100644 /* * Memory returned by kmalloc() may be used for DMA, so we must make diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 2dc18605..5796232 100644 +index d9a94da..4c060aa 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -39,14 +39,13 @@ config X86 @@ -12550,13 +12712,13 @@ index 2dc18605..5796232 100644 @@ -92,7 +91,7 @@ config X86 select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRANSPARENT_HUGEPAGE - select HAVE_BPF_JIT if X86_64 + select HAVE_EBPF_JIT if X86_64 - select HAVE_CC_STACKPROTECTOR + select HAVE_CC_STACKPROTECTOR if X86_64 || !PAX_MEMORY_UDEREF select HAVE_CMPXCHG_DOUBLE select HAVE_CMPXCHG_LOCAL select HAVE_CONTEXT_TRACKING if X86_64 -@@ -110,6 +109,7 @@ config X86 +@@ -111,6 +110,7 @@ config X86 select HAVE_FUNCTION_GRAPH_FP_TEST select HAVE_FUNCTION_GRAPH_TRACER select HAVE_FUNCTION_TRACER @@ -12564,7 +12726,7 @@ index 2dc18605..5796232 100644 select HAVE_GENERIC_DMA_COHERENT if X86_32 select HAVE_HW_BREAKPOINT select HAVE_IDE -@@ -188,11 +188,13 @@ config MMU +@@ -186,11 +186,13 @@ config MMU def_bool y config ARCH_MMAP_RND_BITS_MIN @@ -12580,7 +12742,7 @@ index 2dc18605..5796232 100644 default 16 config ARCH_MMAP_RND_COMPAT_BITS_MIN -@@ -294,7 +296,7 @@ config X86_64_SMP +@@ -292,7 +294,7 @@ config X86_64_SMP config X86_32_LAZY_GS def_bool y @@ -12589,7 +12751,7 @@ index 2dc18605..5796232 100644 config ARCH_HWEIGHT_CFLAGS string -@@ -681,6 +683,7 @@ config SCHED_OMIT_FRAME_POINTER +@@ -679,6 +681,7 @@ config SCHED_OMIT_FRAME_POINTER menuconfig HYPERVISOR_GUEST bool "Linux guest support" @@ -12605,7 +12767,7 @@ index 2dc18605..5796232 100644 default y depends on MODIFY_LDT_SYSCALL ---help--- -@@ -1243,6 +1247,7 @@ choice +@@ -1234,6 +1238,7 @@ choice config NOHIGHMEM bool "off" @@ -12613,7 +12775,7 @@ index 2dc18605..5796232 100644 ---help--- Linux can use up to 64 Gigabytes of physical memory on x86 systems. However, the address space of 32-bit x86 processors is only 4 -@@ -1279,6 +1284,7 @@ config NOHIGHMEM +@@ -1270,6 +1275,7 @@ config NOHIGHMEM config HIGHMEM4G bool "4GB" @@ -12621,7 +12783,7 @@ index 2dc18605..5796232 100644 ---help--- Select this if you have a 32-bit processor and between 1 and 4 gigabytes of physical RAM. -@@ -1331,7 +1337,7 @@ config PAGE_OFFSET +@@ -1322,7 +1328,7 @@ config PAGE_OFFSET hex default 0xB0000000 if VMSPLIT_3G_OPT default 0x80000000 if VMSPLIT_2G @@ -12630,7 +12792,7 @@ index 2dc18605..5796232 100644 default 0x40000000 if VMSPLIT_1G default 0xC0000000 depends on X86_32 -@@ -1352,7 +1358,6 @@ config X86_PAE +@@ -1343,7 +1349,6 @@ config X86_PAE config ARCH_PHYS_ADDR_T_64BIT def_bool y @@ -12638,7 +12800,7 @@ index 2dc18605..5796232 100644 config ARCH_DMA_ADDR_T_64BIT def_bool y -@@ -1483,7 +1488,7 @@ config ARCH_PROC_KCORE_TEXT +@@ -1474,7 +1479,7 @@ config ARCH_PROC_KCORE_TEXT config ILLEGAL_POINTER_VALUE hex @@ -12647,7 +12809,7 @@ index 2dc18605..5796232 100644 default 0xdead000000000000 if X86_64 source "mm/Kconfig" -@@ -1806,6 +1811,7 @@ source kernel/Kconfig.hz +@@ -1797,6 +1802,7 @@ source kernel/Kconfig.hz config KEXEC bool "kexec system call" select KEXEC_CORE @@ -12655,7 +12817,7 @@ index 2dc18605..5796232 100644 ---help--- kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot -@@ -1988,7 +1994,9 @@ config X86_NEED_RELOCS +@@ -1963,7 +1969,9 @@ config X86_NEED_RELOCS config PHYSICAL_ALIGN hex "Alignment value to which kernel should be aligned" @@ -12666,7 +12828,7 @@ index 2dc18605..5796232 100644 range 0x2000 0x1000000 if X86_32 range 0x200000 0x1000000 if X86_64 ---help--- -@@ -2071,6 +2079,7 @@ config COMPAT_VDSO +@@ -2046,6 +2054,7 @@ config COMPAT_VDSO def_bool n prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)" depends on X86_32 || IA32_EMULATION @@ -12674,7 +12836,7 @@ index 2dc18605..5796232 100644 ---help--- Certain buggy versions of glibc will crash if they are presented with a 32-bit vDSO that is not mapped at the address -@@ -2111,15 +2120,6 @@ choice +@@ -2086,15 +2095,6 @@ choice If unsure, select "Emulate". @@ -12690,7 +12852,7 @@ index 2dc18605..5796232 100644 config LEGACY_VSYSCALL_EMULATE bool "Emulate" help -@@ -2200,6 +2200,22 @@ config MODIFY_LDT_SYSCALL +@@ -2175,6 +2175,22 @@ config MODIFY_LDT_SYSCALL Saying 'N' here may make sense for embedded or server kernels. @@ -12782,7 +12944,7 @@ index 67eec55..1a5c1ab 100644 ---help--- This is a debug driver, which gets the power states diff --git a/arch/x86/Makefile b/arch/x86/Makefile -index 4086abc..52a0a9b 100644 +index 6fce7f0..9a4d7ce 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -75,9 +75,6 @@ ifeq ($(CONFIG_X86_32),y) @@ -12813,7 +12975,7 @@ index 4086abc..52a0a9b 100644 ifeq ($(CONFIG_KEXEC_FILE),y) $(Q)$(MAKE) $(build)=arch/x86/purgatory arch/x86/purgatory/kexec-purgatory.c endif -@@ -284,3 +285,9 @@ define archhelp +@@ -285,3 +286,9 @@ define archhelp echo ' FDARGS="..." arguments for the booted kernel' echo ' FDINITRD=file initrd for the booted kernel' endef @@ -12859,7 +13021,7 @@ index 9011a88..06aa820 100644 } diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile -index 8774cb2..54bc0df 100644 +index f135688..1249175 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -35,6 +35,23 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse @@ -12944,7 +13106,7 @@ index 630384a..278e788 100644 .quad 0x0000000000000000 /* TS continued */ efi_gdt64_end: diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S -index 0256064..bef8bbd 100644 +index 1038524..b6acc21 100644 --- a/arch/x86/boot/compressed/head_32.S +++ b/arch/x86/boot/compressed/head_32.S @@ -169,10 +169,10 @@ preferred_addr: @@ -12961,7 +13123,7 @@ index 0256064..bef8bbd 100644 /* Target address to relocate to for decompression */ diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S -index 86558a1..32f1e7e 100644 +index 0d80a7a..ed3e0ff 100644 --- a/arch/x86/boot/compressed/head_64.S +++ b/arch/x86/boot/compressed/head_64.S @@ -103,10 +103,10 @@ ENTRY(startup_32) @@ -12977,7 +13139,7 @@ index 86558a1..32f1e7e 100644 1: /* Target address to relocate to for decompression */ -@@ -331,10 +331,10 @@ preferred_addr: +@@ -333,10 +333,10 @@ preferred_addr: addq %rax, %rbp notq %rax andq %rax, %rbp @@ -12990,7 +13152,7 @@ index 86558a1..32f1e7e 100644 1: /* Target address to relocate to for decompression */ -@@ -443,8 +443,8 @@ gdt: +@@ -444,8 +444,8 @@ gdt: .long gdt .word 0 .quad 0x0000000000000000 /* NULL descriptor */ @@ -13002,10 +13164,20 @@ index 86558a1..32f1e7e 100644 .quad 0x0000000000000000 /* TS continued */ gdt_end: diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c -index 79dac17..1549446 100644 +index f14db4e..d2c951e 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c -@@ -259,7 +259,7 @@ static void handle_relocations(void *output, unsigned long output_len) +@@ -175,13 +175,17 @@ static void handle_relocations(void *output, unsigned long output_len) + int *reloc; + unsigned long delta, map, ptr; + unsigned long min_addr = (unsigned long)output; ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) ++ unsigned long max_addr = min_addr + (VO___bss_start - VO__text - __PAGE_OFFSET - ____LOAD_PHYSICAL_ADDR); ++#else + unsigned long max_addr = min_addr + (VO___bss_start - VO__text); ++#endif + + /* * Calculate the delta between where vmlinux was linked to load * and where it was actually loaded. */ @@ -13014,7 +13186,7 @@ index 79dac17..1549446 100644 if (!delta) { debug_putstr("No relocation needed... "); return; -@@ -341,7 +341,7 @@ static void parse_elf(void *output) +@@ -263,7 +267,7 @@ static void parse_elf(void *output) Elf32_Ehdr ehdr; Elf32_Phdr *phdrs, *phdr; #endif @@ -13023,7 +13195,7 @@ index 79dac17..1549446 100644 int i; memcpy(&ehdr, output, sizeof(ehdr)); -@@ -368,13 +368,16 @@ static void parse_elf(void *output) +@@ -290,11 +294,14 @@ static void parse_elf(void *output) case PT_LOAD: #ifdef CONFIG_RELOCATABLE dest = output; @@ -13032,16 +13204,26 @@ index 79dac17..1549446 100644 #else dest = (void *)(phdr->p_paddr); #endif - memcpy(dest, - output + phdr->p_offset, - phdr->p_filesz); + memmove(dest, output + phdr->p_offset, phdr->p_filesz); + if (i) + memset(prev, 0xff, dest - prev); + prev = dest + phdr->p_filesz; break; default: /* Ignore other PT_* */ break; } -@@ -443,7 +446,7 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, +@@ -326,7 +333,11 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap, + unsigned char *output, + unsigned long output_len) + { ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) ++ const unsigned long kernel_total_size = VO__end - VO__text - __PAGE_OFFSET - ____LOAD_PHYSICAL_ADDR; ++#else + const unsigned long kernel_total_size = VO__end - VO__text; ++#endif + unsigned char *output_orig = output; + + /* Retain x86 boot parameters pointer passed from startup_32/64. */ +@@ -381,7 +392,7 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap, error("Destination address too large"); #endif #ifndef CONFIG_RELOCATABLE @@ -13050,6 +13232,18 @@ index 79dac17..1549446 100644 error("Wrong destination address"); #endif +diff --git a/arch/x86/boot/compressed/pagetable.c b/arch/x86/boot/compressed/pagetable.c +index 34b95df..e6d5fc2 100644 +--- a/arch/x86/boot/compressed/pagetable.c ++++ b/arch/x86/boot/compressed/pagetable.c +@@ -11,6 +11,7 @@ + */ + #define __pa(x) ((unsigned long)(x)) + #define __va(x) ((void *)((unsigned long)(x))) ++#undef CONFIG_PAX_KERNEXEC + + #include "misc.h" + diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c index 1fd7d57..0f7d096 100644 --- a/arch/x86/boot/cpucheck.c @@ -13096,24 +13290,30 @@ index 1fd7d57..0f7d096 100644 err = check_cpuflags(); } else if (err == 0x01 && diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S -index 6236b9e..3099904 100644 +index 3dd5be3..16720a2 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S -@@ -438,10 +438,14 @@ setup_data: .quad 0 # 64-bit physical pointer to +@@ -438,7 +438,7 @@ setup_data: .quad 0 # 64-bit physical pointer to # single linked list of # struct setup_data -pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr +pref_address: .quad ____LOAD_PHYSICAL_ADDR # preferred load addr - #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset) + # + # Getting to provably safe in-place decompression is hard. Worst case +@@ -543,7 +543,12 @@ pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr + + #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_min_extract_offset) + +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) +#define VO_INIT_SIZE (VO__end - VO__text - __PAGE_OFFSET - ____LOAD_PHYSICAL_ADDR) +#else #define VO_INIT_SIZE (VO__end - VO__text) +#endif ++ #if ZO_INIT_SIZE > VO_INIT_SIZE - #define INIT_SIZE ZO_INIT_SIZE + # define INIT_SIZE ZO_INIT_SIZE #else diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c index db75d07..8e6d0af 100644 @@ -13608,7 +13808,7 @@ index 383a6f8..a4db591 100644 ENDPROC(aesni_xts_crypt8) diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c -index 064c7e2..df15412 100644 +index 5b7fa14..fb27be1 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c @@ -82,9 +82,9 @@ struct aesni_xts_ctx { @@ -14009,7 +14209,7 @@ index 310319c..9253a8f 100644 ret; ENDPROC(camellia_dec_blk_2way) diff --git a/arch/x86/crypto/camellia_aesni_avx2_glue.c b/arch/x86/crypto/camellia_aesni_avx2_glue.c -index d844569..edaf489 100644 +index 60907c1..fe8638d 100644 --- a/arch/x86/crypto/camellia_aesni_avx2_glue.c +++ b/arch/x86/crypto/camellia_aesni_avx2_glue.c @@ -27,20 +27,20 @@ @@ -14043,7 +14243,7 @@ index d844569..edaf489 100644 static const struct common_glue_ctx camellia_enc = { .num_funcs = 4, diff --git a/arch/x86/crypto/camellia_aesni_avx_glue.c b/arch/x86/crypto/camellia_aesni_avx_glue.c -index 93d8f29..4218a74 100644 +index d96429d..18ab2e6 100644 --- a/arch/x86/crypto/camellia_aesni_avx_glue.c +++ b/arch/x86/crypto/camellia_aesni_avx_glue.c @@ -26,28 +26,28 @@ @@ -14794,7 +14994,7 @@ index acc066c..1559cc4 100644 ret; ENDPROC(serpent_dec_blk_8way) diff --git a/arch/x86/crypto/serpent_avx2_glue.c b/arch/x86/crypto/serpent_avx2_glue.c -index 6d19834..a08fbe9 100644 +index 870f6d8..9fed18e 100644 --- a/arch/x86/crypto/serpent_avx2_glue.c +++ b/arch/x86/crypto/serpent_avx2_glue.c @@ -27,18 +27,18 @@ @@ -14866,7 +15066,7 @@ index 6f778d3..3cf277e 100644 void __serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) diff --git a/arch/x86/crypto/serpent_sse2_glue.c b/arch/x86/crypto/serpent_sse2_glue.c -index 8943407..beb882d 100644 +index 644f97a..4d069a1 100644 --- a/arch/x86/crypto/serpent_sse2_glue.c +++ b/arch/x86/crypto/serpent_sse2_glue.c @@ -45,8 +45,10 @@ @@ -14962,7 +15162,7 @@ index a410950..02d2056 100644 ENDPROC(\name) diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c -index dd14616..53358bb 100644 +index 1024e37..7958186 100644 --- a/arch/x86/crypto/sha1_ssse3_glue.c +++ b/arch/x86/crypto/sha1_ssse3_glue.c @@ -31,8 +31,8 @@ @@ -15219,7 +15419,7 @@ index 748cdf2..959bb4d 100644 shl $6, NUM_BLKS /* convert to bytes */ jz .Ldone_hash diff --git a/arch/x86/crypto/sha256_ssse3_glue.c b/arch/x86/crypto/sha256_ssse3_glue.c -index 5f4d608..ddce00d 100644 +index 3ae0f43..524beeb 100644 --- a/arch/x86/crypto/sha256_ssse3_glue.c +++ b/arch/x86/crypto/sha256_ssse3_glue.c @@ -40,9 +40,9 @@ @@ -15381,7 +15581,7 @@ index e610e29..83f1cde 100644 ENDPROC(sha512_transform_ssse3) diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c -index 34e5083..eb57a5e 100644 +index 0b17c83..6959deb 100644 --- a/arch/x86/crypto/sha512_ssse3_glue.c +++ b/arch/x86/crypto/sha512_ssse3_glue.c @@ -39,10 +39,10 @@ @@ -15944,7 +16144,7 @@ index 9a9e588..b900d1c 100644 .macro REMOVE_PT_GPREGS_FROM_STACK addskip=0 diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c -index e79d93d..31091ce 100644 +index ec138e5..3e47a7a 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -33,9 +33,7 @@ @@ -16001,7 +16201,7 @@ index e79d93d..31091ce 100644 -long syscall_trace_enter(struct pt_regs *regs) +static long syscall_trace_enter(struct pt_regs *regs) { - u32 arch = is_ia32_task() ? AUDIT_ARCH_I386 : AUDIT_ARCH_X86_64; + u32 arch = in_ia32_syscall() ? AUDIT_ARCH_I386 : AUDIT_ARCH_X86_64; unsigned long phase1_result = syscall_trace_enter_phase1(regs, arch); - if (phase1_result == 0) @@ -16140,7 +16340,7 @@ index e79d93d..31091ce 100644 ) { diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S -index 10868aa..e645e1d 100644 +index 983e5d3..d660273 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -147,13 +147,157 @@ @@ -16327,7 +16527,7 @@ index 10868aa..e645e1d 100644 .macro RESTORE_INT_REGS popl %ebx popl %ecx -@@ -216,7 +369,7 @@ ENTRY(ret_from_fork) +@@ -213,7 +366,7 @@ ENTRY(ret_from_fork) movl %esp, %eax call syscall_return_slowpath jmp restore_all @@ -16336,7 +16536,7 @@ index 10868aa..e645e1d 100644 ENTRY(ret_from_kernel_thread) pushl %eax -@@ -264,15 +417,23 @@ ret_from_intr: +@@ -257,15 +410,23 @@ ret_from_intr: andl $SEGMENT_RPL_MASK, %eax #endif cmpl $USER_RPL, %eax @@ -16362,7 +16562,7 @@ index 10868aa..e645e1d 100644 #ifdef CONFIG_PREEMPT ENTRY(resume_kernel) -@@ -284,7 +445,7 @@ need_resched: +@@ -277,7 +438,7 @@ need_resched: jz restore_all call preempt_schedule_irq jmp need_resched @@ -16371,7 +16571,7 @@ index 10868aa..e645e1d 100644 #endif GLOBAL(__begin_SYSENTER_singlestep_region) -@@ -351,6 +512,10 @@ sysenter_past_esp: +@@ -344,6 +505,10 @@ sysenter_past_esp: pushl %eax /* pt_regs->orig_ax */ SAVE_ALL pt_regs_ax=$-ENOSYS /* save rest */ @@ -16382,7 +16582,7 @@ index 10868aa..e645e1d 100644 /* * SYSENTER doesn't filter flags, so we need to clear NT, AC * and TF ourselves. To save a few cycles, we can check whether -@@ -386,11 +551,20 @@ sysenter_past_esp: +@@ -379,11 +544,20 @@ sysenter_past_esp: ALTERNATIVE "testl %eax, %eax; jz .Lsyscall_32_done", \ "jmp .Lsyscall_32_done", X86_FEATURE_XENPV @@ -16403,7 +16603,7 @@ index 10868aa..e645e1d 100644 PTGS_TO_GS popl %ebx /* pt_regs->bx */ addl $2*4, %esp /* skip pt_regs->cx and pt_regs->dx */ -@@ -416,10 +590,16 @@ sysenter_past_esp: +@@ -409,10 +583,16 @@ sysenter_past_esp: sysexit .pushsection .fixup, "ax" @@ -16422,7 +16622,7 @@ index 10868aa..e645e1d 100644 PTGS_TO_GS_EX .Lsysenter_fix_flags: -@@ -462,6 +642,10 @@ ENTRY(entry_INT80_32) +@@ -455,6 +635,10 @@ ENTRY(entry_INT80_32) pushl %eax /* pt_regs->orig_ax */ SAVE_ALL pt_regs_ax=$-ENOSYS /* save rest */ @@ -16433,7 +16633,7 @@ index 10868aa..e645e1d 100644 /* * User mode is traced as though IRQs are on, and the interrupt gate * turned them off. -@@ -472,6 +656,13 @@ ENTRY(entry_INT80_32) +@@ -465,6 +649,13 @@ ENTRY(entry_INT80_32) call do_int80_syscall_32 .Lsyscall_32_done: @@ -16447,7 +16647,7 @@ index 10868aa..e645e1d 100644 restore_all: TRACE_IRQS_IRET restore_all_notrace: -@@ -515,14 +706,34 @@ ldt_ss: +@@ -508,14 +699,34 @@ ldt_ss: * compensating for the offset by changing to the ESPFIX segment with * a base address that matches for the difference. */ @@ -16485,7 +16685,7 @@ index 10868aa..e645e1d 100644 pushl $__ESPFIX_SS pushl %eax /* new kernel esp */ /* -@@ -546,8 +757,15 @@ ENDPROC(entry_INT80_32) +@@ -539,8 +750,15 @@ ENDPROC(entry_INT80_32) */ #ifdef CONFIG_X86_ESPFIX32 /* fixup the stack */ @@ -16503,7 +16703,7 @@ index 10868aa..e645e1d 100644 shl $16, %eax addl %esp, %eax /* the adjusted stack pointer */ pushl $__KERNEL_DS -@@ -583,7 +801,7 @@ ENTRY(irq_entries_start) +@@ -576,7 +794,7 @@ ENTRY(irq_entries_start) jmp common_interrupt .align 8 .endr @@ -16512,7 +16712,7 @@ index 10868aa..e645e1d 100644 /* * the CPU automatically disables interrupts when executing an IRQ vector, -@@ -630,7 +848,7 @@ ENTRY(coprocessor_error) +@@ -623,7 +841,7 @@ ENTRY(coprocessor_error) pushl $0 pushl $do_coprocessor_error jmp error_code @@ -16521,7 +16721,7 @@ index 10868aa..e645e1d 100644 ENTRY(simd_coprocessor_error) ASM_CLAC -@@ -644,20 +862,20 @@ ENTRY(simd_coprocessor_error) +@@ -637,20 +855,20 @@ ENTRY(simd_coprocessor_error) pushl $do_simd_coprocessor_error #endif jmp error_code @@ -16545,7 +16745,7 @@ index 10868aa..e645e1d 100644 #endif ENTRY(overflow) -@@ -665,59 +883,59 @@ ENTRY(overflow) +@@ -658,59 +876,59 @@ ENTRY(overflow) pushl $0 pushl $do_overflow jmp error_code @@ -16614,7 +16814,7 @@ index 10868aa..e645e1d 100644 #ifdef CONFIG_X86_MCE ENTRY(machine_check) -@@ -725,7 +943,7 @@ ENTRY(machine_check) +@@ -718,7 +936,7 @@ ENTRY(machine_check) pushl $0 pushl machine_check_vector jmp error_code @@ -16623,7 +16823,7 @@ index 10868aa..e645e1d 100644 #endif ENTRY(spurious_interrupt_bug) -@@ -733,7 +951,7 @@ ENTRY(spurious_interrupt_bug) +@@ -726,7 +944,7 @@ ENTRY(spurious_interrupt_bug) pushl $0 pushl $do_spurious_interrupt_bug jmp error_code @@ -16632,7 +16832,7 @@ index 10868aa..e645e1d 100644 #ifdef CONFIG_XEN ENTRY(xen_hypervisor_callback) -@@ -832,7 +1050,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR, +@@ -825,7 +1043,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR, ENTRY(mcount) ret @@ -16641,7 +16841,7 @@ index 10868aa..e645e1d 100644 ENTRY(ftrace_caller) pushl %eax -@@ -862,7 +1080,7 @@ ftrace_graph_call: +@@ -855,7 +1073,7 @@ ftrace_graph_call: .globl ftrace_stub ftrace_stub: ret @@ -16650,7 +16850,7 @@ index 10868aa..e645e1d 100644 ENTRY(ftrace_regs_caller) pushf /* push flags before compare (in cs location) */ -@@ -960,7 +1178,7 @@ trace: +@@ -953,7 +1171,7 @@ trace: popl %ecx popl %eax jmp ftrace_stub @@ -16659,7 +16859,7 @@ index 10868aa..e645e1d 100644 #endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_TRACER */ -@@ -978,7 +1196,7 @@ ENTRY(ftrace_graph_caller) +@@ -971,7 +1189,7 @@ ENTRY(ftrace_graph_caller) popl %ecx popl %eax ret @@ -16668,7 +16868,7 @@ index 10868aa..e645e1d 100644 .globl return_to_handler return_to_handler: -@@ -997,7 +1215,7 @@ ENTRY(trace_page_fault) +@@ -990,7 +1208,7 @@ ENTRY(trace_page_fault) ASM_CLAC pushl $trace_do_page_fault jmp error_code @@ -16677,7 +16877,7 @@ index 10868aa..e645e1d 100644 #endif ENTRY(page_fault) -@@ -1026,16 +1244,19 @@ error_code: +@@ -1019,16 +1237,19 @@ error_code: movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart REG_TO_PTGS %ecx SET_KERNEL_GS %ecx @@ -16700,7 +16900,7 @@ index 10868aa..e645e1d 100644 /* * #DB can happen at the first instruction of * entry_SYSENTER_32 or in Xen's SYSENTER prologue. If this -@@ -1052,7 +1273,13 @@ ENTRY(debug) +@@ -1045,7 +1266,13 @@ ENTRY(debug) movl %esp, %eax # pt_regs pointer /* Are we currently on the SYSENTER stack? */ @@ -16715,7 +16915,7 @@ index 10868aa..e645e1d 100644 subl %eax, %ecx /* ecx = (end of SYSENTER_stack) - esp */ cmpl $SIZEOF_SYSENTER_stack, %ecx jb .Ldebug_from_sysenter_stack -@@ -1069,7 +1296,7 @@ ENTRY(debug) +@@ -1062,7 +1289,7 @@ ENTRY(debug) call do_debug movl %ebp, %esp jmp ret_from_exception @@ -16724,7 +16924,7 @@ index 10868aa..e645e1d 100644 /* * NMI is doubly nasty. It can happen on the first instruction of -@@ -1094,13 +1321,22 @@ ENTRY(nmi) +@@ -1087,13 +1314,22 @@ ENTRY(nmi) movl %esp, %eax # pt_regs pointer /* Are we currently on the SYSENTER stack? */ @@ -16748,7 +16948,7 @@ index 10868aa..e645e1d 100644 jmp restore_all_notrace .Lnmi_from_sysenter_stack: -@@ -1112,6 +1348,9 @@ ENTRY(nmi) +@@ -1105,6 +1341,9 @@ ENTRY(nmi) movl PER_CPU_VAR(cpu_current_top_of_stack), %esp call do_nmi movl %ebp, %esp @@ -16758,7 +16958,7 @@ index 10868aa..e645e1d 100644 jmp restore_all_notrace #ifdef CONFIG_X86_ESPFIX32 -@@ -1131,11 +1370,14 @@ nmi_espfix_stack: +@@ -1124,11 +1363,14 @@ nmi_espfix_stack: FIXUP_ESPFIX_STACK # %eax == %esp xorl %edx, %edx # zero error code call do_nmi @@ -16774,7 +16974,7 @@ index 10868aa..e645e1d 100644 ENTRY(int3) ASM_CLAC -@@ -1146,17 +1388,17 @@ ENTRY(int3) +@@ -1139,17 +1381,17 @@ ENTRY(int3) movl %esp, %eax # pt_regs pointer call do_int3 jmp ret_from_exception @@ -16796,7 +16996,7 @@ index 10868aa..e645e1d 100644 +ENDPROC(async_page_fault) #endif diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S -index 858b555..9e9c957 100644 +index 9ee0da1..2421755 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -36,6 +36,8 @@ @@ -17287,7 +17487,7 @@ index 858b555..9e9c957 100644 .endm /* Instantiate ptregs_stub for each ptregs-using syscall */ -@@ -400,10 +809,12 @@ ENTRY(ret_from_fork) +@@ -397,10 +806,12 @@ ENTRY(ret_from_fork) 1: movq %rsp, %rdi call syscall_return_slowpath /* returns with IRQs disabled */ @@ -17301,7 +17501,7 @@ index 858b555..9e9c957 100644 /* * Build the entry stubs with some assembler magic. -@@ -418,7 +829,7 @@ ENTRY(irq_entries_start) +@@ -415,7 +826,7 @@ ENTRY(irq_entries_start) jmp common_interrupt .align 8 .endr @@ -17310,7 +17510,7 @@ index 858b555..9e9c957 100644 /* * Interrupt entry/exit. -@@ -444,6 +855,12 @@ END(irq_entries_start) +@@ -441,6 +852,12 @@ END(irq_entries_start) */ SWAPGS @@ -17323,7 +17523,7 @@ index 858b555..9e9c957 100644 /* * We need to tell lockdep that IRQs are off. We can't do this until * we fix gsbase, and we should do it before enter_from_user_mode -@@ -456,7 +873,9 @@ END(irq_entries_start) +@@ -453,7 +870,9 @@ END(irq_entries_start) CALL_enter_from_user_mode @@ -17334,7 +17534,7 @@ index 858b555..9e9c957 100644 /* * Save previous stack pointer, optionally switch to interrupt stack. * irq_count is used to check if a CPU is already on an interrupt stack -@@ -468,6 +887,7 @@ END(irq_entries_start) +@@ -465,6 +884,7 @@ END(irq_entries_start) incl PER_CPU_VAR(irq_count) cmovzq PER_CPU_VAR(irq_stack_ptr), %rsp pushq %rdi @@ -17342,7 +17542,7 @@ index 858b555..9e9c957 100644 /* We entered an interrupt context - irqs are off: */ TRACE_IRQS_OFF -@@ -499,6 +919,8 @@ ret_from_intr: +@@ -496,6 +916,8 @@ ret_from_intr: GLOBAL(retint_user) mov %rsp,%rdi call prepare_exit_to_usermode @@ -17351,7 +17551,7 @@ index 858b555..9e9c957 100644 TRACE_IRQS_IRETQ SWAPGS jmp restore_regs_and_iret -@@ -516,6 +938,21 @@ retint_kernel: +@@ -513,6 +935,21 @@ retint_kernel: jmp 0b 1: #endif @@ -17373,7 +17573,7 @@ index 858b555..9e9c957 100644 /* * The iretq could re-enable interrupts: */ -@@ -559,15 +996,15 @@ native_irq_return_ldt: +@@ -556,15 +993,15 @@ native_irq_return_ldt: SWAPGS movq PER_CPU_VAR(espfix_waddr), %rdi movq %rax, (0*8)(%rdi) /* RAX */ @@ -17394,7 +17594,7 @@ index 858b555..9e9c957 100644 movq %rax, (4*8)(%rdi) andl $0xffff0000, %eax popq %rdi -@@ -577,7 +1014,7 @@ native_irq_return_ldt: +@@ -574,7 +1011,7 @@ native_irq_return_ldt: popq %rax jmp native_irq_return_iret #endif @@ -17403,7 +17603,7 @@ index 858b555..9e9c957 100644 /* * APIC interrupts. -@@ -589,7 +1026,7 @@ ENTRY(\sym) +@@ -586,7 +1023,7 @@ ENTRY(\sym) .Lcommon_\sym: interrupt \do_sym jmp ret_from_intr @@ -17412,7 +17612,7 @@ index 858b555..9e9c957 100644 .endm #ifdef CONFIG_TRACING -@@ -654,7 +1091,7 @@ apicinterrupt IRQ_WORK_VECTOR irq_work_interrupt smp_irq_work_interrupt +@@ -651,7 +1088,7 @@ apicinterrupt IRQ_WORK_VECTOR irq_work_interrupt smp_irq_work_interrupt /* * Exception entry points. */ @@ -17421,7 +17621,7 @@ index 858b555..9e9c957 100644 .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1 ENTRY(\sym) -@@ -701,6 +1138,12 @@ ENTRY(\sym) +@@ -698,6 +1135,12 @@ ENTRY(\sym) .endif .if \shift_ist != -1 @@ -17434,7 +17634,7 @@ index 858b555..9e9c957 100644 subq $EXCEPTION_STKSZ, CPU_TSS_IST(\shift_ist) .endif -@@ -744,7 +1187,7 @@ ENTRY(\sym) +@@ -741,7 +1184,7 @@ ENTRY(\sym) jmp error_exit /* %ebx: no swapgs flag */ .endif @@ -17443,8 +17643,8 @@ index 858b555..9e9c957 100644 .endm #ifdef CONFIG_TRACING -@@ -786,8 +1229,9 @@ gs_change: - 2: mfence /* workaround */ +@@ -783,8 +1226,9 @@ ENTRY(native_load_gs_index) + 2: ALTERNATIVE "", "mfence", X86_BUG_SWAPGS_FENCE SWAPGS popfq + pax_force_retaddr @@ -17452,9 +17652,9 @@ index 858b555..9e9c957 100644 -END(native_load_gs_index) +ENDPROC(native_load_gs_index) - _ASM_EXTABLE(gs_change, bad_gs) + _ASM_EXTABLE(.Lgs_change, bad_gs) .section .fixup, "ax" -@@ -809,8 +1253,9 @@ ENTRY(do_softirq_own_stack) +@@ -812,8 +1256,9 @@ ENTRY(do_softirq_own_stack) call __do_softirq leaveq decl PER_CPU_VAR(irq_count) @@ -17465,7 +17665,7 @@ index 858b555..9e9c957 100644 #ifdef CONFIG_XEN idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0 -@@ -846,7 +1291,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ +@@ -849,7 +1294,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ call xen_maybe_preempt_hcall #endif jmp error_exit @@ -17474,7 +17674,7 @@ index 858b555..9e9c957 100644 /* * Hypervisor uses this for application faults while it executes. -@@ -891,7 +1336,7 @@ ENTRY(xen_failsafe_callback) +@@ -894,7 +1339,7 @@ ENTRY(xen_failsafe_callback) SAVE_C_REGS SAVE_EXTRA_REGS jmp error_exit @@ -17483,7 +17683,7 @@ index 858b555..9e9c957 100644 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \ xen_hvm_callback_vector xen_evtchn_do_upcall -@@ -903,7 +1348,7 @@ apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \ +@@ -906,7 +1351,7 @@ apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \ hyperv_callback_vector hyperv_vector_handler #endif /* CONFIG_HYPERV */ @@ -17492,7 +17692,7 @@ index 858b555..9e9c957 100644 idtentry int3 do_int3 has_error_code=0 paranoid=1 shift_ist=DEBUG_STACK idtentry stack_segment do_stack_segment has_error_code=1 -@@ -940,8 +1385,34 @@ ENTRY(paranoid_entry) +@@ -943,8 +1388,34 @@ ENTRY(paranoid_entry) js 1f /* negative -> in kernel */ SWAPGS xorl %ebx, %ebx @@ -17529,7 +17729,7 @@ index 858b555..9e9c957 100644 /* * "Paranoid" exit path from exception stack. This is invoked -@@ -958,19 +1429,26 @@ END(paranoid_entry) +@@ -961,19 +1432,26 @@ END(paranoid_entry) ENTRY(paranoid_exit) DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF_DEBUG @@ -17558,7 +17758,7 @@ index 858b555..9e9c957 100644 /* * Save all registers in pt_regs, and switch gs if needed. -@@ -984,13 +1462,18 @@ ENTRY(error_entry) +@@ -987,13 +1465,18 @@ ENTRY(error_entry) testb $3, CS+8(%rsp) jz .Lerror_kernelspace @@ -17578,7 +17778,7 @@ index 858b555..9e9c957 100644 .Lerror_entry_from_usermode_after_swapgs: /* * We need to tell lockdep that IRQs are off. We can't do this until -@@ -999,10 +1482,12 @@ ENTRY(error_entry) +@@ -1002,10 +1485,12 @@ ENTRY(error_entry) */ TRACE_IRQS_OFF CALL_enter_from_user_mode @@ -17591,17 +17791,17 @@ index 858b555..9e9c957 100644 ret /* -@@ -1020,14 +1505,16 @@ ENTRY(error_entry) +@@ -1023,14 +1508,16 @@ ENTRY(error_entry) cmpq %rax, RIP+8(%rsp) je .Lbstep_iret - cmpq $gs_change, RIP+8(%rsp) + cmpq $.Lgs_change, RIP+8(%rsp) - jne .Lerror_entry_done + jne 1f /* - * hack: gs_change can fail with user gsbase. If this happens, fix up + * hack: .Lgs_change can fail with user gsbase. If this happens, fix up * gsbase and proceed. We'll fix up the exception and land in - * gs_change's error handler with kernel gsbase. + * .Lgs_change's error handler with kernel gsbase. */ - jmp .Lerror_entry_from_usermode_swapgs + SWAPGS @@ -17610,7 +17810,7 @@ index 858b555..9e9c957 100644 .Lbstep_iret: /* Fix truncated RIP */ -@@ -1041,6 +1528,12 @@ ENTRY(error_entry) +@@ -1044,6 +1531,12 @@ ENTRY(error_entry) */ SWAPGS @@ -17623,7 +17823,7 @@ index 858b555..9e9c957 100644 /* * Pretend that the exception came from user mode: set up pt_regs * as if we faulted immediately after IRET and clear EBX so that -@@ -1051,11 +1544,11 @@ ENTRY(error_entry) +@@ -1054,11 +1547,11 @@ ENTRY(error_entry) mov %rax, %rsp decl %ebx jmp .Lerror_entry_from_usermode_after_swapgs @@ -17637,7 +17837,7 @@ index 858b555..9e9c957 100644 * 1: already in kernel mode, don't need SWAPGS * 0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode */ -@@ -1063,10 +1556,10 @@ ENTRY(error_exit) +@@ -1066,10 +1559,10 @@ ENTRY(error_exit) movl %ebx, %eax DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF @@ -17650,7 +17850,7 @@ index 858b555..9e9c957 100644 /* Runs on exception stack */ ENTRY(nmi) -@@ -1120,6 +1613,8 @@ ENTRY(nmi) +@@ -1123,6 +1616,8 @@ ENTRY(nmi) * other IST entries. */ @@ -17659,7 +17859,7 @@ index 858b555..9e9c957 100644 /* Use %rdx as our temp variable throughout */ pushq %rdx -@@ -1163,6 +1658,12 @@ ENTRY(nmi) +@@ -1166,6 +1661,12 @@ ENTRY(nmi) pushq %r14 /* pt_regs->r14 */ pushq %r15 /* pt_regs->r15 */ @@ -17672,7 +17872,7 @@ index 858b555..9e9c957 100644 /* * 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 -@@ -1173,12 +1674,19 @@ ENTRY(nmi) +@@ -1176,12 +1677,19 @@ ENTRY(nmi) movq $-1, %rsi call do_nmi @@ -17692,7 +17892,7 @@ index 858b555..9e9c957 100644 jmp restore_c_regs_and_iret .Lnmi_from_kernel: -@@ -1300,6 +1808,7 @@ nested_nmi_out: +@@ -1303,6 +1811,7 @@ nested_nmi_out: popq %rdx /* We are returning to kernel mode, so this cannot result in a fault. */ @@ -17700,7 +17900,7 @@ index 858b555..9e9c957 100644 INTERRUPT_RETURN first_nmi: -@@ -1328,7 +1837,7 @@ first_nmi: +@@ -1331,7 +1840,7 @@ first_nmi: pushq %rsp /* RSP (minus 8 because of the previous push) */ addq $8, (%rsp) /* Fix up RSP */ pushfq /* RFLAGS */ @@ -17709,7 +17909,7 @@ index 858b555..9e9c957 100644 pushq $1f /* RIP */ INTERRUPT_RETURN /* continues at repeat_nmi below */ 1: -@@ -1373,20 +1882,22 @@ end_repeat_nmi: +@@ -1376,20 +1885,22 @@ end_repeat_nmi: ALLOC_PT_GPREGS_ON_STACK /* @@ -17735,7 +17935,7 @@ index 858b555..9e9c957 100644 jnz nmi_restore nmi_swapgs: SWAPGS_UNSAFE_STACK -@@ -1397,6 +1908,8 @@ nmi_restore: +@@ -1400,6 +1911,8 @@ nmi_restore: /* Point RSP at the "iret" frame. */ REMOVE_PT_GPREGS_FROM_STACK 6*8 @@ -17744,7 +17944,7 @@ index 858b555..9e9c957 100644 /* * Clear "NMI executing". Set DF first so that we can easily * distinguish the remaining code between here and IRET from -@@ -1414,9 +1927,9 @@ nmi_restore: +@@ -1417,9 +1930,9 @@ nmi_restore: * mode, so this cannot result in a fault. */ INTERRUPT_RETURN @@ -17757,7 +17957,7 @@ index 858b555..9e9c957 100644 -END(ignore_sysret) +ENDPROC(ignore_sysret) diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S -index 847f2f0..5f601b1 100644 +index e1721da..83f2c49 100644 --- a/arch/x86/entry/entry_64_compat.S +++ b/arch/x86/entry/entry_64_compat.S @@ -13,11 +13,39 @@ @@ -17800,13 +18000,9 @@ index 847f2f0..5f601b1 100644 /* * 32-bit SYSENTER entry. * -@@ -72,26 +100,36 @@ ENTRY(entry_SYSENTER_compat) - pushfq /* pt_regs->flags (except IF = 0) */ - orl $X86_EFLAGS_IF, (%rsp) /* Fix saved flags */ +@@ -74,23 +102,34 @@ ENTRY(entry_SYSENTER_compat) pushq $__USER32_CS /* pt_regs->cs */ -- xorq %r8,%r8 -- pushq %r8 /* pt_regs->ip = 0 (placeholder) */ -+ pushq $0 /* pt_regs->ip = 0 (placeholder) */ + pushq $0 /* pt_regs->ip = 0 (placeholder) */ pushq %rax /* pt_regs->orig_ax */ + xorl %eax,%eax pushq %rdi /* pt_regs->di */ @@ -17814,20 +18010,20 @@ index 847f2f0..5f601b1 100644 pushq %rdx /* pt_regs->dx */ pushq %rcx /* pt_regs->cx */ pushq $-ENOSYS /* pt_regs->ax */ -- pushq %r8 /* pt_regs->r8 = 0 */ -- pushq %r8 /* pt_regs->r9 = 0 */ -- pushq %r8 /* pt_regs->r10 = 0 */ -- pushq %r8 /* pt_regs->r11 = 0 */ -+ pushq %rax /* pt_regs->r8 = 0 */ -+ pushq %rax /* pt_regs->r9 = 0 */ -+ pushq %rax /* pt_regs->r10 = 0 */ -+ pushq %rax /* pt_regs->r11 = 0 */ +- pushq $0 /* pt_regs->r8 = 0 */ +- pushq $0 /* pt_regs->r9 = 0 */ +- pushq $0 /* pt_regs->r10 = 0 */ +- pushq $0 /* pt_regs->r11 = 0 */ ++ pushq %rax /* pt_regs->r8 = 0 */ ++ pushq %rax /* pt_regs->r9 = 0 */ ++ pushq %rax /* pt_regs->r10 = 0 */ ++ pushq %rax /* pt_regs->r11 = 0 */ pushq %rbx /* pt_regs->rbx */ pushq %rbp /* pt_regs->rbp (will be overwritten) */ -- pushq %r8 /* pt_regs->r12 = 0 */ -- pushq %r8 /* pt_regs->r13 = 0 */ -- pushq %r8 /* pt_regs->r14 = 0 */ -- pushq %r8 /* pt_regs->r15 = 0 */ +- pushq $0 /* pt_regs->r12 = 0 */ +- pushq $0 /* pt_regs->r13 = 0 */ +- pushq $0 /* pt_regs->r14 = 0 */ +- pushq $0 /* pt_regs->r15 = 0 */ +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR + pushq %r12 /* pt_regs->r12 */ +#else @@ -17847,26 +18043,25 @@ index 847f2f0..5f601b1 100644 /* * SYSENTER doesn't filter flags, so we need to clear NT and AC * ourselves. To save a few cycles, we can check whether -@@ -205,17 +243,27 @@ ENTRY(entry_SYSCALL_compat) +@@ -204,16 +243,27 @@ ENTRY(entry_SYSCALL_compat) pushq %rdx /* pt_regs->dx */ pushq %rbp /* pt_regs->cx (stashed in bp) */ pushq $-ENOSYS /* pt_regs->ax */ -- xorq %r8,%r8 -- pushq %r8 /* pt_regs->r8 = 0 */ -- pushq %r8 /* pt_regs->r9 = 0 */ -- pushq %r8 /* pt_regs->r10 = 0 */ -- pushq %r8 /* pt_regs->r11 = 0 */ +- pushq $0 /* pt_regs->r8 = 0 */ +- pushq $0 /* pt_regs->r9 = 0 */ +- pushq $0 /* pt_regs->r10 = 0 */ +- pushq $0 /* pt_regs->r11 = 0 */ + xorl %eax,%eax -+ pushq %rax /* pt_regs->r8 = 0 */ -+ pushq %rax /* pt_regs->r9 = 0 */ -+ pushq %rax /* pt_regs->r10 = 0 */ -+ pushq %rax /* pt_regs->r11 = 0 */ ++ pushq %rax /* pt_regs->r8 = 0 */ ++ pushq %rax /* pt_regs->r9 = 0 */ ++ pushq %rax /* pt_regs->r10 = 0 */ ++ pushq %rax /* pt_regs->r11 = 0 */ pushq %rbx /* pt_regs->rbx */ pushq %rbp /* pt_regs->rbp (will be overwritten) */ -- pushq %r8 /* pt_regs->r12 = 0 */ -- pushq %r8 /* pt_regs->r13 = 0 */ -- pushq %r8 /* pt_regs->r14 = 0 */ -- pushq %r8 /* pt_regs->r15 = 0 */ +- pushq $0 /* pt_regs->r12 = 0 */ +- pushq $0 /* pt_regs->r13 = 0 */ +- pushq $0 /* pt_regs->r14 = 0 */ +- pushq $0 /* pt_regs->r15 = 0 */ +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR + pushq %r12 /* pt_regs->r12 */ +#else @@ -17884,7 +18079,7 @@ index 847f2f0..5f601b1 100644 /* * User mode is traced as though IRQs are on, and SYSENTER -@@ -231,11 +279,18 @@ ENTRY(entry_SYSCALL_compat) +@@ -229,11 +279,18 @@ ENTRY(entry_SYSCALL_compat) /* Opportunistic SYSRET */ sysret32_from_system_call: @@ -17903,7 +18098,7 @@ index 847f2f0..5f601b1 100644 addq $RAX, %rsp /* Skip r8-r15 */ popq %rax /* pt_regs->rax */ popq %rdx /* Skip pt_regs->cx */ -@@ -264,7 +319,7 @@ sysret32_from_system_call: +@@ -262,7 +319,7 @@ sysret32_from_system_call: movq RSP-ORIG_RAX(%rsp), %rsp swapgs sysretl @@ -17912,24 +18107,23 @@ index 847f2f0..5f601b1 100644 /* * 32-bit legacy system call entry. -@@ -316,11 +371,11 @@ ENTRY(entry_INT80_compat) +@@ -314,10 +371,11 @@ ENTRY(entry_INT80_compat) pushq %rdx /* pt_regs->dx */ pushq %rcx /* pt_regs->cx */ pushq $-ENOSYS /* pt_regs->ax */ -- xorq %r8,%r8 -- pushq %r8 /* pt_regs->r8 = 0 */ -- pushq %r8 /* pt_regs->r9 = 0 */ -- pushq %r8 /* pt_regs->r10 = 0 */ -- pushq %r8 /* pt_regs->r11 = 0 */ +- pushq $0 /* pt_regs->r8 = 0 */ +- pushq $0 /* pt_regs->r9 = 0 */ +- pushq $0 /* pt_regs->r10 = 0 */ +- pushq $0 /* pt_regs->r11 = 0 */ + xorl %eax,%eax -+ pushq %rax /* pt_regs->r8 = 0 */ -+ pushq %rax /* pt_regs->r9 = 0 */ -+ pushq %rax /* pt_regs->r10 = 0 */ -+ pushq %rax /* pt_regs->r11 = 0 */ ++ pushq %rax /* pt_regs->r8 = 0 */ ++ pushq %rax /* pt_regs->r9 = 0 */ ++ pushq %rax /* pt_regs->r10 = 0 */ ++ pushq %rax /* pt_regs->r11 = 0 */ pushq %rbx /* pt_regs->rbx */ pushq %rbp /* pt_regs->rbp */ pushq %r12 /* pt_regs->r12 */ -@@ -329,6 +384,12 @@ ENTRY(entry_INT80_compat) +@@ -326,6 +384,12 @@ ENTRY(entry_INT80_compat) pushq %r15 /* pt_regs->r15 */ cld @@ -17942,7 +18136,7 @@ index 847f2f0..5f601b1 100644 /* * User mode is traced as though IRQs are on, and the interrupt * gate turned them off. -@@ -340,10 +401,12 @@ ENTRY(entry_INT80_compat) +@@ -337,10 +401,12 @@ ENTRY(entry_INT80_compat) .Lsyscall_32_done: /* Go back to user mode. */ @@ -17957,27 +18151,27 @@ index 847f2f0..5f601b1 100644 ALIGN GLOBAL(stub32_clone) diff --git a/arch/x86/entry/thunk_64.S b/arch/x86/entry/thunk_64.S -index 98df1fa..b2ef8bd 100644 +index 027aec4..0e3afc9 100644 --- a/arch/x86/entry/thunk_64.S +++ b/arch/x86/entry/thunk_64.S -@@ -9,6 +9,7 @@ +@@ -8,6 +8,7 @@ + #include <linux/linkage.h> #include "calling.h" #include <asm/asm.h> - #include <asm/frame.h> +#include <asm/alternative-asm.h> /* rdi: arg1 ... normal C conventions. rax is saved/restored. */ .macro THUNK name, func, put_ret_addr_in_rdi=0 -@@ -66,6 +67,7 @@ restore: +@@ -65,6 +66,7 @@ restore: popq %rsi popq %rdi - FRAME_END + popq %rbp + pax_force_retaddr ret _ASM_NOKPROBE(restore) #endif diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile -index 6874da5..acbad90 100644 +index 253b72e..e0fb97e 100644 --- a/arch/x86/entry/vdso/Makefile +++ b/arch/x86/entry/vdso/Makefile @@ -75,7 +75,7 @@ CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \ @@ -18007,10 +18201,10 @@ index 6874da5..acbad90 100644 GCOV_PROFILE := n diff --git a/arch/x86/entry/vdso/vclock_gettime.c b/arch/x86/entry/vdso/vclock_gettime.c -index 03c3eb7..23f58a5 100644 +index 2f02d23..86d61a3 100644 --- a/arch/x86/entry/vdso/vclock_gettime.c +++ b/arch/x86/entry/vdso/vclock_gettime.c -@@ -330,5 +330,5 @@ notrace time_t __vdso_time(time_t *t) +@@ -315,5 +315,5 @@ notrace time_t __vdso_time(time_t *t) *t = result; return result; } @@ -18040,11 +18234,11 @@ index 63a03bb..ee6bd34 100644 GET_LE(&symtab_hdr->sh_entsize) * i; const char *name = raw_addr + GET_LE(&strtab_hdr->sh_offset) + diff --git a/arch/x86/entry/vdso/vma.c b/arch/x86/entry/vdso/vma.c -index 10f7045..ebe6eb7 100644 +index ab220ac..a7b22cd 100644 --- a/arch/x86/entry/vdso/vma.c +++ b/arch/x86/entry/vdso/vma.c -@@ -21,10 +21,7 @@ - #include <asm/hpet.h> +@@ -20,10 +20,7 @@ + #include <asm/page.h> #include <asm/desc.h> #include <asm/cpufeature.h> - @@ -18055,7 +18249,7 @@ index 10f7045..ebe6eb7 100644 void __init init_vdso_image(const struct vdso_image *image) { -@@ -90,7 +87,7 @@ static int vdso_fault(const struct vm_special_mapping *sm, +@@ -89,7 +86,7 @@ static int vdso_fault(const struct vm_special_mapping *sm, { const struct vdso_image *image = vma->vm_mm->context.vdso_image; @@ -18064,7 +18258,7 @@ index 10f7045..ebe6eb7 100644 return VM_FAULT_SIGBUS; vmf->page = virt_to_page(image->data + (vmf->pgoff << PAGE_SHIFT)); -@@ -167,6 +164,11 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) +@@ -156,6 +153,11 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) .fault = vvar_fault, }; @@ -18076,8 +18270,8 @@ index 10f7045..ebe6eb7 100644 if (calculate_addr) { addr = vdso_addr(current->mm->start_stack, image->size - image->sym_vvar_start); -@@ -177,15 +179,15 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) - down_write(&mm->mmap_sem); +@@ -167,15 +169,15 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) + return -EINTR; addr = get_unmapped_area(NULL, addr, - image->size - image->sym_vvar_start, 0, 0); @@ -18095,7 +18289,7 @@ index 10f7045..ebe6eb7 100644 /* * MAYWRITE to allow gdb to COW and set breakpoints -@@ -209,14 +211,12 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) +@@ -199,14 +201,12 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr) VM_PFNMAP, &vvar_mapping); @@ -18112,7 +18306,7 @@ index 10f7045..ebe6eb7 100644 up_write(&mm->mmap_sem); return ret; -@@ -235,9 +235,6 @@ static int load_vdso32(void) +@@ -225,9 +225,6 @@ static int load_vdso32(void) #ifdef CONFIG_X86_64 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { @@ -18122,7 +18316,7 @@ index 10f7045..ebe6eb7 100644 return map_vdso(&vdso_image_64, true); } -@@ -246,12 +243,8 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm, +@@ -236,12 +233,8 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { #ifdef CONFIG_X86_X32_ABI @@ -18136,7 +18330,7 @@ index 10f7045..ebe6eb7 100644 #endif #ifdef CONFIG_IA32_EMULATION return load_vdso32(); -@@ -268,15 +261,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) +@@ -258,15 +251,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) #endif #ifdef CONFIG_X86_64 @@ -18260,10 +18454,10 @@ index 6011a57..311bea0 100644 while (amd_iommu_v2_event_descs[i].attr.attr.name) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c -index 7eb806c..13eb73d 100644 +index 91eac39..a8bc9c0 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c -@@ -1535,7 +1535,7 @@ static void __init pmu_check_apic(void) +@@ -1541,7 +1541,7 @@ static void __init pmu_check_apic(void) } @@ -18272,7 +18466,7 @@ index 7eb806c..13eb73d 100644 .name = "format", .attrs = NULL, }; -@@ -1643,7 +1643,7 @@ static struct attribute *events_attr[] = { +@@ -1649,7 +1649,7 @@ static struct attribute *events_attr[] = { NULL, }; @@ -18281,7 +18475,7 @@ index 7eb806c..13eb73d 100644 .name = "events", .attrs = events_attr, }; -@@ -2251,7 +2251,7 @@ static unsigned long get_segment_base(unsigned int segment) +@@ -2257,7 +2257,7 @@ static unsigned long get_segment_base(unsigned int segment) if (idx > GDT_ENTRIES) return 0; @@ -18290,7 +18484,7 @@ index 7eb806c..13eb73d 100644 } return get_desc_base(desc); -@@ -2357,7 +2357,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) +@@ -2363,7 +2363,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs break; perf_callchain_store(entry, frame.return_address); @@ -18300,19 +18494,19 @@ index 7eb806c..13eb73d 100644 pagefault_enable(); } diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c -index b99dc92..407392a 100644 +index 0a6e393..aa36c3d 100644 --- a/arch/x86/events/intel/bts.c +++ b/arch/x86/events/intel/bts.c -@@ -250,7 +250,7 @@ static void bts_event_start(struct perf_event *event, int flags) +@@ -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) -@@ -264,7 +264,7 @@ static void __bts_event_stop(struct perf_event *event) + return; + +@@ -274,7 +274,7 @@ static void __bts_event_stop(struct perf_event *event) if (event->hw.state & PERF_HES_STOPPED) return; @@ -18321,8 +18515,8 @@ index b99dc92..407392a 100644 } static void bts_event_stop(struct perf_event *event, int flags) -@@ -272,7 +272,7 @@ static void bts_event_stop(struct perf_event *event, int flags) - struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); +@@ -284,7 +284,7 @@ static void bts_event_stop(struct perf_event *event, int flags) + struct bts_buffer *buf = perf_get_aux(&bts->handle); /* PMI handler: don't restart this counter */ - ACCESS_ONCE(bts->started) = 0; @@ -18331,10 +18525,10 @@ index b99dc92..407392a 100644 __bts_event_stop(event); diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c -index 5210eaa..b6846dc 100644 +index 9b4f9d3..ce64392 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c -@@ -2185,6 +2185,8 @@ __intel_get_event_constraints(struct cpu_hw_events *cpuc, int idx, +@@ -2348,6 +2348,8 @@ __intel_get_event_constraints(struct cpu_hw_events *cpuc, int idx, } static void @@ -18343,7 +18537,7 @@ index 5210eaa..b6846dc 100644 intel_start_scheduling(struct cpu_hw_events *cpuc) { struct intel_excl_cntrs *excl_cntrs = cpuc->excl_cntrs; -@@ -2194,14 +2196,18 @@ intel_start_scheduling(struct cpu_hw_events *cpuc) +@@ -2357,14 +2359,18 @@ intel_start_scheduling(struct cpu_hw_events *cpuc) /* * nothing needed if in group validation mode */ @@ -18364,7 +18558,7 @@ index 5210eaa..b6846dc 100644 xl = &excl_cntrs->states[tid]; -@@ -2241,6 +2247,8 @@ static void intel_commit_scheduling(struct cpu_hw_events *cpuc, int idx, int cnt +@@ -2404,6 +2410,8 @@ static void intel_commit_scheduling(struct cpu_hw_events *cpuc, int idx, int cnt } static void @@ -18373,7 +18567,7 @@ index 5210eaa..b6846dc 100644 intel_stop_scheduling(struct cpu_hw_events *cpuc) { struct intel_excl_cntrs *excl_cntrs = cpuc->excl_cntrs; -@@ -2250,13 +2258,18 @@ intel_stop_scheduling(struct cpu_hw_events *cpuc) +@@ -2413,13 +2421,18 @@ intel_stop_scheduling(struct cpu_hw_events *cpuc) /* * nothing needed if in group validation mode */ @@ -18394,7 +18588,7 @@ index 5210eaa..b6846dc 100644 xl = &excl_cntrs->states[tid]; -@@ -2439,19 +2452,22 @@ static void intel_put_excl_constraints(struct cpu_hw_events *cpuc, +@@ -2602,19 +2615,22 @@ static void intel_put_excl_constraints(struct cpu_hw_events *cpuc, * unused now. */ if (hwc->idx >= 0) { @@ -18419,7 +18613,7 @@ index 5210eaa..b6846dc 100644 raw_spin_unlock(&excl_cntrs->lock); } } -@@ -3360,10 +3376,10 @@ __init int intel_pmu_init(void) +@@ -3523,10 +3539,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)) { @@ -18476,11 +18670,11 @@ index 7b5fd81..3ca58b5 100644 ret = perf_pmu_register(&intel_cqm_pmu, "intel_cqm", -1); if (ret) { diff --git a/arch/x86/events/intel/cstate.c b/arch/x86/events/intel/cstate.c -index 7946c42..75c730b 100644 +index 9ba4e41..f931fb9 100644 --- a/arch/x86/events/intel/cstate.c +++ b/arch/x86/events/intel/cstate.c -@@ -92,14 +92,14 @@ - #include "../perf_event.h" +@@ -94,14 +94,14 @@ + MODULE_LICENSE("GPL"); #define DEFINE_CSTATE_FORMAT_ATTR(_var, _name, _format) \ -static ssize_t __cstate_##_var##_show(struct kobject *kobj, \ @@ -18498,7 +18692,7 @@ index 7946c42..75c730b 100644 static ssize_t cstate_get_attr_cpumask(struct device *dev, diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c -index 8584b90..82c274a 100644 +index 7ce9f3f..dc9146c 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -601,7 +601,7 @@ unlock: @@ -18510,7 +18704,7 @@ index 8584b90..82c274a 100644 x86_pmu.drain_pebs(®s); } -@@ -903,7 +903,7 @@ static int intel_pmu_pebs_fixup_ip(struct pt_regs *regs) +@@ -909,7 +909,7 @@ static int intel_pmu_pebs_fixup_ip(struct pt_regs *regs) struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events); unsigned long from = cpuc->lbr_entries[0].from; unsigned long old_to, to = cpuc->lbr_entries[0].to; @@ -18519,7 +18713,7 @@ index 8584b90..82c274a 100644 int is_64bit = 0; void *kaddr; int size; -@@ -955,6 +955,7 @@ static int intel_pmu_pebs_fixup_ip(struct pt_regs *regs) +@@ -961,6 +961,7 @@ static int intel_pmu_pebs_fixup_ip(struct pt_regs *regs) } else { kaddr = (void *)to; } @@ -18527,7 +18721,7 @@ index 8584b90..82c274a 100644 do { struct insn insn; -@@ -1103,7 +1104,7 @@ static void setup_pebs_sample_data(struct perf_event *event, +@@ -1109,7 +1110,7 @@ static void setup_pebs_sample_data(struct perf_event *event, } if (event->attr.precise_ip > 1 && x86_pmu.intel_cap.pebs_format >= 2) { @@ -18537,10 +18731,10 @@ index 8584b90..82c274a 100644 } else if (event->attr.precise_ip > 1 && intel_pmu_pebs_fixup_ip(regs)) regs->flags |= PERF_EFLAGS_EXACT; diff --git a/arch/x86/events/intel/lbr.c b/arch/x86/events/intel/lbr.c -index 1ca5d1e..3835cc0 100644 +index 9e2b40c..a9013c2 100644 --- a/arch/x86/events/intel/lbr.c +++ b/arch/x86/events/intel/lbr.c -@@ -706,7 +706,7 @@ static int branch_type(unsigned long from, unsigned long to, int abort) +@@ -717,7 +717,7 @@ static int branch_type(unsigned long from, unsigned long to, int abort) * Ensure we don't blindy read any address by validating it is * a known text address. */ @@ -18549,7 +18743,7 @@ index 1ca5d1e..3835cc0 100644 addr = (void *)from; /* * Assume we can get the maximum possible size -@@ -728,7 +728,7 @@ static int branch_type(unsigned long from, unsigned long to, int abort) +@@ -739,7 +739,7 @@ static int branch_type(unsigned long from, unsigned long to, int abort) #ifdef CONFIG_X86_64 is64 = kernel_ip((unsigned long)addr) || !test_thread_flag(TIF_IA32); #endif @@ -18559,28 +18753,24 @@ index 1ca5d1e..3835cc0 100644 if (!insn.opcode.got) return X86_BR_ABORT; diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c -index 7377814..a128ad7 100644 +index 04bb5fb..69cbd32 100644 --- a/arch/x86/events/intel/pt.c +++ b/arch/x86/events/intel/pt.c -@@ -133,14 +133,12 @@ static const struct attribute_group *pt_attr_groups[] = { +@@ -172,11 +172,9 @@ 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; -- u64 reg; -- int ret; + static struct dev_ext_attribute de_attrs[ARRAY_SIZE(pt_caps)]; + static struct attribute *attrs[ARRAY_SIZE(pt_caps)]; + u64 reg; +- int ret; long i; - if (boot_cpu_has(X86_FEATURE_VMX)) { -+ u64 reg; - /* - * Intel SDM, 36.5 "Tracing post-VMXON" says that - * "IA32_VMX_MISC[bit 14]" being 1 means PT can trace -@@ -151,8 +149,6 @@ static int __init pt_pmu_hw_init(void) + rdmsrl(MSR_PLATFORM_INFO, reg); +@@ -207,8 +205,6 @@ static int __init pt_pmu_hw_init(void) pt_pmu.vmx = true; } @@ -18589,7 +18779,7 @@ index 7377814..a128ad7 100644 for (i = 0; i < PT_CPUID_LEAVES; i++) { cpuid_count(20, i, &pt_pmu.caps[CR_EAX + i*PT_CPUID_REGS_NUM], -@@ -161,39 +157,25 @@ static int __init pt_pmu_hw_init(void) +@@ -217,39 +213,25 @@ static int __init pt_pmu_hw_init(void) &pt_pmu.caps[CR_EDX + i*PT_CPUID_REGS_NUM]); } @@ -18637,29 +18827,11 @@ index 7377814..a128ad7 100644 } #define RTIT_CTL_CYC_PSB (RTIT_CTL_CYCLEACC | \ -@@ -1051,7 +1033,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, -@@ -1067,7 +1049,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_stop(event); - diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c -index 78ee9eb..1aae264 100644 +index e30eef4..2c79b8e 100644 --- a/arch/x86/events/intel/rapl.c +++ b/arch/x86/events/intel/rapl.c -@@ -100,14 +100,14 @@ static const char *const rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { +@@ -116,14 +116,14 @@ static const char *const rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { #define RAPL_EVENT_MASK 0xFFULL #define DEFINE_RAPL_FORMAT_ATTR(_var, _name, _format) \ @@ -18677,7 +18849,7 @@ index 78ee9eb..1aae264 100644 __ATTR(_name, 0444, __rapl_##_var##_show, NULL) #define RAPL_CNTR_WIDTH 32 -@@ -488,7 +488,7 @@ static struct attribute *rapl_events_knl_attr[] = { +@@ -532,7 +532,7 @@ static struct attribute *rapl_events_knl_attr[] = { NULL, }; @@ -18687,10 +18859,10 @@ index 78ee9eb..1aae264 100644 .attrs = NULL, /* patched at runtime */ }; diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c -index f921a1e..8f8920f 100644 +index fce7406..4187d6a 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c -@@ -84,8 +84,8 @@ end: +@@ -87,8 +87,8 @@ end: return map; } @@ -18701,7 +18873,7 @@ index f921a1e..8f8920f 100644 { struct uncore_event_desc *event = container_of(attr, struct uncore_event_desc, attr); -@@ -813,7 +813,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) +@@ -816,7 +816,7 @@ static void uncore_types_exit(struct intel_uncore_type **types) static int __init uncore_type_init(struct intel_uncore_type *type, bool setid) { struct intel_uncore_pmu *pmus; @@ -18756,10 +18928,10 @@ index 79766b9..8e2b3d0 100644 static inline unsigned uncore_pci_box_ctl(struct intel_uncore_box *box) diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h -index ad4dc7f..1eff595 100644 +index 8bd764d..76a1790 100644 --- a/arch/x86/events/perf_event.h +++ b/arch/x86/events/perf_event.h -@@ -792,7 +792,7 @@ static inline void set_linear_ip(struct pt_regs *regs, unsigned long ip) +@@ -793,7 +793,7 @@ static inline void set_linear_ip(struct pt_regs *regs, unsigned long ip) regs->cs = kernel_ip(ip) ? __KERNEL_CS : __USER_CS; if (regs->flags & X86_VM_MASK) regs->flags ^= (PERF_EFLAGS_VM | X86_VM_MASK); @@ -18769,7 +18941,7 @@ index ad4dc7f..1eff595 100644 ssize_t x86_event_sysfs_show(char *page, u64 config, u64 event); diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c -index ae6aad1..719d6d9 100644 +index cb26f18..4f43f23 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c @@ -153,6 +153,8 @@ static int aout_core_dump(struct coredump_params *cprm) @@ -18782,7 +18954,7 @@ index ae6aad1..719d6d9 100644 set_fs(KERNEL_DS); has_dumped = 1; diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c -index 0552884..4e736e4 100644 +index 2f29f4e..ac453b4 100644 --- a/arch/x86/ia32/ia32_signal.c +++ b/arch/x86/ia32/ia32_signal.c @@ -123,7 +123,7 @@ asmlinkage long sys32_sigreturn(void) @@ -19021,10 +19193,10 @@ index e7636ba..e1fb78a 100644 \newinstr1 144: diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h -index 99afb66..c098094 100644 +index e77a644..cf157f4 100644 --- a/arch/x86/include/asm/alternative.h +++ b/arch/x86/include/asm/alternative.h -@@ -136,7 +136,7 @@ static inline int alternatives_text_reserved(void *start, void *end) +@@ -137,7 +137,7 @@ static inline int alternatives_text_reserved(void *start, void *end) ".pushsection .altinstructions,\"a\"\n" \ ALTINSTR_ENTRY(feature, 1) \ ".popsection\n" \ @@ -19033,7 +19205,7 @@ index 99afb66..c098094 100644 ALTINSTR_REPLACEMENT(newinstr, feature, 1) \ ".popsection" -@@ -146,7 +146,7 @@ static inline int alternatives_text_reserved(void *start, void *end) +@@ -147,7 +147,7 @@ static inline int alternatives_text_reserved(void *start, void *end) ALTINSTR_ENTRY(feature1, 1) \ ALTINSTR_ENTRY(feature2, 2) \ ".popsection\n" \ @@ -19043,7 +19215,7 @@ index 99afb66..c098094 100644 ALTINSTR_REPLACEMENT(newinstr2, feature2, 2) \ ".popsection" diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h -index 98f25bb..230bd9e 100644 +index bc27611..6fccbde 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h @@ -49,7 +49,7 @@ static inline void generic_apic_probe(void) @@ -20015,7 +20187,7 @@ index 7766d1c..f545428 100644 int bitpos = -1; /* diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h -index 6b8d6e8..3cbf4f8 100644 +index abd06b1..17fc65f 100644 --- a/arch/x86/include/asm/boot.h +++ b/arch/x86/include/asm/boot.h @@ -6,7 +6,7 @@ @@ -20150,7 +20322,7 @@ index 9733361..2053014 100644 ({ \ __typeof__ (*(ptr)) __ret = (inc); \ diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h -index ebb102e..4240767 100644 +index 5a3b2c1..80226b4 100644 --- a/arch/x86/include/asm/compat.h +++ b/arch/x86/include/asm/compat.h @@ -41,7 +41,11 @@ typedef s64 __attribute__((aligned(4))) compat_s64; @@ -20166,10 +20338,10 @@ index ebb102e..4240767 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 aeab479..5467e0b 100644 +index 483fb54..3b9022c 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h -@@ -164,7 +164,7 @@ static __always_inline __pure bool _static_cpu_has(u16 bit) +@@ -140,7 +140,7 @@ static __always_inline __pure bool _static_cpu_has(u16 bit) " .byte 5f - 4f\n" /* repl len */ " .byte 3b - 2b\n" /* pad len */ ".previous\n" @@ -20179,10 +20351,10 @@ index aeab479..5467e0b 100644 "5:\n" ".previous\n" diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h -index 8f9afef..378b605 100644 +index c64b1e9..1bdb386 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h -@@ -204,7 +204,8 @@ +@@ -205,7 +205,8 @@ #define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */ #define X86_FEATURE_XENPV ( 8*32+16) /* "" Xen paravirtual guest */ @@ -20192,7 +20364,7 @@ index 8f9afef..378b605 100644 /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */ #define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/ -@@ -212,7 +213,7 @@ +@@ -213,7 +214,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 */ @@ -20687,10 +20859,10 @@ index fe884e1..46149ae 100644 { spin_unlock_irqrestore(&dma_spin_lock, flags); diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h -index 53748c4..283147d 100644 +index 78d1e74..7a769dc 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h -@@ -168,6 +168,11 @@ static inline bool efi_is_native(void) +@@ -153,6 +153,11 @@ static inline bool efi_is_native(void) static inline bool efi_runtime_supported(void) { @@ -20703,7 +20875,7 @@ index 53748c4..283147d 100644 return true; diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h -index 15340e3..f338653 100644 +index fea7724..1986ecdf 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; @@ -21250,25 +21422,18 @@ index b77f5ed..a2f791e 100644 #define INTERRUPT_RETURN iret #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h -index 4421b5d..8543006 100644 +index d1d1e50..5bacb6d 100644 --- a/arch/x86/include/asm/kprobes.h +++ b/arch/x86/include/asm/kprobes.h -@@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t; +@@ -37,7 +37,7 @@ typedef u8 kprobe_opcode_t; #define RELATIVEJUMP_SIZE 5 #define RELATIVECALL_OPCODE 0xe8 #define RELATIVE_ADDR_SIZE 4 -#define MAX_STACK_SIZE 64 --#define MIN_STACK_SIZE(ADDR) \ -- (((MAX_STACK_SIZE) < (((unsigned long)current_thread_info()) + \ -- THREAD_SIZE - (unsigned long)(ADDR))) \ -- ? (MAX_STACK_SIZE) \ -- : (((unsigned long)current_thread_info()) + \ -- THREAD_SIZE - (unsigned long)(ADDR))) +#define MAX_STACK_SIZE 64UL -+#define MIN_STACK_SIZE(ADDR) min(MAX_STACK_SIZE, current->thread.sp0 - (unsigned long)(ADDR)) - - #define flush_insn_slot(p) do { } while (0) - + #define CUR_STACK_SIZE(ADDR) \ + (current_top_of_stack() - (unsigned long)(ADDR)) + #define MIN_STACK_SIZE(ADDR) \ diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h index e9cd7be..0f3574f 100644 --- a/arch/x86/include/asm/kvm_emulate.h @@ -21476,6 +21641,19 @@ index 4ad6560..75c7bdd 100644 /* Always has a lock prefix */ #define local_xchg(l, n) (xchg(&((l)->a.counter), (n))) +diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h +index 8bf766e..d800b61 100644 +--- a/arch/x86/include/asm/mce.h ++++ b/arch/x86/include/asm/mce.h +@@ -184,7 +184,7 @@ struct mca_msr_regs { + u32 (*status) (int bank); + u32 (*addr) (int bank); + u32 (*misc) (int bank); +-}; ++} __no_const; + + extern struct mce_vendor_flags mce_flags; + diff --git a/arch/x86/include/asm/mman.h b/arch/x86/include/asm/mman.h new file mode 100644 index 0000000..2bfd3ba @@ -21523,7 +21701,7 @@ index 1ea0bae..25de747 100644 atomic_t perf_rdpmc_allowed; /* nonzero if rdpmc is allowed */ diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h -index 8428002..89716a8 100644 +index 39634819..c944992 100644 --- a/arch/x86/include/asm/mmu_context.h +++ b/arch/x86/include/asm/mmu_context.h @@ -46,7 +46,7 @@ struct ldt_struct { @@ -21580,157 +21758,6 @@ index 8428002..89716a8 100644 #ifdef CONFIG_SMP if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) this_cpu_write(cpu_tlbstate.state, TLBSTATE_LAZY); -@@ -115,13 +146,64 @@ static inline void destroy_context(struct mm_struct *mm) - destroy_context_ldt(mm); - } - -+static inline void pax_switch_mm(struct mm_struct *next, unsigned int cpu) -+{ -+ -+#ifdef CONFIG_PAX_PER_CPU_PGD -+ pax_open_kernel(); -+ -+#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) -+ __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd); -+ else -+#endif -+ -+ __clone_user_pgds(get_cpu_pgd(cpu, kernel), next->pgd); -+ -+ __shadow_user_pgds(get_cpu_pgd(cpu, kernel) + USER_PGD_PTRS, next->pgd); -+ -+ pax_close_kernel(); -+ -+ 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_PCIDUDEREF)) { -+ if (static_cpu_has(X86_FEATURE_INVPCID)) { -+ u64 descriptor[2]; -+ descriptor[0] = PCID_USER; -+ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory"); -+ if (!static_cpu_has(X86_FEATURE_STRONGUDEREF)) { -+ descriptor[0] = PCID_KERNEL; -+ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory"); -+ } -+ } else { -+ write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER); -+ if (static_cpu_has(X86_FEATURE_STRONGUDEREF)) -+ write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH); -+ else -+ write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL); -+ } -+ } else -+#endif -+ -+ load_cr3(get_cpu_pgd(cpu, kernel)); -+#endif -+ -+} -+ - static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, - struct task_struct *tsk) - { - unsigned cpu = smp_processor_id(); -+#if defined(CONFIG_X86_32) && defined(CONFIG_SMP) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) -+ int tlbstate = TLBSTATE_OK; -+#endif - - if (likely(prev != next)) { - #ifdef CONFIG_SMP -+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) -+ tlbstate = this_cpu_read(cpu_tlbstate.state); -+#endif - this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); - this_cpu_write(cpu_tlbstate.active_mm, next); - #endif -@@ -140,7 +222,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, - * We need to prevent an outcome in which CPU 1 observes - * the new PTE value and CPU 0 observes bit 1 clear in - * mm_cpumask. (If that occurs, then the IPI will never -- * be sent, and CPU 0's TLB will contain a stale entry.) -+ * be sent, and CPU 1's TLB will contain a stale entry.) - * - * The bad outcome can occur if either CPU's load is - * reordered before that CPU's store, so both CPUs must -@@ -155,7 +237,11 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, - * ordering guarantee we need. - * - */ -+#ifdef CONFIG_PAX_PER_CPU_PGD -+ pax_switch_mm(next, cpu); -+#else - load_cr3(next->pgd); -+#endif - - trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); - -@@ -181,9 +267,31 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, - if (unlikely(prev->context.ldt != next->context.ldt)) - load_mm_ldt(next); - #endif -+ -+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) -+ if (!(__supported_pte_mask & _PAGE_NX)) { -+ smp_mb__before_atomic(); -+ cpumask_clear_cpu(cpu, &prev->context.cpu_user_cs_mask); -+ smp_mb__after_atomic(); -+ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); -+ } -+#endif -+ -+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) -+ if (unlikely(prev->context.user_cs_base != next->context.user_cs_base || -+ prev->context.user_cs_limit != next->context.user_cs_limit)) -+ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); -+#ifdef CONFIG_SMP -+ else if (unlikely(tlbstate != TLBSTATE_OK)) -+ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); -+#endif -+#endif -+ - } -+ else { -+ pax_switch_mm(next, cpu); -+ - #ifdef CONFIG_SMP -- else { - this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); - BUG_ON(this_cpu_read(cpu_tlbstate.active_mm) != next); - -@@ -204,13 +312,30 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, - * As above, load_cr3() is serializing and orders TLB - * fills with respect to the mm_cpumask write. - */ -+ -+#ifndef CONFIG_PAX_PER_CPU_PGD - load_cr3(next->pgd); - trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); -+#endif -+ - load_mm_cr4(next); - load_mm_ldt(next); -+ -+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) -+ if (!(__supported_pte_mask & _PAGE_NX)) -+ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); -+#endif -+ -+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) -+#ifdef CONFIG_PAX_PAGEEXEC -+ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && (__supported_pte_mask & _PAGE_NX))) -+#endif -+ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); -+#endif -+ - } -+#endif - } --#endif - } - - #define activate_mm(prev, next) \ diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h index e3b7819..ba128ec 100644 --- a/arch/x86/include/asm/module.h @@ -21818,18 +21845,19 @@ index 5f2fc44..106caa6 100644 void unregister_nmi_handler(unsigned int, const char *); diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h -index 802dde3..9183e68 100644 +index cf8f619..bbcf5e6 100644 --- a/arch/x86/include/asm/page.h +++ b/arch/x86/include/asm/page.h -@@ -52,6 +52,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, - __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x))) - +@@ -58,6 +58,8 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) -+#define __early_va(x) ((void *)((unsigned long)(x)+__START_KERNEL_map - phys_base)) + #endif ++#define __early_va(x) ((void *)((unsigned long)(x)+__START_KERNEL_map - phys_base)) ++ #define __boot_va(x) __va(x) #define __boot_pa(x) __pa(x) -@@ -60,11 +61,21 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, + +@@ -65,11 +67,21 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, * virt_to_page(kaddr) returns a valid pointer if and only if * virt_addr_valid(kaddr) returns true. */ @@ -21913,10 +21941,10 @@ index b3bebf9..cb419e7 100644 #define __phys_reloc_hide(x) (x) diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h -index 601f1b8..1d2f5a1 100644 +index 2970d22..fce32bd 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h -@@ -511,7 +511,7 @@ static inline pmd_t __pmd(pmdval_t val) +@@ -509,7 +509,7 @@ static inline pmd_t __pmd(pmdval_t val) return (pmd_t) { ret }; } @@ -21925,7 +21953,7 @@ index 601f1b8..1d2f5a1 100644 { pmdval_t ret; -@@ -577,6 +577,18 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd) +@@ -575,6 +575,18 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd) val); } @@ -21944,7 +21972,7 @@ index 601f1b8..1d2f5a1 100644 static inline void pgd_clear(pgd_t *pgdp) { set_pgd(pgdp, __pgd(0)); -@@ -661,6 +673,21 @@ static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, +@@ -659,6 +671,21 @@ static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, pv_mmu_ops.set_fixmap(idx, phys, flags); } @@ -21966,7 +21994,7 @@ index 601f1b8..1d2f5a1 100644 #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS) #ifdef CONFIG_QUEUED_SPINLOCKS -@@ -888,7 +915,7 @@ extern void default_banner(void); +@@ -886,7 +913,7 @@ extern void default_banner(void); #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4) #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4) @@ -21975,7 +22003,7 @@ index 601f1b8..1d2f5a1 100644 #endif #define INTERRUPT_RETURN \ -@@ -946,6 +973,21 @@ extern void default_banner(void); +@@ -944,6 +971,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_usergs_sysret64)) @@ -21998,10 +22026,10 @@ index 601f1b8..1d2f5a1 100644 #endif /* __ASSEMBLY__ */ diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h -index e8c2326..4458a61 100644 +index 7fa9e77..aa09e68 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h -@@ -89,7 +89,7 @@ struct pv_init_ops { +@@ -83,7 +83,7 @@ struct pv_init_ops { */ unsigned (*patch)(u8 type, u16 clobber, void *insnbuf, unsigned long addr, unsigned len); @@ -22010,7 +22038,7 @@ index e8c2326..4458a61 100644 struct pv_lazy_ops { -@@ -97,12 +97,12 @@ struct pv_lazy_ops { +@@ -91,12 +91,12 @@ struct pv_lazy_ops { void (*enter)(void); void (*leave)(void); void (*flush)(void); @@ -22093,7 +22121,7 @@ index e8c2326..4458a61 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 bf7f8b5..ca5799d 100644 +index 574c23c..55fb8b05 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, @@ -22145,7 +22173,7 @@ index bf7f8b5..ca5799d 100644 + static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) { - return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); + return (pud_t *)get_zeroed_page(GFP_KERNEL); diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h index fd74a11..35fd5af 100644 --- a/arch/x86/include/asm/pgtable-2level.h @@ -22195,7 +22223,7 @@ index cdaa58c..ae30f0d 100644 static inline void pud_clear(pud_t *pudp) diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h -index 97f3242..2603a59 100644 +index 1a27396..a9c27d3 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -54,6 +54,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page); @@ -22272,7 +22300,7 @@ index 97f3242..2603a59 100644 #define pte_page(pte) pfn_to_page(pte_pfn(pte)) static inline int pmd_large(pmd_t pte) -@@ -223,9 +270,29 @@ static inline pte_t pte_wrprotect(pte_t pte) +@@ -224,9 +271,29 @@ static inline pte_t pte_wrprotect(pte_t pte) return pte_clear_flags(pte, _PAGE_RW); } @@ -22303,7 +22331,7 @@ index 97f3242..2603a59 100644 } static inline pte_t pte_mkdirty(pte_t pte) -@@ -430,7 +497,7 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) +@@ -431,7 +498,7 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) #define canon_pgprot(p) __pgprot(massage_pgprot(p)) @@ -22312,7 +22340,7 @@ index 97f3242..2603a59 100644 enum page_cache_mode pcm, enum page_cache_mode new_pcm) { -@@ -473,6 +540,16 @@ pte_t *populate_extra_pte(unsigned long vaddr); +@@ -474,6 +541,16 @@ pte_t *populate_extra_pte(unsigned long vaddr); #endif #ifndef __ASSEMBLY__ @@ -22329,7 +22357,7 @@ index 97f3242..2603a59 100644 #include <linux/mm_types.h> #include <linux/mmdebug.h> #include <linux/log2.h> -@@ -673,7 +750,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd) +@@ -674,7 +751,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd) * Currently stuck as a macro due to indirect forward reference to * linux/mmzone.h's __section_mem_map_addr() definition: */ @@ -22338,7 +22366,7 @@ index 97f3242..2603a59 100644 /* to find an entry in a page-table-directory. */ static inline unsigned long pud_index(unsigned long address) -@@ -688,7 +765,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) +@@ -689,7 +766,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) static inline int pgd_bad(pgd_t pgd) { @@ -22347,7 +22375,7 @@ index 97f3242..2603a59 100644 } static inline int pgd_none(pgd_t pgd) -@@ -711,7 +788,12 @@ static inline int pgd_none(pgd_t pgd) +@@ -712,7 +789,12 @@ static inline int pgd_none(pgd_t pgd) * pgd_offset() returns a (pgd_t *) * pgd_index() is used get the offset into the pgd page's array of pgd_t's; */ @@ -22361,7 +22389,7 @@ index 97f3242..2603a59 100644 /* * a shortcut which implies the use of the kernel's pgd, instead * of a process's -@@ -722,6 +804,25 @@ static inline int pgd_none(pgd_t pgd) +@@ -723,6 +805,25 @@ static inline int pgd_none(pgd_t pgd) #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET) #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY) @@ -22387,7 +22415,7 @@ index 97f3242..2603a59 100644 #ifndef __ASSEMBLY__ extern int direct_gbpages; -@@ -876,11 +977,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, +@@ -877,11 +978,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, * dst and src can be on the same page, but the range must not overlap, * and must not cross a page boundary. */ @@ -22698,7 +22726,7 @@ index d397deb..e977c3b 100644 /* diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h -index 9264476..a56f17d 100644 +index 62c6cc3..93d0f25 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -135,7 +135,7 @@ struct cpuinfo_x86 { @@ -22754,9 +22782,9 @@ index 9264476..a56f17d 100644 #endif #ifdef CONFIG_X86_32 unsigned long ip; -@@ -392,6 +403,9 @@ struct thread_struct { +@@ -399,6 +410,9 @@ struct thread_struct { + unsigned long gs; #endif - unsigned long gs; + /* Floating point and extended processor state */ + struct fpu fpu; @@ -22764,7 +22792,7 @@ index 9264476..a56f17d 100644 /* Save middle states of ptrace breakpoints */ struct perf_event *ptrace_bps[HBP_NUM]; /* Debug status used for traps, single steps, etc... */ -@@ -411,13 +425,6 @@ struct thread_struct { +@@ -418,13 +432,6 @@ struct thread_struct { unsigned long iopl; /* Max allowed port in the bitmap, in bytes: */ unsigned io_bitmap_max; @@ -22778,20 +22806,20 @@ index 9264476..a56f17d 100644 }; /* -@@ -459,10 +466,10 @@ static inline void native_swapgs(void) - #endif - } +@@ -468,12 +475,8 @@ static inline void native_swapgs(void) --static inline unsigned long current_top_of_stack(void) -+static inline unsigned long current_top_of_stack(unsigned int cpu) + static inline unsigned long current_top_of_stack(void) { - #ifdef CONFIG_X86_64 +-#ifdef CONFIG_X86_64 - return this_cpu_read_stable(cpu_tss.x86_tss.sp0); -+ return cpu_tss[cpu].x86_tss.sp0; - #else +-#else /* sp0 on x86_32 is special in and around vm86 mode. */ return this_cpu_read_stable(cpu_current_top_of_stack); -@@ -698,19 +705,29 @@ static inline void spin_lock_prefetch(const void *x) +-#endif + } + + #ifdef CONFIG_PARAVIRT +@@ -703,19 +706,29 @@ static inline void spin_lock_prefetch(const void *x) #define TOP_OF_INIT_STACK ((unsigned long)&init_stack + sizeof(init_stack) - \ TOP_OF_KERNEL_STACK_PADDING) @@ -22822,7 +22850,7 @@ index 9264476..a56f17d 100644 } extern unsigned long thread_saved_pc(struct task_struct *tsk); -@@ -725,12 +742,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); +@@ -730,12 +743,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); * "struct pt_regs" is possible, but they may contain the * completely wrong values. */ @@ -22836,7 +22864,7 @@ index 9264476..a56f17d 100644 #define KSTK_ESP(task) (task_pt_regs(task)->sp) -@@ -744,13 +756,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); +@@ -749,13 +757,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); * particular problem by preventing anything from being mapped * at the maximum canonical address. */ @@ -22852,7 +22880,7 @@ index 9264476..a56f17d 100644 #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ IA32_PAGE_OFFSET : TASK_SIZE_MAX) -@@ -761,7 +773,8 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); +@@ -766,7 +774,8 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); #define STACK_TOP_MAX TASK_SIZE_MAX #define INIT_THREAD { \ @@ -22862,7 +22890,7 @@ index 9264476..a56f17d 100644 } /* -@@ -784,6 +797,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, +@@ -789,6 +798,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, */ #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) @@ -22873,7 +22901,7 @@ index 9264476..a56f17d 100644 #define KSTK_EIP(task) (task_pt_regs(task)->ip) /* Get/set a process' ability to use the timestamp counter instruction */ -@@ -829,7 +846,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) +@@ -834,7 +847,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) return 0; } @@ -22882,7 +22910,7 @@ index 9264476..a56f17d 100644 extern void free_init_pages(char *what, unsigned long begin, unsigned long end); void default_idle(void); -@@ -839,6 +856,6 @@ bool xen_set_default_idle(void); +@@ -844,6 +857,6 @@ bool xen_set_default_idle(void); #define xen_set_default_idle 0 #endif @@ -23097,7 +23125,7 @@ index 8f7866a..e442f20 100644 #endif /* CC_HAVE_ASM_GOTO */ diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h -index ceec86eb..872e33a 100644 +index 453744c..e6ad97e 100644 --- a/arch/x86/include/asm/rwsem.h +++ b/arch/x86/include/asm/rwsem.h @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem) @@ -23130,22 +23158,31 @@ index ceec86eb..872e33a 100644 " jle 2f\n\t" LOCK_PREFIX " cmpxchg %2,%0\n\t" " jnz 1b\n\t" -@@ -104,6 +120,14 @@ static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) - long tmp; - asm volatile("# beginning down_write\n\t" - LOCK_PREFIX " xadd %1,(%2)\n\t" -+ +@@ -99,12 +115,23 @@ static inline int __down_read_trylock(struct rw_semaphore *sem) + /* + * lock for writing + */ +#ifdef CONFIG_PAX_REFCOUNT -+ "jno 0f\n" -+ "mov %1,(%2)\n" -+ "int $4\n0:\n" ++#define ____down_write_undo \ ++ "jno 0f\n"\ ++ "mov %1,(%2)\n"\ ++ "int $4\n0:\n"\ + _ASM_EXTABLE(0b, 0b) ++#else ++#define ____down_write_undo +#endif + - /* adds 0xffff0001, returns the old value */ - " test " __ASM_SEL(%w1,%k1) "," __ASM_SEL(%w1,%k1) "\n\t" - /* was the active mask 0 before? */ -@@ -155,6 +179,14 @@ static inline void __up_read(struct rw_semaphore *sem) + #define ____down_write(sem, slow_path) \ + ({ \ + long tmp; \ + struct rw_semaphore* ret; \ + asm volatile("# beginning down_write\n\t" \ + LOCK_PREFIX " xadd %1,(%3)\n\t" \ ++ ____down_write_undo \ + /* adds 0xffff0001, returns the old value */ \ + " test " __ASM_SEL(%w1,%k1) "," __ASM_SEL(%w1,%k1) "\n\t" \ + /* was the active mask 0 before? */\ +@@ -165,6 +192,14 @@ static inline void __up_read(struct rw_semaphore *sem) long tmp; asm volatile("# beginning __up_read\n\t" LOCK_PREFIX " xadd %1,(%2)\n\t" @@ -23160,7 +23197,7 @@ index ceec86eb..872e33a 100644 /* subtracts 1, returns the old value */ " jns 1f\n\t" " call call_rwsem_wake\n" /* expects old value in %edx */ -@@ -173,6 +205,14 @@ static inline void __up_write(struct rw_semaphore *sem) +@@ -183,6 +218,14 @@ static inline void __up_write(struct rw_semaphore *sem) long tmp; asm volatile("# beginning __up_write\n\t" LOCK_PREFIX " xadd %1,(%2)\n\t" @@ -23175,7 +23212,7 @@ index ceec86eb..872e33a 100644 /* subtracts 0xffff0001, returns the old value */ " jns 1f\n\t" " call call_rwsem_wake\n" /* expects old value in %edx */ -@@ -190,6 +230,14 @@ static inline void __downgrade_write(struct rw_semaphore *sem) +@@ -200,6 +243,14 @@ static inline void __downgrade_write(struct rw_semaphore *sem) { asm volatile("# beginning __downgrade_write\n\t" LOCK_PREFIX _ASM_ADD "%2,(%1)\n\t" @@ -23190,7 +23227,7 @@ index ceec86eb..872e33a 100644 /* * transitions 0xZZZZ0001 -> 0xYYYY0001 (i386) * 0xZZZZZZZZ00000001 -> 0xYYYYYYYY00000001 (x86_64) -@@ -208,7 +256,15 @@ static inline void __downgrade_write(struct rw_semaphore *sem) +@@ -218,7 +269,15 @@ static inline void __downgrade_write(struct rw_semaphore *sem) */ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) { @@ -23207,7 +23244,7 @@ index ceec86eb..872e33a 100644 : "+m" (sem->count) : "er" (delta)); } -@@ -218,7 +274,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) +@@ -228,7 +287,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) */ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) { @@ -23217,10 +23254,10 @@ index ceec86eb..872e33a 100644 #endif /* __KERNEL__ */ diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h -index 7d5a192..23ef1aa 100644 +index 1549caa0..aa9ebe1 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h -@@ -82,14 +82,20 @@ +@@ -83,14 +83,20 @@ * 26 - ESPFIX small SS * 27 - per-cpu [ offset to per-cpu data area ] * 28 - stack_canary-20 [ for stack protector ] <=== cacheline #8 @@ -23243,7 +23280,7 @@ index 7d5a192..23ef1aa 100644 #define GDT_ENTRY_KERNEL_DS 13 #define GDT_ENTRY_DEFAULT_USER_CS 14 #define GDT_ENTRY_DEFAULT_USER_DS 15 -@@ -106,6 +112,12 @@ +@@ -107,6 +113,12 @@ #define GDT_ENTRY_PERCPU 27 #define GDT_ENTRY_STACK_CANARY 28 @@ -23256,7 +23293,7 @@ index 7d5a192..23ef1aa 100644 #define GDT_ENTRY_DOUBLEFAULT_TSS 31 /* -@@ -118,6 +130,7 @@ +@@ -119,6 +131,7 @@ */ #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) @@ -23264,7 +23301,7 @@ index 7d5a192..23ef1aa 100644 #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 @@ +@@ -130,7 +143,7 @@ #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16*8) /* "Is this PNP code selector (PNP_CS32 or PNP_CS16)?" */ @@ -23273,7 +23310,7 @@ index 7d5a192..23ef1aa 100644 /* data segment for BIOS: */ #define PNP_DS (GDT_ENTRY_PNPBIOS_DS*8) -@@ -176,6 +189,8 @@ +@@ -177,6 +190,8 @@ #define GDT_ENTRY_DEFAULT_USER_DS 5 #define GDT_ENTRY_DEFAULT_USER_CS 6 @@ -23282,7 +23319,7 @@ index 7d5a192..23ef1aa 100644 /* Needs two entries */ #define GDT_ENTRY_TSS 8 /* Needs two entries */ -@@ -187,10 +202,12 @@ +@@ -188,10 +203,12 @@ /* Abused to load per CPU data from limit */ #define GDT_ENTRY_PER_CPU 15 @@ -23296,7 +23333,7 @@ index 7d5a192..23ef1aa 100644 /* * Segment selector values corresponding to the above entries: -@@ -200,7 +217,9 @@ +@@ -201,7 +218,9 @@ */ #define __KERNEL32_CS (GDT_ENTRY_KERNEL32_CS*8) #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) @@ -23429,7 +23466,7 @@ index 58505f0..bff3b5b 100644 #endif } diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h -index 7c247e7..2f17b1b 100644 +index 0944218..2f17b1b 100644 --- a/arch/x86/include/asm/stacktrace.h +++ b/arch/x86/include/asm/stacktrace.h @@ -11,28 +11,20 @@ @@ -23440,7 +23477,7 @@ index 7c247e7..2f17b1b 100644 +struct task_struct; struct stacktrace_ops; --typedef unsigned long (*walk_stack_t)(struct thread_info *tinfo, +-typedef unsigned long (*walk_stack_t)(struct task_struct *task, - unsigned long *stack, - unsigned long bp, - const struct stacktrace_ops *ops, @@ -23457,13 +23494,13 @@ index 7c247e7..2f17b1b 100644 + int *graph); -extern unsigned long --print_context_stack(struct thread_info *tinfo, +-print_context_stack(struct task_struct *task, - unsigned long *stack, unsigned long bp, - const struct stacktrace_ops *ops, void *data, - unsigned long *end, int *graph); - -extern unsigned long --print_context_stack_bp(struct thread_info *tinfo, +-print_context_stack_bp(struct task_struct *task, - unsigned long *stack, unsigned long bp, - const struct stacktrace_ops *ops, void *data, - unsigned long *end, int *graph); @@ -23579,10 +23616,10 @@ index 90dbbd9..04e8caa 100644 #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__) diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h -index 751bf4b..a1278b5 100644 +index 8f321a1..6207183 100644 --- a/arch/x86/include/asm/switch_to.h +++ b/arch/x86/include/asm/switch_to.h -@@ -112,7 +112,7 @@ do { \ +@@ -110,7 +110,7 @@ do { \ "call __switch_to\n\t" \ "movq "__percpu_arg([current_task])",%%rsi\n\t" \ __switch_canary \ @@ -23591,7 +23628,7 @@ index 751bf4b..a1278b5 100644 "movq %%rax,%%rdi\n\t" \ "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \ "jnz ret_from_fork\n\t" \ -@@ -123,7 +123,7 @@ do { \ +@@ -121,7 +121,7 @@ do { \ [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \ [ti_flags] "i" (offsetof(struct thread_info, flags)), \ [_tif_fork] "i" (_TIF_FORK), \ @@ -23625,7 +23662,7 @@ index 82c34ee..940fa40 100644 unsigned, unsigned, unsigned); diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h -index ffae84d..20997c3 100644 +index 30c133a..5cdfb3f 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h @@ -39,7 +39,7 @@ @@ -23752,7 +23789,7 @@ index ffae84d..20997c3 100644 #endif -@@ -279,6 +250,13 @@ static inline bool is_ia32_task(void) +@@ -279,6 +250,13 @@ static inline bool in_ia32_syscall(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); @@ -23767,7 +23804,7 @@ index ffae84d..20997c3 100644 #endif /* _ASM_X86_THREAD_INFO_H */ diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h -index 1fde8d5..de33497 100644 +index 4e5be94..44a409e 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -135,18 +135,44 @@ static inline void cr4_set_bits_and_update_boot(unsigned long mask) @@ -23888,18 +23925,18 @@ index c3496619..3f3a7dc 100644 asmlinkage void smp_deferred_error_interrupt(void); #endif diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h -index 2e7513d..792107f 100644 +index 2982387..a619e60c 100644 --- a/arch/x86/include/asm/uaccess.h +++ b/arch/x86/include/asm/uaccess.h -@@ -7,6 +7,7 @@ - #include <linux/compiler.h> +@@ -8,6 +8,7 @@ + #include <linux/kasan-checks.h> #include <linux/thread_info.h> #include <linux/string.h> +#include <linux/spinlock.h> #include <asm/asm.h> #include <asm/page.h> #include <asm/smap.h> -@@ -29,7 +30,12 @@ +@@ -30,7 +31,12 @@ #define get_ds() (KERNEL_DS) #define get_fs() (current_thread_info()->addr_limit) @@ -23912,7 +23949,7 @@ index 2e7513d..792107f 100644 #define segment_eq(a, b) ((a).seg == (b).seg) -@@ -86,8 +92,36 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un +@@ -87,8 +93,36 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un * checks that the pointer is in the user space range - after calling * this function, memory access functions may still return -EFAULT. */ @@ -23951,7 +23988,7 @@ index 2e7513d..792107f 100644 /* * The exception table consists of triples of addresses relative to the -@@ -145,11 +179,13 @@ extern int __get_user_bad(void); +@@ -146,11 +180,13 @@ extern int __get_user_bad(void); #define __uaccess_end() clac() /* @@ -23968,7 +24005,7 @@ index 2e7513d..792107f 100644 /** * get_user: - Get a simple variable from user space. -@@ -189,10 +225,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) +@@ -190,10 +226,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) register void *__sp asm(_ASM_SP); \ __chk_user_ptr(ptr); \ might_fault(); \ @@ -23981,7 +24018,7 @@ index 2e7513d..792107f 100644 __builtin_expect(__ret_gu, 0); \ }) -@@ -200,13 +238,21 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) +@@ -201,13 +239,21 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) asm volatile("call __put_user_" #size : "=a" (__ret_pu) \ : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx") @@ -24006,7 +24043,7 @@ index 2e7513d..792107f 100644 "3:" \ ".section .fixup,\"ax\"\n" \ "4: movl %3,%0\n" \ -@@ -219,8 +265,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) +@@ -220,8 +266,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) #define __put_user_asm_ex_u64(x, addr) \ asm volatile("\n" \ @@ -24017,7 +24054,7 @@ index 2e7513d..792107f 100644 "3:" \ _ASM_EXTABLE_EX(1b, 2b) \ _ASM_EXTABLE_EX(2b, 3b) \ -@@ -268,10 +314,11 @@ extern void __put_user_8(void); +@@ -269,10 +315,11 @@ extern void __put_user_8(void); #define put_user(x, ptr) \ ({ \ int __ret_pu; \ @@ -24031,7 +24068,7 @@ index 2e7513d..792107f 100644 switch (sizeof(*(ptr))) { \ case 1: \ __put_user_x(1, __pu_val, ptr, __ret_pu); \ -@@ -289,6 +336,7 @@ extern void __put_user_8(void); +@@ -290,6 +337,7 @@ extern void __put_user_8(void); __put_user_x(X, __pu_val, ptr, __ret_pu); \ break; \ } \ @@ -24039,7 +24076,7 @@ index 2e7513d..792107f 100644 __builtin_expect(__ret_pu, 0); \ }) -@@ -356,10 +404,10 @@ do { \ +@@ -357,10 +405,10 @@ do { \ __chk_user_ptr(ptr); \ switch (size) { \ case 1: \ @@ -24052,7 +24089,7 @@ index 2e7513d..792107f 100644 break; \ case 4: \ __get_user_asm(x, ptr, retval, "l", "k", "=r", errret); \ -@@ -373,17 +421,21 @@ do { \ +@@ -374,17 +422,21 @@ do { \ } while (0) #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ @@ -24078,7 +24115,7 @@ index 2e7513d..792107f 100644 /* * This doesn't do __uaccess_begin/end - the exception handling -@@ -394,10 +446,10 @@ do { \ +@@ -395,10 +447,10 @@ do { \ __chk_user_ptr(ptr); \ switch (size) { \ case 1: \ @@ -24091,7 +24128,7 @@ index 2e7513d..792107f 100644 break; \ case 4: \ __get_user_asm_ex(x, ptr, "l", "k", "=r"); \ -@@ -411,7 +463,7 @@ do { \ +@@ -412,7 +464,7 @@ do { \ } while (0) #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \ @@ -24100,7 +24137,7 @@ index 2e7513d..792107f 100644 "2:\n" \ _ASM_EXTABLE_EX(1b, 2b) \ : ltype(x) : "m" (__m(addr))) -@@ -432,13 +484,24 @@ do { \ +@@ -433,13 +485,24 @@ do { \ __uaccess_begin(); \ __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \ __uaccess_end(); \ @@ -24127,7 +24164,7 @@ index 2e7513d..792107f 100644 /* * Tell gcc we read from memory instead of writing: this is because -@@ -446,8 +509,10 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -447,8 +510,10 @@ struct __large_struct { unsigned long buf[100]; }; * aliasing issues. */ #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ @@ -24139,7 +24176,7 @@ index 2e7513d..792107f 100644 "2:\n" \ ".section .fixup,\"ax\"\n" \ "3: mov %3,%0\n" \ -@@ -455,10 +520,12 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -456,10 +521,12 @@ struct __large_struct { unsigned long buf[100]; }; ".previous\n" \ _ASM_EXTABLE(1b, 3b) \ : "=r"(err) \ @@ -24154,7 +24191,7 @@ index 2e7513d..792107f 100644 "2:\n" \ _ASM_EXTABLE_EX(1b, 2b) \ : : ltype(x), "m" (__m(addr))) -@@ -468,11 +535,13 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -469,11 +536,13 @@ struct __large_struct { unsigned long buf[100]; }; */ #define uaccess_try do { \ current_thread_info()->uaccess_err = 0; \ @@ -24168,7 +24205,7 @@ index 2e7513d..792107f 100644 (err) |= (current_thread_info()->uaccess_err ? -EFAULT : 0); \ } while (0) -@@ -498,8 +567,12 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -499,8 +568,12 @@ struct __large_struct { unsigned long buf[100]; }; * On error, the variable @x is set to zero. */ @@ -24181,7 +24218,7 @@ index 2e7513d..792107f 100644 /** * __put_user: - Write a simple value into user space, with less checking. -@@ -522,8 +595,12 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -523,8 +596,12 @@ struct __large_struct { unsigned long buf[100]; }; * Returns zero on success, or -EFAULT on error. */ @@ -24194,7 +24231,7 @@ index 2e7513d..792107f 100644 #define __get_user_unaligned __get_user #define __put_user_unaligned __put_user -@@ -541,7 +618,7 @@ struct __large_struct { unsigned long buf[100]; }; +@@ -542,7 +619,7 @@ struct __large_struct { unsigned long buf[100]; }; #define get_user_ex(x, ptr) do { \ unsigned long __gue_val; \ __get_user_size_ex((__gue_val), (ptr), (sizeof(*(ptr)))); \ @@ -24203,7 +24240,7 @@ index 2e7513d..792107f 100644 } while (0) #define put_user_try uaccess_try -@@ -559,7 +636,7 @@ extern __must_check long strlen_user(const char __user *str); +@@ -560,7 +637,7 @@ extern __must_check long strlen_user(const char __user *str); extern __must_check long strnlen_user(const char __user *str, long n); unsigned long __must_check clear_user(void __user *mem, unsigned long len); @@ -24212,7 +24249,7 @@ index 2e7513d..792107f 100644 extern void __cmpxchg_wrong_size(void) __compiletime_error("Bad argument size for cmpxchg"); -@@ -567,22 +644,23 @@ extern void __cmpxchg_wrong_size(void) +@@ -568,22 +645,23 @@ extern void __cmpxchg_wrong_size(void) #define __user_atomic_cmpxchg_inatomic(uval, ptr, old, new, size) \ ({ \ int __ret = 0; \ @@ -24241,7 +24278,7 @@ index 2e7513d..792107f 100644 : "i" (-EFAULT), "q" (__new), "1" (__old) \ : "memory" \ ); \ -@@ -591,14 +669,14 @@ extern void __cmpxchg_wrong_size(void) +@@ -592,14 +670,14 @@ extern void __cmpxchg_wrong_size(void) case 2: \ { \ asm volatile("\n" \ @@ -24258,7 +24295,7 @@ index 2e7513d..792107f 100644 : "i" (-EFAULT), "r" (__new), "1" (__old) \ : "memory" \ ); \ -@@ -607,14 +685,14 @@ extern void __cmpxchg_wrong_size(void) +@@ -608,14 +686,14 @@ extern void __cmpxchg_wrong_size(void) case 4: \ { \ asm volatile("\n" \ @@ -24275,7 +24312,7 @@ index 2e7513d..792107f 100644 : "i" (-EFAULT), "r" (__new), "1" (__old) \ : "memory" \ ); \ -@@ -626,14 +704,14 @@ extern void __cmpxchg_wrong_size(void) +@@ -627,14 +705,14 @@ extern void __cmpxchg_wrong_size(void) __cmpxchg_wrong_size(); \ \ asm volatile("\n" \ @@ -24292,7 +24329,7 @@ index 2e7513d..792107f 100644 : "i" (-EFAULT), "r" (__new), "1" (__old) \ : "memory" \ ); \ -@@ -643,6 +721,7 @@ extern void __cmpxchg_wrong_size(void) +@@ -644,6 +722,7 @@ extern void __cmpxchg_wrong_size(void) __cmpxchg_wrong_size(); \ } \ __uaccess_end(); \ @@ -24300,7 +24337,7 @@ index 2e7513d..792107f 100644 *__uval = __old; \ __ret; \ }) -@@ -666,17 +745,6 @@ extern struct movsl_mask { +@@ -667,17 +746,6 @@ extern struct movsl_mask { #define ARCH_HAS_NOCACHE_UACCESS 1 @@ -24318,7 +24355,7 @@ index 2e7513d..792107f 100644 #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS # define copy_user_diag __compiletime_error #else -@@ -686,7 +754,7 @@ unsigned long __must_check _copy_to_user(void __user *to, const void *from, +@@ -687,7 +755,7 @@ unsigned long __must_check _copy_to_user(void __user *to, const void *from, extern void copy_user_diag("copy_from_user() buffer size is too small") copy_from_user_overflow(void); extern void copy_user_diag("copy_to_user() buffer size is too small") @@ -24327,7 +24364,7 @@ index 2e7513d..792107f 100644 #undef copy_user_diag -@@ -699,7 +767,7 @@ __copy_from_user_overflow(void) __asm__("copy_from_user_overflow"); +@@ -700,7 +768,7 @@ __copy_from_user_overflow(void) __asm__("copy_from_user_overflow"); extern void __compiletime_warning("copy_to_user() buffer size is not provably correct") @@ -24336,7 +24373,7 @@ index 2e7513d..792107f 100644 #define __copy_to_user_overflow(size, count) __copy_to_user_overflow() #else -@@ -714,10 +782,16 @@ __copy_from_user_overflow(int size, unsigned long count) +@@ -715,10 +783,16 @@ __copy_from_user_overflow(int size, unsigned long count) #endif @@ -24354,7 +24391,7 @@ index 2e7513d..792107f 100644 might_fault(); -@@ -739,12 +813,15 @@ copy_from_user(void *to, const void __user *from, unsigned long n) +@@ -742,12 +816,15 @@ copy_from_user(void *to, const void __user *from, unsigned long n) * case, and do only runtime checking for non-constant sizes. */ @@ -24376,13 +24413,15 @@ index 2e7513d..792107f 100644 return n; } -@@ -752,17 +829,18 @@ copy_from_user(void *to, const void __user *from, unsigned long n) +@@ -755,19 +832,20 @@ copy_from_user(void *to, const void __user *from, unsigned long n) static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) { - int sz = __compiletime_object_size(from); + size_t sz = __compiletime_object_size(from); + kasan_check_read(from, n); + might_fault(); /* See the comment in copy_from_user() above. */ @@ -24403,13 +24442,13 @@ index 2e7513d..792107f 100644 return n; } diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h -index 3fe0eac..18dfa8b 100644 +index 4b32da24..73da0ef 100644 --- a/arch/x86/include/asm/uaccess_32.h +++ b/arch/x86/include/asm/uaccess_32.h -@@ -40,9 +40,14 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero - * anything, so this is accurate. +@@ -34,9 +34,14 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero + * The caller should also make sure he pins the user space address + * so that we don't result in page fault and sleep. */ - -static __always_inline unsigned long __must_check +static __always_inline __size_overflow(3) unsigned long __must_check __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n) @@ -24419,10 +24458,10 @@ index 3fe0eac..18dfa8b 100644 + + check_object_size(from, n, true); + - if (__builtin_constant_p(n)) { - unsigned long ret; + return __copy_to_user_ll(to, from, n); + } -@@ -95,12 +100,16 @@ static __always_inline unsigned long __must_check +@@ -59,12 +64,16 @@ static __always_inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) { might_fault(); @@ -24437,10 +24476,10 @@ index 3fe0eac..18dfa8b 100644 + if ((long)n < 0) + return n; + - /* Avoid zeroing the tail if the copy fails.. - * If 'n' is constant and 1, 2, or 4, we do still zero on a failure, - * but as the zeroing behaviour is only significant when n is not -@@ -157,6 +166,12 @@ static __always_inline unsigned long + return __copy_from_user_ll_nozero(to, from, n); + } + +@@ -95,6 +104,12 @@ static __always_inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n) { might_fault(); @@ -24453,7 +24492,7 @@ index 3fe0eac..18dfa8b 100644 if (__builtin_constant_p(n)) { unsigned long ret; -@@ -185,6 +200,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to, +@@ -123,6 +138,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to, const void __user *from, unsigned long n) { might_fault(); @@ -24464,7 +24503,7 @@ index 3fe0eac..18dfa8b 100644 if (__builtin_constant_p(n)) { unsigned long ret; -@@ -213,7 +232,10 @@ static __always_inline unsigned long +@@ -151,7 +170,10 @@ static __always_inline unsigned long __copy_from_user_inatomic_nocache(void *to, const void __user *from, unsigned long n) { @@ -24477,10 +24516,10 @@ index 3fe0eac..18dfa8b 100644 #endif /* _ASM_X86_UACCESS_32_H */ diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h -index 3076986..7688db9 100644 +index 2eac2aa..bf537a3 100644 --- a/arch/x86/include/asm/uaccess_64.h +++ b/arch/x86/include/asm/uaccess_64.h -@@ -10,6 +10,9 @@ +@@ -11,6 +11,9 @@ #include <asm/alternative.h> #include <asm/cpufeatures.h> #include <asm/page.h> @@ -24490,7 +24529,7 @@ index 3076986..7688db9 100644 /* * Copy To/From Userspace -@@ -23,8 +26,8 @@ copy_user_generic_string(void *to, const void *from, unsigned len); +@@ -24,8 +27,8 @@ copy_user_generic_string(void *to, const void *from, unsigned len); __must_check unsigned long copy_user_generic_unrolled(void *to, const void *from, unsigned len); @@ -24501,7 +24540,7 @@ index 3076986..7688db9 100644 { unsigned ret; -@@ -46,152 +49,201 @@ copy_user_generic(void *to, const void *from, unsigned len) +@@ -47,67 +50,86 @@ copy_user_generic(void *to, const void *from, unsigned len) } __must_check unsigned long @@ -24601,7 +24640,8 @@ index 3076986..7688db9 100644 +unsigned long __copy_from_user(void *dst, const void __user *src, unsigned long size) { might_fault(); - return __copy_from_user_nocheck(dst, src, size); + kasan_check_write(dst, size); +@@ -115,66 +137,85 @@ int __copy_from_user(void *dst, const void __user *src, unsigned size) } static __always_inline __must_check @@ -24699,7 +24739,8 @@ index 3076986..7688db9 100644 +unsigned long __copy_to_user(void __user *dst, const void *src, unsigned long size) { might_fault(); - return __copy_to_user_nocheck(dst, src, size); + kasan_check_read(src, size); +@@ -182,19 +223,30 @@ int __copy_to_user(void __user *dst, const void *src, unsigned size) } static __always_inline __must_check @@ -24735,7 +24776,7 @@ index 3076986..7688db9 100644 ret, "b", "b", "=q", 1); if (likely(!ret)) __put_user_asm(tmp, (u8 __user *)dst, -@@ -202,7 +254,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) +@@ -205,7 +257,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) case 2: { u16 tmp; __uaccess_begin(); @@ -24744,7 +24785,7 @@ index 3076986..7688db9 100644 ret, "w", "w", "=r", 2); if (likely(!ret)) __put_user_asm(tmp, (u16 __user *)dst, -@@ -214,7 +266,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) +@@ -217,7 +269,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) case 4: { u32 tmp; __uaccess_begin(); @@ -24753,7 +24794,7 @@ index 3076986..7688db9 100644 ret, "l", "k", "=r", 4); if (likely(!ret)) __put_user_asm(tmp, (u32 __user *)dst, -@@ -225,7 +277,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) +@@ -228,7 +280,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) case 8: { u64 tmp; __uaccess_begin(); @@ -24762,7 +24803,7 @@ index 3076986..7688db9 100644 ret, "q", "", "=r", 8); if (likely(!ret)) __put_user_asm(tmp, (u64 __user *)dst, -@@ -234,41 +286,58 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) +@@ -237,45 +289,63 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) return ret; } default: @@ -24778,6 +24819,7 @@ index 3076986..7688db9 100644 +static __must_check __always_inline unsigned long +__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size) { + kasan_check_write(dst, size); return __copy_from_user_nocheck(dst, src, size); } @@ -24786,6 +24828,7 @@ index 3076986..7688db9 100644 +static __must_check __always_inline unsigned long +__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size) { + kasan_check_read(src, size); return __copy_to_user_nocheck(dst, src, size); } @@ -24800,6 +24843,7 @@ index 3076986..7688db9 100644 +__copy_from_user_nocache(void *dst, const void __user *src, unsigned long size) { might_fault(); + kasan_check_write(dst, size); + + if (size > INT_MAX) + return size; @@ -24818,6 +24862,8 @@ index 3076986..7688db9 100644 - unsigned size) + unsigned long size) { + kasan_check_write(dst, size); ++ + if (size > INT_MAX) + return size; + @@ -24848,7 +24894,7 @@ index 5b238981..77fdd78 100644 #define WORD_AT_A_TIME_CONSTANTS { REPEAT_BYTE(0x01), REPEAT_BYTE(0x80) } diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h -index 1ae89a2..a279bf4 100644 +index 4dcdf74..9eb489e 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -126,7 +126,7 @@ struct x86_init_ops { @@ -24869,16 +24915,7 @@ index 1ae89a2..a279bf4 100644 struct timespec; -@@ -165,7 +165,7 @@ struct x86_platform_ops { - void (*save_sched_clock_state)(void); - void (*restore_sched_clock_state)(void); - void (*apic_post_init)(void); --}; -+} __no_const; - - struct pci_dev; - -@@ -174,12 +174,12 @@ struct x86_msi_ops { +@@ -222,12 +222,12 @@ struct x86_msi_ops { void (*teardown_msi_irq)(unsigned int irq); void (*teardown_msi_irqs)(struct pci_dev *dev); void (*restore_msi_irqs)(struct pci_dev *dev); @@ -24920,10 +24957,10 @@ index 9dafe59..0293c1d 100644 #define BIOS_ROM_BASE 0xffe00000 diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile -index 616ebd2..7386ebf 100644 +index 0503f5b..f00b6e8 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile -@@ -42,7 +42,7 @@ obj-$(CONFIG_MODIFY_LDT_SYSCALL) += ldt.o +@@ -46,7 +46,7 @@ obj-$(CONFIG_MODIFY_LDT_SYSCALL) += ldt.o obj-y += setup.o x86_init.o i8259.o irqinit.o jump_label.o obj-$(CONFIG_IRQ_WORK) += irq_work.o obj-y += probe_roms.o @@ -24933,10 +24970,10 @@ index 616ebd2..7386ebf 100644 obj-$(CONFIG_X86_64) += mcount_64.o obj-$(CONFIG_X86_ESPFIX64) += espfix_64.o diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c -index 8c2f1ef..e4e5c19 100644 +index 9414f84..724b296 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c -@@ -1341,7 +1341,7 @@ static void __init acpi_reduced_hw_init(void) +@@ -1349,7 +1349,7 @@ static void __init acpi_reduced_hw_init(void) * If your system is blacklisted here, but you find that acpi=force * works for you, please contact linux-acpi@vger.kernel.org */ @@ -24945,7 +24982,7 @@ index 8c2f1ef..e4e5c19 100644 /* * Boxes that need ACPI disabled */ -@@ -1416,7 +1416,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { +@@ -1424,7 +1424,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { }; /* second table for DMI checks that should run after early-quirks */ @@ -24992,10 +25029,10 @@ index 0c26b1b..a766e85 100644 bogus_magic: jmp bogus_magic diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c -index 25f9093..3418d54 100644 +index 5cb272a..2bcff83 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c -@@ -20,6 +20,7 @@ +@@ -21,6 +21,7 @@ #include <asm/tlbflush.h> #include <asm/io.h> #include <asm/fixmap.h> @@ -25003,7 +25040,7 @@ index 25f9093..3418d54 100644 int __read_mostly alternatives_patched; -@@ -261,7 +262,9 @@ static void __init_or_module add_nops(void *insns, unsigned int len) +@@ -262,7 +263,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; @@ -25013,7 +25050,7 @@ index 25f9093..3418d54 100644 insns += noplen; len -= noplen; } -@@ -289,6 +292,13 @@ recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf) +@@ -290,6 +293,13 @@ recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf) if (a->replacementlen != 5) return; @@ -25027,7 +25064,7 @@ index 25f9093..3418d54 100644 o_dspl = *(s32 *)(insnbuf + 1); /* next_rip of the replacement JMP */ -@@ -364,6 +374,7 @@ void __init_or_module apply_alternatives(struct alt_instr *start, +@@ -365,6 +375,7 @@ void __init_or_module apply_alternatives(struct alt_instr *start, { struct alt_instr *a; u8 *instr, *replacement; @@ -25035,7 +25072,7 @@ index 25f9093..3418d54 100644 u8 insnbuf[MAX_PATCH_LEN]; DPRINTK("alt table %p -> %p", start, end); -@@ -379,46 +390,71 @@ void __init_or_module apply_alternatives(struct alt_instr *start, +@@ -380,46 +391,71 @@ void __init_or_module apply_alternatives(struct alt_instr *start, for (a = start; a < end; a++) { int insnbuf_sz = 0; @@ -25121,7 +25158,7 @@ index 25f9093..3418d54 100644 text_poke_early(instr, insnbuf, insnbuf_sz); } -@@ -434,10 +470,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end, +@@ -435,10 +471,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end, for (poff = start; poff < end; poff++) { u8 *ptr = (u8 *)poff + *poff; @@ -25139,7 +25176,7 @@ index 25f9093..3418d54 100644 text_poke(ptr, ((unsigned char []){0xf0}), 1); } mutex_unlock(&text_mutex); -@@ -452,10 +494,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end, +@@ -453,10 +495,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end, for (poff = start; poff < end; poff++) { u8 *ptr = (u8 *)poff + *poff; @@ -25157,7 +25194,7 @@ index 25f9093..3418d54 100644 text_poke(ptr, ((unsigned char []){0x3E}), 1); } mutex_unlock(&text_mutex); -@@ -592,7 +640,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start, +@@ -593,7 +641,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 */ @@ -25166,7 +25203,7 @@ index 25f9093..3418d54 100644 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf, (unsigned long)p->instr, p->len); -@@ -639,7 +687,7 @@ void __init alternative_instructions(void) +@@ -640,7 +688,7 @@ void __init alternative_instructions(void) if (!uniproc_patched || num_possible_cpus() == 1) free_init_pages("SMP alternatives", (unsigned long)__smp_locks, @@ -25175,7 +25212,7 @@ index 25f9093..3418d54 100644 #endif apply_paravirt(__parainstructions, __parainstructions_end); -@@ -660,13 +708,17 @@ void __init alternative_instructions(void) +@@ -661,13 +709,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. */ @@ -25195,7 +25232,7 @@ index 25f9093..3418d54 100644 local_irq_restore(flags); /* Could also do a CLFLUSH here to speed up CPU recovery; but that causes hangs on some VIA CPUs. */ -@@ -689,19 +741,25 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode, +@@ -690,19 +742,25 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode, void *text_poke(void *addr, const void *opcode, size_t len) { unsigned long flags; @@ -25227,7 +25264,7 @@ index 25f9093..3418d54 100644 local_irq_save(flags); set_fixmap(FIX_TEXT_POKE0, page_to_phys(pages[0])); if (pages[1]) -@@ -718,6 +776,7 @@ void *text_poke(void *addr, const void *opcode, size_t len) +@@ -719,6 +777,7 @@ void *text_poke(void *addr, const void *opcode, size_t len) for (i = 0; i < len; i++) BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]); local_irq_restore(flags); @@ -25235,7 +25272,7 @@ index 25f9093..3418d54 100644 return addr; } -@@ -771,7 +830,7 @@ int poke_int3_handler(struct pt_regs *regs) +@@ -772,7 +831,7 @@ int poke_int3_handler(struct pt_regs *regs) */ void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler) { @@ -25245,7 +25282,7 @@ index 25f9093..3418d54 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 d356987..ed8a52b 100644 +index 60078a6..b9fb105 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -177,7 +177,7 @@ int first_system_vector = FIRST_SYSTEM_VECTOR; @@ -25298,11 +25335,11 @@ index 76f89e2..4a349aaa 100644 .name = "physical flat", .probe = physflat_probe, diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c -index 331a7a0..2173347 100644 +index 13d19ed..fe1730f 100644 --- a/arch/x86/kernel/apic/apic_noop.c +++ b/arch/x86/kernel/apic/apic_noop.c @@ -109,7 +109,7 @@ static void noop_apic_write(u32 reg, u32 v) - WARN_ON_ONCE(cpu_has_apic && !disable_apic); + WARN_ON_ONCE(boot_cpu_has(X86_FEATURE_APIC) && !disable_apic); } -struct apic apic_noop = { @@ -25324,7 +25361,7 @@ index cf9bd89..75fcb85 100644 .name = "bigsmp", .probe = probe_bigsmp, diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c -index fdb0fbf..352c2f0 100644 +index 446702e..ed37083 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -1682,7 +1682,7 @@ static unsigned int startup_ioapic_irq(struct irq_data *data) @@ -25408,7 +25445,7 @@ index f316e34..48c21c5 100644 static int cmdline_apic __initdata; diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c -index ef49551..ba2e857 100644 +index a5e400a..d070a03 100644 --- a/arch/x86/kernel/apic/vector.c +++ b/arch/x86/kernel/apic/vector.c @@ -37,6 +37,7 @@ static struct irq_chip lapic_controller; @@ -25454,10 +25491,10 @@ index a1242e2..0e7f712 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 d7ce96a..99cedd7 100644 +index 2900315..ff2a970 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c -@@ -374,7 +374,7 @@ static int uv_probe(void) +@@ -554,7 +554,7 @@ static int uv_probe(void) return apic == &apic_x2apic_uv_x; } @@ -25467,7 +25504,7 @@ index d7ce96a..99cedd7 100644 .name = "UV large system", .probe = uv_probe, diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c -index 9307f18..a43f175 100644 +index c7364bd..20cd21a 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c @@ -432,7 +432,7 @@ static DEFINE_MUTEX(apm_mutex); @@ -25551,7 +25588,7 @@ index 9307f18..a43f175 100644 proc_create("apm", 0, NULL, &apm_file_ops); diff --git a/arch/x86/kernel/asm-offsets.c b/arch/x86/kernel/asm-offsets.c -index 5c04246..e280385 100644 +index 674134e..bb9947e 100644 --- a/arch/x86/kernel/asm-offsets.c +++ b/arch/x86/kernel/asm-offsets.c @@ -32,6 +32,8 @@ void common(void) { @@ -25590,7 +25627,7 @@ index 5c04246..e280385 100644 #ifdef CONFIG_XEN BLANK(); OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask); -@@ -85,4 +105,5 @@ void common(void) { +@@ -86,4 +106,5 @@ void common(void) { BLANK(); DEFINE(PTREGS_SIZE, sizeof(struct pt_regs)); @@ -25612,10 +25649,10 @@ index 4a8697f..8a13428 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 7b76eb6..99cb9cc 100644 +index f5c69d8..5eecf58 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c -@@ -776,7 +776,7 @@ static void init_amd(struct cpuinfo_x86 *c) +@@ -780,7 +780,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) */ @@ -25645,10 +25682,10 @@ index a972ac4..938c163 100644 /* diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index f45a4b9..9d999f8 100644 +index 0fe6953..a253a78 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c -@@ -92,60 +92,6 @@ static const struct cpu_dev default_cpu = { +@@ -93,60 +93,6 @@ static const struct cpu_dev default_cpu = { static const struct cpu_dev *this_cpu = &default_cpu; @@ -25709,7 +25746,7 @@ index f45a4b9..9d999f8 100644 static int __init x86_mpx_setup(char *s) { /* require an exact match without trailing characters */ -@@ -278,6 +224,10 @@ static __always_inline void setup_smep(struct cpuinfo_x86 *c) +@@ -281,6 +227,10 @@ static __always_inline void setup_smep(struct cpuinfo_x86 *c) { if (cpu_has(c, X86_FEATURE_SMEP)) cr4_set_bits(X86_CR4_SMEP); @@ -25720,7 +25757,7 @@ index f45a4b9..9d999f8 100644 } static __init int setup_disable_smap(char *arg) -@@ -303,6 +253,109 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c) +@@ -306,6 +256,109 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c) } } @@ -25830,7 +25867,7 @@ index f45a4b9..9d999f8 100644 /* * Protection Keys are not available in 32-bit mode. */ -@@ -448,7 +501,7 @@ void switch_to_new_gdt(int cpu) +@@ -451,7 +504,7 @@ void switch_to_new_gdt(int cpu) { struct desc_ptr gdt_descr; @@ -25839,7 +25876,7 @@ index f45a4b9..9d999f8 100644 gdt_descr.size = GDT_SIZE - 1; load_gdt(&gdt_descr); /* Reload the per-cpu base */ -@@ -1004,6 +1057,20 @@ static void identify_cpu(struct cpuinfo_x86 *c) +@@ -1042,6 +1095,20 @@ static void identify_cpu(struct cpuinfo_x86 *c) setup_smep(c); setup_smap(c); @@ -25860,16 +25897,16 @@ index f45a4b9..9d999f8 100644 /* * The vendor-specific functions might have changed features. * Now we do "generic changes." -@@ -1081,7 +1148,7 @@ void enable_sep_cpu(void) - int cpu; +@@ -1122,7 +1189,7 @@ void enable_sep_cpu(void) + return; cpu = get_cpu(); - tss = &per_cpu(cpu_tss, cpu); + tss = cpu_tss + cpu; - if (!boot_cpu_has(X86_FEATURE_SEP)) - goto out; -@@ -1227,10 +1294,12 @@ static __init int setup_disablecpuid(char *arg) + /* + * We cache MSR_IA32_SYSENTER_CS's value in the TSS's ss1 field -- +@@ -1264,10 +1331,12 @@ static __init int setup_disablecpuid(char *arg) } __setup("clearcpuid=", setup_disablecpuid); @@ -25885,7 +25922,7 @@ index f45a4b9..9d999f8 100644 DEFINE_PER_CPU_FIRST(union irq_stack_union, irq_stack_union) __aligned(PAGE_SIZE) __visible; -@@ -1342,21 +1411,21 @@ EXPORT_PER_CPU_SYMBOL(current_task); +@@ -1379,21 +1448,21 @@ EXPORT_PER_CPU_SYMBOL(current_task); DEFINE_PER_CPU(int, __preempt_count) = INIT_PREEMPT_COUNT; EXPORT_PER_CPU_SYMBOL(__preempt_count); @@ -25914,7 +25951,7 @@ index f45a4b9..9d999f8 100644 /* * Clear all 6 debug registers: */ -@@ -1432,7 +1501,7 @@ void cpu_init(void) +@@ -1469,7 +1538,7 @@ void cpu_init(void) */ load_ucode_ap(); @@ -25923,7 +25960,7 @@ index f45a4b9..9d999f8 100644 oist = &per_cpu(orig_ist, cpu); #ifdef CONFIG_NUMA -@@ -1464,7 +1533,6 @@ void cpu_init(void) +@@ -1501,7 +1570,6 @@ void cpu_init(void) wrmsrl(MSR_KERNEL_GS_BASE, 0); barrier(); @@ -25931,7 +25968,7 @@ index f45a4b9..9d999f8 100644 x2apic_setup(); /* -@@ -1516,7 +1584,7 @@ void cpu_init(void) +@@ -1553,7 +1621,7 @@ void cpu_init(void) { int cpu = smp_processor_id(); struct task_struct *curr = current; @@ -25993,7 +26030,7 @@ index de6626c..c84e8c1 100644 return &cache_private_group; diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c -index f0c921b..2c7b33b 100644 +index 92e5e37..bc2c026 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -47,6 +47,7 @@ @@ -26004,7 +26041,7 @@ index f0c921b..2c7b33b 100644 #include "mce-internal.h" -@@ -211,8 +212,7 @@ static struct notifier_block mce_srao_nb; +@@ -209,8 +210,7 @@ static struct notifier_block mce_srao_nb; void mce_register_decode_chain(struct notifier_block *nb) { /* Ensure SRAO notifier has the highest priority in the decode chain. */ @@ -26014,7 +26051,16 @@ index f0c921b..2c7b33b 100644 atomic_notifier_chain_register(&x86_mce_decoder_chain, nb); } -@@ -236,7 +236,7 @@ static void print_mce(struct mce *m) +@@ -262,7 +262,7 @@ static inline u32 smca_misc_reg(int bank) + return MSR_AMD64_SMCA_MCx_MISC(bank); + } + +-struct mca_msr_regs msr_ops = { ++struct mca_msr_regs msr_ops __read_only = { + .ctl = ctl_reg, + .status = status_reg, + .addr = addr_reg, +@@ -281,7 +281,7 @@ static void print_mce(struct mce *m) !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "", m->cs, m->ip); @@ -26023,7 +26069,7 @@ index f0c921b..2c7b33b 100644 print_symbol("{%s}", m->ip); pr_cont("\n"); } -@@ -269,10 +269,10 @@ static void print_mce(struct mce *m) +@@ -314,10 +314,10 @@ static void print_mce(struct mce *m) #define PANIC_TIMEOUT 5 /* 5 seconds */ @@ -26036,7 +26082,7 @@ index f0c921b..2c7b33b 100644 /* Panic in progress. Enable interrupts and wait for final IPI */ static void wait_for_panic(void) -@@ -296,7 +296,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) +@@ -343,7 +343,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) /* * Make sure only one CPU runs in machine check panic */ @@ -26045,7 +26091,7 @@ index f0c921b..2c7b33b 100644 wait_for_panic(); barrier(); -@@ -304,7 +304,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) +@@ -351,7 +351,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) console_verbose(); } else { /* Don't log too much for fake panic */ @@ -26053,8 +26099,8 @@ index f0c921b..2c7b33b 100644 + if (atomic_inc_return_unchecked(&mce_fake_panicked) > 1) return; } - /* First print corrected ones that are still unlogged */ -@@ -343,7 +343,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) + pending = mce_gen_pool_prepare_records(); +@@ -387,7 +387,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; @@ -26063,7 +26109,7 @@ index f0c921b..2c7b33b 100644 } else pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg); } -@@ -717,7 +717,7 @@ static int mce_timed_out(u64 *t, const char *msg) +@@ -761,7 +761,7 @@ static int mce_timed_out(u64 *t, const char *msg) * might have been modified by someone else. */ rmb(); @@ -26072,7 +26118,20 @@ index f0c921b..2c7b33b 100644 wait_for_panic(); if (!mca_cfg.monarch_timeout) goto out; -@@ -1684,7 +1684,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code) +@@ -1691,10 +1691,12 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) + * Install proper ops for Scalable MCA enabled processors + */ + if (mce_flags.smca) { ++ pax_open_kernel(); + msr_ops.ctl = smca_ctl_reg; + msr_ops.status = smca_status_reg; + msr_ops.addr = smca_addr_reg; + msr_ops.misc = smca_misc_reg; ++ pax_close_kernel(); + } + mce_amd_feature_init(c); + +@@ -1747,7 +1749,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code) } /* Call the installed machine check handler for this CPU setup. */ @@ -26081,7 +26140,7 @@ index f0c921b..2c7b33b 100644 unexpected_machine_check; /* -@@ -1713,7 +1713,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) +@@ -1776,7 +1778,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) return; } @@ -26091,7 +26150,7 @@ index f0c921b..2c7b33b 100644 __mcheck_cpu_init_generic(); __mcheck_cpu_init_vendor(c); -@@ -1744,7 +1746,7 @@ void mcheck_cpu_clear(struct cpuinfo_x86 *c) +@@ -1808,7 +1812,7 @@ void mcheck_cpu_clear(struct cpuinfo_x86 *c) */ static DEFINE_SPINLOCK(mce_chrdev_state_lock); @@ -26100,7 +26159,7 @@ index f0c921b..2c7b33b 100644 static int mce_chrdev_open_exclu; /* already open exclusive? */ static int mce_chrdev_open(struct inode *inode, struct file *file) -@@ -1752,7 +1754,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) +@@ -1816,7 +1820,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) spin_lock(&mce_chrdev_state_lock); if (mce_chrdev_open_exclu || @@ -26109,7 +26168,7 @@ index f0c921b..2c7b33b 100644 spin_unlock(&mce_chrdev_state_lock); return -EBUSY; -@@ -1760,7 +1762,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) +@@ -1824,7 +1828,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) if (file->f_flags & O_EXCL) mce_chrdev_open_exclu = 1; @@ -26118,7 +26177,7 @@ index f0c921b..2c7b33b 100644 spin_unlock(&mce_chrdev_state_lock); -@@ -1771,7 +1773,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file) +@@ -1835,7 +1839,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file) { spin_lock(&mce_chrdev_state_lock); @@ -26127,7 +26186,7 @@ index f0c921b..2c7b33b 100644 mce_chrdev_open_exclu = 0; spin_unlock(&mce_chrdev_state_lock); -@@ -2463,7 +2465,7 @@ static __init void mce_init_banks(void) +@@ -2529,7 +2533,7 @@ static __init void mce_init_banks(void) for (i = 0; i < mca_cfg.banks; i++) { struct mce_bank *b = &mce_banks[i]; @@ -26136,7 +26195,7 @@ index f0c921b..2c7b33b 100644 sysfs_attr_init(&a->attr); a->attr.name = b->attrname; -@@ -2570,7 +2572,7 @@ struct dentry *mce_get_debugfs_dir(void) +@@ -2636,7 +2640,7 @@ struct dentry *mce_get_debugfs_dir(void) static void mce_reset(void) { cpu_missing = 0; @@ -26190,7 +26249,7 @@ index c6a722e..4016140 100644 wmb(); diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c -index cbb3cf0..f3b73a3 100644 +index 65cbbcd..c41a7f8 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c @@ -1003,13 +1003,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device, @@ -26223,10 +26282,10 @@ index 10c11b4..18c4d71 100644 .detect = ms_hyperv_platform, .init_platform = ms_hyperv_init_platform, diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c -index 19f5736..8f92a72 100644 +index 16e37a2..61decea 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c -@@ -722,7 +722,8 @@ static DEFINE_RAW_SPINLOCK(set_atomicity_lock); +@@ -726,7 +726,8 @@ static DEFINE_RAW_SPINLOCK(set_atomicity_lock); * The caller must ensure that local interrupts are disabled and * are reenabled after post_set() has been called. */ @@ -26236,7 +26295,7 @@ index 19f5736..8f92a72 100644 { unsigned long cr0; -@@ -758,7 +759,8 @@ static void prepare_set(void) __acquires(set_atomicity_lock) +@@ -762,7 +763,8 @@ static void prepare_set(void) __acquires(set_atomicity_lock) wbinvd(); } @@ -26247,7 +26306,7 @@ index 19f5736..8f92a72 100644 /* Flush TLBs (no need to flush caches - they are disabled) */ count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ALL); diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c -index 10f8d47..481f5b4 100644 +index 7d393ec..488842d 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c @@ -72,7 +72,7 @@ static DEFINE_MUTEX(mtrr_mutex); @@ -26260,7 +26319,7 @@ index 10f8d47..481f5b4 100644 const struct mtrr_ops *mtrr_if; diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.h b/arch/x86/kernel/cpu/mtrr/mtrr.h -index 951884d..4796b75 100644 +index 6c7ced0..55ee554 100644 --- a/arch/x86/kernel/cpu/mtrr/mtrr.h +++ b/arch/x86/kernel/cpu/mtrr/mtrr.h @@ -25,7 +25,7 @@ struct mtrr_ops { @@ -26273,7 +26332,7 @@ index 951884d..4796b75 100644 extern int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg); diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c -index 364e583..1124b95 100644 +index 8cac429..ccecccb 100644 --- a/arch/x86/kernel/cpu/vmware.c +++ b/arch/x86/kernel/cpu/vmware.c @@ -136,7 +136,7 @@ static bool __init vmware_legacy_x2apic_available(void) @@ -26334,7 +26393,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 8efa57a..9750a3d 100644 +index ef8017c..1543ef8 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -2,6 +2,9 @@ @@ -26347,7 +26406,7 @@ index 8efa57a..9750a3d 100644 #include <linux/kallsyms.h> #include <linux/kprobes.h> #include <linux/uaccess.h> -@@ -35,23 +38,21 @@ static void printk_stack_address(unsigned long address, int reliable, +@@ -35,7 +38,7 @@ static void printk_stack_address(unsigned long address, int reliable, void printk_address(unsigned long address) { @@ -26356,49 +26415,23 @@ index 8efa57a..9750a3d 100644 } #ifdef CONFIG_FUNCTION_GRAPH_TRACER - static void - print_ftrace_graph_addr(unsigned long addr, void *data, - const struct stacktrace_ops *ops, -- struct thread_info *tinfo, int *graph) -+ struct task_struct *task, int *graph) - { -- struct task_struct *task; - unsigned long ret_addr; - int index; - - if (addr != (unsigned long)return_to_handler) - return; - -- task = tinfo->task; - index = task->curr_ret_stack; - - if (!task->ret_stack || index < *graph) -@@ -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, -- struct thread_info *tinfo, int *graph) -+ struct task_struct *task, int *graph) - { } - #endif - -@@ -79,10 +80,8 @@ print_ftrace_graph_addr(unsigned long addr, void *data, +@@ -77,10 +80,8 @@ print_ftrace_graph_addr(unsigned long addr, void *data, * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack */ --static inline int valid_stack_ptr(struct thread_info *tinfo, +-static inline int valid_stack_ptr(struct task_struct *task, - void *p, unsigned int size, void *end) +static inline int valid_stack_ptr(void *t, void *p, unsigned int size, void *end) { -- void *t = tinfo; +- void *t = task_stack_page(task); if (end) { if (p < end && p >= (end-THREAD_SIZE)) return 1; -@@ -93,14 +92,14 @@ static inline int valid_stack_ptr(struct thread_info *tinfo, +@@ -91,14 +92,14 @@ static inline int valid_stack_ptr(struct task_struct *task, } unsigned long --print_context_stack(struct thread_info *tinfo, +-print_context_stack(struct task_struct *task, +print_context_stack(struct task_struct *task, void *stack_start, unsigned long *stack, unsigned long bp, const struct stacktrace_ops *ops, void *data, @@ -26406,48 +26439,30 @@ index 8efa57a..9750a3d 100644 { struct stack_frame *frame = (struct stack_frame *)bp; -- while (valid_stack_ptr(tinfo, stack, sizeof(*stack), end)) { +- while (valid_stack_ptr(task, stack, sizeof(*stack), end)) { + while (valid_stack_ptr(stack_start, stack, sizeof(*stack), end)) { unsigned long addr; addr = *stack; -@@ -112,7 +111,7 @@ print_context_stack(struct thread_info *tinfo, - } else { - ops->address(data, addr, 0); - } -- print_ftrace_graph_addr(addr, data, ops, tinfo, graph); -+ print_ftrace_graph_addr(addr, data, ops, task, graph); - } - stack++; - } -@@ -121,7 +120,7 @@ print_context_stack(struct thread_info *tinfo, +@@ -119,7 +120,7 @@ print_context_stack(struct task_struct *task, EXPORT_SYMBOL_GPL(print_context_stack); unsigned long --print_context_stack_bp(struct thread_info *tinfo, +-print_context_stack_bp(struct task_struct *task, +print_context_stack_bp(struct task_struct *task, void *stack_start, unsigned long *stack, unsigned long bp, const struct stacktrace_ops *ops, void *data, unsigned long *end, int *graph) -@@ -129,7 +128,7 @@ print_context_stack_bp(struct thread_info *tinfo, +@@ -127,7 +128,7 @@ print_context_stack_bp(struct task_struct *task, struct stack_frame *frame = (struct stack_frame *)bp; unsigned long *ret_addr = &frame->return_address; -- while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) { +- while (valid_stack_ptr(task, ret_addr, sizeof(*ret_addr), end)) { + while (valid_stack_ptr(stack_start, ret_addr, sizeof(*ret_addr), end)) { unsigned long addr = *ret_addr; if (!__kernel_text_address(addr)) -@@ -139,7 +138,7 @@ print_context_stack_bp(struct thread_info *tinfo, - break; - frame = frame->next_frame; - ret_addr = &frame->return_address; -- print_ftrace_graph_addr(addr, data, ops, tinfo, graph); -+ print_ftrace_graph_addr(addr, data, ops, task, graph); - } - - return (unsigned long)frame; -@@ -228,6 +227,8 @@ unsigned long oops_begin(void) +@@ -226,6 +227,8 @@ unsigned long oops_begin(void) EXPORT_SYMBOL_GPL(oops_begin); NOKPROBE_SYMBOL(oops_begin); @@ -26456,7 +26471,7 @@ index 8efa57a..9750a3d 100644 void oops_end(unsigned long flags, struct pt_regs *regs, int signr) { if (regs && kexec_should_crash(current)) -@@ -249,7 +250,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr) +@@ -247,7 +250,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"); @@ -26469,14 +26484,13 @@ index 8efa57a..9750a3d 100644 NOKPROBE_SYMBOL(oops_end); diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c -index 464ffd6..01f2cda 100644 +index fef917e..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, +@@ -61,13 +61,14 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, bp = stack_frame(task, regs); for (;;) { -- struct thread_info *context; + void *stack_start = (void *)((unsigned long)stack & ~(THREAD_SIZE-1)); void *end_stack; @@ -26484,13 +26498,12 @@ index 464ffd6..01f2cda 100644 if (!end_stack) end_stack = is_softirq_stack(stack, cpu); -- context = task_thread_info(task); -- bp = ops->walk_stack(context, stack, bp, ops, data, +- bp = ops->walk_stack(task, stack, bp, ops, data, + bp = ops->walk_stack(task, stack_start, stack, bp, ops, data, end_stack, &graph); /* Stop if not on irq stack */ -@@ -137,16 +136,17 @@ void show_regs(struct pt_regs *regs) +@@ -135,16 +136,17 @@ void show_regs(struct pt_regs *regs) unsigned int code_len = code_bytes; unsigned char c; u8 *ip; @@ -26510,7 +26523,7 @@ index 464ffd6..01f2cda 100644 code_len = code_len - code_prologue + 1; } for (i = 0; i < code_len; i++, ip++) { -@@ -155,7 +155,7 @@ void show_regs(struct pt_regs *regs) +@@ -153,7 +155,7 @@ void show_regs(struct pt_regs *regs) pr_cont(" Bad EIP value."); break; } @@ -26519,7 +26532,7 @@ index 464ffd6..01f2cda 100644 pr_cont(" <%02x>", c); else pr_cont(" %02x", c); -@@ -168,6 +168,7 @@ int is_valid_bugaddr(unsigned long ip) +@@ -166,6 +168,7 @@ int is_valid_bugaddr(unsigned long ip) { unsigned short ud2; @@ -26527,7 +26540,7 @@ index 464ffd6..01f2cda 100644 if (ip < PAGE_OFFSET) return 0; if (probe_kernel_address((unsigned short *)ip, ud2)) -@@ -175,3 +176,15 @@ int is_valid_bugaddr(unsigned long ip) +@@ -173,3 +176,15 @@ int is_valid_bugaddr(unsigned long ip) return ud2 == 0x0b0f; } @@ -26544,16 +26557,10 @@ index 464ffd6..01f2cda 100644 +EXPORT_SYMBOL(pax_check_alloca); +#endif diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c -index 5f1c626..059e830 100644 +index d558a8a..059e830 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, - const struct stacktrace_ops *ops, void *data) - { - const unsigned cpu = get_cpu(); -- struct thread_info *tinfo; - unsigned long *irq_stack = (unsigned long *)per_cpu(irq_stack_ptr, cpu); - unsigned long dummy; +@@ -158,6 +158,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, unsigned used = 0; int graph = 0; int done = 0; @@ -26561,15 +26568,7 @@ index 5f1c626..059e830 100644 if (!task) task = current; -@@ -179,7 +179,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, - * current stack address. If the stacks consist of nested - * exceptions - */ -- tinfo = task_thread_info(task); - while (!done) { - unsigned long *stack_end; - enum stack_type stype; -@@ -192,17 +191,19 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, +@@ -190,17 +191,19 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, done = 1; switch (stype) { @@ -26588,12 +26587,12 @@ index 5f1c626..059e830 100644 if (ops->stack(data, id) < 0) break; -- bp = ops->walk_stack(tinfo, stack, bp, ops, +- bp = ops->walk_stack(task, stack, bp, ops, + bp = ops->walk_stack(task, stack_end - EXCEPTION_STKSZ, stack, bp, ops, data, stack_end, &graph); ops->stack(data, "<EOE>"); /* -@@ -210,15 +211,16 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, +@@ -208,15 +211,16 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, * second-to-last pointer (index -2 to end) in the * exception stack: */ @@ -26607,24 +26606,24 @@ index 5f1c626..059e830 100644 - if (ops->stack(data, "IRQ") < 0) break; -- bp = ops->walk_stack(tinfo, stack, bp, +- bp = ops->walk_stack(task, stack, bp, + bp = ops->walk_stack(task, irq_stack, stack, bp, ops, data, stack_end, &graph); /* * We link to the next stack (which would be -@@ -237,10 +239,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, +@@ -235,10 +239,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, } } - /* - * This handles the process stack: - */ -- bp = ops->walk_stack(tinfo, stack, bp, ops, data, NULL, &graph); +- bp = ops->walk_stack(task, stack, bp, ops, data, NULL, &graph); +out: put_cpu(); } EXPORT_SYMBOL(dump_trace); -@@ -347,8 +346,55 @@ int is_valid_bugaddr(unsigned long ip) +@@ -345,8 +346,55 @@ int is_valid_bugaddr(unsigned long ip) { unsigned short ud2; @@ -26709,7 +26708,7 @@ index 8a12199..e63bebf 100644 #include <asm/processor.h> #include <asm/fcntl.h> diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c -index 4d38416..ec7cc4e 100644 +index 04f89ca..43ad7de 100644 --- a/arch/x86/kernel/espfix_64.c +++ b/arch/x86/kernel/espfix_64.c @@ -41,6 +41,7 @@ @@ -26806,7 +26805,7 @@ index 4d38416..ec7cc4e 100644 unlock_done: mutex_unlock(&espfix_init_mutex); diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c -index 8e37cc8..0ce76b8 100644 +index 9702754..1858c7b 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -131,7 +131,7 @@ void __kernel_fpu_end(void) @@ -26894,45 +26893,39 @@ index 8e37cc8..0ce76b8 100644 fpu->counter++; kernel_fpu_enable(); } -@@ -509,25 +509,25 @@ void fpu__clear(struct fpu *fpu) - static inline unsigned short get_fpu_cwd(struct fpu *fpu) - { - if (cpu_has_fxsr) { -- return fpu->state.fxsave.cwd; -+ return fpu->state->fxsave.cwd; - } else { -- return (unsigned short)fpu->state.fsave.cwd; -+ return (unsigned short)fpu->state->fsave.cwd; - } - } +@@ -523,11 +523,11 @@ int fpu__exception_code(struct fpu *fpu, int trap_nr) + * fully reproduce the context of the exception. + */ + if (boot_cpu_has(X86_FEATURE_FXSR)) { +- cwd = fpu->state.fxsave.cwd; +- swd = fpu->state.fxsave.swd; ++ cwd = fpu->state->fxsave.cwd; ++ swd = fpu->state->fxsave.swd; + } else { +- cwd = (unsigned short)fpu->state.fsave.cwd; +- swd = (unsigned short)fpu->state.fsave.swd; ++ cwd = (unsigned short)fpu->state->fsave.cwd; ++ swd = (unsigned short)fpu->state->fsave.swd; + } - static inline unsigned short get_fpu_swd(struct fpu *fpu) - { - if (cpu_has_fxsr) { -- return fpu->state.fxsave.swd; -+ return fpu->state->fxsave.swd; - } else { -- return (unsigned short)fpu->state.fsave.swd; -+ return (unsigned short)fpu->state->fsave.swd; - } - } + err = swd & ~cwd; +@@ -541,7 +541,7 @@ int fpu__exception_code(struct fpu *fpu, int trap_nr) + unsigned short mxcsr = MXCSR_DEFAULT; - static inline unsigned short get_fpu_mxcsr(struct fpu *fpu) - { - if (cpu_has_xmm) { -- return fpu->state.fxsave.mxcsr; -+ return fpu->state->fxsave.mxcsr; - } else { - return MXCSR_DEFAULT; + if (boot_cpu_has(X86_FEATURE_XMM)) +- mxcsr = fpu->state.fxsave.mxcsr; ++ mxcsr = fpu->state->fxsave.mxcsr; + + err = ~(mxcsr >> 7) & mxcsr; } diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c -index 54c86ff..703757b 100644 +index aacfd7a..3f07533 100644 --- a/arch/x86/kernel/fpu/init.c +++ b/arch/x86/kernel/fpu/init.c @@ -45,7 +45,7 @@ static void fpu__init_cpu_generic(void) /* Flush out any pending x87 state: */ #ifdef CONFIG_MATH_EMULATION - if (!cpu_has_fpu) + if (!boot_cpu_has(X86_FEATURE_FPU)) - fpstate_init_soft(¤t->thread.fpu.state.soft); + fpstate_init_soft(¤t->thread.fpu.state->soft); else @@ -27000,10 +26993,10 @@ index 54c86ff..703757b 100644 fpu__init_system_ctx_switch(); } diff --git a/arch/x86/kernel/fpu/regset.c b/arch/x86/kernel/fpu/regset.c -index 8bd1c00..765a913 100644 +index 81422df..f89e945 100644 --- a/arch/x86/kernel/fpu/regset.c +++ b/arch/x86/kernel/fpu/regset.c -@@ -37,7 +37,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -40,7 +40,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset, fpstate_sanitize_xstate(fpu); return user_regset_copyout(&pos, &count, &kbuf, &ubuf, @@ -27012,7 +27005,7 @@ index 8bd1c00..765a913 100644 } int xfpregs_set(struct task_struct *target, const struct user_regset *regset, -@@ -54,19 +54,19 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset, +@@ -57,19 +57,19 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset, fpstate_sanitize_xstate(fpu); ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, @@ -27029,13 +27022,13 @@ index 8bd1c00..765a913 100644 * update the header bits in the xsave header, indicating the * presence of FP and SSE state. */ - if (cpu_has_xsave) + if (boot_cpu_has(X86_FEATURE_XSAVE)) - fpu->state.xsave.header.xfeatures |= XFEATURE_MASK_FPSSE; + fpu->state->xsave.header.xfeatures |= XFEATURE_MASK_FPSSE; return ret; } -@@ -84,7 +84,7 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -87,7 +87,7 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset, fpu__activate_fpstate_read(fpu); @@ -27044,7 +27037,7 @@ index 8bd1c00..765a913 100644 /* * Copy the 48bytes defined by the software first into the xstate -@@ -113,7 +113,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset, +@@ -116,7 +116,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset, fpu__activate_fpstate_write(fpu); @@ -27053,7 +27046,7 @@ index 8bd1c00..765a913 100644 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, xsave, 0, -1); /* -@@ -204,7 +204,7 @@ static inline u32 twd_fxsr_to_i387(struct fxregs_state *fxsave) +@@ -207,7 +207,7 @@ static inline u32 twd_fxsr_to_i387(struct fxregs_state *fxsave) void convert_from_fxsr(struct user_i387_ia32_struct *env, struct task_struct *tsk) { @@ -27062,7 +27055,7 @@ index 8bd1c00..765a913 100644 struct _fpreg *to = (struct _fpreg *) &env->st_space[0]; struct _fpxreg *from = (struct _fpxreg *) &fxsave->st_space[0]; int i; -@@ -242,7 +242,7 @@ void convert_to_fxsr(struct task_struct *tsk, +@@ -245,7 +245,7 @@ void convert_to_fxsr(struct task_struct *tsk, const struct user_i387_ia32_struct *env) { @@ -27071,28 +27064,28 @@ index 8bd1c00..765a913 100644 struct _fpreg *from = (struct _fpreg *) &env->st_space[0]; struct _fpxreg *to = (struct _fpxreg *) &fxsave->st_space[0]; int i; -@@ -280,7 +280,7 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -283,7 +283,7 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset, - if (!cpu_has_fxsr) + if (!boot_cpu_has(X86_FEATURE_FXSR)) return user_regset_copyout(&pos, &count, &kbuf, &ubuf, - &fpu->state.fsave, 0, + &fpu->state->fsave, 0, -1); fpstate_sanitize_xstate(fpu); -@@ -311,7 +311,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset, +@@ -314,7 +314,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset, - if (!cpu_has_fxsr) + if (!boot_cpu_has(X86_FEATURE_FXSR)) return user_regset_copyin(&pos, &count, &kbuf, &ubuf, - &fpu->state.fsave, 0, + &fpu->state->fsave, 0, -1); if (pos > 0 || count < sizeof(env)) -@@ -326,7 +326,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset, +@@ -329,7 +329,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset, * presence of FP. */ - if (cpu_has_xsave) + if (boot_cpu_has(X86_FEATURE_XSAVE)) - fpu->state.xsave.header.xfeatures |= XFEATURE_MASK_FP; + fpu->state->xsave.header.xfeatures |= XFEATURE_MASK_FP; return ret; @@ -27189,7 +27182,7 @@ index 31c6a60..523f27e 100644 } else { sanitize_restored_xstate(tsk, &env, xfeatures, fx_only); diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c -index b48ef35..10f3b79 100644 +index 4ea2a59..bbecb39 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -122,14 +122,14 @@ EXPORT_SYMBOL_GPL(cpu_has_xfeatures); @@ -27336,7 +27329,7 @@ index d036cfb..cb4c991 100644 /* 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 1f4422d..995e17d 100644 +index b72fb0b..7cb3f8a 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -62,12 +62,12 @@ again: @@ -27390,7 +27383,7 @@ index 1f4422d..995e17d 100644 for (i = 0; i < NUM_EXCEPTION_VECTORS; i++) diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S -index af11129..e506d32 100644 +index 6f8902b..5d42150 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S @@ -27,6 +27,12 @@ @@ -27620,26 +27613,7 @@ index af11129..e506d32 100644 movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax) shrl $16, %ecx movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax) -@@ -558,7 +650,7 @@ early_idt_handler_common: - cmpl $2,(%esp) # X86_TRAP_NMI - je .Lis_nmi # Ignore NMI - -- cmpl $2,%ss:early_recursion_flag -+ cmpl $1,%ss:early_recursion_flag - je hlt_loop - incl %ss:early_recursion_flag - -@@ -596,8 +688,8 @@ early_idt_handler_common: - pushl (20+6*4)(%esp) /* trapno */ - pushl $fault_msg - call printk --#endif - call dump_stack -+#endif - hlt_loop: - hlt - jmp hlt_loop -@@ -617,8 +709,11 @@ ENDPROC(early_idt_handler_common) +@@ -608,8 +700,11 @@ ENDPROC(early_idt_handler_common) /* This is the default interrupt "handler" :-) */ ALIGN ignore_int: @@ -27652,7 +27626,7 @@ index af11129..e506d32 100644 pushl %eax pushl %ecx pushl %edx -@@ -627,9 +722,6 @@ ignore_int: +@@ -618,9 +713,6 @@ ignore_int: movl $(__KERNEL_DS),%eax movl %eax,%ds movl %eax,%es @@ -27662,7 +27636,7 @@ index af11129..e506d32 100644 pushl 16(%esp) pushl 24(%esp) pushl 32(%esp) -@@ -660,11 +752,8 @@ ENTRY(initial_code) +@@ -655,11 +747,8 @@ ENTRY(initial_code) ENTRY(setup_once_ref) .long setup_once @@ -27676,7 +27650,7 @@ index af11129..e506d32 100644 #ifdef CONFIG_X86_PAE initial_pg_pmd: .fill 1024*KPMDS,4,0 -@@ -677,15 +766,18 @@ initial_pg_fixmap: +@@ -672,15 +761,18 @@ initial_pg_fixmap: ENTRY(empty_zero_page) .fill 4096,1,0 ENTRY(swapper_pg_dir) @@ -27699,7 +27673,7 @@ index af11129..e506d32 100644 ENTRY(initial_page_table) .long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ # if KPMDS == 3 -@@ -703,13 +795,21 @@ ENTRY(initial_page_table) +@@ -698,13 +790,21 @@ ENTRY(initial_page_table) # else # error "Kernel PMDs should be 1, 2 or 3" # endif @@ -27723,7 +27697,7 @@ index af11129..e506d32 100644 __INITRODATA int_msg: -@@ -737,7 +837,7 @@ fault_msg: +@@ -719,7 +819,7 @@ int_msg: * segment size, and 32-bit linear address value: */ @@ -27732,7 +27706,7 @@ index af11129..e506d32 100644 .globl boot_gdt_descr .globl idt_descr -@@ -746,7 +846,7 @@ fault_msg: +@@ -728,7 +828,7 @@ int_msg: .word 0 # 32 bit align gdt_desc.address boot_gdt_descr: .word __BOOT_DS+7 @@ -27741,7 +27715,7 @@ index af11129..e506d32 100644 .word 0 # 32-bit align idt_desc.address idt_descr: -@@ -757,7 +857,7 @@ idt_descr: +@@ -739,7 +839,7 @@ idt_descr: .word 0 # 32 bit align gdt_desc.address ENTRY(early_gdt_descr) .word GDT_ENTRIES*8-1 @@ -27750,7 +27724,7 @@ index af11129..e506d32 100644 /* * The boot_gdt must mirror the equivalent in setup.S and is -@@ -766,5 +866,65 @@ ENTRY(early_gdt_descr) +@@ -748,5 +848,65 @@ ENTRY(early_gdt_descr) .align L1_CACHE_BYTES ENTRY(boot_gdt) .fill GDT_ENTRY_BOOT_CS,8,0 @@ -27819,7 +27793,7 @@ index af11129..e506d32 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 22fbf9d..1137e22 100644 +index 5df831e..47801b0 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -20,6 +20,8 @@ @@ -27828,10 +27802,10 @@ index 22fbf9d..1137e22 100644 #include <asm/nops.h> +#include <asm/cpufeatures.h> +#include <asm/alternative-asm.h> + #include "../entry/calling.h" #ifdef CONFIG_PARAVIRT - #include <asm/asm-offsets.h> -@@ -40,6 +42,12 @@ +@@ -41,6 +43,12 @@ L4_PAGE_OFFSET = pgd_index(__PAGE_OFFSET) L4_START_KERNEL = pgd_index(__START_KERNEL_map) L3_START_KERNEL = pud_index(__START_KERNEL_map) @@ -27844,7 +27818,7 @@ index 22fbf9d..1137e22 100644 .text __HEAD -@@ -89,11 +97,36 @@ startup_64: +@@ -98,11 +106,36 @@ startup_64: * Fixup the physical addresses in the page table */ addq %rbp, early_level4_pgt + (L4_START_KERNEL*8)(%rip) @@ -27883,7 +27857,7 @@ index 22fbf9d..1137e22 100644 /* * Set up the identity mapping for the switchover. These -@@ -177,11 +210,12 @@ ENTRY(secondary_startup_64) +@@ -186,11 +219,12 @@ ENTRY(secondary_startup_64) /* Sanitize CPU configuration */ call verify_cpu @@ -27898,7 +27872,7 @@ index 22fbf9d..1137e22 100644 movq %rcx, %cr4 /* Setup early boot stage 4 level pagetables. */ -@@ -202,10 +236,24 @@ ENTRY(secondary_startup_64) +@@ -211,10 +245,24 @@ ENTRY(secondary_startup_64) movl $MSR_EFER, %ecx rdmsr btsl $_EFER_SCE, %eax /* Enable System Call */ @@ -27924,7 +27898,7 @@ index 22fbf9d..1137e22 100644 1: wrmsr /* Make changes effective */ /* Setup cr0 */ -@@ -285,6 +333,7 @@ ENTRY(secondary_startup_64) +@@ -294,6 +342,7 @@ ENTRY(secondary_startup_64) * REX.W + FF /5 JMP m16:64 Jump far, absolute indirect, * address given in m16:64. */ @@ -27932,7 +27906,7 @@ index 22fbf9d..1137e22 100644 movq initial_code(%rip),%rax pushq $0 # fake return address to stop unwinder pushq $__KERNEL_CS # set correct cs -@@ -318,7 +367,7 @@ ENDPROC(start_cpu0) +@@ -327,7 +376,7 @@ ENDPROC(start_cpu0) .quad INIT_PER_CPU_VAR(irq_stack_union) GLOBAL(stack_start) @@ -27941,24 +27915,7 @@ index 22fbf9d..1137e22 100644 .word 0 __FINITDATA -@@ -398,7 +447,7 @@ early_idt_handler_common: - call dump_stack - #ifdef CONFIG_KALLSYMS - leaq early_idt_ripmsg(%rip),%rdi -- movq 40(%rsp),%rsi # %rip again -+ movq 88(%rsp),%rsi # %rip again - call __print_symbol - #endif - #endif /* EARLY_PRINTK */ -@@ -427,6 +476,7 @@ ENDPROC(early_idt_handler_common) - early_recursion_flag: - .long 0 - -+ __READ_ONLY - #ifdef CONFIG_EARLY_PRINTK - early_idt_msg: - .asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n" -@@ -449,40 +499,70 @@ GLOBAL(name) +@@ -416,40 +465,70 @@ GLOBAL(name) __INITDATA NEXT_PAGE(early_level4_pgt) .fill 511,8,0 @@ -28041,7 +27998,7 @@ index 22fbf9d..1137e22 100644 NEXT_PAGE(level2_kernel_pgt) /* -@@ -499,31 +579,79 @@ NEXT_PAGE(level2_kernel_pgt) +@@ -466,31 +545,79 @@ NEXT_PAGE(level2_kernel_pgt) KERNEL_IMAGE_SIZE/PMD_SIZE) NEXT_PAGE(level2_fixmap_pgt) @@ -28294,7 +28251,7 @@ index 61521dc..5ce5a37 100644 } diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c -index 38da8f2..5653e36 100644 +index c627bf8..5653e36 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -23,6 +23,8 @@ @@ -28368,7 +28325,7 @@ index 38da8f2..5653e36 100644 return 1; } -@@ -109,32 +120,18 @@ static inline int execute_on_irq_stack(int overflow, struct irq_desc *desc) +@@ -109,23 +120,11 @@ static inline int execute_on_irq_stack(int overflow, struct irq_desc *desc) */ void irq_ctx_init(int cpu) { @@ -28394,16 +28351,7 @@ index 38da8f2..5653e36 100644 } void do_softirq_own_stack(void) - { -- struct thread_info *curstk; - struct irq_stack *irqstk; - u32 *isp, *prev_esp; - -- curstk = current_stack(); - irqstk = __this_cpu_read(softirq_stack); - - /* build the stack frame on the softirq stack */ -@@ -144,7 +141,16 @@ void do_softirq_own_stack(void) +@@ -142,7 +141,16 @@ void do_softirq_own_stack(void) prev_esp = (u32 *)irqstk; *prev_esp = current_stack_pointer(); @@ -28443,10 +28391,10 @@ index 206d0b9..ecb677c 100644 panic("low stack detected by irq handler - check messages\n"); #endif diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c -index e565e0e..fdfeb45 100644 +index fc25f69..d31d60c 100644 --- a/arch/x86/kernel/jump_label.c +++ b/arch/x86/kernel/jump_label.c -@@ -31,6 +31,8 @@ static void bug_at(unsigned char *ip, int line) +@@ -32,6 +32,8 @@ static void bug_at(unsigned char *ip, int line) * Something went wrong. Crash the box, as something could be * corrupting the kernel. */ @@ -28455,7 +28403,7 @@ index e565e0e..fdfeb45 100644 pr_warning("Unexpected op at %pS [%p] (%02x %02x %02x %02x %02x) %s:%d\n", ip, ip, ip[0], ip[1], ip[2], ip[3], ip[4], __FILE__, line); BUG(); -@@ -51,7 +53,7 @@ static void __jump_label_transform(struct jump_entry *entry, +@@ -52,7 +54,7 @@ static void __jump_label_transform(struct jump_entry *entry, * Jump label is enabled for the first time. * So we expect a default_nop... */ @@ -28464,7 +28412,7 @@ index e565e0e..fdfeb45 100644 != 0)) bug_at((void *)entry->code, __LINE__); } else { -@@ -59,7 +61,7 @@ static void __jump_label_transform(struct jump_entry *entry, +@@ -60,7 +62,7 @@ static void __jump_label_transform(struct jump_entry *entry, * ...otherwise expect an ideal_nop. Otherwise * something went horribly wrong. */ @@ -28473,7 +28421,7 @@ index e565e0e..fdfeb45 100644 != 0)) bug_at((void *)entry->code, __LINE__); } -@@ -75,13 +77,13 @@ static void __jump_label_transform(struct jump_entry *entry, +@@ -76,13 +78,13 @@ static void __jump_label_transform(struct jump_entry *entry, * are converting the default nop to the ideal nop. */ if (init) { @@ -28490,10 +28438,10 @@ index e565e0e..fdfeb45 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 2da6ee9..fc0ca78 100644 +index 04cde52..8b2900b 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c -@@ -228,7 +228,10 @@ static void kgdb_correct_hw_break(void) +@@ -229,7 +229,10 @@ static void kgdb_correct_hw_break(void) bp->attr.bp_addr = breakinfo[breakno].addr; bp->attr.bp_len = breakinfo[breakno].len; bp->attr.bp_type = breakinfo[breakno].type; @@ -28505,7 +28453,7 @@ index 2da6ee9..fc0ca78 100644 info->len = breakinfo[breakno].len; info->type = breakinfo[breakno].type; val = arch_install_hw_breakpoint(bp); -@@ -475,12 +478,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code, +@@ -476,12 +479,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code, case 'k': /* clear the trace bit */ linux_regs->flags &= ~X86_EFLAGS_TF; @@ -28520,7 +28468,7 @@ index 2da6ee9..fc0ca78 100644 raw_smp_processor_id()); } -@@ -550,7 +553,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd) +@@ -551,7 +554,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd) switch (cmd) { case DIE_DEBUG: @@ -28529,7 +28477,7 @@ index 2da6ee9..fc0ca78 100644 if (user_mode(regs)) return single_step_cont(regs, args); break; -@@ -753,11 +756,11 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) +@@ -754,11 +757,11 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) char opc[BREAK_INSTR_SIZE]; bpt->type = BP_BREAKPOINT; @@ -28543,7 +28491,7 @@ index 2da6ee9..fc0ca78 100644 arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE); if (!err) return err; -@@ -769,7 +772,7 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) +@@ -770,7 +773,7 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) return -EBUSY; text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE); @@ -28552,7 +28500,7 @@ index 2da6ee9..fc0ca78 100644 if (err) return err; if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE)) -@@ -793,13 +796,13 @@ int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt) +@@ -794,13 +797,13 @@ int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt) if (mutex_is_locked(&text_mutex)) goto knl_write; text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE); @@ -28569,10 +28517,10 @@ index 2da6ee9..fc0ca78 100644 } diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c -index 44bcd57..044428a 100644 +index 7847e5c..cec50fd 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c -@@ -121,9 +121,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op) +@@ -122,9 +122,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op) s32 raddr; } __packed *insn; @@ -28586,7 +28534,7 @@ index 44bcd57..044428a 100644 } /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/ -@@ -169,7 +172,7 @@ int can_boost(kprobe_opcode_t *opcodes) +@@ -170,7 +173,7 @@ int can_boost(kprobe_opcode_t *opcodes) kprobe_opcode_t opcode; kprobe_opcode_t *orig_opcodes = opcodes; @@ -28595,7 +28543,7 @@ index 44bcd57..044428a 100644 return 0; /* Page fault may occur on this address. */ retry: -@@ -261,12 +264,12 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr) +@@ -262,12 +265,12 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr) * Fortunately, we know that the original code is the ideal 5-byte * long NOP. */ @@ -28610,7 +28558,7 @@ index 44bcd57..044428a 100644 } /* -@@ -368,7 +371,9 @@ int __copy_instruction(u8 *dest, u8 *src) +@@ -369,7 +372,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; @@ -28620,7 +28568,7 @@ index 44bcd57..044428a 100644 #ifdef CONFIG_X86_64 if (insn_rip_relative(&insn)) { -@@ -395,7 +400,9 @@ int __copy_instruction(u8 *dest, u8 *src) +@@ -396,7 +401,9 @@ int __copy_instruction(u8 *dest, u8 *src) return 0; } disp = (u8 *) dest + insn_offset_displacement(&insn); @@ -28630,7 +28578,7 @@ index 44bcd57..044428a 100644 } #endif return length; -@@ -537,7 +544,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, +@@ -538,7 +545,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, * nor set current_kprobe, because it doesn't use single * stepping. */ @@ -28639,7 +28587,7 @@ index 44bcd57..044428a 100644 preempt_enable_no_resched(); return; } -@@ -554,9 +561,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, +@@ -555,9 +562,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) @@ -28651,7 +28599,7 @@ index 44bcd57..044428a 100644 } NOKPROBE_SYMBOL(setup_singlestep); -@@ -641,7 +648,7 @@ int kprobe_int3_handler(struct pt_regs *regs) +@@ -642,7 +649,7 @@ int kprobe_int3_handler(struct pt_regs *regs) setup_singlestep(p, regs, kcb, 0); return 1; } @@ -28660,7 +28608,7 @@ index 44bcd57..044428a 100644 /* * The breakpoint instruction was removed right * after we hit it. Another cpu has removed -@@ -687,6 +694,9 @@ asm( +@@ -688,6 +695,9 @@ asm( " movq %rax, 152(%rsp)\n" RESTORE_REGS_STRING " popfq\n" @@ -28670,7 +28618,7 @@ index 44bcd57..044428a 100644 #else " pushf\n" SAVE_REGS_STRING -@@ -828,7 +838,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs, +@@ -829,7 +839,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb) { unsigned long *tos = stack_addr(regs); @@ -28680,10 +28628,10 @@ index 44bcd57..044428a 100644 kprobe_opcode_t *insn = p->ainsn.insn; diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c -index 7b3b9d1..e2478b91 100644 +index 4425f59..34a112f 100644 --- a/arch/x86/kernel/kprobes/opt.c +++ b/arch/x86/kernel/kprobes/opt.c -@@ -79,6 +79,7 @@ found: +@@ -80,6 +80,7 @@ found: /* Insert a move instruction which sets a pointer to eax/rdi (1st arg). */ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val) { @@ -28691,7 +28639,7 @@ index 7b3b9d1..e2478b91 100644 #ifdef CONFIG_X86_64 *addr++ = 0x48; *addr++ = 0xbf; -@@ -86,6 +87,7 @@ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val) +@@ -87,6 +88,7 @@ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val) *addr++ = 0xb8; #endif *(unsigned long *)addr = val; @@ -28699,7 +28647,7 @@ index 7b3b9d1..e2478b91 100644 } asm ( -@@ -342,7 +344,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, +@@ -343,7 +345,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, * Verify if the address gap is in 2GB range, because this uses * a relative jump. */ @@ -28708,13 +28656,13 @@ index 7b3b9d1..e2478b91 100644 if (abs(rel) > 0x7fffffff) { __arch_remove_optimized_kprobe(op, 0); return -ERANGE; -@@ -359,16 +361,18 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, +@@ -360,16 +362,18 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, op->optinsn.size = ret; /* Copy arch-dep-instance from template */ - memcpy(buf, &optprobe_template_entry, TMPL_END_IDX); + pax_open_kernel(); -+ memcpy(buf, ktla_ktva(&optprobe_template_entry), TMPL_END_IDX); ++ memcpy(buf, (u8 *)ktla_ktva((unsigned long)&optprobe_template_entry), TMPL_END_IDX); + pax_close_kernel(); /* Set probe information */ @@ -28722,24 +28670,24 @@ index 7b3b9d1..e2478b91 100644 /* Set probe function call */ - synthesize_relcall(buf + TMPL_CALL_IDX, optimized_callback); -+ synthesize_relcall(ktva_ktla(buf) + TMPL_CALL_IDX, optimized_callback); ++ synthesize_relcall((u8 *)ktva_ktla((unsigned long)buf) + TMPL_CALL_IDX, optimized_callback); /* Set returning jmp instruction at the tail of out-of-line buffer */ - synthesize_reljump(buf + TMPL_END_IDX + op->optinsn.size, -+ synthesize_reljump(ktva_ktla(buf) + TMPL_END_IDX + op->optinsn.size, ++ synthesize_reljump((u8 *)ktva_ktla((unsigned long)buf) + TMPL_END_IDX + op->optinsn.size, (u8 *)op->kp.addr + op->optinsn.size); flush_icache_range((unsigned long) buf, -@@ -393,7 +397,7 @@ void arch_optimize_kprobes(struct list_head *oplist) +@@ -394,7 +398,7 @@ void arch_optimize_kprobes(struct list_head *oplist) WARN_ON(kprobe_disabled(&op->kp)); /* Backup instructions which will be replaced by jump address */ - memcpy(op->optinsn.copied_insn, op->kp.addr + INT3_SIZE, -+ memcpy(op->optinsn.copied_insn, ktla_ktva(op->kp.addr) + INT3_SIZE, ++ memcpy(op->optinsn.copied_insn, (u8 *)ktla_ktva((unsigned long)op->kp.addr) + INT3_SIZE, RELATIVE_ADDR_SIZE); insn_buf[0] = RELATIVEJUMP_OPCODE; -@@ -441,7 +445,7 @@ int setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter) +@@ -442,7 +446,7 @@ int setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter) /* This kprobe is really able to run optimized path. */ op = container_of(p, struct optimized_kprobe, kp); /* Detour through copied instructions */ @@ -28762,10 +28710,10 @@ index c2bedae..25e7ab60 100644 .name = "data", .mode = S_IRUGO, diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c -index 8079508..b34be72 100644 +index eea2a6f..4e97ff3 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c -@@ -554,7 +554,7 @@ static uint32_t __init kvm_detect(void) +@@ -546,7 +546,7 @@ static uint32_t __init kvm_detect(void) return kvm_cpuid_base(); } @@ -28930,33 +28878,6 @@ index 6707039..254f32c 100644 switch (func) { case 0: ret = read_ldt(ptr, bytecount); -diff --git a/arch/x86/kernel/livepatch.c b/arch/x86/kernel/livepatch.c -index 92fc1a5..478b427 100644 ---- a/arch/x86/kernel/livepatch.c -+++ b/arch/x86/kernel/livepatch.c -@@ -38,8 +38,10 @@ int klp_write_module_reloc(struct module *mod, unsigned long type, - { - size_t size = 4; - unsigned long val; -- unsigned long core = (unsigned long)mod->core_layout.base; -- unsigned long core_size = mod->core_layout.size; -+ unsigned long core_rx = (unsigned long)mod->core_layout.base_rx; -+ unsigned long core_rw = (unsigned long)mod->core_layout.base_rw; -+ unsigned long core_size_rx = mod->core_layout.size_rx; -+ unsigned long core_size_rw = mod->core_layout.size_rw; - - switch (type) { - case R_X86_64_NONE: -@@ -62,7 +64,8 @@ int klp_write_module_reloc(struct module *mod, unsigned long type, - return -EINVAL; - } - -- if (loc < core || loc >= core + core_size) -+ if ((loc < core_rx || loc >= core_rx + core_size_rx) && -+ (loc < core_rw || loc >= core_rw + core_size_rw)) - /* loc does not point to any symbol inside the module */ - return -EINVAL; - diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c index 469b23d..5449cfe 100644 --- a/arch/x86/kernel/machine_kexec_32.c @@ -28989,7 +28910,7 @@ index 469b23d..5449cfe 100644 relocate_kernel_ptr = control_page; page_list[PA_CONTROL_PAGE] = __pa(control_page); diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S -index ed48a9f..23a6a8f 100644 +index 61924222..0e4856e 100644 --- a/arch/x86/kernel/mcount_64.S +++ b/arch/x86/kernel/mcount_64.S @@ -7,7 +7,7 @@ @@ -29012,12 +28933,12 @@ index ed48a9f..23a6a8f 100644 ENTRY(ftrace_caller) /* save_mcount_regs fills in first two parameters */ -@@ -182,9 +183,10 @@ GLOBAL(ftrace_graph_call) - jmp ftrace_stub +@@ -183,9 +184,10 @@ GLOBAL(ftrace_graph_call) #endif --GLOBAL(ftrace_stub) -+RAP_ENTRY(ftrace_stub) + /* This is weak to keep gas from relaxing the jumps */ +-WEAK(ftrace_stub) ++RAP_WEAK(ftrace_stub) + pax_force_retaddr retq -END(ftrace_caller) @@ -29025,7 +28946,7 @@ index ed48a9f..23a6a8f 100644 ENTRY(ftrace_regs_caller) /* Save the current flags before any operations that can change them */ -@@ -255,7 +257,7 @@ GLOBAL(ftrace_regs_caller_end) +@@ -256,7 +258,7 @@ GLOBAL(ftrace_regs_caller_end) jmp ftrace_epilogue @@ -29034,7 +28955,7 @@ index ed48a9f..23a6a8f 100644 #else /* ! CONFIG_DYNAMIC_FTRACE */ -@@ -274,6 +276,7 @@ fgraph_trace: +@@ -275,6 +277,7 @@ fgraph_trace: #endif GLOBAL(ftrace_stub) @@ -29042,7 +28963,7 @@ index ed48a9f..23a6a8f 100644 retq trace: -@@ -286,12 +289,13 @@ trace: +@@ -287,12 +290,13 @@ trace: * ip and parent ip are used and the list function is called when * function tracing is enabled. */ @@ -29057,7 +28978,7 @@ index ed48a9f..23a6a8f 100644 #endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_TRACER */ -@@ -313,8 +317,9 @@ ENTRY(ftrace_graph_caller) +@@ -314,8 +318,9 @@ ENTRY(ftrace_graph_caller) restore_mcount_regs @@ -29068,7 +28989,7 @@ index ed48a9f..23a6a8f 100644 GLOBAL(return_to_handler) subq $24, %rsp -@@ -330,5 +335,7 @@ GLOBAL(return_to_handler) +@@ -331,5 +336,7 @@ GLOBAL(return_to_handler) movq 8(%rsp), %rdx movq (%rsp), %rax addq $24, %rsp @@ -29077,10 +28998,10 @@ index ed48a9f..23a6a8f 100644 +ENDPROC(return_to_handler) #endif diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c -index 005c03e..7000fe4 100644 +index 477ae80..c8e40a3 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c -@@ -75,17 +75,17 @@ static unsigned long int get_module_load_offset(void) +@@ -76,17 +76,17 @@ static unsigned long int get_module_load_offset(void) } #endif @@ -29102,7 +29023,7 @@ index 005c03e..7000fe4 100644 __builtin_return_address(0)); if (p && (kasan_module_alloc(p, size) < 0)) { vfree(p); -@@ -95,6 +95,51 @@ void *module_alloc(unsigned long size) +@@ -96,6 +96,51 @@ void *module_alloc(unsigned long size) return p; } @@ -29154,7 +29075,7 @@ index 005c03e..7000fe4 100644 #ifdef CONFIG_X86_32 int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, -@@ -105,14 +150,16 @@ int apply_relocate(Elf32_Shdr *sechdrs, +@@ -106,14 +151,16 @@ int apply_relocate(Elf32_Shdr *sechdrs, unsigned int i; Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr; Elf32_Sym *sym; @@ -29174,7 +29095,7 @@ index 005c03e..7000fe4 100644 /* This is the symbol it is referring to. Note that all undefined symbols have been resolved. */ sym = (Elf32_Sym *)sechdrs[symindex].sh_addr -@@ -121,11 +168,15 @@ int apply_relocate(Elf32_Shdr *sechdrs, +@@ -122,11 +169,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 */ @@ -29192,7 +29113,7 @@ index 005c03e..7000fe4 100644 break; default: pr_err("%s: Unknown relocation: %u\n", -@@ -170,21 +221,30 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, +@@ -171,21 +222,30 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, case R_X86_64_NONE: break; case R_X86_64_64: @@ -29430,7 +29351,7 @@ index 33ee3e0..6d23e5c 100644 #endif /* SMP */ }; diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c -index f08ac28..4599189 100644 +index 7b3b3f2..68b5f72 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -64,6 +64,9 @@ u64 _paravirt_ident_64(u64 x) @@ -29483,9 +29404,9 @@ index f08ac28..4599189 100644 -struct pv_info pv_info = { +struct pv_info pv_info __read_only = { .name = "bare hardware", - .paravirt_enabled = 0, .kernel_rpl = 0, -@@ -303,16 +310,16 @@ struct pv_info pv_info = { + .shared_kernel_pmd = 1, /* Only used when CONFIG_X86_PAE is set */ +@@ -302,16 +309,16 @@ struct pv_info pv_info = { #endif }; @@ -29505,7 +29426,7 @@ index f08ac28..4599189 100644 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl), .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl), .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable), -@@ -324,7 +331,23 @@ __visible struct pv_irq_ops pv_irq_ops = { +@@ -323,7 +330,23 @@ __visible struct pv_irq_ops pv_irq_ops = { #endif }; @@ -29530,7 +29451,7 @@ index f08ac28..4599189 100644 .cpuid = native_cpuid, .get_debugreg = native_get_debugreg, .set_debugreg = native_set_debugreg, -@@ -356,8 +379,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { +@@ -357,8 +380,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { .write_gdt_entry = native_write_gdt_entry, .write_idt_entry = native_write_idt_entry, @@ -29541,7 +29462,7 @@ index f08ac28..4599189 100644 .load_sp0 = native_load_sp0, -@@ -370,8 +393,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { +@@ -371,8 +394,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { .set_iopl_mask = native_set_iopl_mask, .io_delay = native_io_delay, @@ -29552,7 +29473,7 @@ index f08ac28..4599189 100644 }; /* At this point, native_get/set_debugreg has real function entries */ -@@ -379,15 +402,64 @@ NOKPROBE_SYMBOL(native_get_debugreg); +@@ -380,15 +403,64 @@ NOKPROBE_SYMBOL(native_get_debugreg); NOKPROBE_SYMBOL(native_set_debugreg); NOKPROBE_SYMBOL(native_load_idt); @@ -29619,7 +29540,7 @@ index f08ac28..4599189 100644 .read_cr2 = native_read_cr2, .write_cr2 = native_write_cr2, -@@ -400,20 +472,20 @@ struct pv_mmu_ops pv_mmu_ops = { +@@ -401,20 +473,20 @@ struct pv_mmu_ops pv_mmu_ops = { .flush_tlb_others = native_flush_tlb_others, .pgd_alloc = __paravirt_pgd_alloc, @@ -29648,7 +29569,7 @@ index f08ac28..4599189 100644 .ptep_modify_prot_start = __ptep_modify_prot_start, .ptep_modify_prot_commit = __ptep_modify_prot_commit, -@@ -434,6 +506,7 @@ struct pv_mmu_ops pv_mmu_ops = { +@@ -435,6 +507,7 @@ struct pv_mmu_ops pv_mmu_ops = { .make_pud = PTE_IDENT, .set_pgd = native_set_pgd, @@ -29656,7 +29577,7 @@ index f08ac28..4599189 100644 #endif #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ -@@ -443,9 +516,9 @@ struct pv_mmu_ops pv_mmu_ops = { +@@ -444,9 +517,9 @@ struct pv_mmu_ops pv_mmu_ops = { .make_pte = PTE_IDENT, .make_pgd = PTE_IDENT, @@ -29669,7 +29590,7 @@ index f08ac28..4599189 100644 .lazy_mode = { .enter = paravirt_nop, -@@ -454,6 +527,12 @@ struct pv_mmu_ops pv_mmu_ops = { +@@ -455,6 +528,12 @@ struct pv_mmu_ops pv_mmu_ops = { }, .set_fixmap = native_set_fixmap, @@ -29724,7 +29645,7 @@ index 833b1d3..f839e8b 100644 } } diff --git a/arch/x86/kernel/pci-iommu_table.c b/arch/x86/kernel/pci-iommu_table.c -index 35ccf75..7a15747 100644 +index f712dfd..0172a75 100644 --- a/arch/x86/kernel/pci-iommu_table.c +++ b/arch/x86/kernel/pci-iommu_table.c @@ -2,7 +2,7 @@ @@ -29750,7 +29671,7 @@ index 7c577a1..3557b10 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 2915d54..8e43324 100644 +index 96becbb..a18444b 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -15,6 +15,7 @@ @@ -29820,7 +29741,7 @@ index 2915d54..8e43324 100644 /* * Free current thread data structures etc.. */ -@@ -105,7 +127,7 @@ void exit_thread(void) +@@ -104,7 +126,7 @@ void exit_thread(struct task_struct *tsk) struct fpu *fpu = &t->fpu; if (bp) { @@ -29829,7 +29750,7 @@ index 2915d54..8e43324 100644 t->io_bitmap_ptr = NULL; clear_thread_flag(TIF_IO_BITMAP); -@@ -127,6 +149,9 @@ void flush_thread(void) +@@ -126,6 +148,9 @@ void flush_thread(void) { struct task_struct *tsk = current; @@ -29839,7 +29760,7 @@ index 2915d54..8e43324 100644 flush_ptrace_hw_breakpoint(tsk); memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); -@@ -268,7 +293,7 @@ static void __exit_idle(void) +@@ -267,7 +292,7 @@ static void __exit_idle(void) void exit_idle(void) { /* idle loop has pid 0 */ @@ -29848,7 +29769,7 @@ index 2915d54..8e43324 100644 return; __exit_idle(); } -@@ -321,7 +346,7 @@ bool xen_set_default_idle(void) +@@ -320,7 +345,7 @@ bool xen_set_default_idle(void) return ret; } #endif @@ -29857,7 +29778,7 @@ index 2915d54..8e43324 100644 { local_irq_disable(); /* -@@ -499,13 +524,6 @@ static int __init idle_setup(char *str) +@@ -498,13 +523,6 @@ static int __init idle_setup(char *str) } early_param("idle", idle_setup); @@ -29871,7 +29792,7 @@ index 2915d54..8e43324 100644 unsigned long arch_randomize_brk(struct mm_struct *mm) { unsigned long range_end = mm->brk + 0x02000000; -@@ -537,9 +555,7 @@ unsigned long get_wchan(struct task_struct *p) +@@ -536,9 +554,7 @@ unsigned long get_wchan(struct task_struct *p) * PADDING * ----------- top = topmax - TOP_OF_KERNEL_STACK_PADDING * stack @@ -29882,7 +29803,7 @@ index 2915d54..8e43324 100644 * * The tasks stack pointer points at the location where the * framepointer is stored. The data on the stack is: -@@ -550,7 +566,7 @@ unsigned long get_wchan(struct task_struct *p) +@@ -549,7 +565,7 @@ unsigned long get_wchan(struct task_struct *p) */ top = start + THREAD_SIZE - TOP_OF_KERNEL_STACK_PADDING; top -= 2 * sizeof(unsigned long); @@ -29891,7 +29812,7 @@ index 2915d54..8e43324 100644 sp = READ_ONCE(p->thread.sp); if (sp < bottom || sp > top) -@@ -567,3 +583,35 @@ unsigned long get_wchan(struct task_struct *p) +@@ -566,3 +582,35 @@ unsigned long get_wchan(struct task_struct *p) } while (count++ < 16 && p->state != TASK_RUNNING); return 0; } @@ -30027,10 +29948,10 @@ index 9f95091..6885108 100644 return prev_p; } diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c -index 6cbab31..2fd4ca3 100644 +index 6e789ca..7c4bae4 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c -@@ -162,9 +162,10 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp, +@@ -143,9 +143,10 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp, struct pt_regs *childregs; struct task_struct *me = current; @@ -30042,8 +29963,8 @@ index 6cbab31..2fd4ca3 100644 set_tsk_thread_flag(p, TIF_FORK); p->thread.io_bitmap_ptr = NULL; -@@ -174,6 +175,8 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp, - p->thread.fs = p->thread.fsindex ? 0 : me->thread.fs; +@@ -155,6 +156,8 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp, + p->thread.fsbase = p->thread.fsindex ? 0 : me->thread.fsbase; savesegment(es, p->thread.es); savesegment(ds, p->thread.ds); + savesegment(ss, p->thread.ss); @@ -30051,16 +29972,16 @@ index 6cbab31..2fd4ca3 100644 memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); if (unlikely(p->flags & PF_KTHREAD)) { -@@ -281,7 +284,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -262,7 +265,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) struct fpu *prev_fpu = &prev->fpu; struct fpu *next_fpu = &next->fpu; int cpu = smp_processor_id(); - struct tss_struct *tss = &per_cpu(cpu_tss, cpu); + struct tss_struct *tss = cpu_tss + cpu; - unsigned fsindex, gsindex; + unsigned prev_fsindex, prev_gsindex; fpu_switch_t fpu_switch; -@@ -332,6 +335,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -313,6 +316,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) if (unlikely(next->ds | prev->ds)) loadsegment(ds, next->ds); @@ -30071,7 +29992,7 @@ index 6cbab31..2fd4ca3 100644 /* * Switch FS and GS. * -@@ -403,10 +410,13 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -422,10 +429,13 @@ __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); @@ -30086,7 +30007,7 @@ index 6cbab31..2fd4ca3 100644 * Now maybe reload the debug registers and handle I/O bitmaps */ diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c -index 32e9d9c..afd5732 100644 +index 600edd2..d514c66 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -169,10 +169,10 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) @@ -30102,8 +30023,8 @@ index 32e9d9c..afd5732 100644 if (prev_esp) return (unsigned long)prev_esp; -@@ -429,6 +429,20 @@ static int putreg(struct task_struct *child, - if (child->thread.gs != value) +@@ -411,6 +411,20 @@ static int putreg(struct task_struct *child, + if (child->thread.gsbase != value) return do_arch_prctl(child, ARCH_SET_GS, value); return 0; + @@ -30123,7 +30044,7 @@ index 32e9d9c..afd5732 100644 #endif } -@@ -565,7 +579,7 @@ static void ptrace_triggered(struct perf_event *bp, +@@ -533,7 +547,7 @@ static void ptrace_triggered(struct perf_event *bp, static unsigned long ptrace_get_dr7(struct perf_event *bp[]) { int i; @@ -30132,7 +30053,7 @@ index 32e9d9c..afd5732 100644 struct arch_hw_breakpoint *info; for (i = 0; i < HBP_NUM; i++) { -@@ -799,7 +813,7 @@ long arch_ptrace(struct task_struct *child, long request, +@@ -767,7 +781,7 @@ long arch_ptrace(struct task_struct *child, long request, unsigned long addr, unsigned long data) { int ret; @@ -30141,7 +30062,7 @@ index 32e9d9c..afd5732 100644 switch (request) { /* read the word at location addr in the USER area. */ -@@ -884,14 +898,14 @@ long arch_ptrace(struct task_struct *child, long request, +@@ -852,14 +866,14 @@ long arch_ptrace(struct task_struct *child, long request, if ((int) addr < 0) return -EIO; ret = do_get_thread_area(child, addr, @@ -30158,7 +30079,7 @@ index 32e9d9c..afd5732 100644 break; #endif -@@ -1279,7 +1293,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, +@@ -1247,7 +1261,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, #ifdef CONFIG_X86_64 @@ -30167,7 +30088,7 @@ index 32e9d9c..afd5732 100644 [REGSET_GENERAL] = { .core_note_type = NT_PRSTATUS, .n = sizeof(struct user_regs_struct) / sizeof(long), -@@ -1320,7 +1334,7 @@ static const struct user_regset_view user_x86_64_view = { +@@ -1288,7 +1302,7 @@ static const struct user_regset_view user_x86_64_view = { #endif /* CONFIG_X86_64 */ #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION @@ -30176,7 +30097,7 @@ index 32e9d9c..afd5732 100644 [REGSET_GENERAL] = { .core_note_type = NT_PRSTATUS, .n = sizeof(struct user_regs_struct32) / sizeof(u32), -@@ -1373,7 +1387,7 @@ static const struct user_regset_view user_x86_32_view = { +@@ -1341,7 +1355,7 @@ static const struct user_regset_view user_x86_32_view = { */ u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; @@ -30185,7 +30106,7 @@ index 32e9d9c..afd5732 100644 { #ifdef CONFIG_X86_64 x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64); -@@ -1408,7 +1422,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, +@@ -1376,7 +1390,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, memset(info, 0, sizeof(*info)); info->si_signo = SIGTRAP; info->si_code = si_code; @@ -30195,7 +30116,7 @@ index 32e9d9c..afd5732 100644 void user_single_step_siginfo(struct task_struct *tsk, diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c -index 99bfc02..c85b4c4 100644 +index 06c58ce..8f89e99 100644 --- a/arch/x86/kernel/pvclock.c +++ b/arch/x86/kernel/pvclock.c @@ -51,11 +51,11 @@ void pvclock_touch_watchdogs(void) @@ -30212,7 +30133,7 @@ index 99bfc02..c85b4c4 100644 } u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) -@@ -105,11 +105,11 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) +@@ -112,11 +112,11 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) * updating at the same time, and one of them could be slightly behind, * making the assumption that last_value always go forward fail to hold. */ @@ -30227,7 +30148,7 @@ index 99bfc02..c85b4c4 100644 return ret; diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c -index ab0adc0..502dfc2 100644 +index a9b31eb..71706d1 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c @@ -70,6 +70,11 @@ static int __init set_bios_reboot(const struct dmi_system_id *d) @@ -30291,7 +30212,7 @@ index ab0adc0..502dfc2 100644 { int i; int attempt = 0; -@@ -639,13 +666,13 @@ void native_machine_shutdown(void) +@@ -648,13 +675,13 @@ void native_machine_shutdown(void) #endif } @@ -30307,7 +30228,7 @@ index ab0adc0..502dfc2 100644 { pr_notice("machine restart\n"); -@@ -654,7 +681,7 @@ static void native_machine_restart(char *__unused) +@@ -663,7 +690,7 @@ static void native_machine_restart(char *__unused) __machine_emergency_restart(0); } @@ -30316,7 +30237,7 @@ index ab0adc0..502dfc2 100644 { /* Stop other cpus and apics */ machine_shutdown(); -@@ -664,7 +691,7 @@ static void native_machine_halt(void) +@@ -673,7 +700,7 @@ static void native_machine_halt(void) stop_this_cpu(NULL); } @@ -30325,7 +30246,7 @@ index ab0adc0..502dfc2 100644 { if (pm_power_off) { if (!reboot_force) -@@ -673,9 +700,10 @@ static void native_machine_power_off(void) +@@ -682,9 +709,10 @@ static void native_machine_power_off(void) } /* A fallback in case there is no PM info available */ tboot_shutdown(TB_SHUTDOWN_HALT); @@ -30365,7 +30286,7 @@ index 98111b3..73ca125 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 2367ae0..2d1264d 100644 +index c4e7b39..429c9b9 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -113,6 +113,7 @@ @@ -30392,7 +30313,7 @@ index 2367ae0..2d1264d 100644 #endif /* Boot loader ID and version as integers, for the benefit of proc_dointvec */ -@@ -759,7 +762,7 @@ static void __init trim_bios_range(void) +@@ -767,7 +770,7 @@ static void __init trim_bios_range(void) * area (640->1Mb) as ram even though it is not. * take them out. */ @@ -30401,7 +30322,7 @@ index 2367ae0..2d1264d 100644 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } -@@ -767,7 +770,7 @@ static void __init trim_bios_range(void) +@@ -775,7 +778,7 @@ static void __init trim_bios_range(void) /* called before trim_bios_range() to spare extra sanitize */ static void __init e820_add_kernel_range(void) { @@ -30410,7 +30331,7 @@ index 2367ae0..2d1264d 100644 u64 size = __pa_symbol(_end) - start; /* -@@ -848,8 +851,8 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) +@@ -856,8 +859,8 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) void __init setup_arch(char **cmdline_p) { @@ -30421,7 +30342,7 @@ index 2367ae0..2d1264d 100644 early_reserve_initrd(); -@@ -942,16 +945,16 @@ void __init setup_arch(char **cmdline_p) +@@ -950,16 +953,16 @@ void __init setup_arch(char **cmdline_p) if (!boot_params.hdr.root_flags) root_mountflags &= ~MS_RDONLY; @@ -30521,7 +30442,7 @@ 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 548ddf7..9b53e78 100644 +index 22cc2f9..249765f 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c @@ -226,7 +226,7 @@ static unsigned long align_sigframe(unsigned long sp) @@ -30533,7 +30454,7 @@ index 548ddf7..9b53e78 100644 #else /* !CONFIG_X86_32 */ sp = round_down(sp, 16) - 8; #endif -@@ -335,10 +335,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, +@@ -334,10 +334,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, } if (current->mm->context.vdso) @@ -30546,7 +30467,7 @@ index 548ddf7..9b53e78 100644 if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = ksig->ka.sa.sa_restorer; -@@ -352,7 +351,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, +@@ -351,7 +350,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. */ @@ -30555,7 +30476,7 @@ index 548ddf7..9b53e78 100644 if (err) return -EFAULT; -@@ -399,8 +398,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, +@@ -398,8 +397,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. */ @@ -30568,7 +30489,7 @@ index 548ddf7..9b53e78 100644 if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = ksig->ka.sa.sa_restorer; put_user_ex(restorer, &frame->pretcode); -@@ -412,7 +413,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, +@@ -411,7 +412,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. */ @@ -30577,7 +30498,7 @@ index 548ddf7..9b53e78 100644 } put_user_catch(err); err |= copy_siginfo_to_user(&frame->info, &ksig->info); -@@ -682,7 +683,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) +@@ -681,7 +682,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) { int usig = ksig->sig; sigset_t *set = sigmask_to_save(); @@ -30591,7 +30512,7 @@ index 548ddf7..9b53e78 100644 /* Set up the stack frame */ if (is_ia32_frame()) { -@@ -693,7 +699,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) +@@ -692,7 +698,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 { @@ -30614,7 +30535,7 @@ index 658777c..6285f88 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 0e4329e..286c7ca 100644 +index fafe8b9..d6ee9af 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -221,14 +221,17 @@ static void notrace start_secondary(void *unused) @@ -31009,7 +30930,7 @@ index 10e0272..a73232f 100644 if (!(addr & ~PAGE_MASK)) return addr; diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c -index e72a07f..b67cc32 100644 +index 9b0185f..7776af1 100644 --- a/arch/x86/kernel/tboot.c +++ b/arch/x86/kernel/tboot.c @@ -44,6 +44,7 @@ @@ -31020,7 +30941,7 @@ index e72a07f..b67cc32 100644 #include "../realmode/rm/wakeup.h" -@@ -151,6 +152,10 @@ static int map_tboot_pages(unsigned long vaddr, unsigned long start_pfn, +@@ -145,6 +146,10 @@ static int map_tboot_pages(unsigned long vaddr, unsigned long start_pfn, if (!tboot_pg_dir) return -1; @@ -31031,7 +30952,7 @@ index e72a07f..b67cc32 100644 for (; nr > 0; nr--, vaddr += PAGE_SIZE, start_pfn++) { if (map_tboot_page(vaddr, start_pfn, PAGE_KERNEL_EXEC)) return -1; -@@ -221,8 +226,6 @@ static int tboot_setup_sleep(void) +@@ -215,8 +220,6 @@ static int tboot_setup_sleep(void) void tboot_shutdown(u32 shutdown_type) { @@ -31040,7 +30961,7 @@ index e72a07f..b67cc32 100644 if (!tboot_enabled()) return; -@@ -242,9 +245,12 @@ void tboot_shutdown(u32 shutdown_type) +@@ -236,9 +239,12 @@ void tboot_shutdown(u32 shutdown_type) tboot->shutdown_type = shutdown_type; switch_to_tboot_pt(); @@ -31055,7 +30976,7 @@ index e72a07f..b67cc32 100644 /* should not reach here */ while (1) -@@ -310,7 +316,7 @@ static int tboot_extended_sleep(u8 sleep_state, u32 val_a, u32 val_b) +@@ -304,7 +310,7 @@ static int tboot_extended_sleep(u8 sleep_state, u32 val_a, u32 val_b) return -ENODEV; } @@ -31064,7 +30985,7 @@ index e72a07f..b67cc32 100644 static int tboot_wait_for_aps(int num_aps) { -@@ -334,9 +340,9 @@ static int tboot_cpu_callback(struct notifier_block *nfb, unsigned long action, +@@ -328,9 +334,9 @@ static int tboot_cpu_callback(struct notifier_block *nfb, unsigned long action, { switch (action) { case CPU_DYING: @@ -31076,7 +30997,7 @@ index e72a07f..b67cc32 100644 return NOTIFY_BAD; break; } -@@ -422,7 +428,7 @@ static __init int tboot_late_init(void) +@@ -416,7 +422,7 @@ static __init int tboot_late_init(void) tboot_create_trampoline(); @@ -31117,10 +31038,10 @@ index d39c091..1df4349 100644 return pc; } diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c -index 7fc5e84..c6e445a 100644 +index 9692a5e..aea9fa5 100644 --- a/arch/x86/kernel/tls.c +++ b/arch/x86/kernel/tls.c -@@ -139,6 +139,11 @@ int do_set_thread_area(struct task_struct *p, int idx, +@@ -140,6 +140,11 @@ int do_set_thread_area(struct task_struct *p, int idx, if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) return -EINVAL; @@ -31131,8 +31052,8 @@ index 7fc5e84..c6e445a 100644 + set_tls_desc(p, idx, &info, 1); - return 0; -@@ -256,7 +261,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, + /* +@@ -298,7 +303,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, if (kbuf) info = kbuf; @@ -31160,10 +31081,10 @@ 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 87bd6b6..8f46fc9 100644 +index 00f03d8..94ee9fc 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c -@@ -70,7 +70,7 @@ +@@ -71,7 +71,7 @@ #include <asm/proto.h> /* No need to be aligned, but done to keep all IDTs defined the same way. */ @@ -31172,7 +31093,7 @@ index 87bd6b6..8f46fc9 100644 #else #include <asm/processor-flags.h> #include <asm/setup.h> -@@ -78,7 +78,7 @@ gate_desc debug_idt_table[NR_VECTORS] __page_aligned_bss; +@@ -79,7 +79,7 @@ gate_desc debug_idt_table[NR_VECTORS] __page_aligned_bss; #endif /* Must be page-aligned because the real IDT is used in a fixmap. */ @@ -31181,16 +31102,7 @@ index 87bd6b6..8f46fc9 100644 DECLARE_BITMAP(used_vectors, NR_VECTORS); EXPORT_SYMBOL_GPL(used_vectors); -@@ -151,7 +151,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); - - preempt_enable_no_resched(); -@@ -168,7 +168,7 @@ void ist_end_non_atomic(void) +@@ -169,7 +169,7 @@ void ist_end_non_atomic(void) } static nokprobe_inline int @@ -31199,7 +31111,7 @@ index 87bd6b6..8f46fc9 100644 struct pt_regs *regs, long error_code) { if (v8086_mode(regs)) { -@@ -188,8 +188,25 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str, +@@ -189,8 +189,25 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str, if (!fixup_exception(regs, trapnr)) { tsk->thread.error_code = error_code; tsk->thread.trap_nr = trapnr; @@ -31225,7 +31137,7 @@ index 87bd6b6..8f46fc9 100644 return 0; } -@@ -228,7 +245,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr, +@@ -229,7 +246,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr, } static void @@ -31234,7 +31146,7 @@ index 87bd6b6..8f46fc9 100644 long error_code, siginfo_t *info) { struct task_struct *tsk = current; -@@ -251,7 +268,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs, +@@ -252,7 +269,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", @@ -31243,7 +31155,7 @@ index 87bd6b6..8f46fc9 100644 regs->ip, regs->sp, error_code); print_vma_addr(" in ", regs->ip); pr_cont("\n"); -@@ -331,6 +348,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) +@@ -332,6 +349,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; @@ -31255,7 +31167,7 @@ index 87bd6b6..8f46fc9 100644 #ifdef CONFIG_DOUBLEFAULT df_debug(regs, error_code); #endif -@@ -443,11 +465,35 @@ do_general_protection(struct pt_regs *regs, long error_code) +@@ -444,11 +466,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, @@ -31292,7 +31204,7 @@ index 87bd6b6..8f46fc9 100644 tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_GP; -@@ -545,6 +591,9 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s) +@@ -546,6 +592,9 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s) container_of(task_pt_regs(current), struct bad_iret_stack, regs); @@ -31302,7 +31214,7 @@ index 87bd6b6..8f46fc9 100644 /* Copy the IRET target to the new stack. */ memmove(&new_stack->regs.ip, (void *)s->regs.sp, 5*8); -@@ -716,7 +765,7 @@ exit: +@@ -717,7 +766,7 @@ exit: * This is the most likely code path that involves non-trivial use * of the SYSENTER stack. Check that we haven't overrun it. */ @@ -31311,7 +31223,7 @@ index 87bd6b6..8f46fc9 100644 "Overran or corrupted SYSENTER stack\n"); #endif ist_exit(regs); -@@ -846,7 +895,7 @@ void __init early_trap_init(void) +@@ -847,7 +896,7 @@ void __init early_trap_init(void) * since we don't have trace_debug and it will be reset to * 'debug' in trap_init() by set_intr_gate_ist(). */ @@ -31320,7 +31232,7 @@ index 87bd6b6..8f46fc9 100644 /* int3 can be called from all */ set_system_intr_gate(X86_TRAP_BP, &int3); #ifdef CONFIG_X86_32 -@@ -931,7 +980,7 @@ void __init trap_init(void) +@@ -932,7 +981,7 @@ void __init trap_init(void) * in early_trap_init(). However, ITS works only after * cpu_init() loads TSS. See comments in early_trap_init(). */ @@ -31329,7 +31241,7 @@ index 87bd6b6..8f46fc9 100644 /* int3 can be called from all */ set_system_intr_gate_ist(X86_TRAP_BP, &int3, DEBUG_STACK); -@@ -939,7 +988,7 @@ void __init trap_init(void) +@@ -940,7 +989,7 @@ void __init trap_init(void) #ifdef CONFIG_X86_64 memcpy(&debug_idt_table, &idt_table, IDT_ENTRIES * 16); @@ -31339,7 +31251,7 @@ index 87bd6b6..8f46fc9 100644 #endif } diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c -index c9c4c7c..f6a623a 100644 +index 38ba6de..6c77173 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -156,7 +156,7 @@ static void cyc2ns_write_end(int cpu, struct cyc2ns_data *data) @@ -31352,7 +31264,7 @@ index c9c4c7c..f6a623a 100644 /* diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c -index bf4db6e..624137c 100644 +index 6c1ff31..cc5d294 100644 --- a/arch/x86/kernel/uprobes.c +++ b/arch/x86/kernel/uprobes.c @@ -287,7 +287,7 @@ static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool @@ -31446,7 +31358,7 @@ index 3dce1ca..3dce2ad 100644 case VM86_GET_AND_RESET_IRQ: { return get_and_reset_irq(irqnumber); diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S -index 4c941f8..459a84d 100644 +index 9297a00..3dc41ac 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -26,6 +26,13 @@ @@ -31768,10 +31680,10 @@ index dad5fe9..ce5f4ba 100644 .disable = native_disable_io_apic, }; diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c -index bbbaa80..25071dc 100644 +index 7597b42..4c3b5e9 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c -@@ -222,15 +222,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, +@@ -224,15 +224,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -31795,7 +31707,7 @@ index bbbaa80..25071dc 100644 vcpu->arch.cpuid_nent = cpuid->nent; kvm_apic_set_version(vcpu); kvm_x86_ops->cpuid_update(vcpu); -@@ -243,15 +248,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu, +@@ -245,15 +250,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -31959,7 +31871,7 @@ index 7cc2360..6ae1236 100644 { struct kvm_kpic_state *s = opaque; diff --git a/arch/x86/kvm/ioapic.c b/arch/x86/kvm/ioapic.c -index 9db4709..0423b6f 100644 +index 5f42d03..052f8a4 100644 --- a/arch/x86/kvm/ioapic.c +++ b/arch/x86/kvm/ioapic.c @@ -413,6 +413,8 @@ static void kvm_ioapic_eoi_inject_work(struct work_struct *work) @@ -31972,7 +31884,7 @@ index 9db4709..0423b6f 100644 { struct dest_map *dest_map = &ioapic->rtc_status.dest_map; diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c -index 1a2da0e..d1a84c1 100644 +index a397200..b4a6f32 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -57,7 +57,7 @@ @@ -31982,8 +31894,8 @@ index 1a2da0e..d1a84c1 100644 -#define apic_debug(fmt, arg...) +#define apic_debug(fmt, arg...) do {} while (0) - #define APIC_LVT_NUM 6 /* 14 is the version for Xeon and Pentium 8.4.8*/ + #define APIC_VERSION (0x14UL | ((KVM_APIC_LVT_NUM - 1) << 16)) diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index bc019f7..51a5631 100644 --- a/arch/x86/kvm/paging_tmpl.h @@ -31998,10 +31910,10 @@ index bc019f7..51a5631 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 31346a3..038711e 100644 +index 16ef31b..23496f1 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c -@@ -3533,7 +3533,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) +@@ -4120,7 +4120,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); @@ -32013,7 +31925,7 @@ index 31346a3..038711e 100644 load_TR_desc(); } -@@ -3932,6 +3936,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) +@@ -4559,6 +4563,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) #endif #endif @@ -32024,8 +31936,8 @@ index 31346a3..038711e 100644 reload_tss(vcpu); local_irq_disable(); -@@ -4307,7 +4315,7 @@ static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu) - { +@@ -4955,7 +4963,7 @@ static inline void avic_post_state_restore(struct kvm_vcpu *vcpu) + avic_handle_ldr_update(vcpu); } -static struct kvm_x86_ops svm_x86_ops = { @@ -32034,7 +31946,7 @@ index 31346a3..038711e 100644 .disabled_by_bios = is_disabled, .hardware_setup = svm_hardware_setup, diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index c4217a2..964fb8e 100644 +index 64a79f2..d392b19 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -1589,14 +1589,14 @@ static __always_inline void vmcs_writel(unsigned long field, unsigned long value @@ -32077,7 +31989,7 @@ index c4217a2..964fb8e 100644 rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp); vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */ -@@ -2483,7 +2491,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) +@@ -2485,7 +2493,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) * guest_tsc = (host_tsc * tsc multiplier) >> 48 + tsc_offset * -- Intel TSC Scaling for Virtualization White Paper, sec 1.3 */ @@ -32086,7 +31998,7 @@ index c4217a2..964fb8e 100644 { u64 host_tsc, tsc_offset; -@@ -4724,7 +4732,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) +@@ -4726,7 +4734,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 */ @@ -32097,7 +32009,7 @@ index c4217a2..964fb8e 100644 /* Save the most likely value for this task's CR4 in the VMCS. */ cr4 = cr4_read_shadow(); -@@ -4751,7 +4762,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) +@@ -4753,7 +4764,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; @@ -32106,7 +32018,7 @@ index c4217a2..964fb8e 100644 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); vmcs_write32(HOST_IA32_SYSENTER_CS, low32); -@@ -6299,11 +6310,17 @@ static __init int hardware_setup(void) +@@ -6314,11 +6325,17 @@ static __init int hardware_setup(void) * page upon invalidation. No need to do anything if not * using the APIC_ACCESS_ADDR VMCS field. */ @@ -32126,7 +32038,7 @@ index c4217a2..964fb8e 100644 if (enable_ept && !cpu_has_vmx_ept_2m_page()) kvm_disable_largepages(); -@@ -6373,10 +6390,12 @@ static __init int hardware_setup(void) +@@ -6385,10 +6402,12 @@ static __init int hardware_setup(void) enable_pml = 0; if (!enable_pml) { @@ -32139,7 +32051,7 @@ index c4217a2..964fb8e 100644 } kvm_set_posted_intr_wakeup_handler(wakeup_handler); -@@ -8706,6 +8725,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8718,6 +8737,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) "jmp 2f \n\t" "1: " __ex(ASM_VMX_VMRESUME) "\n\t" "2: " @@ -32152,7 +32064,7 @@ index c4217a2..964fb8e 100644 /* Save guest registers, load host registers, keep flags */ "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" "pop %0 \n\t" -@@ -8758,6 +8783,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8770,6 +8795,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)) @@ -32164,7 +32076,7 @@ index c4217a2..964fb8e 100644 : "cc", "memory" #ifdef CONFIG_X86_64 , "rax", "rbx", "rdi", "rsi" -@@ -8771,7 +8801,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8783,7 +8813,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) if (debugctlmsr) update_debugctlmsr(debugctlmsr); @@ -32173,7 +32085,7 @@ index c4217a2..964fb8e 100644 /* * The sysexit path does not restore ds/es, so we must set them to * a reasonable value ourselves. -@@ -8780,8 +8810,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8792,8 +8822,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. */ @@ -32194,7 +32106,7 @@ index c4217a2..964fb8e 100644 #endif vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) -@@ -10893,7 +10933,7 @@ out: +@@ -10905,7 +10945,7 @@ out: return ret; } @@ -32204,10 +32116,10 @@ index c4217a2..964fb8e 100644 .disabled_by_bios = vmx_disabled_by_bios, .hardware_setup = hardware_setup, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 6b9701b..86084df 100644 +index 7da5dd2..b667a94 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -1945,8 +1945,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) +@@ -1940,8 +1940,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) { struct kvm *kvm = vcpu->kvm; int lm = is_long_mode(vcpu); @@ -32218,7 +32130,7 @@ index 6b9701b..86084df 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; -@@ -2647,6 +2647,8 @@ long kvm_arch_dev_ioctl(struct file *filp, +@@ -2646,6 +2646,8 @@ long kvm_arch_dev_ioctl(struct file *filp, if (n < msr_list.nmsrs) goto out; r = -EFAULT; @@ -32227,7 +32139,7 @@ index 6b9701b..86084df 100644 if (copy_to_user(user_msr_list->indices, &msrs_to_save, num_msrs_to_save * sizeof(u32))) goto out; -@@ -3051,7 +3053,7 @@ static int kvm_vcpu_ioctl_x86_set_debugregs(struct kvm_vcpu *vcpu, +@@ -3054,7 +3056,7 @@ static int kvm_vcpu_ioctl_x86_set_debugregs(struct kvm_vcpu *vcpu, static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) { @@ -32236,7 +32148,7 @@ index 6b9701b..86084df 100644 u64 xstate_bv = xsave->header.xfeatures; u64 valid; -@@ -3087,7 +3089,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) +@@ -3090,7 +3092,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) static void load_xsave(struct kvm_vcpu *vcpu, u8 *src) { @@ -32245,7 +32157,7 @@ index 6b9701b..86084df 100644 u64 xstate_bv = *(u64 *)(src + XSAVE_HDR_OFFSET); u64 valid; -@@ -3131,7 +3133,7 @@ static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu, +@@ -3134,7 +3136,7 @@ static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu, fill_xsave((u8 *) guest_xsave->region, vcpu); } else { memcpy(guest_xsave->region, @@ -32254,7 +32166,7 @@ index 6b9701b..86084df 100644 sizeof(struct fxregs_state)); *(u64 *)&guest_xsave->region[XSAVE_HDR_OFFSET / sizeof(u32)] = XFEATURE_MASK_FPSSE; -@@ -3156,7 +3158,7 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu, +@@ -3159,7 +3161,7 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu, } else { if (xstate_bv & ~XFEATURE_MASK_FPSSE) return -EINVAL; @@ -32263,7 +32175,7 @@ index 6b9701b..86084df 100644 guest_xsave->region, sizeof(struct fxregs_state)); } return 0; -@@ -6447,6 +6449,7 @@ void kvm_arch_mmu_notifier_invalidate_page(struct kvm *kvm, +@@ -6450,6 +6452,7 @@ void kvm_arch_mmu_notifier_invalidate_page(struct kvm *kvm, * exiting to the userspace. Otherwise, the value will be returned to the * userspace. */ @@ -32271,7 +32183,7 @@ index 6b9701b..86084df 100644 static int vcpu_enter_guest(struct kvm_vcpu *vcpu) { int r; -@@ -6717,6 +6720,7 @@ out: +@@ -6720,6 +6723,7 @@ out: return r; } @@ -32279,7 +32191,7 @@ index 6b9701b..86084df 100644 static inline int vcpu_block(struct kvm *kvm, struct kvm_vcpu *vcpu) { if (!kvm_arch_vcpu_runnable(vcpu) && -@@ -7264,7 +7268,7 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu, +@@ -7267,7 +7271,7 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu, int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) { struct fxregs_state *fxsave = @@ -32288,7 +32200,7 @@ index 6b9701b..86084df 100644 memcpy(fpu->fpr, fxsave->st_space, 128); fpu->fcw = fxsave->cwd; -@@ -7281,7 +7285,7 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) +@@ -7284,7 +7288,7 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) { struct fxregs_state *fxsave = @@ -32297,19 +32209,19 @@ index 6b9701b..86084df 100644 memcpy(fxsave->st_space, fpu->fpr, 128); fxsave->cwd = fpu->fcw; -@@ -7297,9 +7301,9 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) +@@ -7300,9 +7304,9 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) static void fx_init(struct kvm_vcpu *vcpu) { - fpstate_init(&vcpu->arch.guest_fpu.state); + fpstate_init(vcpu->arch.guest_fpu.state); - if (cpu_has_xsaves) + if (boot_cpu_has(X86_FEATURE_XSAVES)) - vcpu->arch.guest_fpu.state.xsave.header.xcomp_bv = + vcpu->arch.guest_fpu.state->xsave.header.xcomp_bv = host_xcr0 | XSTATE_COMPACTION_ENABLED; /* -@@ -7322,7 +7326,7 @@ void kvm_load_guest_fpu(struct kvm_vcpu *vcpu) +@@ -7325,7 +7329,7 @@ void kvm_load_guest_fpu(struct kvm_vcpu *vcpu) */ vcpu->guest_fpu_loaded = 1; __kernel_fpu_begin(); @@ -32318,7 +32230,7 @@ index 6b9701b..86084df 100644 trace_kvm_fpu(1); } -@@ -7624,6 +7628,8 @@ bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) +@@ -7627,6 +7631,8 @@ bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) struct static_key kvm_no_apic_vcpu __read_mostly; EXPORT_SYMBOL_GPL(kvm_no_apic_vcpu); @@ -32327,7 +32239,7 @@ index 6b9701b..86084df 100644 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) { struct page *page; -@@ -7641,11 +7647,14 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) +@@ -7644,11 +7650,14 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) else vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED; @@ -32346,7 +32258,7 @@ index 6b9701b..86084df 100644 vcpu->arch.pio_data = page_address(page); kvm_set_tsc_khz(vcpu, max_tsc_khz); -@@ -7703,6 +7712,9 @@ fail_mmu_destroy: +@@ -7706,6 +7715,9 @@ fail_mmu_destroy: kvm_mmu_destroy(vcpu); fail_free_pio_data: free_page((unsigned long)vcpu->arch.pio_data); @@ -32356,7 +32268,7 @@ index 6b9701b..86084df 100644 fail: return r; } -@@ -7721,6 +7733,8 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) +@@ -7724,6 +7736,8 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) free_page((unsigned long)vcpu->arch.pio_data); if (!lapic_in_kernel(vcpu)) static_key_slow_dec(&kvm_no_apic_vcpu); @@ -32366,7 +32278,7 @@ index 6b9701b..86084df 100644 void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c -index fd57d3a..7e9ec76 100644 +index 3847e73..39f5456 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c @@ -1336,9 +1336,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count) @@ -34226,10 +34138,10 @@ index e0817a1..bc9cf66 100644 xor %eax,%eax EXIT diff --git a/arch/x86/lib/rwsem.S b/arch/x86/lib/rwsem.S -index be110ef..6728d71 100644 +index bf2c607..0e6d18b 100644 --- a/arch/x86/lib/rwsem.S +++ b/arch/x86/lib/rwsem.S -@@ -93,6 +93,7 @@ ENTRY(call_rwsem_down_read_failed) +@@ -95,6 +95,7 @@ ENTRY(call_rwsem_down_read_failed) __ASM_SIZE(pop,) %__ASM_REG(dx) restore_common_regs FRAME_END @@ -34237,7 +34149,7 @@ index be110ef..6728d71 100644 ret ENDPROC(call_rwsem_down_read_failed) -@@ -103,6 +104,7 @@ ENTRY(call_rwsem_down_write_failed) +@@ -105,6 +106,7 @@ ENTRY(call_rwsem_down_write_failed) call rwsem_down_write_failed restore_common_regs FRAME_END @@ -34245,7 +34157,7 @@ index be110ef..6728d71 100644 ret ENDPROC(call_rwsem_down_write_failed) -@@ -116,6 +118,7 @@ ENTRY(call_rwsem_wake) +@@ -128,6 +130,7 @@ ENTRY(call_rwsem_wake) call rwsem_wake restore_common_regs 1: FRAME_END @@ -34253,7 +34165,7 @@ index be110ef..6728d71 100644 ret ENDPROC(call_rwsem_wake) -@@ -128,5 +131,6 @@ ENTRY(call_rwsem_downgrade_wake) +@@ -140,5 +143,6 @@ ENTRY(call_rwsem_downgrade_wake) __ASM_SIZE(pop,) %__ASM_REG(dx) restore_common_regs FRAME_END @@ -34261,7 +34173,7 @@ index be110ef..6728d71 100644 ret ENDPROC(call_rwsem_downgrade_wake) diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c -index 91d93b9..4b22130 100644 +index b559d92..625a909 100644 --- a/arch/x86/lib/usercopy_32.c +++ b/arch/x86/lib/usercopy_32.c @@ -42,11 +42,13 @@ do { \ @@ -34759,7 +34671,7 @@ index 91d93b9..4b22130 100644 return n; } @@ -632,60 +743,38 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr - if (n > 64 && cpu_has_xmm2) + if (n > 64 && static_cpu_has(X86_FEATURE_XMM2)) n = __copy_user_intel_nocache(to, from, n); else - __copy_user(to, from, n); @@ -35047,10 +34959,10 @@ index 0054835..a3bd671 100644 void fconst(void) diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile -index f989132..7c590d6 100644 +index 62c0043..0fae532 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile -@@ -39,3 +39,6 @@ obj-$(CONFIG_NUMA_EMU) += numa_emulation.o +@@ -38,3 +38,6 @@ obj-$(CONFIG_NUMA_EMU) += numa_emulation.o obj-$(CONFIG_X86_INTEL_MPX) += mpx.o obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o @@ -35155,17 +35067,18 @@ index 99bfb19..237fb1d 100644 } else { walk_pud_level(m, &st, *start, diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c -index 82447b3..95c2b03 100644 +index 4bb53b8..7e79b52 100644 --- a/arch/x86/mm/extable.c +++ b/arch/x86/mm/extable.c -@@ -1,5 +1,6 @@ +@@ -1,6 +1,7 @@ #include <linux/module.h> #include <asm/uaccess.h> + #include <asm/traps.h> +#include <asm/boot.h> typedef bool (*ex_handler_t)(const struct exception_table_entry *, struct pt_regs *, int); -@@ -7,12 +8,25 @@ typedef bool (*ex_handler_t)(const struct exception_table_entry *, +@@ -8,12 +9,25 @@ typedef bool (*ex_handler_t)(const struct exception_table_entry *, static inline unsigned long ex_fixup_addr(const struct exception_table_entry *x) { @@ -35193,7 +35106,7 @@ index 82447b3..95c2b03 100644 } bool ex_handler_default(const struct exception_table_entry *fixup, -@@ -61,7 +75,7 @@ int fixup_exception(struct pt_regs *regs, int trapnr) +@@ -99,7 +113,7 @@ int fixup_exception(struct pt_regs *regs, int trapnr) ex_handler_t handler; #ifdef CONFIG_PNPBIOS @@ -35203,7 +35116,7 @@ index 82447b3..95c2b03 100644 extern u32 pnp_bios_is_utter_crap; pnp_bios_is_utter_crap = 1; diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c -index 5ce1ed0..f713160 100644 +index 7d1fa7c..5c07d66 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -14,6 +14,8 @@ @@ -35288,7 +35201,7 @@ index 5ce1ed0..f713160 100644 @@ -294,10 +335,27 @@ void vmalloc_sync_all(void) for (address = VMALLOC_START & PMD_MASK; - address >= TASK_SIZE && address < FIXADDR_TOP; + address >= TASK_SIZE_MAX && address < FIXADDR_TOP; address += PMD_SIZE) { + +#ifdef CONFIG_PAX_PER_CPU_PGD @@ -35428,11 +35341,10 @@ index 5ce1ed0..f713160 100644 printk(KERN_ALERT "BUG: unable to handle kernel "); if (address < PAGE_SIZE) printk(KERN_CONT "NULL pointer dereference"); -@@ -854,6 +950,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code, - return; +@@ -855,6 +951,21 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code, } #endif -+ + +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) + if (pax_is_fetch_fault(regs, error_code, address)) { + @@ -35448,10 +35360,10 @@ index 5ce1ed0..f713160 100644 + } +#endif + - /* Kernel addresses are always protection faults: */ - if (address >= TASK_SIZE) - error_code |= PF_PROT; -@@ -961,7 +1073,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, + /* + * To avoid leaking information about the kernel page table + * layout, pretend that user-mode accesses to kernel addresses +@@ -966,7 +1077,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) { printk(KERN_ERR "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n", @@ -35460,7 +35372,7 @@ index 5ce1ed0..f713160 100644 code = BUS_MCEERR_AR; } #endif -@@ -1020,6 +1132,109 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte) +@@ -1025,6 +1136,109 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte) return 1; } @@ -35570,7 +35482,7 @@ index 5ce1ed0..f713160 100644 /* * Handle a spurious fault caused by a stale TLB entry. * -@@ -1107,6 +1322,10 @@ access_error(unsigned long error_code, struct vm_area_struct *vma) +@@ -1112,6 +1326,10 @@ access_error(unsigned long error_code, struct vm_area_struct *vma) { /* This is only called for the current mm, so: */ bool foreign = false; @@ -35581,7 +35493,7 @@ index 5ce1ed0..f713160 100644 /* * Make sure to check the VMA so that we do not perform * faults just to hit a PF_PK as soon as we fill in a -@@ -1178,6 +1397,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, +@@ -1183,6 +1401,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, tsk = current; mm = tsk->mm; @@ -35604,7 +35516,7 @@ index 5ce1ed0..f713160 100644 /* * Detect and handle instructions that would cause a page fault for * both a tracked kernel page and a userspace page. -@@ -1304,6 +1539,11 @@ retry: +@@ -1309,6 +1543,11 @@ retry: might_sleep(); } @@ -35616,7 +35528,7 @@ index 5ce1ed0..f713160 100644 vma = find_vma(mm, address); if (unlikely(!vma)) { bad_area(regs, error_code, address); -@@ -1315,18 +1555,24 @@ retry: +@@ -1320,18 +1559,24 @@ retry: bad_area(regs, error_code, address); return; } @@ -35652,7 +35564,7 @@ index 5ce1ed0..f713160 100644 if (unlikely(expand_stack(vma, address))) { bad_area(regs, error_code, address); return; -@@ -1446,3 +1692,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code) +@@ -1451,3 +1696,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code) } NOKPROBE_SYMBOL(trace_do_page_fault); #endif /* CONFIG_TRACING */ @@ -35995,7 +35907,7 @@ index a6d7392..3b105a8 100644 return (void *)vaddr; diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c -index 740d7ac..4091827 100644 +index 2ae8584..e8f8f29 100644 --- a/arch/x86/mm/hugetlbpage.c +++ b/arch/x86/mm/hugetlbpage.c @@ -74,23 +74,24 @@ int pud_huge(pud_t pud) @@ -36097,7 +36009,7 @@ index 740d7ac..4091827 100644 #endif /* CONFIG_HUGETLB_PAGE */ diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c -index 9d56f27..0d15fff 100644 +index 372aad2..15d0667 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -4,6 +4,7 @@ @@ -36205,7 +36117,7 @@ index 9d56f27..0d15fff 100644 (unsigned long)(&__init_begin), (unsigned long)(&__init_end)); diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c -index bd7a9b9..f1dad0b 100644 +index 84df150..aacf18e 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void); @@ -36433,7 +36345,7 @@ index bd7a9b9..f1dad0b 100644 ((unsigned long)&_etext - (unsigned long)&_text) >> 10); /* -@@ -871,7 +873,7 @@ static noinline int do_test_wp_bit(void) +@@ -868,7 +870,7 @@ static noinline int do_test_wp_bit(void) const int rodata_test_data = 0xC3; EXPORT_SYMBOL_GPL(rodata_test_data); @@ -36442,7 +36354,7 @@ index bd7a9b9..f1dad0b 100644 void set_kernel_text_rw(void) { -@@ -881,6 +883,7 @@ void set_kernel_text_rw(void) +@@ -878,6 +880,7 @@ void set_kernel_text_rw(void) if (!kernel_set_to_readonly) return; @@ -36450,7 +36362,7 @@ index bd7a9b9..f1dad0b 100644 pr_debug("Set kernel text: %lx - %lx for read write\n", start, start+size); -@@ -895,6 +898,7 @@ void set_kernel_text_ro(void) +@@ -892,6 +895,7 @@ void set_kernel_text_ro(void) if (!kernel_set_to_readonly) return; @@ -36458,7 +36370,7 @@ index bd7a9b9..f1dad0b 100644 pr_debug("Set kernel text: %lx - %lx for read only\n", start, start+size); -@@ -907,7 +911,7 @@ static void mark_nxdata_nx(void) +@@ -904,7 +908,7 @@ static void mark_nxdata_nx(void) * When this called, init has already been executed and released, * so everything past _etext should be NX. */ @@ -36467,7 +36379,7 @@ index bd7a9b9..f1dad0b 100644 /* * This comes from is_kernel_text upper limit. Also HPAGE where used: */ -@@ -923,26 +927,52 @@ void mark_rodata_ro(void) +@@ -920,26 +924,52 @@ void mark_rodata_ro(void) unsigned long start = PFN_ALIGN(_text); unsigned long size = PFN_ALIGN(_etext) - start; @@ -36529,10 +36441,10 @@ index bd7a9b9..f1dad0b 100644 #ifdef CONFIG_CPA_DEBUG diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c -index 214afda..7fd6c3f 100644 +index bce2e5d..2a2bf30 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c -@@ -138,7 +138,7 @@ int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, +@@ -66,7 +66,7 @@ * around without checking the pgd every time. */ @@ -36541,7 +36453,7 @@ index 214afda..7fd6c3f 100644 EXPORT_SYMBOL_GPL(__supported_pte_mask); int force_personality32; -@@ -171,7 +171,12 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -99,7 +99,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); @@ -36554,7 +36466,7 @@ index 214afda..7fd6c3f 100644 /* * When it is called after memory hot remove, pgd_none() -@@ -182,6 +187,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -110,6 +115,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) continue; spin_lock(&pgd_lock); @@ -36580,7 +36492,7 @@ index 214afda..7fd6c3f 100644 list_for_each_entry(page, &pgd_list, lru) { pgd_t *pgd; spinlock_t *pgt_lock; -@@ -190,6 +214,7 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -118,6 +142,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); @@ -36588,7 +36500,7 @@ index 214afda..7fd6c3f 100644 if (!pgd_none(*pgd_ref) && !pgd_none(*pgd)) BUG_ON(pgd_page_vaddr(*pgd) -@@ -203,7 +228,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -131,7 +156,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) set_pgd(pgd, *pgd_ref); } @@ -36599,7 +36511,7 @@ index 214afda..7fd6c3f 100644 } spin_unlock(&pgd_lock); } -@@ -236,7 +264,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) +@@ -164,7 +192,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) { if (pgd_none(*pgd)) { pud_t *pud = (pud_t *)spp_getpage(); @@ -36608,7 +36520,7 @@ index 214afda..7fd6c3f 100644 if (pud != pud_offset(pgd, 0)) printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n", pud, pud_offset(pgd, 0)); -@@ -248,7 +276,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) +@@ -176,7 +204,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) { if (pud_none(*pud)) { pmd_t *pmd = (pmd_t *) spp_getpage(); @@ -36617,7 +36529,7 @@ index 214afda..7fd6c3f 100644 if (pmd != pmd_offset(pud, 0)) printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n", pmd, pmd_offset(pud, 0)); -@@ -277,7 +305,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte) +@@ -205,7 +233,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); @@ -36627,7 +36539,7 @@ index 214afda..7fd6c3f 100644 /* * It's enough to flush this one mapping. -@@ -339,14 +369,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size, +@@ -267,14 +297,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(); @@ -36644,7 +36556,7 @@ index 214afda..7fd6c3f 100644 } pmd = pmd_offset(pud, phys); BUG_ON(!pmd_none(*pmd)); -@@ -587,7 +615,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, +@@ -515,7 +543,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, prot); spin_lock(&init_mm.page_table_lock); @@ -36653,7 +36565,7 @@ index 214afda..7fd6c3f 100644 spin_unlock(&init_mm.page_table_lock); } __flush_tlb_all(); -@@ -628,7 +656,7 @@ kernel_physical_mapping_init(unsigned long start, +@@ -556,7 +584,7 @@ kernel_physical_mapping_init(unsigned long start, page_size_mask); spin_lock(&init_mm.page_table_lock); @@ -36662,7 +36574,7 @@ index 214afda..7fd6c3f 100644 spin_unlock(&init_mm.page_table_lock); pgd_changed = true; } -@@ -1078,7 +1106,7 @@ void __init mem_init(void) +@@ -1006,7 +1034,7 @@ void __init mem_init(void) const int rodata_test_data = 0xC3; EXPORT_SYMBOL_GPL(rodata_test_data); @@ -36671,7 +36583,7 @@ index 214afda..7fd6c3f 100644 void set_kernel_text_rw(void) { -@@ -1107,8 +1135,7 @@ void set_kernel_text_ro(void) +@@ -1035,8 +1063,7 @@ void set_kernel_text_ro(void) if (!kernel_set_to_readonly) return; @@ -36681,7 +36593,7 @@ index 214afda..7fd6c3f 100644 /* * Set the kernel identity mapping for text RO. -@@ -1119,18 +1146,23 @@ void set_kernel_text_ro(void) +@@ -1047,18 +1074,23 @@ void set_kernel_text_ro(void) void mark_rodata_ro(void) { unsigned long start = PFN_ALIGN(_text); @@ -36709,7 +36621,7 @@ index 214afda..7fd6c3f 100644 /* * The rodata/data/bss/brk section (but not the kernel text!) * should also be not-executable. -@@ -1156,12 +1188,54 @@ void mark_rodata_ro(void) +@@ -1084,12 +1116,54 @@ void mark_rodata_ro(void) set_memory_ro(start, (end-start) >> PAGE_SHIFT); #endif @@ -36781,7 +36693,7 @@ index 9c0ff04..9020d5f 100644 return (void *)vaddr; diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c -index 0d8d53d..74815a4 100644 +index f089491..467113c 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -59,8 +59,8 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages, @@ -37065,7 +36977,7 @@ index 8047687..6351be43 100644 err_out: /* info might be NULL, but kfree() handles that */ diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c -index f70c1ff..fdb449c 100644 +index 9c086c5..421e25b 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c @@ -529,7 +529,7 @@ static void __init numa_clear_kernel_node_hotplug(void) @@ -37078,7 +36990,7 @@ index f70c1ff..fdb449c 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 01be9ec..2b8c8c7 100644 +index 7a1f7bb..b245aea 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -258,7 +258,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, @@ -37171,7 +37083,7 @@ index 01be9ec..2b8c8c7 100644 unsigned long address) { struct page *base; -@@ -1157,6 +1180,7 @@ static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr, +@@ -1163,6 +1186,7 @@ static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr, } } @@ -37179,7 +37091,7 @@ index 01be9ec..2b8c8c7 100644 static int __change_page_attr(struct cpa_data *cpa, int primary) { unsigned long address; -@@ -1215,7 +1239,9 @@ repeat: +@@ -1221,7 +1245,9 @@ repeat: * Do we really change anything ? */ if (pte_val(old_pte) != pte_val(new_pte)) { @@ -37190,10 +37102,10 @@ index 01be9ec..2b8c8c7 100644 } cpa->numpages = 1; diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c -index faec01e..437ec71 100644 +index fb0604f..b9e0399 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c -@@ -589,7 +589,7 @@ int free_memtype(u64 start, u64 end) +@@ -633,7 +633,7 @@ int free_memtype(u64 start, u64 end) if (IS_ERR(entry)) { pr_info("x86/PAT: %s:%d freeing invalid memtype [mem %#010Lx-%#010Lx]\n", @@ -37202,7 +37114,7 @@ index faec01e..437ec71 100644 return -EINVAL; } -@@ -712,8 +712,8 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) +@@ -756,8 +756,8 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) while (cursor < to) { if (!devmem_is_allowed(pfn)) { @@ -37213,7 +37125,7 @@ index faec01e..437ec71 100644 return 0; } cursor += PAGE_SIZE; -@@ -783,7 +783,7 @@ int kernel_map_sync_memtype(u64 base, unsigned long size, +@@ -808,7 +808,7 @@ int kernel_map_sync_memtype(u64 base, unsigned long size, if (ioremap_change_attr((unsigned long)__va(base), id_sz, pcm) < 0) { pr_info("x86/PAT: %s:%d ioremap_change_attr failed %s for [mem %#010Lx-%#010Lx]\n", @@ -37222,7 +37134,7 @@ index faec01e..437ec71 100644 cattr_name(pcm), base, (unsigned long long)(base + size-1)); return -EINVAL; -@@ -818,7 +818,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, +@@ -843,7 +843,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, pcm = lookup_memtype(paddr); if (want_pcm != pcm) { pr_warn("x86/PAT: %s:%d map pfn RAM range req %s for [mem %#010Lx-%#010Lx], got %s\n", @@ -37231,7 +37143,7 @@ index faec01e..437ec71 100644 cattr_name(want_pcm), (unsigned long long)paddr, (unsigned long long)(paddr + size - 1), -@@ -839,7 +839,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, +@@ -864,7 +864,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, !is_new_memtype_allowed(paddr, size, want_pcm, pcm)) { free_memtype(paddr, paddr + size); pr_err("x86/PAT: %s:%d map pfn expected mapping type %s for [mem %#010Lx-%#010Lx], got %s\n", @@ -37303,7 +37215,7 @@ index 9f0614d..92ae64a 100644 p += get_opcode(p, &opcode); for (i = 0; i < ARRAY_SIZE(imm_wop); i++) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c -index 4eb287e..a021315 100644 +index aa0ff4b..be1aee7 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -98,10 +98,75 @@ static inline void pgd_list_del(pgd_t *pgd) @@ -37718,10 +37630,10 @@ index f65a33f..f408a99 100644 } diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c -index fe9b9f7..35b4936e 100644 +index 5643fd0..3104402 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c -@@ -45,7 +45,11 @@ void leave_mm(int cpu) +@@ -47,7 +47,11 @@ void leave_mm(int cpu) BUG(); if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); @@ -37733,6 +37645,160 @@ index fe9b9f7..35b4936e 100644 /* * This gets called in the idle path where RCU * functions differently. Tracing normally +@@ -61,6 +65,51 @@ EXPORT_SYMBOL_GPL(leave_mm); + + #endif /* CONFIG_SMP */ + ++static void pax_switch_mm(struct mm_struct *next, unsigned int cpu) ++{ ++ ++#ifdef CONFIG_PAX_PER_CPU_PGD ++ pax_open_kernel(); ++ ++#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) ++ __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd); ++ else ++#endif ++ ++ __clone_user_pgds(get_cpu_pgd(cpu, kernel), next->pgd); ++ ++ __shadow_user_pgds(get_cpu_pgd(cpu, kernel) + USER_PGD_PTRS, next->pgd); ++ ++ pax_close_kernel(); ++ ++ 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_PCIDUDEREF)) { ++ if (static_cpu_has(X86_FEATURE_INVPCID)) { ++ u64 descriptor[2]; ++ descriptor[0] = PCID_USER; ++ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory"); ++ if (!static_cpu_has(X86_FEATURE_STRONGUDEREF)) { ++ descriptor[0] = PCID_KERNEL; ++ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory"); ++ } ++ } else { ++ write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER); ++ if (static_cpu_has(X86_FEATURE_STRONGUDEREF)) ++ write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH); ++ else ++ write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL); ++ } ++ } else ++#endif ++ ++ load_cr3(get_cpu_pgd(cpu, kernel)); ++#endif ++ ++} ++ + void switch_mm(struct mm_struct *prev, struct mm_struct *next, + struct task_struct *tsk) + { +@@ -75,9 +124,15 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, + struct task_struct *tsk) + { + unsigned cpu = smp_processor_id(); ++#if defined(CONFIG_X86_32) && defined(CONFIG_SMP) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) ++ int tlbstate = TLBSTATE_OK; ++#endif + + if (likely(prev != next)) { + #ifdef CONFIG_SMP ++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) ++ tlbstate = this_cpu_read(cpu_tlbstate.state); ++#endif + this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); + this_cpu_write(cpu_tlbstate.active_mm, next); + #endif +@@ -96,7 +151,7 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, + * We need to prevent an outcome in which CPU 1 observes + * the new PTE value and CPU 0 observes bit 1 clear in + * mm_cpumask. (If that occurs, then the IPI will never +- * be sent, and CPU 0's TLB will contain a stale entry.) ++ * be sent, and CPU 1's TLB will contain a stale entry.) + * + * The bad outcome can occur if either CPU's load is + * reordered before that CPU's store, so both CPUs must +@@ -111,7 +166,11 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, + * ordering guarantee we need. + * + */ ++#ifdef CONFIG_PAX_PER_CPU_PGD ++ pax_switch_mm(next, cpu); ++#else + load_cr3(next->pgd); ++#endif + + trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); + +@@ -137,9 +196,31 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, + if (unlikely(prev->context.ldt != next->context.ldt)) + load_mm_ldt(next); + #endif ++ ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) ++ if (!(__supported_pte_mask & _PAGE_NX)) { ++ smp_mb__before_atomic(); ++ cpumask_clear_cpu(cpu, &prev->context.cpu_user_cs_mask); ++ smp_mb__after_atomic(); ++ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); ++ } ++#endif ++ ++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) ++ if (unlikely(prev->context.user_cs_base != next->context.user_cs_base || ++ prev->context.user_cs_limit != next->context.user_cs_limit)) ++ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); ++#ifdef CONFIG_SMP ++ else if (unlikely(tlbstate != TLBSTATE_OK)) ++ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); ++#endif ++#endif ++ + } ++ else { ++ pax_switch_mm(next, cpu); ++ + #ifdef CONFIG_SMP +- else { + this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); + BUG_ON(this_cpu_read(cpu_tlbstate.active_mm) != next); + +@@ -160,13 +241,30 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, + * As above, load_cr3() is serializing and orders TLB + * fills with respect to the mm_cpumask write. + */ ++ ++#ifndef CONFIG_PAX_PER_CPU_PGD + load_cr3(next->pgd); + trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); ++#endif ++ + load_mm_cr4(next); + load_mm_ldt(next); ++ ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) ++ if (!(__supported_pte_mask & _PAGE_NX)) ++ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); ++#endif ++ ++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) ++#ifdef CONFIG_PAX_PAGEEXEC ++ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && (__supported_pte_mask & _PAGE_NX))) ++#endif ++ set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu); ++#endif ++ + } ++#endif + } +-#endif + } + + #ifdef CONFIG_SMP diff --git a/arch/x86/mm/uderef_64.c b/arch/x86/mm/uderef_64.c new file mode 100644 index 0000000..3fda3f3 @@ -37866,7 +37932,7 @@ index f2a7faf..b77bb6c 100644 + pax_force_retaddr ret diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c -index 4286f36..54471fd 100644 +index fe04a04..99be1fa 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -14,7 +14,11 @@ @@ -37881,7 +37947,7 @@ index 4286f36..54471fd 100644 /* * assembly code in arch/x86/net/bpf_jit.S -@@ -176,7 +180,9 @@ static u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg) +@@ -183,7 +187,9 @@ static u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg) static void jit_fill_hole(void *area, unsigned int size) { /* fill whole space with int3 instructions */ @@ -37891,7 +37957,7 @@ index 4286f36..54471fd 100644 } struct jit_context { -@@ -1060,7 +1066,9 @@ common_load: +@@ -1076,7 +1082,9 @@ common_load: pr_err("bpf_jit_compile fatal error\n"); return -EFAULT; } @@ -37901,7 +37967,7 @@ index 4286f36..54471fd 100644 } proglen += ilen; addrs[i] = proglen; -@@ -1137,7 +1145,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog) +@@ -1169,7 +1177,6 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) if (image) { bpf_flush_icache(header, image + proglen); @@ -37909,7 +37975,7 @@ index 4286f36..54471fd 100644 prog->bpf_func = (void *)image; prog->jited = 1; } -@@ -1150,12 +1157,8 @@ void bpf_jit_free(struct bpf_prog *fp) +@@ -1188,12 +1195,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; @@ -37952,7 +38018,7 @@ index cb31a44..b942435 100644 return NULL; diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c -index 0e07e09..334d300 100644 +index 28c0412..568d0a4 100644 --- a/arch/x86/oprofile/nmi_int.c +++ b/arch/x86/oprofile/nmi_int.c @@ -23,6 +23,7 @@ @@ -38006,7 +38072,7 @@ index 660a83c..6ff762b 100644 return 0; } diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c -index d90528e..a44aa09 100644 +index 350f709..77882e0 100644 --- a/arch/x86/oprofile/op_model_ppro.c +++ b/arch/x86/oprofile/op_model_ppro.c @@ -19,6 +19,7 @@ @@ -38397,10 +38463,10 @@ index 338402b9..29ea50ab 100644 gdt_descr.size = GDT_SIZE - 1; load_gdt(&gdt_descr); diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c -index 49e4dd4..d714abf 100644 +index b226b3f..c9a3540 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c -@@ -93,6 +93,11 @@ pgd_t * __init efi_call_phys_prolog(void) +@@ -91,6 +91,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)); } @@ -38412,7 +38478,7 @@ index 49e4dd4..d714abf 100644 out: __flush_tlb_all(); -@@ -120,6 +125,10 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd) +@@ -118,6 +123,10 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd) kfree(save_pgd); @@ -38423,7 +38489,7 @@ index 49e4dd4..d714abf 100644 __flush_tlb_all(); early_code_mapping_set_exec(0); } -@@ -220,8 +229,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) +@@ -218,8 +227,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) unsigned npages; pgd_t *pgd; @@ -38578,21 +38644,21 @@ index 040192b..7d3300f 100644 .long 0 efi_rt_function_ptr: diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S -index 92723ae..c9adfb7 100644 +index cd95075..a7b6d47 100644 --- a/arch/x86/platform/efi/efi_stub_64.S +++ b/arch/x86/platform/efi/efi_stub_64.S -@@ -12,6 +12,7 @@ +@@ -11,6 +11,7 @@ + #include <asm/msr.h> #include <asm/processor-flags.h> #include <asm/page_types.h> - #include <asm/frame.h> +#include <asm/alternative-asm.h> #define SAVE_XMM \ mov %rsp, %rax; \ -@@ -54,5 +55,6 @@ ENTRY(efi_call) +@@ -53,5 +54,6 @@ ENTRY(efi_call) addq $48, %rsp RESTORE_XMM - FRAME_END + popq %rbp + pax_force_retaddr 0, 1 ret ENDPROC(efi_call) @@ -39147,10 +39213,10 @@ index c7b15f3..cc09a65 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 880862c..53dcb02 100644 +index 760789a..dbf5054 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c -@@ -132,8 +132,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); +@@ -131,8 +131,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); struct shared_info xen_dummy_shared_info; @@ -39159,7 +39225,7 @@ index 880862c..53dcb02 100644 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE); __read_mostly int xen_have_vector_callback; EXPORT_SYMBOL_GPL(xen_have_vector_callback); -@@ -591,8 +589,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) +@@ -590,8 +588,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) { unsigned long va = dtr->address; unsigned int size = dtr->size + 1; @@ -39169,7 +39235,7 @@ index 880862c..53dcb02 100644 int f; /* -@@ -640,8 +637,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) +@@ -639,8 +636,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) { unsigned long va = dtr->address; unsigned int size = dtr->size + 1; @@ -39179,7 +39245,7 @@ index 880862c..53dcb02 100644 int f; /* -@@ -649,7 +645,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) +@@ -648,7 +644,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) * 8-byte entries, or 16 4k pages.. */ @@ -39188,7 +39254,7 @@ index 880862c..53dcb02 100644 BUG_ON(va & ~PAGE_MASK); for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { -@@ -778,7 +774,7 @@ static int cvt_gate_to_trap(int vector, const gate_desc *val, +@@ -777,7 +773,7 @@ static int cvt_gate_to_trap(int vector, const gate_desc *val, * so we should never see them. Warn if * there's an unexpected IST-using fault handler. */ @@ -39197,7 +39263,7 @@ index 880862c..53dcb02 100644 addr = (unsigned long)xen_debug; else if (addr == (unsigned long)int3) addr = (unsigned long)xen_int3; -@@ -1263,7 +1259,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { +@@ -1283,7 +1279,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { .end_context_switch = xen_end_context_switch, }; @@ -39206,7 +39272,7 @@ index 880862c..53dcb02 100644 { struct sched_shutdown r = { .reason = reason }; int cpu; -@@ -1271,26 +1267,26 @@ static void xen_reboot(int reason) +@@ -1291,26 +1287,26 @@ static void xen_reboot(int reason) for_each_online_cpu(cpu) xen_pmu_finish(cpu); @@ -39239,7 +39305,7 @@ index 880862c..53dcb02 100644 { if (pm_power_off) pm_power_off(); -@@ -1443,8 +1439,11 @@ static void __ref xen_setup_gdt(int cpu) +@@ -1463,8 +1459,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; @@ -39253,7 +39319,7 @@ index 880862c..53dcb02 100644 pv_cpu_ops.write_gdt_entry = xen_write_gdt_entry; pv_cpu_ops.load_gdt = xen_load_gdt; -@@ -1561,7 +1560,17 @@ asmlinkage __visible void __init xen_start_kernel(void) +@@ -1583,7 +1582,17 @@ asmlinkage __visible void __init xen_start_kernel(void) __userpte_alloc_gfp &= ~__GFP_HIGHMEM; /* Work out if we support NX */ @@ -39272,7 +39338,7 @@ index 880862c..53dcb02 100644 /* Get mfn list */ xen_build_dynamic_phys_to_machine(); -@@ -1589,13 +1598,6 @@ asmlinkage __visible void __init xen_start_kernel(void) +@@ -1611,13 +1620,6 @@ asmlinkage __visible void __init xen_start_kernel(void) machine_ops = xen_machine_ops; @@ -39287,10 +39353,10 @@ index 880862c..53dcb02 100644 #ifdef CONFIG_ACPI_NUMA diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c -index 478a2de..4f5e7b6 100644 +index 6743371..26347de 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c -@@ -1950,7 +1950,14 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) +@@ -1939,7 +1939,14 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) * L3_k[511] -> level2_fixmap_pgt */ convert_pfn_mfn(level3_kernel_pgt); @@ -39305,7 +39371,7 @@ index 478a2de..4f5e7b6 100644 convert_pfn_mfn(level2_fixmap_pgt); } /* We get [511][511] and have Xen's version of level2_kernel_pgt */ -@@ -1980,11 +1987,25 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) +@@ -1969,11 +1976,25 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) set_page_prot(init_level4_pgt, PAGE_KERNEL_RO); set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO); set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO); @@ -39332,7 +39398,7 @@ index 478a2de..4f5e7b6 100644 /* Pin down new L4 */ pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE, -@@ -2395,6 +2416,7 @@ static void __init xen_post_allocator_init(void) +@@ -2384,6 +2405,7 @@ static void __init xen_post_allocator_init(void) pv_mmu_ops.set_pud = xen_set_pud; #if CONFIG_PGTABLE_LEVELS == 4 pv_mmu_ops.set_pgd = xen_set_pgd; @@ -39340,7 +39406,7 @@ index 478a2de..4f5e7b6 100644 #endif /* This will work as long as patching hasn't happened yet -@@ -2423,6 +2445,10 @@ static void xen_leave_lazy_mmu(void) +@@ -2413,6 +2435,10 @@ static void xen_leave_lazy_mmu(void) preempt_enable(); } @@ -39351,7 +39417,7 @@ index 478a2de..4f5e7b6 100644 static const struct pv_mmu_ops xen_mmu_ops __initconst = { .read_cr2 = xen_read_cr2, .write_cr2 = xen_write_cr2, -@@ -2435,7 +2461,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { +@@ -2425,7 +2451,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { .flush_tlb_single = xen_flush_tlb_single, .flush_tlb_others = xen_flush_tlb_others, @@ -39360,7 +39426,7 @@ index 478a2de..4f5e7b6 100644 .pgd_alloc = xen_pgd_alloc, .pgd_free = xen_pgd_free, -@@ -2472,6 +2498,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { +@@ -2462,6 +2488,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { .pud_val = PV_CALLEE_SAVE(xen_pud_val), .make_pud = PV_CALLEE_SAVE(xen_make_pud), .set_pgd = xen_set_pgd_hyper, @@ -39509,10 +39575,10 @@ index 2f33760..835e50a 100644 #define XCHAL_ICACHE_SIZE 8192 /* I-cache size in bytes or 0 */ #define XCHAL_DCACHE_SIZE 8192 /* D-cache size in bytes or 0 */ diff --git a/block/bio.c b/block/bio.c -index 807d25e..ac1e9e7 100644 +index 0e4aa42..a05fa6e 100644 --- a/block/bio.c +++ b/block/bio.c -@@ -1149,7 +1149,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q, +@@ -1138,7 +1138,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q, /* * Overflow, abort */ @@ -39521,7 +39587,7 @@ index 807d25e..ac1e9e7 100644 return ERR_PTR(-EINVAL); nr_pages += end - start; -@@ -1274,7 +1274,7 @@ struct bio *bio_map_user_iov(struct request_queue *q, +@@ -1263,7 +1263,7 @@ struct bio *bio_map_user_iov(struct request_queue *q, /* * Overflow, abort */ @@ -39711,7 +39777,7 @@ index 9f42526..fcc8648 100644 EXPORT_SYMBOL(blk_unregister_region); diff --git a/block/partitions/efi.c b/block/partitions/efi.c -index 26cb624..a49c3a5 100644 +index bcd86e5..fe457ef 100644 --- a/block/partitions/efi.c +++ b/block/partitions/efi.c @@ -293,14 +293,14 @@ static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state, @@ -40009,10 +40075,10 @@ index f71b756..b96847c 100644 #endif diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c -index 4361bc9..5d5306e 100644 +index c1d138e..fa32222f 100644 --- a/drivers/acpi/acpi_video.c +++ b/drivers/acpi/acpi_video.c -@@ -419,7 +419,7 @@ static int video_set_report_key_events(const struct dmi_system_id *id) +@@ -406,7 +406,7 @@ static int video_set_report_key_events(const struct dmi_system_id *id) return 0; } @@ -40106,7 +40172,7 @@ index 60746ef..02a1ddc 100644 do_div(period, (count + 1)); if (period > max_period) { diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c -index b719ab3..371e2a6 100644 +index ab23479..9aa32bf 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -75,7 +75,7 @@ MODULE_PARM_DESC(cache_time, "cache time in milliseconds"); @@ -40136,29 +40202,36 @@ index 75f128e..72b03af 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 96809cd..6a49f979 100644 +index bdc67ba..a82756b 100644 --- a/drivers/acpi/blacklist.c +++ b/drivers/acpi/blacklist.c -@@ -47,7 +47,7 @@ struct acpi_blacklist_item { +@@ -47,13 +47,13 @@ struct acpi_blacklist_item { u32 is_critical_error; }; --static struct dmi_system_id acpi_osi_dmi_table[] __initdata; -+static const struct dmi_system_id acpi_osi_dmi_table[] __initconst; +-static struct dmi_system_id acpi_rev_dmi_table[] __initdata; ++static const struct dmi_system_id acpi_rev_dmi_table[] __initconst; /* * POLICY: If *anything* doesn't work, put it on the blacklist. -@@ -168,7 +168,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d) + * If they are critical errors, mark it critical, and abort driver load. + */ +-static struct acpi_blacklist_item acpi_blacklist[] __initdata = { ++static const struct acpi_blacklist_item acpi_blacklist[] __initconst = { + /* Compaq Presario 1700 */ + {"PTLTD ", " DSDT ", 0x06040000, ACPI_SIG_DSDT, less_than_or_equal, + "Multiple problems", 1}, +@@ -144,7 +144,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d) } #endif --static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { -+static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = { - { - .callback = dmi_disable_osi_vista, - .ident = "Fujitsu Siemens", +-static struct dmi_system_id acpi_rev_dmi_table[] __initdata = { ++static const struct dmi_system_id acpi_rev_dmi_table[] __initconst = { + #ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE + /* + * DELL XPS 13 (2015) switches sound between HDA and I2S diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c -index c068c82..7611bc1 100644 +index 262ca31..31a014f 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -63,7 +63,7 @@ static int set_copy_dsdt(const struct dmi_system_id *id) @@ -40224,20 +40297,20 @@ index 993fd31..cc15d14 100644 } EXPORT_SYMBOL_GPL(acpi_dev_pm_attach); diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c -index b420fb4..b66c430 100644 +index 290d6f5..888bde8 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c -@@ -1503,7 +1503,7 @@ static int ec_clear_on_resume(const struct dmi_system_id *id) +@@ -1536,7 +1536,7 @@ static int ec_correct_ecdt(const struct dmi_system_id *id) return 0; } -static struct dmi_system_id ec_dmi_table[] __initdata = { +static const struct dmi_system_id ec_dmi_table[] __initconst = { { - ec_skip_dsdt_scan, "Compal JFL92", { - DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"), -@@ -1610,7 +1610,7 @@ error: - return -ENODEV; + ec_correct_ecdt, "Asus L4R", { + DMI_MATCH(DMI_BIOS_VERSION, "1008.006"), +@@ -1613,7 +1613,7 @@ error: + return ret; } -static int param_set_event_clearing(const char *val, struct kernel_param *kp) @@ -40245,7 +40318,7 @@ index b420fb4..b66c430 100644 { int result = 0; -@@ -1628,7 +1628,7 @@ static int param_set_event_clearing(const char *val, struct kernel_param *kp) +@@ -1631,7 +1631,7 @@ static int param_set_event_clearing(const char *val, struct kernel_param *kp) return result; } @@ -40254,6 +40327,19 @@ index b420fb4..b66c430 100644 { switch (ec_event_clearing) { case ACPI_EC_EVT_TIMING_STATUS: +diff --git a/drivers/acpi/osi.c b/drivers/acpi/osi.c +index 849f9d2..c97dd81 100644 +--- a/drivers/acpi/osi.c ++++ b/drivers/acpi/osi.c +@@ -318,7 +318,7 @@ static int __init dmi_disable_osi_win8(const struct dmi_system_id *d) + * Note that _OSI("Linux")/_OSI("Darwin") determined here can be overridden + * by acpi_osi=!Linux/acpi_osi=!Darwin command line options. + */ +-static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { ++static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = { + { + .callback = dmi_disable_osi_vista, + .ident = "Fujitsu Siemens", diff --git a/drivers/acpi/pci_slot.c b/drivers/acpi/pci_slot.c index 7188e53..6012bc4 100644 --- a/drivers/acpi/pci_slot.c @@ -40294,10 +40380,10 @@ index 7cfbda4..74f738c 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 2a8b596..90a329e 100644 +index 7a2e4d4..0de00c5 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c -@@ -149,7 +149,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d) +@@ -154,7 +154,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d) return 0; } @@ -40307,7 +40393,7 @@ index 2a8b596..90a329e 100644 .callback = init_old_suspend_ordering, .ident = "Abit KN9 (nForce4 variant)", diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c -index 0243d37..dcf52db 100644 +index 4b3a9e2..c80f3c2 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c @@ -227,7 +227,7 @@ module_param_cb(trace_method_name, ¶m_ops_trace_method, &trace_method_name, @@ -40351,7 +40437,7 @@ index 0243d37..dcf52db 100644 static void delete_gpe_attr_array(void) { -@@ -777,13 +777,13 @@ static void __exit interrupt_stats_exit(void) +@@ -776,13 +776,13 @@ static void __exit interrupt_stats_exit(void) } static ssize_t @@ -40381,7 +40467,7 @@ index 82707f9..a6b19f5 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_detect.c b/drivers/acpi/video_detect.c -index 1316ddd..0f10a1d 100644 +index 3d13276..e4d0f31 100644 --- a/drivers/acpi/video_detect.c +++ b/drivers/acpi/video_detect.c @@ -41,7 +41,6 @@ ACPI_MODULE_NAME("video"); @@ -40426,10 +40512,10 @@ index 16288e7..91ab5f3 100644 int ret; diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c -index 55e257c..554c697 100644 +index 31c183a..f09c966 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c -@@ -103,7 +103,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev); +@@ -104,7 +104,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); @@ -40438,7 +40524,7 @@ index 55e257c..554c697 100644 struct ata_force_param { const char *name; -@@ -4804,7 +4804,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) +@@ -4987,7 +4987,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) struct ata_port *ap; unsigned int tag; @@ -40447,7 +40533,7 @@ index 55e257c..554c697 100644 ap = qc->ap; qc->flags = 0; -@@ -4821,7 +4821,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) +@@ -5004,7 +5004,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) struct ata_port *ap; struct ata_link *link; @@ -40456,7 +40542,7 @@ index 55e257c..554c697 100644 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE)); ap = qc->ap; link = qc->dev->link; -@@ -5928,6 +5928,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) +@@ -6111,6 +6111,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) return; spin_lock(&lock); @@ -40464,7 +40550,7 @@ index 55e257c..554c697 100644 for (cur = ops->inherits; cur; cur = cur->inherits) { void **inherit = (void **)cur; -@@ -5941,8 +5942,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) +@@ -6124,8 +6125,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) if (IS_ERR(*pp)) *pp = NULL; @@ -40475,7 +40561,7 @@ index 55e257c..554c697 100644 spin_unlock(&lock); } -@@ -6138,7 +6140,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) +@@ -6321,7 +6323,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++) { @@ -40485,10 +40571,10 @@ index 55e257c..554c697 100644 } diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c -index 567859c..ffe7c75 100644 +index bfec66f..e3e9c6e 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c -@@ -4196,7 +4196,7 @@ int ata_sas_port_init(struct ata_port *ap) +@@ -4673,7 +4673,7 @@ int ata_sas_port_init(struct ata_port *ap) if (rc) return rc; @@ -40498,7 +40584,7 @@ index 567859c..ffe7c75 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 3b301a4..ff15676 100644 --- a/drivers/ata/libata.h +++ b/drivers/ata/libata.h @@ -53,7 +53,7 @@ enum { @@ -40681,10 +40767,10 @@ index 6339efd..2b441d5 100644 dma_complete++; } diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c -index a969a7e..f5c5cd8 100644 +index 85aaf22..8730d15 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c -@@ -749,7 +749,7 @@ static void process_txdone_queue (struct fs_dev *dev, struct queue *q) +@@ -753,7 +753,7 @@ static void process_txdone_queue (struct fs_dev *dev, struct queue *q) } } @@ -40693,7 +40779,7 @@ index a969a7e..f5c5cd8 100644 fs_dprintk (FS_DEBUG_TXMEM, "i"); fs_dprintk (FS_DEBUG_ALLOC, "Free t-skb: %p\n", skb); -@@ -816,7 +816,7 @@ static void process_incoming (struct fs_dev *dev, struct queue *q) +@@ -820,7 +820,7 @@ static void process_incoming (struct fs_dev *dev, struct queue *q) #endif skb_put (skb, qe->p1 & 0xffff); ATM_SKB(skb)->vcc = atm_vcc; @@ -40702,7 +40788,7 @@ index a969a7e..f5c5cd8 100644 __net_timestamp(skb); fs_dprintk (FS_DEBUG_ALLOC, "Free rec-skb: %p (pushed)\n", skb); atm_vcc->push (atm_vcc, skb); -@@ -837,12 +837,12 @@ static void process_incoming (struct fs_dev *dev, struct queue *q) +@@ -841,12 +841,12 @@ static void process_incoming (struct fs_dev *dev, struct queue *q) kfree (pe); } if (atm_vcc) @@ -41043,7 +41129,7 @@ index 074616b..d6b3d5f 100644 } atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c -index 7d00f29..a9a6c74 100644 +index 809dd1e..ee10755 100644 --- a/drivers/atm/iphase.c +++ b/drivers/atm/iphase.c @@ -1146,7 +1146,7 @@ static int rx_pkt(struct atm_dev *dev) @@ -41650,10 +41736,10 @@ index 279e539..4c9d7fb 100644 static void platform_msi_free_descs(struct device *dev, int base, int nvec) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c -index 56705b5..4e938f5 100644 +index de23b64..7821200 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c -@@ -1841,8 +1841,10 @@ int genpd_dev_pm_attach(struct device *dev) +@@ -1814,8 +1814,10 @@ int genpd_dev_pm_attach(struct device *dev) goto out; } @@ -42114,7 +42200,7 @@ index 7a1cf7e..0330e12 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 fa20977..1285a70 100644 +index 2ba1494..e799369 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -1329,7 +1329,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet @@ -42158,7 +42244,7 @@ index fa20977..1285a70 100644 idr_destroy(&connection->peer_devices); diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c -index 1fd1dcc..30ab091 100644 +index 0bac9c8..8b1cde594 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c @@ -89,8 +89,8 @@ int drbd_adm_get_initial_state(struct sk_buff *skb, struct netlink_callback *cb) @@ -42172,7 +42258,7 @@ index 1fd1dcc..30ab091 100644 DEFINE_MUTEX(notification_mutex); -@@ -4389,7 +4389,7 @@ void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib) +@@ -4393,7 +4393,7 @@ void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib) unsigned seq; int err = -ENOMEM; @@ -42181,7 +42267,7 @@ index 1fd1dcc..30ab091 100644 msg = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO); if (!msg) goto failed; -@@ -4441,7 +4441,7 @@ void notify_resource_state(struct sk_buff *skb, +@@ -4445,7 +4445,7 @@ void notify_resource_state(struct sk_buff *skb, int err; if (!skb) { @@ -42190,7 +42276,7 @@ index 1fd1dcc..30ab091 100644 skb = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO); err = -ENOMEM; if (!skb) -@@ -4492,7 +4492,7 @@ void notify_device_state(struct sk_buff *skb, +@@ -4496,7 +4496,7 @@ void notify_device_state(struct sk_buff *skb, int err; if (!skb) { @@ -42199,7 +42285,7 @@ index 1fd1dcc..30ab091 100644 skb = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO); err = -ENOMEM; if (!skb) -@@ -4541,7 +4541,7 @@ void notify_connection_state(struct sk_buff *skb, +@@ -4545,7 +4545,7 @@ void notify_connection_state(struct sk_buff *skb, int err; if (!skb) { @@ -42208,7 +42294,7 @@ index 1fd1dcc..30ab091 100644 skb = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO); err = -ENOMEM; if (!skb) -@@ -4591,7 +4591,7 @@ void notify_peer_device_state(struct sk_buff *skb, +@@ -4595,7 +4595,7 @@ void notify_peer_device_state(struct sk_buff *skb, int err; if (!skb) { @@ -42217,7 +42303,7 @@ index 1fd1dcc..30ab091 100644 skb = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO); err = -ENOMEM; if (!skb) -@@ -4634,7 +4634,7 @@ void notify_helper(enum drbd_notification_type type, +@@ -4638,7 +4638,7 @@ void notify_helper(enum drbd_notification_type type, { struct drbd_resource *resource = device ? device->resource : connection->resource; struct drbd_helper_info helper_info; @@ -42591,7 +42677,7 @@ index d06c62e..cd04d96 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 0ede6d7..9bc6529 100644 +index 81666a5..938f3bb 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -64,7 +64,7 @@ @@ -42768,7 +42854,7 @@ index 584bc31..e64a12c 100644 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 3ec0766..bf9f1e9 100644 +index 601f64f..3958e475 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -17,7 +17,8 @@ config DEVMEM @@ -42781,9 +42867,9 @@ index 3ec0766..bf9f1e9 100644 help Say Y here if you want to support the /dev/kmem device. The /dev/kmem device is rarely used, but can be used for certain -@@ -587,6 +588,7 @@ config DEVPORT +@@ -585,6 +586,7 @@ config TELCLOCK + config DEVPORT bool - depends on !M68K depends on ISA || PCI + depends on !GRKERNSEC_KMEM default y @@ -42912,7 +42998,7 @@ index 9f2e3be..676c910 100644 int rv = param_set_int(val, kp); if (rv) diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c -index 1e25b52..9b8ee6a 100644 +index 7b1c412..0b41fca 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c @@ -302,7 +302,7 @@ struct smi_info { @@ -42945,7 +43031,7 @@ index 1e25b52..9b8ee6a 100644 module_param_call(hotmod, hotmod_handler, NULL, NULL, 0200); MODULE_PARM_DESC(hotmod, "Add and remove interfaces. See" -@@ -1806,7 +1806,7 @@ static struct smi_info *smi_info_alloc(void) +@@ -1819,7 +1819,7 @@ static struct smi_info *smi_info_alloc(void) return info; } @@ -42954,7 +43040,7 @@ index 1e25b52..9b8ee6a 100644 { char *str = kstrdup(val, GFP_KERNEL); int rv; -@@ -3626,7 +3626,7 @@ static int try_smi_init(struct smi_info *new_smi) +@@ -3639,7 +3639,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++) @@ -42964,7 +43050,7 @@ index 1e25b52..9b8ee6a 100644 new_smi->interrupt_disabled = true; atomic_set(&new_smi->need_watch, 0); diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c -index 8b3be8b..c342470 100644 +index 097c868..f14f1d2 100644 --- a/drivers/char/ipmi/ipmi_ssif.c +++ b/drivers/char/ipmi/ipmi_ssif.c @@ -284,17 +284,17 @@ struct ssif_info { @@ -43170,10 +43256,10 @@ index 678fa97..5598cef 100644 *ppos = i; diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c -index 22c2765..d92c8fa 100644 +index d28922d..3c343d6 100644 --- a/drivers/char/pcmcia/synclink_cs.c +++ b/drivers/char/pcmcia/synclink_cs.c -@@ -2340,7 +2340,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp) +@@ -2333,7 +2333,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp) if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgslpc_close(%s) entry, count=%d\n", @@ -43182,7 +43268,7 @@ index 22c2765..d92c8fa 100644 if (tty_port_close_start(port, tty, filp) == 0) goto cleanup; -@@ -2358,7 +2358,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp) +@@ -2351,7 +2351,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp) cleanup: if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgslpc_close(%s) exit, count=%d\n", __FILE__, __LINE__, @@ -43191,7 +43277,7 @@ index 22c2765..d92c8fa 100644 } /* Wait until the transmitter is empty. -@@ -2500,7 +2500,7 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp) +@@ -2493,7 +2493,7 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp) if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgslpc_open(%s), old ref count = %d\n", @@ -43200,7 +43286,7 @@ index 22c2765..d92c8fa 100644 port->low_latency = (port->flags & ASYNC_LOW_LATENCY) ? 1 : 0; -@@ -2511,11 +2511,11 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp) +@@ -2504,11 +2504,11 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp) goto cleanup; } spin_lock(&port->lock); @@ -43214,7 +43300,7 @@ index 22c2765..d92c8fa 100644 /* 1st open on this device, init hardware */ retval = startup(info, tty); if (retval < 0) -@@ -3904,7 +3904,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, +@@ -3897,7 +3897,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, unsigned short new_crctype; /* return error if TTY interface open */ @@ -43223,7 +43309,7 @@ index 22c2765..d92c8fa 100644 return -EBUSY; switch (encoding) -@@ -4008,7 +4008,7 @@ static int hdlcdev_open(struct net_device *dev) +@@ -4001,7 +4001,7 @@ static int hdlcdev_open(struct net_device *dev) /* arbitrate between network and tty opens */ spin_lock_irqsave(&info->netlock, flags); @@ -43232,7 +43318,7 @@ index 22c2765..d92c8fa 100644 printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name); spin_unlock_irqrestore(&info->netlock, flags); return -EBUSY; -@@ -4098,7 +4098,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -4091,7 +4091,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) printk("%s:hdlcdev_ioctl(%s)\n", __FILE__, dev->name); /* return error if TTY interface open */ @@ -43242,10 +43328,10 @@ index 22c2765..d92c8fa 100644 if (cmd != SIOCWANDEV) diff --git a/drivers/char/random.c b/drivers/char/random.c -index b583e53..f3bb4ac 100644 +index 0158d3b..69116a2 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c -@@ -289,9 +289,6 @@ +@@ -290,9 +290,6 @@ /* * To allow fractional bits to be tracked, the entropy_count field is * denominated in units of 1/8th bits. @@ -43255,7 +43341,7 @@ index b583e53..f3bb4ac 100644 */ #define ENTROPY_SHIFT 3 #define ENTROPY_BITS(r) ((r)->entropy_count >> ENTROPY_SHIFT) -@@ -442,9 +439,9 @@ struct entropy_store { +@@ -443,9 +440,9 @@ struct entropy_store { }; static void push_to_pool(struct work_struct *work); @@ -43268,7 +43354,7 @@ index b583e53..f3bb4ac 100644 static struct entropy_store input_pool = { .poolinfo = &poolinfo_table[0], -@@ -654,7 +651,7 @@ retry: +@@ -655,7 +652,7 @@ retry: /* The +2 corresponds to the /4 in the denominator */ do { @@ -43277,7 +43363,7 @@ index b583e53..f3bb4ac 100644 unsigned int add = ((pool_size - entropy_count)*anfrac*3) >> s; -@@ -1227,7 +1224,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf, +@@ -1228,7 +1225,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf, extract_buf(r, tmp); i = min_t(int, nbytes, EXTRACT_SIZE); @@ -43286,7 +43372,7 @@ index b583e53..f3bb4ac 100644 ret = -EFAULT; break; } -@@ -1668,7 +1665,7 @@ static char sysctl_bootid[16]; +@@ -1649,7 +1646,7 @@ static char sysctl_bootid[16]; static int proc_do_uuid(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -43295,7 +43381,7 @@ index b583e53..f3bb4ac 100644 unsigned char buf[64], tmp_uuid[16], *uuid; uuid = table->data; -@@ -1698,7 +1695,7 @@ static int proc_do_uuid(struct ctl_table *table, int write, +@@ -1679,7 +1676,7 @@ static int proc_do_uuid(struct ctl_table *table, int write, static int proc_do_entropy(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -43449,18 +43535,18 @@ index d2406fe..473a5c0 100644 static void resize_console(struct port *port) diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c -index 1f903e1f8..5f1b4cb 100644 +index 00269de..3e17e60 100644 --- a/drivers/clk/clk-composite.c +++ b/drivers/clk/clk-composite.c -@@ -194,7 +194,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name, - struct clk *clk; +@@ -221,7 +221,7 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name, + struct clk_hw *hw; struct clk_init_data init; struct clk_composite *composite; - struct clk_ops *clk_composite_ops; + clk_ops_no_const *clk_composite_ops; + int ret; composite = kzalloc(sizeof(*composite), GFP_KERNEL); - if (!composite) diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h index aa872d2..afeae37 100644 --- a/drivers/clk/samsung/clk.h @@ -43650,10 +43736,10 @@ index 5fcf247..446780a 100644 return 0; } diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c -index fb57121..ff57f22 100644 +index 32a1505..586dac0 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c -@@ -658,8 +658,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) +@@ -697,8 +697,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) data->acpi_perf_cpu = cpu; policy->driver_data = data; @@ -43667,7 +43753,7 @@ index fb57121..ff57f22 100644 result = acpi_processor_register_performance(perf, cpu); if (result) -@@ -798,7 +801,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) +@@ -836,7 +839,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu); break; case ACPI_ADR_SPACE_FIXED_HARDWARE: @@ -43678,7 +43764,7 @@ index fb57121..ff57f22 100644 break; default: break; -@@ -892,8 +897,10 @@ static void __init acpi_cpufreq_boost_init(void) +@@ -933,8 +938,10 @@ static void __init acpi_cpufreq_boost_init(void) if (!msrs) return; @@ -43692,10 +43778,10 @@ index fb57121..ff57f22 100644 cpu_notifier_register_begin(); diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c -index 5f8dbe6..57754e5 100644 +index 3957de8..fe991bb 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c -@@ -368,7 +368,9 @@ static int dt_cpufreq_probe(struct platform_device *pdev) +@@ -366,7 +366,9 @@ static int dt_cpufreq_probe(struct platform_device *pdev) if (ret) return ret; @@ -43707,10 +43793,10 @@ index 5f8dbe6..57754e5 100644 ret = cpufreq_register_driver(&dt_cpufreq_driver); if (ret) diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c -index c4acfc5..95ed094 100644 +index 5617c70..eef44db 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c -@@ -434,12 +434,12 @@ EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end); +@@ -511,12 +511,12 @@ EXPORT_SYMBOL_GPL(cpufreq_disable_fast_switch); * SYSFS INTERFACE * *********************************************************************/ static ssize_t show_boost(struct kobject *kobj, @@ -43725,7 +43811,7 @@ index c4acfc5..95ed094 100644 const char *buf, size_t count) { int ret, enable; -@@ -1999,7 +1999,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor) +@@ -2103,7 +2103,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor) read_unlock_irqrestore(&cpufreq_driver_lock, flags); mutex_lock(&cpufreq_governor_mutex); @@ -43734,7 +43820,7 @@ index c4acfc5..95ed094 100644 mutex_unlock(&cpufreq_governor_mutex); return; } -@@ -2207,7 +2207,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, +@@ -2300,7 +2300,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, return NOTIFY_OK; } @@ -43743,7 +43829,7 @@ index c4acfc5..95ed094 100644 .notifier_call = cpufreq_cpu_callback, }; -@@ -2250,13 +2250,17 @@ int cpufreq_boost_trigger_state(int state) +@@ -2343,13 +2343,17 @@ int cpufreq_boost_trigger_state(int state) return 0; write_lock_irqsave(&cpufreq_driver_lock, flags); @@ -43763,7 +43849,7 @@ index c4acfc5..95ed094 100644 write_unlock_irqrestore(&cpufreq_driver_lock, flags); pr_err("%s: Cannot %s BOOST\n", -@@ -2297,7 +2301,9 @@ int cpufreq_enable_boost_support(void) +@@ -2390,7 +2394,9 @@ int cpufreq_enable_boost_support(void) if (cpufreq_boost_supported()) return 0; @@ -43774,7 +43860,7 @@ index c4acfc5..95ed094 100644 /* This will get removed on driver unregister */ return create_boost_sysfs_file(); -@@ -2354,8 +2360,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) +@@ -2447,8 +2453,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) cpufreq_driver = driver_data; write_unlock_irqrestore(&cpufreq_driver_lock, flags); @@ -43789,10 +43875,10 @@ index c4acfc5..95ed094 100644 if (cpufreq_boost_supported()) { ret = create_boost_sysfs_file(); diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h -index 61ff82f..ccc29a1 100644 +index 34eb214..7d41bf1 100644 --- a/drivers/cpufreq/cpufreq_governor.h +++ b/drivers/cpufreq/cpufreq_governor.h -@@ -176,7 +176,7 @@ static inline struct dbs_governor *dbs_governor_of(struct cpufreq_policy *policy +@@ -152,7 +152,7 @@ static inline struct dbs_governor *dbs_governor_of(struct cpufreq_policy *policy struct od_ops { unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy, unsigned int freq_next, unsigned int relation); @@ -43802,10 +43888,10 @@ index 61ff82f..ccc29a1 100644 unsigned int dbs_update(struct cpufreq_policy *policy); int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event); diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c -index acd8027..1d206c6 100644 +index 3001634..911f7d1 100644 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c -@@ -410,7 +410,7 @@ static void od_start(struct cpufreq_policy *policy) +@@ -415,7 +415,7 @@ static void od_start(struct cpufreq_policy *policy) ondemand_powersave_bias_init(policy); } @@ -43814,7 +43900,7 @@ index acd8027..1d206c6 100644 .powersave_bias_target = generic_powersave_bias_target, }; -@@ -471,14 +471,18 @@ void od_register_powersave_bias_handler(unsigned int (*f) +@@ -476,14 +476,18 @@ void od_register_powersave_bias_handler(unsigned int (*f) (struct cpufreq_policy *, unsigned int, unsigned int), unsigned int powersave_bias) { @@ -43836,10 +43922,10 @@ index acd8027..1d206c6 100644 } EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler); diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c -index b230eba..aeb6923 100644 +index 1fa1a32..0f3e23e 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c -@@ -249,13 +249,13 @@ struct pstate_funcs { +@@ -276,13 +276,13 @@ struct pstate_funcs { struct cpu_defaults { struct pstate_adjust_policy pid_policy; struct pstate_funcs funcs; @@ -43854,8 +43940,8 @@ index b230eba..aeb6923 100644 +static struct pstate_funcs *pstate_funcs; static int hwp_active; - -@@ -521,13 +521,13 @@ static void __init intel_pstate_debug_expose_params(void) + #ifdef CONFIG_ACPI +@@ -651,13 +651,13 @@ static void __init intel_pstate_debug_expose_params(void) /************************** sysfs begin ************************/ #define show_one(file_name, object) \ static ssize_t show_##file_name \ @@ -43871,7 +43957,7 @@ index b230eba..aeb6923 100644 { struct cpudata *cpu; int total, no_turbo, turbo_pct; -@@ -543,7 +543,7 @@ static ssize_t show_turbo_pct(struct kobject *kobj, +@@ -673,7 +673,7 @@ static ssize_t show_turbo_pct(struct kobject *kobj, } static ssize_t show_num_pstates(struct kobject *kobj, @@ -43880,7 +43966,7 @@ index b230eba..aeb6923 100644 { struct cpudata *cpu; int total; -@@ -554,7 +554,7 @@ static ssize_t show_num_pstates(struct kobject *kobj, +@@ -684,7 +684,7 @@ static ssize_t show_num_pstates(struct kobject *kobj, } static ssize_t show_no_turbo(struct kobject *kobj, @@ -43889,7 +43975,7 @@ index b230eba..aeb6923 100644 { ssize_t ret; -@@ -567,7 +567,7 @@ static ssize_t show_no_turbo(struct kobject *kobj, +@@ -697,7 +697,7 @@ static ssize_t show_no_turbo(struct kobject *kobj, return ret; } @@ -43898,7 +43984,7 @@ index b230eba..aeb6923 100644 const char *buf, size_t count) { unsigned int input; -@@ -591,7 +591,7 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b, +@@ -721,7 +721,7 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b, return count; } @@ -43907,7 +43993,7 @@ index b230eba..aeb6923 100644 const char *buf, size_t count) { unsigned int input; -@@ -616,7 +616,7 @@ static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b, +@@ -745,7 +745,7 @@ static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b, return count; } @@ -43916,7 +44002,7 @@ index b230eba..aeb6923 100644 const char *buf, size_t count) { unsigned int input; -@@ -1002,19 +1002,19 @@ static void intel_pstate_set_min_pstate(struct cpudata *cpu) +@@ -1130,19 +1130,19 @@ static void intel_pstate_set_min_pstate(struct cpudata *cpu) * right CPU. */ wrmsrl_on_cpu(cpu->cpu, MSR_IA32_PERF_CTL, @@ -43944,7 +44030,7 @@ index b230eba..aeb6923 100644 intel_pstate_set_min_pstate(cpu); } -@@ -1164,7 +1164,7 @@ static inline void intel_pstate_update_pstate(struct cpudata *cpu, int pstate) +@@ -1287,7 +1287,7 @@ static inline void intel_pstate_update_pstate(struct cpudata *cpu, int pstate) return; intel_pstate_record_pstate(cpu, pstate); @@ -43953,7 +44039,7 @@ index b230eba..aeb6923 100644 } static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) -@@ -1174,7 +1174,7 @@ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) +@@ -1297,7 +1297,7 @@ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) from = cpu->pstate.current_pstate; @@ -43962,7 +44048,7 @@ index b230eba..aeb6923 100644 intel_pstate_update_pstate(cpu, target_pstate); -@@ -1434,15 +1434,15 @@ static unsigned int force_load; +@@ -1582,15 +1582,15 @@ static unsigned int force_load; static int intel_pstate_msrs_not_valid(void) { @@ -43982,7 +44068,7 @@ index b230eba..aeb6923 100644 { pid_params.sample_rate_ms = policy->sample_rate_ms; pid_params.sample_rate_ns = pid_params.sample_rate_ms * NSEC_PER_MSEC; -@@ -1455,15 +1455,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy) +@@ -1603,15 +1603,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy) static void copy_cpu_funcs(struct pstate_funcs *funcs) { @@ -43998,12 +44084,12 @@ index b230eba..aeb6923 100644 + pstate_funcs = funcs; } - #if IS_ENABLED(CONFIG_ACPI) + #ifdef CONFIG_ACPI diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c -index 5dd95da..ac41e5e 100644 +index fd77812..97e3efe 100644 --- a/drivers/cpufreq/p4-clockmod.c +++ b/drivers/cpufreq/p4-clockmod.c -@@ -134,10 +134,14 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) +@@ -130,10 +130,14 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) case 0x0F: /* Core Duo */ case 0x16: /* Celeron Core */ case 0x1C: /* Atom */ @@ -44020,7 +44106,7 @@ index 5dd95da..ac41e5e 100644 /* fall through */ case 0x09: /* Pentium M (Banias) */ return speedstep_get_frequency(SPEEDSTEP_CPU_PM); -@@ -149,7 +153,9 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) +@@ -145,7 +149,9 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) /* on P-4s, the TSC runs with constant frequency independent whether * throttling is active or not. */ @@ -44030,7 +44116,7 @@ index 5dd95da..ac41e5e 100644 + pax_close_kernel(); if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) { - printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. " + pr_warn("Warning: Pentium 4-M detected. The speedstep-ich or acpi cpufreq modules offer voltage scaling in addition of frequency scaling. You should use either one instead of p4-clockmod, if possible.\n"); diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c index 9bb42ba..b01b4a2 100644 --- a/drivers/cpufreq/sparc-us3-cpufreq.c @@ -44142,10 +44228,10 @@ index 9bb42ba..b01b4a2 100644 MODULE_AUTHOR("David S. Miller <davem@redhat.com>"); diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c -index 7d4a315..ce41fb3 100644 +index 41bc539..e46a74d 100644 --- a/drivers/cpufreq/speedstep-centrino.c +++ b/drivers/cpufreq/speedstep-centrino.c -@@ -351,8 +351,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) +@@ -352,8 +352,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) !cpu_has(cpu, X86_FEATURE_EST)) return -ENODEV; @@ -44279,7 +44365,7 @@ index b40d9c8..dcbcd94 100644 struct adf_accel_dev *accel_dev = adf_devmgr_pci_to_accel_dev(pdev); diff --git a/drivers/crypto/qat/qat_common/adf_sriov.c b/drivers/crypto/qat/qat_common/adf_sriov.c -index 38a0415..fc27277 100644 +index 4a526e2..6b28829 100644 --- a/drivers/crypto/qat/qat_common/adf_sriov.c +++ b/drivers/crypto/qat/qat_common/adf_sriov.c @@ -93,7 +93,7 @@ static void adf_iov_send_resp(struct work_struct *work) @@ -44301,11 +44387,11 @@ index 38a0415..fc27277 100644 mutex_init(&vf_info->pf2vf_lock); ratelimit_state_init(&vf_info->vf2pf_ratelimit, diff --git a/drivers/crypto/qat/qat_common/adf_vf_isr.c b/drivers/crypto/qat/qat_common/adf_vf_isr.c -index 09427b3..50f7306 100644 +index aa689ca..5cd8360 100644 --- a/drivers/crypto/qat/qat_common/adf_vf_isr.c +++ b/drivers/crypto/qat/qat_common/adf_vf_isr.c -@@ -90,9 +90,9 @@ static void adf_disable_msi(struct adf_accel_dev *accel_dev) - pci_disable_msi(pdev); +@@ -112,9 +112,9 @@ static void adf_dev_stop_async(struct work_struct *work) + kfree(stop_data); } -static void adf_pf2vf_bh_handler(void *data) @@ -44316,7 +44402,7 @@ index 09427b3..50f7306 100644 struct adf_hw_device_data *hw_data = accel_dev->hw_device; struct adf_bar *pmisc = &GET_BARS(accel_dev)[hw_data->get_misc_bar_id(hw_data)]; -@@ -143,7 +143,7 @@ err: +@@ -183,7 +183,7 @@ err: static int adf_setup_pf2vf_bh(struct adf_accel_dev *accel_dev) { tasklet_init(&accel_dev->vf.pf2vf_bh_tasklet, @@ -44326,10 +44412,10 @@ index 09427b3..50f7306 100644 mutex_init(&accel_dev->vf.vf2pf_lock); return 0; diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c -index 984c5e9..c873659 100644 +index e92418f..8ba37fb 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c -@@ -717,7 +717,7 @@ int devfreq_add_governor(struct devfreq_governor *governor) +@@ -800,7 +800,7 @@ int devfreq_add_governor(struct devfreq_governor *governor) goto err_out; } @@ -44338,7 +44424,7 @@ index 984c5e9..c873659 100644 list_for_each_entry(devfreq, &devfreq_list, node) { int ret = 0; -@@ -805,7 +805,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor) +@@ -888,7 +888,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor) } } @@ -44347,11 +44433,24 @@ index 984c5e9..c873659 100644 err_out: mutex_unlock(&devfreq_list_lock); +diff --git a/drivers/devfreq/governor_passive.c b/drivers/devfreq/governor_passive.c +index 9ef46e2..775fc75 100644 +--- a/drivers/devfreq/governor_passive.c ++++ b/drivers/devfreq/governor_passive.c +@@ -151,7 +151,7 @@ static int devfreq_passive_event_handler(struct devfreq *devfreq, + struct devfreq_passive_data *p_data + = (struct devfreq_passive_data *)devfreq->data; + struct devfreq *parent = (struct devfreq *)p_data->parent; +- struct notifier_block *nb = &p_data->nb; ++ notifier_block_no_const *nb = &p_data->nb; + int ret = 0; + + if (!parent) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c -index 4a2c07e..8f4b1cc 100644 +index 6355ab3..0f2a459 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c -@@ -880,10 +880,9 @@ static int dma_buf_describe(struct seq_file *s) +@@ -881,10 +881,9 @@ static int dma_buf_describe(struct seq_file *s) static int dma_buf_show(struct seq_file *s, void *unused) { @@ -44364,6 +44463,19 @@ index 4a2c07e..8f4b1cc 100644 } static int dma_buf_debug_open(struct inode *inode, struct file *file) +diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c +index 41b5c6d..644f4ea 100644 +--- a/drivers/dma/qcom/hidma.c ++++ b/drivers/dma/qcom/hidma.c +@@ -547,7 +547,7 @@ static ssize_t hidma_show_values(struct device *dev, + static int hidma_create_sysfs_entry(struct hidma_dev *dev, char *name, + int mode) + { +- struct device_attribute *attrs; ++ device_attribute_no_const *attrs; + char *name_copy; + + attrs = devm_kmalloc(dev->ddev.dev, sizeof(struct device_attribute), diff --git a/drivers/dma/qcom/hidma_mgmt_sys.c b/drivers/dma/qcom/hidma_mgmt_sys.c index d61f106..a23baa3 100644 --- a/drivers/dma/qcom/hidma_mgmt_sys.c @@ -44435,7 +44547,7 @@ index 93da1a4..5e2c149 100644 goto err_out; diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c -index 26e65ab..9a1e25d 100644 +index 10c305b..4e92041 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -50,7 +50,7 @@ int edac_mc_get_poll_msec(void) @@ -44803,10 +44915,10 @@ index d425374..1da1716 100644 EXPORT_SYMBOL_GPL(cper_next_record_id); diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 3a69ed5..0cfea9c6 100644 +index 05509f3..498c7ec 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c -@@ -176,15 +176,17 @@ static struct attribute_group efi_subsys_attr_group = { +@@ -177,15 +177,17 @@ static struct attribute_group efi_subsys_attr_group = { }; static struct efivars generic_efivars; @@ -44831,7 +44943,7 @@ index 3a69ed5..0cfea9c6 100644 return efivars_register(&generic_efivars, &generic_ops, efi_kobj); } diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c -index 096adcb..0235592 100644 +index 116b244..b16d9f2 100644 --- a/drivers/firmware/efi/efivars.c +++ b/drivers/firmware/efi/efivars.c @@ -583,7 +583,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var) @@ -44843,6 +44955,19 @@ index 096adcb..0235592 100644 int error; /* new_var */ +diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile +index c069451..fca41b6 100644 +--- a/drivers/firmware/efi/libstub/Makefile ++++ b/drivers/firmware/efi/libstub/Makefile +@@ -20,6 +20,8 @@ KBUILD_CFLAGS := $(cflags-y) -DDISABLE_BRANCH_PROFILING \ + $(call cc-option,-ffreestanding) \ + $(call cc-option,-fno-stack-protector) + ++KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) ++ + GCOV_PROFILE := n + KASAN_SANITIZE := n + UBSAN_SANITIZE := n diff --git a/drivers/firmware/efi/runtime-map.c b/drivers/firmware/efi/runtime-map.c index 5c55227..97f4978 100644 --- a/drivers/firmware/efi/runtime-map.c @@ -44908,7 +45033,7 @@ index 5de3ed2..d839c56 100644 .sysfs_ops = &memmap_attr_ops, .default_attrs = def_attrs, diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c -index b5d0580..893aa47 100644 +index 03e0458..4a13085 100644 --- a/drivers/firmware/psci.c +++ b/drivers/firmware/psci.c @@ -58,7 +58,7 @@ bool psci_tos_resident_on(int cpu) @@ -44996,10 +45121,10 @@ index 425501c..cad19ba 100644 if (devtype->gpio_dir_out) gc->direction_output = devtype->gpio_dir_out; diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c -index 551dfa9..fc6ca83 100644 +index b98ede7..c83e860 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c -@@ -1068,7 +1068,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank) +@@ -1029,7 +1029,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank) writel_relaxed(0, base + bank->regs->ctrl); } @@ -45008,7 +45133,7 @@ index 551dfa9..fc6ca83 100644 { static int gpio; int irq_base = 0; -@@ -1158,7 +1158,7 @@ static int omap_gpio_probe(struct platform_device *pdev) +@@ -1119,7 +1119,7 @@ static int omap_gpio_probe(struct platform_device *pdev) const struct omap_gpio_platform_data *pdata; struct resource *res; struct gpio_bank *bank; @@ -45018,10 +45143,10 @@ index 551dfa9..fc6ca83 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 4d9a315c..b1fed42 100644 +index 681c93f..143a923 100644 --- a/drivers/gpio/gpio-rcar.c +++ b/drivers/gpio/gpio-rcar.c -@@ -369,7 +369,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) +@@ -388,7 +388,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) struct gpio_rcar_priv *p; struct resource *io, *irq; struct gpio_chip *gpio_chip; @@ -45044,10 +45169,10 @@ index ac8deb0..f3caa10 100644 return -EINVAL; } diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index 996a733..742b84f 100644 +index be74bd3..76e7fc2 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c -@@ -1031,8 +1031,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) +@@ -1059,8 +1059,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) } if (gpiochip->irqchip) { @@ -45060,7 +45185,7 @@ index 996a733..742b84f 100644 gpiochip->irqchip = NULL; } } -@@ -1109,8 +1111,10 @@ int _gpiochip_irqchip_add(struct gpio_chip *gpiochip, +@@ -1137,8 +1139,10 @@ int _gpiochip_irqchip_add(struct gpio_chip *gpiochip, */ if (!irqchip->irq_request_resources && !irqchip->irq_release_resources) { @@ -45074,10 +45199,10 @@ index 996a733..742b84f 100644 /* diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 1bcbade..c8d5713 100644 +index e055d5be..45982ec 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -1709,7 +1709,7 @@ void amdgpu_debugfs_cleanup(struct drm_minor *minor); +@@ -1771,7 +1771,7 @@ void amdgpu_debugfs_cleanup(struct drm_minor *minor); * amdgpu smumgr functions */ struct amdgpu_smumgr_funcs { @@ -45086,15 +45211,6 @@ index 1bcbade..c8d5713 100644 int (*request_smu_load_fw)(struct amdgpu_device *adev); int (*request_smu_specific_fw)(struct amdgpu_device *adev, uint32_t fwtype); }; -@@ -2339,7 +2339,7 @@ static inline void amdgpu_unregister_atpx_handler(void) {} - * KMS - */ - extern const struct drm_ioctl_desc amdgpu_ioctls_kms[]; --extern int amdgpu_max_kms_ioctl; -+extern const int amdgpu_max_kms_ioctl; - - int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags); - int amdgpu_driver_unload_kms(struct drm_device *dev); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c index 35a1248..fd2510a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c @@ -45109,10 +45225,10 @@ index 35a1248..fd2510a 100644 if (amdgpu_atpx_priv.dhandle == ACPI_HANDLE(&pdev->dev)) return VGA_SWITCHEROO_IGD; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -index 3e21732..21fc524 100644 +index cf6f49f..dffb8ab 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c -@@ -1076,49 +1076,49 @@ int amdgpu_cgs_call_acpi_method(void *cgs_device, +@@ -1105,50 +1105,50 @@ int amdgpu_cgs_call_acpi_method(struct cgs_device *cgs_device, } static const struct cgs_ops amdgpu_cgs_ops = { @@ -45147,6 +45263,7 @@ index 3e21732..21fc524 100644 - amdgpu_cgs_pm_query_clock_limits, - amdgpu_cgs_set_camera_voltages, - amdgpu_cgs_get_firmware_info, +- amdgpu_cgs_rel_firmware, - amdgpu_cgs_set_powergating_state, - amdgpu_cgs_set_clockgating_state, - amdgpu_cgs_get_active_displays_info, @@ -45184,6 +45301,7 @@ index 3e21732..21fc524 100644 + .pm_query_clock_limits = amdgpu_cgs_pm_query_clock_limits, + .set_camera_voltages = amdgpu_cgs_set_camera_voltages, + .get_firmware_info = amdgpu_cgs_get_firmware_info, ++ .rel_firmware = amdgpu_cgs_rel_firmware, + .set_powergating_state = amdgpu_cgs_set_powergating_state, + .set_clockgating_state = amdgpu_cgs_set_clockgating_state, + .get_active_displays_info = amdgpu_cgs_get_active_displays_info, @@ -45201,9 +45319,9 @@ index 3e21732..21fc524 100644 + .irq_put = amdgpu_cgs_irq_put }; - void *amdgpu_cgs_create_device(struct amdgpu_device *adev) + struct cgs_device *amdgpu_cgs_create_device(struct amdgpu_device *adev) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c -index 7ef2c13..dff07e5 100644 +index cb07da4..e7cd288 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c @@ -701,7 +701,7 @@ static int amdgpu_connector_lvds_get_modes(struct drm_connector *connector) @@ -45243,7 +45361,7 @@ index 7ef2c13..dff07e5 100644 { struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index 2139da7..222ef8b 100644 +index 6e92008..6051afc 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1054,7 +1054,7 @@ static bool amdgpu_switcheroo_can_switch(struct pci_dev *pdev) @@ -45256,10 +45374,10 @@ index 2139da7..222ef8b 100644 static const struct vga_switcheroo_client_ops amdgpu_switcheroo_ops = { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -index f1e17d6..e7d750a 100644 +index f888c01..7cf5bfe 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -@@ -491,7 +491,7 @@ static struct drm_driver kms_driver = { +@@ -515,7 +515,7 @@ static struct drm_driver kms_driver = { .driver_features = DRIVER_USE_AGP | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | @@ -45268,7 +45386,7 @@ index f1e17d6..e7d750a 100644 .dev_priv_size = 0, .load = amdgpu_driver_load_kms, .open = amdgpu_driver_open_kms, -@@ -542,9 +542,6 @@ static struct drm_driver kms_driver = { +@@ -566,9 +566,6 @@ static struct drm_driver kms_driver = { .patchlevel = KMS_DRIVER_PATCHLEVEL, }; @@ -45278,9 +45396,9 @@ index f1e17d6..e7d750a 100644 static struct pci_driver amdgpu_kms_pci_driver = { .name = DRIVER_NAME, .id_table = pciidlist, -@@ -563,20 +560,21 @@ static int __init amdgpu_init(void) +@@ -588,19 +585,20 @@ static int __init amdgpu_init(void) + return -EINVAL; } - #endif DRM_INFO("amdgpu kernel modesetting enabled.\n"); - driver = &kms_driver; - pdriver = &amdgpu_kms_pci_driver; @@ -45292,7 +45410,6 @@ index f1e17d6..e7d750a 100644 + pax_close_kernel(); + amdgpu_register_atpx_handler(); - /* let modprobe override vga console setting */ - return drm_pci_init(driver, pdriver); + return drm_pci_init(&kms_driver, &amdgpu_kms_pci_driver); @@ -45305,17 +45422,43 @@ index f1e17d6..e7d750a 100644 + drm_pci_exit(&kms_driver, &amdgpu_kms_pci_driver); amdgpu_unregister_atpx_handler(); amdgpu_sync_fini(); + amdgpu_fence_slab_fini(); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +index 870f949..4a61ca8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +@@ -414,7 +414,12 @@ static int amdgpu_debugfs_ring_info(struct seq_file *m, void *data) + return 0; } -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -index d78739d..64027ae 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c -@@ -756,4 +756,4 @@ const struct drm_ioctl_desc amdgpu_ioctls_kms[] = { - DRM_IOCTL_DEF_DRV(AMDGPU_GEM_OP, amdgpu_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), - DRM_IOCTL_DEF_DRV(AMDGPU_GEM_USERPTR, amdgpu_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), - }; --int amdgpu_max_kms_ioctl = ARRAY_SIZE(amdgpu_ioctls_kms); -+const int amdgpu_max_kms_ioctl = ARRAY_SIZE(amdgpu_ioctls_kms); + +-static struct drm_info_list amdgpu_debugfs_ring_info_list[AMDGPU_MAX_RINGS]; ++static drm_info_list_no_const amdgpu_debugfs_ring_info_list[AMDGPU_MAX_RINGS] __read_only = { ++ [0 ... AMDGPU_MAX_RINGS - 1] = { ++ .show = amdgpu_debugfs_ring_info, ++ .driver_features = 0, ++ } ++}; + static char amdgpu_debugfs_ring_names[AMDGPU_MAX_RINGS][32]; + + #endif +@@ -425,7 +430,7 @@ static int amdgpu_debugfs_ring_init(struct amdgpu_device *adev, + #if defined(CONFIG_DEBUG_FS) + unsigned offset = (uint8_t*)ring - (uint8_t*)adev; + unsigned i; +- struct drm_info_list *info; ++ drm_info_list_no_const *info; + char *name; + + for (i = 0; i < ARRAY_SIZE(amdgpu_debugfs_ring_info_list); ++i) { +@@ -440,8 +445,6 @@ static int amdgpu_debugfs_ring_init(struct amdgpu_device *adev, + name = &amdgpu_debugfs_ring_names[i][0]; + sprintf(name, "amdgpu_ring_%s", ring->name); + info->name = name; +- info->show = amdgpu_debugfs_ring_info; +- info->driver_features = 0; + info->data = (void*)(uintptr_t)offset; + + return amdgpu_debugfs_add_files(adev, info, 1); diff --git a/drivers/gpu/drm/amd/amdgpu/fiji_smc.c b/drivers/gpu/drm/amd/amdgpu/fiji_smc.c index b336c91..c015ca7 100644 --- a/drivers/gpu/drm/amd/amdgpu/fiji_smc.c @@ -45383,10 +45526,10 @@ index 083893d..d4f66f5 100644 uint32_t fw_mask = tonga_smu_get_mask_for_fw_type(fw_type); int i; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c -index 07ac724..1c4ca38 100644 +index ee3e04e..65f7436 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c -@@ -419,7 +419,7 @@ static int kfd_ioctl_set_memory_policy(struct file *filep, +@@ -418,7 +418,7 @@ static int kfd_ioctl_set_memory_policy(struct file *filep, (args->alternate_policy == KFD_IOC_CACHE_POLICY_COHERENT) ? cache_policy_coherent : cache_policy_noncoherent; @@ -45427,7 +45570,7 @@ index 3f95f7c..0a62dad 100644 return 0; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c -index 4bb7f42..320fcac 100644 +index f49c551..ad74c7e 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@ -242,7 +242,7 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm, @@ -45740,7 +45883,7 @@ index 7f134aa..cd34d4a 100644 if (!interrupt_ring) return -ENOMEM; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c -index 8fa8941..5ae07df 100644 +index 9beae87..1fe9326 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c @@ -56,7 +56,7 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev, @@ -45840,12 +45983,12 @@ index 7b69070..d7bd78b 100644 if (retval != 0) return retval; diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c -index ff08ce4..5b8758f 100644 +index 436fc16..7282298 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c @@ -239,10 +239,16 @@ int cz_dpm_powergate_vce(struct pp_hwmgr *hwmgr, bool bgate) - static struct phm_master_table_item cz_enable_clock_power_gatings_list[] = { + static const struct phm_master_table_item cz_enable_clock_power_gatings_list[] = { /*we don't need an exit table here, because there is only D3 cold on Kv*/ - { phm_cf_want_uvd_power_gating, cz_tf_uvd_power_gating_initialize }, - { phm_cf_want_vce_power_gating, cz_tf_vce_power_gating_initialize }, @@ -45862,15 +46005,15 @@ index ff08ce4..5b8758f 100644 + { } }; - struct phm_master_table_header cz_phm_enable_clock_power_gatings_master = { + const struct phm_master_table_header cz_phm_enable_clock_power_gatings_master = { diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c -index 5682490..bec743b 100644 +index 1f14c47..11bb711 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c @@ -916,13 +916,13 @@ static int cz_tf_update_low_mem_pstate(struct pp_hwmgr *hwmgr, } - static struct phm_master_table_item cz_set_power_state_list[] = { + static const struct phm_master_table_item cz_set_power_state_list[] = { - {NULL, cz_tf_update_sclk_limit}, - {NULL, cz_tf_set_deep_sleep_sclk_threshold}, - {NULL, cz_tf_set_watermark_threshold}, @@ -45887,11 +46030,11 @@ index 5682490..bec743b 100644 + { } }; - static struct phm_master_table_header cz_set_power_state_master = { -@@ -932,15 +932,15 @@ static struct phm_master_table_header cz_set_power_state_master = { + static const struct phm_master_table_header cz_set_power_state_master = { +@@ -932,15 +932,15 @@ static const struct phm_master_table_header cz_set_power_state_master = { }; - static struct phm_master_table_item cz_setup_asic_list[] = { + static const struct phm_master_table_item cz_setup_asic_list[] = { - {NULL, cz_tf_reset_active_process_mask}, - {NULL, cz_tf_upload_pptable_to_smu}, - {NULL, cz_tf_init_sclk_limit}, @@ -45912,11 +46055,11 @@ index 5682490..bec743b 100644 + { } }; - static struct phm_master_table_header cz_setup_asic_master = { + static const struct phm_master_table_header cz_setup_asic_master = { @@ -985,10 +985,10 @@ static int cz_tf_reset_cc6_data(struct pp_hwmgr *hwmgr, } - static struct phm_master_table_item cz_power_down_asic_list[] = { + static const struct phm_master_table_item cz_power_down_asic_list[] = { - {NULL, cz_tf_power_up_display_clock_sys_pll}, - {NULL, cz_tf_clear_nb_dpm_flag}, - {NULL, cz_tf_reset_cc6_data}, @@ -45927,11 +46070,11 @@ index 5682490..bec743b 100644 + { } }; - static struct phm_master_table_header cz_power_down_asic_master = { + static const struct phm_master_table_header cz_power_down_asic_master = { @@ -1096,8 +1096,8 @@ static int cz_tf_check_for_dpm_enabled(struct pp_hwmgr *hwmgr, } - static struct phm_master_table_item cz_disable_dpm_list[] = { + static const struct phm_master_table_item cz_disable_dpm_list[] = { - { NULL, cz_tf_check_for_dpm_enabled}, - {NULL, NULL}, + { .tableFunction = cz_tf_check_for_dpm_enabled }, @@ -45939,10 +46082,10 @@ index 5682490..bec743b 100644 }; -@@ -1108,13 +1108,13 @@ static struct phm_master_table_header cz_disable_dpm_master = { +@@ -1108,13 +1108,13 @@ static const struct phm_master_table_header cz_disable_dpm_master = { }; - static struct phm_master_table_item cz_enable_dpm_list[] = { + static const struct phm_master_table_item cz_enable_dpm_list[] = { - { NULL, cz_tf_check_for_dpm_disabled }, - { NULL, cz_tf_program_voting_clients }, - { NULL, cz_tf_start_dpm}, @@ -45959,14 +46102,14 @@ index 5682490..bec743b 100644 + { }, }; - static struct phm_master_table_header cz_enable_dpm_master = { + static const struct phm_master_table_header cz_enable_dpm_master = { diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/fiji_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/fiji_thermal.c -index e76a7de..ae5fb7e 100644 +index 92976b6..7d1f7f6 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/fiji_thermal.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/fiji_thermal.c @@ -617,17 +617,17 @@ static int tf_fiji_thermal_disable_alert(struct pp_hwmgr *hwmgr, - static struct phm_master_table_item + static const struct phm_master_table_item fiji_thermal_start_thermal_controller_master_list[] = { - {NULL, tf_fiji_thermal_initialize}, - {NULL, tf_fiji_thermal_set_temperature_range}, @@ -45987,10 +46130,10 @@ index e76a7de..ae5fb7e 100644 + { } }; - static struct phm_master_table_header + static const struct phm_master_table_header @@ -639,10 +639,10 @@ fiji_thermal_start_thermal_controller_master = { - static struct phm_master_table_item + static const struct phm_master_table_item fiji_thermal_set_temperature_range_master_list[] = { - {NULL, tf_fiji_thermal_disable_alert}, - {NULL, tf_fiji_thermal_set_temperature_range}, @@ -46002,15 +46145,60 @@ index e76a7de..ae5fb7e 100644 + { } }; - struct phm_master_table_header + static const struct phm_master_table_header +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_thermal.c +index b206632..eeb4724 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_thermal.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_thermal.c +@@ -645,18 +645,18 @@ static int tf_polaris10_thermal_avfs_enable(struct pp_hwmgr *hwmgr, + + static const struct phm_master_table_item + polaris10_thermal_start_thermal_controller_master_list[] = { +- {NULL, tf_polaris10_thermal_initialize}, +- {NULL, tf_polaris10_thermal_set_temperature_range}, +- {NULL, tf_polaris10_thermal_enable_alert}, +- {NULL, tf_polaris10_thermal_avfs_enable}, ++ { .tableFunction = tf_polaris10_thermal_initialize }, ++ { .tableFunction = tf_polaris10_thermal_set_temperature_range }, ++ { .tableFunction = tf_polaris10_thermal_enable_alert }, ++ { .tableFunction = tf_polaris10_thermal_avfs_enable }, + /* We should restrict performance levels to low before we halt the SMC. + * On the other hand we are still in boot state when we do this + * so it would be pointless. + * If this assumption changes we have to revisit this table. + */ +- {NULL, tf_polaris10_thermal_setup_fan_table}, +- {NULL, tf_polaris10_thermal_start_smc_fan_control}, +- {NULL, NULL} ++ { .tableFunction = tf_polaris10_thermal_setup_fan_table }, ++ { .tableFunction = tf_polaris10_thermal_start_smc_fan_control }, ++ { } + }; + + static const struct phm_master_table_header +@@ -668,10 +668,10 @@ polaris10_thermal_start_thermal_controller_master = { + + static const struct phm_master_table_item + polaris10_thermal_set_temperature_range_master_list[] = { +- {NULL, tf_polaris10_thermal_disable_alert}, +- {NULL, tf_polaris10_thermal_set_temperature_range}, +- {NULL, tf_polaris10_thermal_enable_alert}, +- {NULL, NULL} ++ { .tableFunction = tf_polaris10_thermal_disable_alert }, ++ { .tableFunction = tf_polaris10_thermal_set_temperature_range }, ++ { .tableFunction = tf_polaris10_thermal_enable_alert }, ++ { } + }; + + static const struct phm_master_table_header diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_thermal.c -index a188174..74acdc0 100644 +index 47ef1ca..d352d38 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_thermal.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_thermal.c @@ -526,16 +526,16 @@ static int tf_tonga_thermal_disable_alert(struct pp_hwmgr *hwmgr, void *input, v } - static struct phm_master_table_item tonga_thermal_start_thermal_controller_master_list[] = { + static const struct phm_master_table_item tonga_thermal_start_thermal_controller_master_list[] = { - { NULL, tf_tonga_thermal_initialize }, - { NULL, tf_tonga_thermal_set_temperature_range }, - { NULL, tf_tonga_thermal_enable_alert }, @@ -46029,11 +46217,11 @@ index a188174..74acdc0 100644 + { } }; - static struct phm_master_table_header tonga_thermal_start_thermal_controller_master = { -@@ -545,10 +545,10 @@ static struct phm_master_table_header tonga_thermal_start_thermal_controller_mas + static const struct phm_master_table_header tonga_thermal_start_thermal_controller_master = { +@@ -545,10 +545,10 @@ static const struct phm_master_table_header tonga_thermal_start_thermal_controll }; - static struct phm_master_table_item tonga_thermal_set_temperature_range_master_list[] = { + static const struct phm_master_table_item tonga_thermal_set_temperature_range_master_list[] = { - { NULL, tf_tonga_thermal_disable_alert}, - { NULL, tf_tonga_thermal_set_temperature_range}, - { NULL, tf_tonga_thermal_enable_alert}, @@ -46044,9 +46232,9 @@ index a188174..74acdc0 100644 + { } }; - struct phm_master_table_header tonga_thermal_set_temperature_range_master = { + static const struct phm_master_table_header tonga_thermal_set_temperature_range_master = { diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c -index a5ff945..78ff889 100644 +index c16248c..cc9af95 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@ -139,7 +139,7 @@ int amd_sched_entity_init(struct amd_gpu_scheduler *sched, @@ -46059,7 +46247,7 @@ index a5ff945..78ff889 100644 return 0; diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h -index 9403145..b8842f1 100644 +index 070095a..c3899f8 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h @@ -49,7 +49,7 @@ struct amd_sched_entity { @@ -46072,7 +46260,7 @@ index 9403145..b8842f1 100644 struct fence *dependency; diff --git a/drivers/gpu/drm/amd/scheduler/sched_fence.c b/drivers/gpu/drm/amd/scheduler/sched_fence.c -index dc115ae..7ecd14b 100644 +index 2a732c4..47124cc 100644 --- a/drivers/gpu/drm/amd/scheduler/sched_fence.c +++ b/drivers/gpu/drm/amd/scheduler/sched_fence.c @@ -41,7 +41,7 @@ struct amd_sched_fence *amd_sched_fence_create(struct amd_sched_entity *s_entity @@ -46085,10 +46273,10 @@ index dc115ae..7ecd14b 100644 s_entity->fence_context, seq); diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c -index 82043c2..92ebd4e 100644 +index 439824a..7b1cf0c 100644 --- a/drivers/gpu/drm/armada/armada_drv.c +++ b/drivers/gpu/drm/armada/armada_drv.c -@@ -215,6 +215,7 @@ static struct drm_driver armada_drm_driver = { +@@ -214,6 +214,7 @@ static struct drm_driver armada_drm_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_HAVE_IRQ | DRIVER_PRIME, .ioctls = armada_ioctls, @@ -46096,7 +46284,7 @@ index 82043c2..92ebd4e 100644 .fops = &armada_drm_fops, }; -@@ -335,8 +336,6 @@ static int __init armada_drm_init(void) +@@ -334,8 +335,6 @@ static int __init armada_drm_init(void) { int ret; @@ -46106,7 +46294,7 @@ index 82043c2..92ebd4e 100644 if (ret) return ret; diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c -index a965e7e..5ba937e 100644 +index c337922..fad0e80 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -773,7 +773,7 @@ static int ast_get_modes(struct drm_connector *connector) @@ -46119,10 +46307,10 @@ index a965e7e..5ba937e 100644 { struct ast_private *ast = connector->dev->dev_private; diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c -index 96926f0..69097ba 100644 +index 207a2cb..666b75a 100644 --- a/drivers/gpu/drm/bochs/bochs_kms.c +++ b/drivers/gpu/drm/bochs/bochs_kms.c -@@ -194,7 +194,7 @@ int bochs_connector_get_modes(struct drm_connector *connector) +@@ -187,7 +187,7 @@ int bochs_connector_get_modes(struct drm_connector *connector) return count; } @@ -46132,10 +46320,10 @@ index 96926f0..69097ba 100644 { struct bochs_device *bochs = diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c -index 691a1b9..8d05d29 100644 +index 0e3cc66..005ade8 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c -@@ -4256,7 +4256,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev, +@@ -4285,7 +4285,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev, goto done; } @@ -46145,10 +46333,10 @@ index 691a1b9..8d05d29 100644 ret = -EFAULT; goto done; diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c -index 167c8d3..bf13708 100644 +index bff8922..f11da92 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c -@@ -467,7 +467,7 @@ void drm_unplug_dev(struct drm_device *dev) +@@ -469,7 +469,7 @@ void drm_unplug_dev(struct drm_device *dev) drm_device_set_unplugged(dev); @@ -46157,8 +46345,38 @@ index 167c8d3..bf13708 100644 drm_put_dev(dev); } mutex_unlock(&drm_global_mutex); +diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c +index 5075fae..16bdafc 100644 +--- a/drivers/gpu/drm/drm_fb_cma_helper.c ++++ b/drivers/gpu/drm/drm_fb_cma_helper.c +@@ -322,7 +322,7 @@ static int drm_fbdev_cma_defio_init(struct fb_info *fbi, + struct drm_gem_cma_object *cma_obj) + { + struct fb_deferred_io *fbdefio; +- struct fb_ops *fbops; ++ fb_ops_no_const *fbops; + + /* + * Per device structures are needed because: +@@ -333,6 +333,7 @@ static int drm_fbdev_cma_defio_init(struct fb_info *fbi, + fbops = kzalloc(sizeof(*fbops), GFP_KERNEL); + if (!fbdefio || !fbops) { + kfree(fbdefio); ++ kfree(fbops); + return -ENOMEM; + } + +@@ -348,7 +349,7 @@ static int drm_fbdev_cma_defio_init(struct fb_info *fbi, + fbdefio->deferred_io = drm_fb_helper_deferred_io; + fbi->fbdefio = fbdefio; + fb_deferred_io_init(fbi); +- fbi->fbops->fb_mmap = drm_fbdev_cma_deferred_io_mmap; ++ fbops->fb_mmap = drm_fbdev_cma_deferred_io_mmap; + + return 0; + } diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c -index aeef58e..1594209 100644 +index 7af7f8b..01047e3 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c @@ -131,7 +131,7 @@ int drm_open(struct inode *inode, struct file *filp) @@ -46179,16 +46397,16 @@ index aeef58e..1594209 100644 drm_minor_release(minor); return retcode; } -@@ -449,7 +449,7 @@ int drm_release(struct inode *inode, struct file *filp) +@@ -445,7 +445,7 @@ int drm_release(struct inode *inode, struct file *filp) mutex_lock(&drm_global_mutex); - DRM_DEBUG("open_count = %d\n", dev->open_count); + DRM_DEBUG("open_count = %ld\n", local_read(&dev->open_count)); - mutex_lock(&dev->struct_mutex); + mutex_lock(&dev->filelist_mutex); list_del(&file_priv->lhead); -@@ -464,10 +464,10 @@ int drm_release(struct inode *inode, struct file *filp) +@@ -463,10 +463,10 @@ int drm_release(struct inode *inode, struct file *filp) * Begin inline drm_release */ @@ -46201,16 +46419,16 @@ index aeef58e..1594209 100644 /* if the master has gone away we can't do anything with the lock */ if (file_priv->minor->master) -@@ -537,7 +537,7 @@ int drm_release(struct inode *inode, struct file *filp) +@@ -536,7 +536,7 @@ int drm_release(struct inode *inode, struct file *filp) * End inline drm_release */ - if (!--dev->open_count) { + if (local_dec_and_test(&dev->open_count)) { - retcode = drm_lastclose(dev); + drm_lastclose(dev); if (drm_device_is_unplugged(dev)) drm_put_dev(dev); -@@ -676,6 +676,11 @@ unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait) +@@ -675,6 +675,11 @@ unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait) } EXPORT_SYMBOL(drm_poll); @@ -46222,7 +46440,7 @@ index aeef58e..1594209 100644 /** * drm_event_reserve_init_locked - init a DRM event and reserve space for it * @dev: DRM device -@@ -715,7 +720,7 @@ int drm_event_reserve_init_locked(struct drm_device *dev, +@@ -714,7 +719,7 @@ int drm_event_reserve_init_locked(struct drm_device *dev, p->file_priv = file_priv; /* we *could* pass this in as arg, but everyone uses kfree: */ @@ -46293,7 +46511,7 @@ index 3d2e91c..d31c4c9 100644 item->object = NULL; } diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c -index cbb4fc0..5c756cb9 100644 +index 5d469b2..2a576b2 100644 --- a/drivers/gpu/drm/drm_info.c +++ b/drivers/gpu/drm/drm_info.c @@ -77,10 +77,13 @@ int drm_vm_info(struct seq_file *m, void *data) @@ -46376,10 +46594,10 @@ index 57676f8..020e7ca 100644 ret = drm_ioctl(filp, cmd, arg); diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c -index 8ce2a0c..d09a8f6 100644 +index b7a39771c..9dcd7f6 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c -@@ -685,7 +685,7 @@ long drm_ioctl(struct file *filp, +@@ -633,7 +633,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; @@ -46389,7 +46607,7 @@ index 8ce2a0c..d09a8f6 100644 int retcode = -EINVAL; char stack_kdata[128]; diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c -index a1fff11..425c24b 100644 +index 29d5a54..50781bc 100644 --- a/drivers/gpu/drm/drm_pci.c +++ b/drivers/gpu/drm/drm_pci.c @@ -308,7 +308,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent, @@ -46423,10 +46641,10 @@ index a1fff11..425c24b 100644 } } diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c -index 5344940..3764f99 100644 +index 2dd820e..8dba3e9 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c -@@ -605,7 +605,6 @@ static int exynos_drm_platform_probe(struct platform_device *pdev) +@@ -599,7 +599,6 @@ static int exynos_drm_platform_probe(struct platform_device *pdev) struct component_match *match; pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); @@ -46435,7 +46653,7 @@ index 5344940..3764f99 100644 match = exynos_drm_match_add(&pdev->dev); if (IS_ERR(match)) diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c -index 193d360..3dd24ce 100644 +index 8564c3d..3008478 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c @@ -1057,6 +1057,11 @@ int exynos_g2d_get_ver_ioctl(struct drm_device *drm_dev, void *data, @@ -46503,7 +46721,7 @@ index 813ef23..17928d6 100644 { struct drm_device *dev = connector->dev; diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c -index 7cd87a0..9b8a71f 100644 +index a05c0206..01bfdad 100644 --- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c +++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c @@ -120,9 +120,14 @@ static void dsi_set_pipe_plane_enable_state(struct drm_device *dev, @@ -46559,12 +46777,12 @@ index 8b2eb32..78566a8 100644 { if (mode->clock > 165000) diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c -index 4e1c685..c67f299f 100644 +index 82b8ce4..6401ce82 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c -@@ -376,7 +376,6 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) +@@ -375,7 +375,6 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) + drm_irq_install(dev, dev->pdev->irq); - dev->vblank_disable_allowed = true; dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ - dev->driver->get_vblank_counter = psb_get_vblank_counter; @@ -46690,10 +46908,10 @@ index 5e6a301..b6e143e 100644 /* diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c -index 1c6d227..c97b56e 100644 +index b3198fc..48383ba 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c -@@ -356,7 +356,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) +@@ -416,7 +416,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. */ @@ -46702,14 +46920,14 @@ index 1c6d227..c97b56e 100644 } static const struct vga_switcheroo_client_ops i915_switcheroo_ops = { -@@ -1382,4 +1382,4 @@ const struct drm_ioctl_desc i915_ioctls[] = { +@@ -1584,4 +1584,4 @@ const struct drm_ioctl_desc i915_ioctls[] = { DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_SETPARAM, i915_gem_context_setparam_ioctl, DRM_RENDER_ALLOW), }; -int i915_max_ioctl = ARRAY_SIZE(i915_ioctls); +const int i915_max_ioctl = ARRAY_SIZE(i915_ioctls); diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c -index 6d2fb3f..691eabb 100644 +index 85c4deb..1b6fe7d 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -43,7 +43,7 @@ @@ -46721,7 +46939,7 @@ index 6d2fb3f..691eabb 100644 #define GEN_DEFAULT_PIPEOFFSETS \ .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ -@@ -1711,7 +1711,7 @@ static const struct file_operations i915_driver_fops = { +@@ -1707,7 +1707,7 @@ static const struct file_operations i915_driver_fops = { .llseek = noop_llseek, }; @@ -46730,7 +46948,7 @@ index 6d2fb3f..691eabb 100644 /* Don't use MTRRs here; the Xserver or userspace app should * deal with them for Intel hardware. */ -@@ -1761,6 +1761,7 @@ static struct pci_driver i915_pci_driver = { +@@ -1757,6 +1757,7 @@ static struct pci_driver i915_pci_driver = { static int __init i915_init(void) { @@ -46738,15 +46956,15 @@ index 6d2fb3f..691eabb 100644 driver.num_ioctls = i915_max_ioctl; /* -@@ -1778,6 +1779,7 @@ static int __init i915_init(void) - #endif +@@ -1772,6 +1773,7 @@ static int __init i915_init(void) + driver.driver_features &= ~DRIVER_MODESET; if (!(driver.driver_features & DRIVER_MODESET)) { + pax_close_kernel(); /* Silently fail loading to not upset userspace. */ DRM_DEBUG_DRIVER("KMS and UMS disabled.\n"); return 0; -@@ -1785,6 +1787,7 @@ static int __init i915_init(void) +@@ -1779,6 +1781,7 @@ static int __init i915_init(void) if (i915.nuclear_pageflip) driver.driver_features |= DRIVER_ATOMIC; @@ -46755,10 +46973,10 @@ index 6d2fb3f..691eabb 100644 return drm_pci_init(&driver, &i915_pci_driver); } diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h -index daba7eb..a5b2287 100644 +index bc3f2e6..f8e9150 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h -@@ -2721,7 +2721,7 @@ struct drm_i915_cmd_table { +@@ -2747,7 +2747,7 @@ struct drm_i915_cmd_table { #include "i915_trace.h" extern const struct drm_ioctl_desc i915_ioctls[]; @@ -46768,10 +46986,10 @@ index daba7eb..a5b2287 100644 extern int i915_suspend_switcheroo(struct drm_device *dev, pm_message_t state); extern int i915_resume_switcheroo(struct drm_device *dev); diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index 1328bc5..d25ea51 100644 +index 33df74d..a789df1 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -@@ -997,12 +997,12 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) +@@ -1000,12 +1000,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, @@ -46787,59 +47005,26 @@ index 1328bc5..d25ea51 100644 invalid_flags = __EXEC_OBJECT_UNKNOWN_FLAGS; if (USES_FULL_PPGTT(dev)) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c -index 49e4f26..a1aceb1 100644 +index 92acdff..a682121 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c -@@ -3036,8 +3036,8 @@ static void chv_setup_private_ppat(struct drm_i915_private *dev_priv) - - static int gen8_gmch_probe(struct drm_device *dev, - u64 *gtt_total, -- size_t *stolen, -- phys_addr_t *mappable_base, -+ u64 *stolen, -+ u64 *mappable_base, - u64 *mappable_end) - { - struct drm_i915_private *dev_priv = dev->dev_private; -@@ -3087,8 +3087,8 @@ static int gen8_gmch_probe(struct drm_device *dev, - - static int gen6_gmch_probe(struct drm_device *dev, - u64 *gtt_total, -- size_t *stolen, -- phys_addr_t *mappable_base, -+ u64 *stolen, -+ u64 *mappable_base, - u64 *mappable_end) - { - struct drm_i915_private *dev_priv = dev->dev_private; -@@ -3138,8 +3138,8 @@ static void gen6_gmch_remove(struct i915_address_space *vm) - - static int i915_gmch_probe(struct drm_device *dev, - u64 *gtt_total, -- size_t *stolen, -- phys_addr_t *mappable_base, -+ u64 *stolen, -+ u64 *mappable_base, - u64 *mappable_end) - { - struct drm_i915_private *dev_priv = dev->dev_private; -@@ -3216,8 +3216,8 @@ int i915_gem_gtt_init(struct drm_device *dev) +@@ -3213,8 +3213,8 @@ int i915_ggtt_init_hw(struct drm_device *dev) /* GMADR is the PCI mmio aperture into the global GTT. */ DRM_INFO("Memory usable by graphics device = %lluM\n", - gtt->base.total >> 20); -- DRM_DEBUG_DRIVER("GMADR size = %lldM\n", gtt->mappable_end >> 20); -- DRM_DEBUG_DRIVER("GTT stolen size = %zdM\n", gtt->stolen_size >> 20); -+ DRM_DEBUG_DRIVER("GMADR size = %lluM\n", gtt->mappable_end >> 20); -+ DRM_DEBUG_DRIVER("GTT stolen size = %lluM\n", gtt->stolen_size >> 20); + ggtt->base.total >> 20); +- DRM_DEBUG_DRIVER("GMADR size = %lldM\n", ggtt->mappable_end >> 20); +- DRM_DEBUG_DRIVER("GTT stolen size = %zdM\n", ggtt->stolen_size >> 20); ++ DRM_DEBUG_DRIVER("GMADR size = %lluM\n", ggtt->mappable_end >> 20); ++ DRM_DEBUG_DRIVER("GTT stolen size = %lluM\n", ggtt->stolen_size >> 20); #ifdef CONFIG_INTEL_IOMMU if (intel_iommu_gfx_mapped) DRM_INFO("VT-d active for gfx access\n"); diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h -index 8774f1b..4227d0b 100644 +index 0008543..a86b6e8 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h -@@ -345,13 +345,13 @@ struct i915_address_space { - struct i915_gtt { +@@ -342,14 +342,14 @@ struct i915_address_space { + struct i915_ggtt { struct i915_address_space base; - size_t stolen_size; /* Total size of stolen memory */ @@ -46847,6 +47032,7 @@ index 8774f1b..4227d0b 100644 size_t stolen_usable_size; /* Total size minus BIOS reserved */ size_t stolen_reserved_base; size_t stolen_reserved_size; + size_t size; /* Total size of Global GTT */ u64 mappable_end; /* End offset that we can CPU map */ struct io_mapping *mappable; /* Mapping to our CPU mappable region */ - phys_addr_t mappable_base; /* PA of our GMADR */ @@ -46854,15 +47040,6 @@ index 8774f1b..4227d0b 100644 /** "Graphics Stolen Memory" holds the global PTEs */ void __iomem *gsm; -@@ -362,7 +362,7 @@ struct i915_gtt { - - /* global gtt ops */ - int (*gtt_probe)(struct drm_device *dev, u64 *gtt_total, -- size_t *stolen, phys_addr_t *mappable_base, -+ u64 *stolen, u64 *mappable_base, - u64 *mappable_end); - }; - diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c index 97f3a56..32c712e 100644 --- a/drivers/gpu/drm/i915/i915_ioc32.c @@ -46897,12 +47074,12 @@ index 97f3a56..32c712e 100644 ret = drm_ioctl(filp, cmd, arg); diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c -index d1a46ef..4999f42 100644 +index aab47f7..28aabbe 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c -@@ -4569,14 +4569,15 @@ void intel_irq_init(struct drm_i915_private *dev_priv) - - pm_qos_add_request(&dev_priv->pm_qos, PM_QOS_CPU_DMA_LATENCY, PM_QOS_DEFAULT_VALUE); +@@ -4614,14 +4614,15 @@ void intel_irq_init(struct drm_i915_private *dev_priv) + INIT_DELAYED_WORK(&dev_priv->gpu_error.hangcheck_work, + i915_hangcheck_elapsed); + pax_open_kernel(); if (IS_GEN2(dev_priv)) { @@ -46919,7 +47096,7 @@ index d1a46ef..4999f42 100644 dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ } -@@ -4588,32 +4589,32 @@ void intel_irq_init(struct drm_i915_private *dev_priv) +@@ -4633,32 +4634,32 @@ void intel_irq_init(struct drm_i915_private *dev_priv) if (!IS_GEN2(dev_priv)) dev->vblank_disable_immediate = true; @@ -46971,8 +47148,8 @@ index d1a46ef..4999f42 100644 + const_cast(dev->driver->disable_vblank) = gen8_disable_vblank; if (IS_BROXTON(dev)) dev_priv->display.hpd_irq_setup = bxt_hpd_irq_setup; - else if (HAS_PCH_SPT(dev)) -@@ -4621,35 +4622,36 @@ void intel_irq_init(struct drm_i915_private *dev_priv) + else if (HAS_PCH_SPT(dev) || HAS_PCH_KBP(dev)) +@@ -4666,35 +4667,36 @@ void intel_irq_init(struct drm_i915_private *dev_priv) else dev_priv->display.hpd_irq_setup = ilk_hpd_irq_setup; } else if (HAS_PCH_SPLIT(dev)) { @@ -47030,10 +47207,10 @@ index d1a46ef..4999f42 100644 /** diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index e5db9e1..e07f0de 100644 +index 3074c56..2f67a37 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -15140,13 +15140,13 @@ struct intel_quirk { +@@ -15190,13 +15190,13 @@ struct intel_quirk { int subsystem_vendor; int subsystem_device; void (*hook)(struct drm_device *dev); @@ -47050,7 +47227,7 @@ index e5db9e1..e07f0de 100644 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) { -@@ -15154,18 +15154,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +@@ -15204,18 +15204,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) return 1; } @@ -47081,7 +47258,7 @@ index e5db9e1..e07f0de 100644 .hook = quirk_invert_brightness, }, }; -@@ -15248,7 +15250,7 @@ static void intel_init_quirks(struct drm_device *dev) +@@ -15298,7 +15300,7 @@ static void intel_init_quirks(struct drm_device *dev) q->hook(dev); } for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) { @@ -47091,10 +47268,10 @@ index e5db9e1..e07f0de 100644 } } diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c -index 05229b9..de0cefc 100644 +index 8265665..c5593dc 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c -@@ -335,7 +335,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc, +@@ -331,7 +331,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc, if (imxdrm->pipes >= MAX_CRTC) return -EINVAL; @@ -47261,7 +47438,7 @@ index 484b4d1..54685f2 100644 dev->vblank_disable_immediate = true; diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c -index cdf5227..6b332f1 100644 +index db76b94..a1e2e00 100644 --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c @@ -193,7 +193,7 @@ static int nouveau_dsm_power_state(enum vga_switcheroo_client_id id, @@ -47274,7 +47451,7 @@ index cdf5227..6b332f1 100644 /* easy option one - intel vendor ID means Integrated */ if (pdev->vendor == PCI_VENDOR_ID_INTEL) diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c -index 4dca65a..3486961 100644 +index a1570b1..0e3c08c 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c @@ -964,7 +964,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios, @@ -47287,7 +47464,7 @@ index 4dca65a..3486961 100644 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry }) diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c -index e81aefe..dd2a354 100644 +index c108408..575750a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -862,7 +862,7 @@ get_tmds_link_bandwidth(struct drm_connector *connector, bool hdmi) @@ -47300,7 +47477,7 @@ index e81aefe..dd2a354 100644 struct drm_display_mode *mode) { diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c -index d06877d..3404100 100644 +index 11f8dd9..8efc333 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -82,9 +82,8 @@ MODULE_PARM_DESC(runpm, "disable (0), force enable (1), optimus only default (-1 @@ -47346,10 +47523,10 @@ index d06877d..3404100 100644 nouveau_display_options(); -diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h -index 5c363ed..98fa924 100644 ---- a/drivers/gpu/drm/nouveau/nouveau_drm.h -+++ b/drivers/gpu/drm/nouveau/nouveau_drm.h +diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h +index 822a021..a131e66 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_drv.h ++++ b/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -124,7 +124,6 @@ struct nouveau_drm { struct drm_global_reference mem_global_ref; struct ttm_bo_global_ref bo_global_ref; @@ -47372,7 +47549,7 @@ 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 d2e7d20..7bbe51f 100644 +index bcee914..8a38eb3 100644 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c @@ -107,10 +107,10 @@ nouveau_vram_manager_new(struct ttm_mem_type_manager *man, @@ -47425,7 +47602,7 @@ index d2e7d20..7bbe51f 100644 int diff --git a/drivers/gpu/drm/nouveau/nouveau_usif.c b/drivers/gpu/drm/nouveau/nouveau_usif.c -index e9f52ef..b25cd62 100644 +index 675e9e0..088f227 100644 --- a/drivers/gpu/drm/nouveau/nouveau_usif.c +++ b/drivers/gpu/drm/nouveau/nouveau_usif.c @@ -186,6 +186,11 @@ usif_notify_del(struct drm_file *f, void *data, u32 size, void *argv, u32 argc) @@ -47450,7 +47627,7 @@ index e9f52ef..b25cd62 100644 ntfy->p->e.base.length = sizeof(ntfy->p->e.base) + ntfy->reply; diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c -index af89c36..83ef136 100644 +index c6a180a..c5c7855 100644 --- a/drivers/gpu/drm/nouveau/nouveau_vga.c +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c @@ -73,7 +73,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev) @@ -47544,7 +47721,7 @@ index 9f3dd09..8ccc40d 100644 mutex_lock(&panel_list_mutex); list_add_tail(&dssdev->panel_list, &panel_list); diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c -index fdc1833..f307630 100644 +index b5d4b41..7519e7d 100644 --- a/drivers/gpu/drm/qxl/qxl_cmd.c +++ b/drivers/gpu/drm/qxl/qxl_cmd.c @@ -285,27 +285,27 @@ static int wait_for_io_cmd_user(struct qxl_device *qdev, uint8_t val, long port, @@ -47601,10 +47778,10 @@ index 6911b8c..89d6867 100644 return 0; } diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c -index 030409a..de26914 100644 +index 8b5d543..9093126 100644 --- a/drivers/gpu/drm/qxl/qxl_display.c +++ b/drivers/gpu/drm/qxl/qxl_display.c -@@ -828,7 +828,7 @@ static int qxl_conn_get_modes(struct drm_connector *connector) +@@ -829,7 +829,7 @@ static int qxl_conn_get_modes(struct drm_connector *connector) return ret; } @@ -47614,7 +47791,7 @@ index 030409a..de26914 100644 { struct drm_device *ddev = connector->dev; diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c -index 7307b07..3346540 100644 +index dc9df5f..baa8573 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c @@ -37,7 +37,7 @@ @@ -47626,7 +47803,7 @@ index 7307b07..3346540 100644 static const struct pci_device_id pciidlist[] = { { 0x1b36, 0x100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0 }, -@@ -279,7 +279,11 @@ static int __init qxl_init(void) +@@ -277,7 +277,11 @@ static int __init qxl_init(void) if (qxl_modeset == 0) return -EINVAL; @@ -47640,7 +47817,7 @@ index 7307b07..3346540 100644 } diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h -index 3f3897e..0bc8075 100644 +index 3ad6604..e5f2f77 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.h +++ b/drivers/gpu/drm/qxl/qxl_drv.h @@ -292,10 +292,10 @@ struct qxl_device { @@ -47659,10 +47836,10 @@ index 3f3897e..0bc8075 100644 wait_queue_head_t display_event; wait_queue_head_t cursor_event; diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c -index 7c2e782..d3ca7da 100644 +index 5a4c8c4..faf4c73 100644 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c -@@ -184,7 +184,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, +@@ -183,7 +183,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, /* TODO copy slow path code from i915 */ fb_cmd = qxl_bo_kmap_atomic_page(qdev, cmd_bo, (release->release_offset & PAGE_SIZE)); @@ -47671,7 +47848,7 @@ index 7c2e782..d3ca7da 100644 { struct qxl_drawable *draw = fb_cmd; -@@ -204,7 +204,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, +@@ -203,7 +203,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, struct drm_qxl_reloc reloc; if (copy_from_user(&reloc, @@ -47680,7 +47857,7 @@ index 7c2e782..d3ca7da 100644 sizeof(reloc))) { ret = -EFAULT; goto out_free_bos; -@@ -283,10 +283,10 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data, +@@ -282,10 +282,10 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data, for (cmd_num = 0; cmd_num < execbuffer->commands_num; ++cmd_num) { @@ -47694,7 +47871,7 @@ index 7c2e782..d3ca7da 100644 sizeof(user_cmd))) return -EFAULT; -@@ -440,4 +440,4 @@ const struct drm_ioctl_desc qxl_ioctls[] = { +@@ -439,4 +439,4 @@ const struct drm_ioctl_desc qxl_ioctls[] = { DRM_AUTH), }; @@ -47744,7 +47921,7 @@ index 0bf1e20..42a7310 100644 ret = drm_irq_install(qdev->ddev, qdev->ddev->pdev->irq); qdev->ram_header->int_mask = QXL_INTERRUPT_MASK; diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c -index 9534127..1d17b3f 100644 +index 0738d74..3a2f5f0 100644 --- a/drivers/gpu/drm/qxl/qxl_ttm.c +++ b/drivers/gpu/drm/qxl/qxl_ttm.c @@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev) @@ -47767,7 +47944,7 @@ index 9534127..1d17b3f 100644 } vma->vm_ops = &qxl_ttm_vm_ops; return 0; -@@ -464,25 +466,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data) +@@ -466,25 +468,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data) static int qxl_ttm_debugfs_init(struct qxl_device *qdev) { #if defined(CONFIG_DEBUG_FS) @@ -48028,7 +48205,7 @@ index 81a63d7..5c7f8e7 100644 { struct drm_device *dev = connector->dev; diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c -index cb29868..33523a2 100644 +index 21c44b2..d5aad3a 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -1274,7 +1274,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) @@ -48041,10 +48218,10 @@ index cb29868..33523a2 100644 static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = { diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c -index ccd4ad4..a1ffcff 100644 +index b55aa74..7a345cd 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c -@@ -132,7 +132,7 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc, +@@ -135,7 +135,7 @@ extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc, const struct drm_display_mode *mode); extern bool radeon_is_px(struct drm_device *dev); extern const struct drm_ioctl_desc radeon_ioctls_kms[]; @@ -48053,7 +48230,7 @@ index ccd4ad4..a1ffcff 100644 int radeon_mmap(struct file *filp, struct vm_area_struct *vma); int radeon_mode_dumb_mmap(struct drm_file *filp, struct drm_device *dev, -@@ -503,7 +503,7 @@ static struct drm_driver kms_driver = { +@@ -514,7 +514,7 @@ static struct drm_driver kms_driver = { .driver_features = DRIVER_USE_AGP | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | @@ -48062,7 +48239,7 @@ index ccd4ad4..a1ffcff 100644 .load = radeon_driver_load_kms, .open = radeon_driver_open_kms, .preclose = radeon_driver_preclose_kms, -@@ -580,8 +580,11 @@ static int __init radeon_init(void) +@@ -589,8 +589,11 @@ static int __init radeon_init(void) DRM_INFO("radeon kernel modesetting enabled.\n"); driver = &kms_driver; pdriver = &radeon_kms_pci_driver; @@ -48156,10 +48333,10 @@ index 414953c..1b26674 100644 -int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms); +const int radeon_max_kms_ioctl = ARRAY_SIZE(radeon_ioctls_kms); diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c -index 90f7394..ccdec03 100644 +index 590b037..2755d23 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c -@@ -968,7 +968,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size) +@@ -970,7 +970,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size) man->size = size >> PAGE_SHIFT; } @@ -48168,7 +48345,7 @@ index 90f7394..ccdec03 100644 static const struct vm_operations_struct *ttm_vm_ops = NULL; static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) -@@ -1009,8 +1009,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma) +@@ -1011,8 +1011,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma) } if (unlikely(ttm_vm_ops == NULL)) { ttm_vm_ops = vma->vm_ops; @@ -48257,10 +48434,10 @@ index 93ad8a5..48f0a57 100644 -int sis_max_ioctl = ARRAY_SIZE(sis_ioctls); +const int sis_max_ioctl = ARRAY_SIZE(sis_ioctls); diff --git a/drivers/gpu/drm/sti/sti_cursor.c b/drivers/gpu/drm/sti/sti_cursor.c -index 3abb400..47ff1c9 100644 +index 4e99029..cbfd7c6 100644 --- a/drivers/gpu/drm/sti/sti_cursor.c +++ b/drivers/gpu/drm/sti/sti_cursor.c -@@ -131,7 +131,7 @@ static int cursor_dbg_show(struct seq_file *s, void *data) +@@ -133,7 +133,7 @@ static int cursor_dbg_show(struct seq_file *s, void *data) return 0; } @@ -48269,7 +48446,7 @@ index 3abb400..47ff1c9 100644 { "cursor", cursor_dbg_show, 0, NULL }, }; -@@ -140,8 +140,10 @@ static int cursor_debugfs_init(struct sti_cursor *cursor, +@@ -142,8 +142,10 @@ static int cursor_debugfs_init(struct sti_cursor *cursor, { unsigned int i; @@ -48305,10 +48482,10 @@ index 25f7663..db8f927 100644 return drm_debugfs_create_files(dvo_debugfs_files, ARRAY_SIZE(dvo_debugfs_files), diff --git a/drivers/gpu/drm/sti/sti_gdp.c b/drivers/gpu/drm/sti/sti_gdp.c -index ff3d3e7..da4db0f 100644 +index ff33c38..e0e62a9 100644 --- a/drivers/gpu/drm/sti/sti_gdp.c +++ b/drivers/gpu/drm/sti/sti_gdp.c -@@ -297,22 +297,22 @@ static int gdp_node_dbg_show(struct seq_file *s, void *arg) +@@ -298,22 +298,22 @@ static int gdp_node_dbg_show(struct seq_file *s, void *arg) return 0; } @@ -48335,7 +48512,7 @@ index ff3d3e7..da4db0f 100644 { "gdp3", gdp_dbg_show, 0, NULL }, { "gdp3_node", gdp_node_dbg_show, 0, NULL }, }; -@@ -320,7 +320,7 @@ static struct drm_info_list gdp3_debugfs_files[] = { +@@ -321,7 +321,7 @@ static struct drm_info_list gdp3_debugfs_files[] = { static int gdp_debugfs_init(struct sti_gdp *gdp, struct drm_minor *minor) { unsigned int i; @@ -48344,7 +48521,7 @@ index ff3d3e7..da4db0f 100644 int nb_files; switch (gdp->plane.desc) { -@@ -344,8 +344,10 @@ static int gdp_debugfs_init(struct sti_gdp *gdp, struct drm_minor *minor) +@@ -345,8 +345,10 @@ static int gdp_debugfs_init(struct sti_gdp *gdp, struct drm_minor *minor) return -EINVAL; } @@ -48356,10 +48533,10 @@ index ff3d3e7..da4db0f 100644 return drm_debugfs_create_files(gdp_debugfs_files, nb_files, diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c -index ec0d017..99afbbe 100644 +index f7d3464..98b044f 100644 --- a/drivers/gpu/drm/sti/sti_hda.c +++ b/drivers/gpu/drm/sti/sti_hda.c -@@ -400,7 +400,7 @@ static int hda_dbg_show(struct seq_file *s, void *data) +@@ -401,7 +401,7 @@ static int hda_dbg_show(struct seq_file *s, void *data) return 0; } @@ -48368,7 +48545,7 @@ index ec0d017..99afbbe 100644 { "hda", hda_dbg_show, 0, NULL }, }; -@@ -415,8 +415,10 @@ static int hda_debugfs_init(struct sti_hda *hda, struct drm_minor *minor) +@@ -416,8 +416,10 @@ static int hda_debugfs_init(struct sti_hda *hda, struct drm_minor *minor) { unsigned int i; @@ -48404,10 +48581,10 @@ index 6ef0715..dbc27b0 100644 return drm_debugfs_create_files(hdmi_debugfs_files, ARRAY_SIZE(hdmi_debugfs_files), diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c -index e05b0dc..d70a2e6 100644 +index 1edec29..7feb262 100644 --- a/drivers/gpu/drm/sti/sti_hqvdp.c +++ b/drivers/gpu/drm/sti/sti_hqvdp.c -@@ -633,7 +633,7 @@ static int hqvdp_dbg_show(struct seq_file *s, void *data) +@@ -634,7 +634,7 @@ static int hqvdp_dbg_show(struct seq_file *s, void *data) return 0; } @@ -48416,7 +48593,7 @@ index e05b0dc..d70a2e6 100644 { "hqvdp", hqvdp_dbg_show, 0, NULL }, }; -@@ -641,8 +641,10 @@ static int hqvdp_debugfs_init(struct sti_hqvdp *hqvdp, struct drm_minor *minor) +@@ -642,8 +642,10 @@ static int hqvdp_debugfs_init(struct sti_hqvdp *hqvdp, struct drm_minor *minor) { unsigned int i; @@ -48428,10 +48605,10 @@ index e05b0dc..d70a2e6 100644 return drm_debugfs_create_files(hqvdp_debugfs_files, ARRAY_SIZE(hqvdp_debugfs_files), diff --git a/drivers/gpu/drm/sti/sti_mixer.c b/drivers/gpu/drm/sti/sti_mixer.c -index e7425c3..d53380c 100644 +index aed7801..80688a8 100644 --- a/drivers/gpu/drm/sti/sti_mixer.c +++ b/drivers/gpu/drm/sti/sti_mixer.c -@@ -179,18 +179,18 @@ static int mixer_dbg_show(struct seq_file *s, void *arg) +@@ -180,18 +180,18 @@ static int mixer_dbg_show(struct seq_file *s, void *arg) return 0; } @@ -48453,7 +48630,7 @@ index e7425c3..d53380c 100644 int nb_files; switch (mixer->id) { -@@ -206,8 +206,10 @@ static int mixer_debugfs_init(struct sti_mixer *mixer, struct drm_minor *minor) +@@ -207,8 +207,10 @@ static int mixer_debugfs_init(struct sti_mixer *mixer, struct drm_minor *minor) return -EINVAL; } @@ -48465,10 +48642,10 @@ index e7425c3..d53380c 100644 return drm_debugfs_create_files(mixer_debugfs_files, nb_files, diff --git a/drivers/gpu/drm/sti/sti_tvout.c b/drivers/gpu/drm/sti/sti_tvout.c -index 2c99016..88de356 100644 +index f983db5..197243e 100644 --- a/drivers/gpu/drm/sti/sti_tvout.c +++ b/drivers/gpu/drm/sti/sti_tvout.c -@@ -590,7 +590,7 @@ static int tvout_dbg_show(struct seq_file *s, void *data) +@@ -591,7 +591,7 @@ static int tvout_dbg_show(struct seq_file *s, void *data) return 0; } @@ -48477,7 +48654,7 @@ index 2c99016..88de356 100644 { "tvout", tvout_dbg_show, 0, NULL }, }; -@@ -605,8 +605,10 @@ static int tvout_debugfs_init(struct sti_tvout *tvout, struct drm_minor *minor) +@@ -606,8 +606,10 @@ static int tvout_debugfs_init(struct sti_tvout *tvout, struct drm_minor *minor) { unsigned int i; @@ -48489,10 +48666,10 @@ index 2c99016..88de356 100644 return drm_debugfs_create_files(tvout_debugfs_files, ARRAY_SIZE(tvout_debugfs_files), diff --git a/drivers/gpu/drm/sti/sti_vid.c b/drivers/gpu/drm/sti/sti_vid.c -index 5a2c5dc..c4f2be6 100644 +index 523ed19..9b28a88 100644 --- a/drivers/gpu/drm/sti/sti_vid.c +++ b/drivers/gpu/drm/sti/sti_vid.c -@@ -125,7 +125,7 @@ static int vid_dbg_show(struct seq_file *s, void *arg) +@@ -126,7 +126,7 @@ static int vid_dbg_show(struct seq_file *s, void *arg) return 0; } @@ -48501,7 +48678,7 @@ index 5a2c5dc..c4f2be6 100644 { "vid", vid_dbg_show, 0, NULL }, }; -@@ -133,8 +133,10 @@ static int vid_debugfs_init(struct sti_vid *vid, struct drm_minor *minor) +@@ -134,8 +134,10 @@ static int vid_debugfs_init(struct sti_vid *vid, struct drm_minor *minor) { unsigned int i; @@ -48513,7 +48690,7 @@ index 5a2c5dc..c4f2be6 100644 return drm_debugfs_create_files(vid_debugfs_files, ARRAY_SIZE(vid_debugfs_files), diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c -index fb2b4b0..46f430e 100644 +index 39940f5..2dc6661 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1640,7 +1640,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor) @@ -48526,7 +48703,7 @@ index fb2b4b0..46f430e 100644 err = drm_debugfs_create_files(dc->debugfs_files, ARRAY_SIZE(debugfs_files), diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c -index 44e1027..3548928 100644 +index d1239eb..d550362 100644 --- a/drivers/gpu/drm/tegra/dsi.c +++ b/drivers/gpu/drm/tegra/dsi.c @@ -62,7 +62,7 @@ struct tegra_dsi { @@ -48640,7 +48817,7 @@ index a1803fb..c53f6b0 100644 kobject_put(&zone->kobj); return ret; diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c -index 025c429..314062f 100644 +index a37de5d..4a0db00 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -54,7 +54,7 @@ @@ -48717,7 +48894,7 @@ index 025c429..314062f 100644 /* set zero flag for page allocation if required */ diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c -index 624d941..106fa1f 100644 +index bef9f6f..ca48e17 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c @@ -56,7 +56,7 @@ @@ -48808,10 +48985,10 @@ index 4709b54..beb015d 100644 { struct udl_device *udl = connector->dev->dev_private; diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c -index fd1eb9d..8ef346a 100644 +index d5df555..b3323da 100644 --- a/drivers/gpu/drm/udl/udl_fb.c +++ b/drivers/gpu/drm/udl/udl_fb.c -@@ -366,7 +366,6 @@ static int udl_fb_release(struct fb_info *info, int user) +@@ -239,7 +239,6 @@ static int udl_fb_release(struct fb_info *info, int user) fb_deferred_io_cleanup(info); kfree(info->fbdefio); info->fbdefio = NULL; @@ -48820,10 +48997,10 @@ index fd1eb9d..8ef346a 100644 pr_warn("released /dev/fb%d user=%d count=%d\n", diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c -index b7d2ff0..d2e1f7b 100644 +index 250ed7e..9252e4e 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c -@@ -132,6 +132,11 @@ static int compare_dev(struct device *dev, void *data) +@@ -133,6 +133,11 @@ static int compare_dev(struct device *dev, void *data) return dev == data; } @@ -48835,7 +49012,7 @@ index b7d2ff0..d2e1f7b 100644 static void vc4_match_add_drivers(struct device *dev, struct component_match **match, struct platform_driver *const *drivers, -@@ -143,8 +148,7 @@ static void vc4_match_add_drivers(struct device *dev, +@@ -144,8 +149,7 @@ static void vc4_match_add_drivers(struct device *dev, struct device_driver *drv = &drivers[i]->driver; struct device *p = NULL, *d; @@ -48977,10 +49154,10 @@ index ea8172c..6ceff63 100644 case VIA_IRQ_ABSOLUTE: break; diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c -index 5fd1fd0..0766d9b 100644 +index d4305da..343b500 100644 --- a/drivers/gpu/drm/virtio/virtgpu_display.c +++ b/drivers/gpu/drm/virtio/virtgpu_display.c -@@ -327,7 +327,7 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector) +@@ -319,7 +319,7 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector) return count; } @@ -48990,7 +49167,7 @@ index 5fd1fd0..0766d9b 100644 { struct virtio_gpu_output *output = diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c -index 9fd924c..c64b065 100644 +index a058081..6574390 100644 --- a/drivers/gpu/drm/virtio/virtgpu_ttm.c +++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c @@ -198,11 +198,11 @@ static void ttm_bo_man_debug(struct ttm_mem_type_manager *man, @@ -49011,7 +49188,7 @@ index 9fd924c..c64b065 100644 static int virtio_gpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -index cab0c54..c03f271 100644 +index 89fb194..665aa29 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -438,7 +438,7 @@ struct vmw_private { @@ -49140,10 +49317,10 @@ index cbd7c98..170a5ba 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 4f9c5c6..50d91fb 100644 +index 8ea3a26..51a45ff 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c -@@ -2635,7 +2635,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); +@@ -2633,7 +2633,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); int hid_add_device(struct hid_device *hdev) { @@ -49152,7 +49329,7 @@ index 4f9c5c6..50d91fb 100644 int ret; if (WARN_ON(hdev->status & HID_STAT_ADDED)) -@@ -2679,7 +2679,7 @@ int hid_add_device(struct hid_device *hdev) +@@ -2677,7 +2677,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, @@ -49295,7 +49472,7 @@ index a1c086b..b45a999 100644 } diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c -index b853b4b..3647b37 100644 +index df35fb7..fff7e4e 100644 --- a/drivers/hv/hv_balloon.c +++ b/drivers/hv/hv_balloon.c @@ -471,7 +471,7 @@ MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add"); @@ -49361,7 +49538,7 @@ index b853b4b..3647b37 100644 version_req.version.version = dm->next_version; /* -@@ -1487,7 +1487,7 @@ static int balloon_probe(struct hv_device *dev, +@@ -1488,7 +1488,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); @@ -49370,7 +49547,7 @@ index b853b4b..3647b37 100644 version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN10; version_req.is_last_attempt = 0; -@@ -1518,7 +1518,7 @@ static int balloon_probe(struct hv_device *dev, +@@ -1519,7 +1519,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); @@ -49380,10 +49557,10 @@ index b853b4b..3647b37 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 12321b9..89d89f2 100644 +index 718b5c7..c1bf203 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h -@@ -561,7 +561,7 @@ enum vmbus_connect_state { +@@ -566,7 +566,7 @@ enum vmbus_connect_state { struct vmbus_connection { enum vmbus_connect_state conn_state; @@ -49487,10 +49664,10 @@ index 6a27eb2..349ed23 100644 }; diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c -index a9356a3..0785f99 100644 +index 2ac87d5..0ef2555 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c -@@ -844,7 +844,7 @@ static const struct i8k_config_data i8k_config_data[] = { +@@ -849,7 +849,7 @@ static const struct i8k_config_data i8k_config_data[] = { }, }; @@ -49499,20 +49676,15 @@ index a9356a3..0785f99 100644 { .ident = "Dell Inspiron", .matches = { -@@ -960,8 +960,12 @@ MODULE_DEVICE_TABLE(dmi, i8k_dmi_table); +@@ -965,7 +965,7 @@ MODULE_DEVICE_TABLE(dmi, i8k_dmi_table); * of affected Dell machines for which we disallow I8K_SMM_GET_FAN_TYPE call. * See bug: https://bugzilla.kernel.org/show_bug.cgi?id=100121 */ -static struct dmi_system_id i8k_blacklist_fan_type_dmi_table[] __initdata = { +static const struct dmi_system_id i8k_blacklist_fan_type_dmi_table[] __initconst = { { -+ /* -+ * CPU fan speed going up and down on Dell Studio XPS 8000 -+ * for unknown reasons. -+ */ .ident = "Dell Studio XPS 8000", .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c index 1f64378..2b6e615 100644 --- a/drivers/hwmon/ibmaem.c @@ -49730,10 +49902,10 @@ index 88eda09..cf40434 100644 /* Wrapper access functions for multiplexed SMBus */ static DEFINE_MUTEX(nforce2_lock); diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c -index 0b1108d..8f253a0 100644 +index 6ecfd76..48d53aa 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c -@@ -272,7 +272,7 @@ static noinline int i2cdev_ioctl_rdwr(struct i2c_client *client, +@@ -274,7 +274,7 @@ static noinline int i2cdev_ioctl_rdwr(struct i2c_client *client, break; } @@ -49756,7 +49928,7 @@ index ef907fd..1b61cf2 100644 } } diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c -index 37a8a90..4724cbd 100644 +index 05dbcce..7489e32 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c @@ -178,7 +178,7 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq, @@ -49791,10 +49963,71 @@ index d127ace..6ee866f 100644 int i, j = 1; diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c -index c6935de..1ecb47f 100644 +index c966492..4e66371 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c -@@ -1114,8 +1114,10 @@ static void sklh_idle_state_table_update(void) +@@ -1172,40 +1172,50 @@ static void bxt_idle_state_table_update(void) + if (msr) { + unsigned int usec = irtl_2_usec(msr); + +- bxt_cstates[2].exit_latency = usec; +- bxt_cstates[2].target_residency = usec; ++ pax_open_kernel(); ++ const_cast(bxt_cstates[2].exit_latency) = usec; ++ const_cast(bxt_cstates[2].target_residency) = usec; ++ pax_close_kernel(); + } + + rdmsrl(MSR_PKGC7_IRTL, msr); + if (msr) { + unsigned int usec = irtl_2_usec(msr); + +- bxt_cstates[3].exit_latency = usec; +- bxt_cstates[3].target_residency = usec; ++ pax_open_kernel(); ++ const_cast(bxt_cstates[3].exit_latency) = usec; ++ const_cast(bxt_cstates[3].target_residency) = usec; ++ pax_close_kernel(); + } + + rdmsrl(MSR_PKGC8_IRTL, msr); + if (msr) { + unsigned int usec = irtl_2_usec(msr); + +- bxt_cstates[4].exit_latency = usec; +- bxt_cstates[4].target_residency = usec; ++ pax_open_kernel(); ++ const_cast(bxt_cstates[4].exit_latency) = usec; ++ const_cast(bxt_cstates[4].target_residency) = usec; ++ pax_close_kernel(); + } + + rdmsrl(MSR_PKGC9_IRTL, msr); + if (msr) { + unsigned int usec = irtl_2_usec(msr); + +- bxt_cstates[5].exit_latency = usec; +- bxt_cstates[5].target_residency = usec; ++ pax_open_kernel(); ++ const_cast(bxt_cstates[5].exit_latency) = usec; ++ const_cast(bxt_cstates[5].target_residency) = usec; ++ pax_close_kernel(); + } + + rdmsrl(MSR_PKGC10_IRTL, msr); + if (msr) { + unsigned int usec = irtl_2_usec(msr); + +- bxt_cstates[6].exit_latency = usec; +- bxt_cstates[6].target_residency = usec; ++ pax_open_kernel(); ++ const_cast(bxt_cstates[6].exit_latency) = usec; ++ const_cast(bxt_cstates[6].target_residency) = usec; ++ pax_close_kernel(); + } + + } +@@ -1248,8 +1258,10 @@ static void sklh_idle_state_table_update(void) return; } @@ -49808,10 +50041,10 @@ index c6935de..1ecb47f 100644 /* * intel_idle_state_table_update() diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c -index 70cb7eb..f2ee8de 100644 +index e6319a9..9e14f05 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c -@@ -604,7 +604,7 @@ static ssize_t iio_write_channel_info(struct device *dev, +@@ -689,7 +689,7 @@ static ssize_t iio_write_channel_info(struct device *dev, } static @@ -49820,19 +50053,6 @@ index 70cb7eb..f2ee8de 100644 const char *postfix, struct iio_chan_spec const *chan, ssize_t (*readfunc)(struct device *dev, -diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c -index 0e931a9..f7cba63 100644 ---- a/drivers/iio/magnetometer/ak8975.c -+++ b/drivers/iio/magnetometer/ak8975.c -@@ -776,7 +776,7 @@ static int ak8975_probe(struct i2c_client *client, - name = id->name; - } else if (ACPI_HANDLE(&client->dev)) - name = ak8975_match_acpi_device(&client->dev, &chipset); -- else -+ if (!name) - return -ENOSYS; - - if (chipset >= AK_MAX_TYPE) { diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index c995255..7de0b49 100644 --- a/drivers/infiniband/core/cm.c @@ -50098,10 +50318,10 @@ index cdbb1f1..7ed4277 100644 } } diff --git a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c -index d47df93..93e4cfd 100644 +index 9b8c20c..307a1a7 100644 --- a/drivers/infiniband/core/netlink.c +++ b/drivers/infiniband/core/netlink.c -@@ -177,11 +177,10 @@ static int ibnl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -176,11 +176,10 @@ static int ibnl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) } { @@ -50115,6 +50335,19 @@ index d47df93..93e4cfd 100644 } } } +diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c +index 60df4f8..b5a134d 100644 +--- a/drivers/infiniband/core/sysfs.c ++++ b/drivers/infiniband/core/sysfs.c +@@ -893,7 +893,7 @@ static struct attribute *alloc_hsa_lifespan(char *name, u8 port_num) + static void setup_hw_stats(struct ib_device *device, struct ib_port *port, + u8 port_num) + { +- struct attribute_group *hsag; ++ attribute_group_no_const *hsag; + struct rdma_hw_stats *stats; + int i, ret; + diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c index 7713ef0..0bb2981 100644 --- a/drivers/infiniband/core/ucm.c @@ -50137,7 +50370,7 @@ index 7713ef0..0bb2981 100644 static ssize_t ib_ucm_send_mra(struct ib_ucm_file *file, diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c -index 6fdc7ecd..ae148f7 100644 +index 825021d..91dac4e 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c @@ -949,6 +949,9 @@ ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file, @@ -50182,7 +50415,7 @@ index ae2e8b2..d5dcc7d 100644 pr_err(MOD "error allocating wr_log. Logging disabled\n"); } diff --git a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h -index df43f87..e08169c 100644 +index f6f34a7..0977536 100644 --- a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h +++ b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h @@ -180,7 +180,7 @@ struct c4iw_rdev { @@ -50195,10 +50428,10 @@ index df43f87..e08169c 100644 int wr_log_size; }; diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c -index 008be07..a73412de 100644 +index 55d0651..c94e88f 100644 --- a/drivers/infiniband/hw/cxgb4/mem.c +++ b/drivers/infiniband/hw/cxgb4/mem.c -@@ -257,7 +257,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, +@@ -258,7 +258,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, int err; struct fw_ri_tpte tpt; u32 stag_idx; @@ -50207,7 +50440,7 @@ index 008be07..a73412de 100644 if (c4iw_fatal_error(rdev)) return -EIO; -@@ -278,7 +278,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, +@@ -279,7 +279,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, if (rdev->stats.stag.cur > rdev->stats.stag.max) rdev->stats.stag.max = rdev->stats.stag.cur; mutex_unlock(&rdev->stats.lock); @@ -50216,11 +50449,24 @@ index 008be07..a73412de 100644 } PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n", __func__, stag_state, type, pdid, stag_idx); +diff --git a/drivers/infiniband/hw/hfi1/pcie.c b/drivers/infiniband/hw/hfi1/pcie.c +index 0bac21e..2b9ef9c 100644 +--- a/drivers/infiniband/hw/hfi1/pcie.c ++++ b/drivers/infiniband/hw/hfi1/pcie.c +@@ -537,7 +537,7 @@ static void tune_pcie_caps(struct hfi1_devdata *dd) + * PCI error infrastructure, registered via pci + */ + static pci_ers_result_t +-pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state) ++pci_error_detected(struct pci_dev *pdev, enum pci_channel_state state) + { + struct hfi1_devdata *dd = pci_get_drvdata(pdev); + pci_ers_result_t ret = PCI_ERS_RESULT_RECOVERED; diff --git a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c -index f05802b..d0827d4 100644 +index 2c4b4d0..b45e806 100644 --- a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c +++ b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c -@@ -4516,118 +4516,116 @@ static void i40iw_hw_stat_refresh_all(struct i40iw_dev_pestat *devstat) +@@ -4604,46 +4604,46 @@ static void i40iw_hw_stat_refresh_all(struct i40iw_dev_pestat *devstat) } static struct i40iw_cqp_ops iw_cqp_ops = { @@ -50294,28 +50540,7 @@ index f05802b..d0827d4 100644 }; static struct i40iw_priv_qp_ops iw_priv_qp_ops = { -- i40iw_sc_qp_init, -- i40iw_sc_qp_create, -- i40iw_sc_qp_modify, -- i40iw_sc_qp_destroy, -- i40iw_sc_qp_flush_wqes, -- i40iw_sc_qp_upload_context, -- i40iw_sc_qp_setctx, -- i40iw_sc_send_lsmm, -- i40iw_sc_send_lsmm_nostag, -- i40iw_sc_send_rtt, -- i40iw_sc_post_wqe0, -+ .qp_init = i40iw_sc_qp_init, -+ .qp_create = i40iw_sc_qp_create, -+ .qp_modify = i40iw_sc_qp_modify, -+ .qp_destroy = i40iw_sc_qp_destroy, -+ .qp_flush_wqes = i40iw_sc_qp_flush_wqes, -+ .qp_upload_context = i40iw_sc_qp_upload_context, -+ .qp_setctx = i40iw_sc_qp_setctx, -+ .qp_send_lsmm = i40iw_sc_send_lsmm, -+ .qp_send_lsmm_nostag = i40iw_sc_send_lsmm_nostag, -+ .qp_send_rtt = i40iw_sc_send_rtt, -+ .qp_post_wqe0 = i40iw_sc_post_wqe0, +@@ -4662,61 +4662,59 @@ static struct i40iw_priv_qp_ops iw_priv_qp_ops = { }; static struct i40iw_priv_cq_ops iw_priv_cq_ops = { @@ -50419,10 +50644,10 @@ index f05802b..d0827d4 100644 /** diff --git a/drivers/infiniband/hw/i40iw/i40iw_uk.c b/drivers/infiniband/hw/i40iw/i40iw_uk.c -index f78c3dc..f09670e 100644 +index e35faea8..21fc7b8f 100644 --- a/drivers/infiniband/hw/i40iw/i40iw_uk.c +++ b/drivers/infiniband/hw/i40iw/i40iw_uk.c -@@ -919,29 +919,29 @@ enum i40iw_status_code i40iw_get_wqe_shift(u32 wqdepth, u8 sge, u8 *shift) +@@ -926,29 +926,29 @@ enum i40iw_status_code i40iw_get_wqe_shift(u32 wqdepth, u32 sge, u32 inline_data } static struct i40iw_qp_uk_ops iw_qp_uk_ops = { @@ -50470,10 +50695,10 @@ index f78c3dc..f09670e 100644 /** diff --git a/drivers/infiniband/hw/i40iw/i40iw_user.h b/drivers/infiniband/hw/i40iw/i40iw_user.h -index 5cd971b..01b798c 100644 +index 4627646..98912d6 100644 --- a/drivers/infiniband/hw/i40iw/i40iw_user.h +++ b/drivers/infiniband/hw/i40iw/i40iw_user.h -@@ -341,7 +341,7 @@ struct i40iw_device_uk_ops { +@@ -343,7 +343,7 @@ struct i40iw_device_uk_ops { struct i40iw_dev_uk { struct i40iw_device_uk_ops ops_uk; @@ -50483,7 +50708,7 @@ index 5cd971b..01b798c 100644 struct i40iw_sq_uk_wr_trk_info { u64 wrid; diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c -index d68f506..00ff84a 100644 +index 9c2e53d..8aef3b6 100644 --- a/drivers/infiniband/hw/mlx4/mad.c +++ b/drivers/infiniband/hw/mlx4/mad.c @@ -99,7 +99,7 @@ __be64 mlx4_ib_gen_node_guid(void) @@ -50496,10 +50721,10 @@ index d68f506..00ff84a 100644 } diff --git a/drivers/infiniband/hw/mlx4/mcg.c b/drivers/infiniband/hw/mlx4/mcg.c -index 99451d8..a9f0747 100644 +index 8f7ad07..5d02b6d 100644 --- a/drivers/infiniband/hw/mlx4/mcg.c +++ b/drivers/infiniband/hw/mlx4/mcg.c -@@ -1046,7 +1046,7 @@ int mlx4_ib_mcg_port_init(struct mlx4_ib_demux_ctx *ctx) +@@ -1043,7 +1043,7 @@ int mlx4_ib_mcg_port_init(struct mlx4_ib_demux_ctx *ctx) { char name[20]; @@ -50509,7 +50734,7 @@ index 99451d8..a9f0747 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 1eca01c..ed165df 100644 +index 29acda2..86bbd08 100644 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h @@ -457,7 +457,7 @@ struct mlx4_ib_demux_ctx { @@ -50959,10 +51184,10 @@ index 4166452..fc952c3 100644 } diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c -index 9291453..b3d0366 100644 +index 2b27d13..8f9d46c 100644 --- a/drivers/infiniband/hw/nes/nes_nic.c +++ b/drivers/infiniband/hw/nes/nes_nic.c -@@ -462,7 +462,7 @@ static int nes_nic_send(struct sk_buff *skb, struct net_device *netdev) +@@ -461,7 +461,7 @@ static bool nes_nic_send(struct sk_buff *skb, struct net_device *netdev) /** * nes_netdev_start_xmit */ @@ -50971,7 +51196,7 @@ index 9291453..b3d0366 100644 { struct nes_vnic *nesvnic = netdev_priv(netdev); struct nes_device *nesdev = nesvnic->nesdev; -@@ -1268,36 +1268,36 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev, +@@ -1264,36 +1264,36 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev, target_stat_values[++index] = mh_detected; target_stat_values[++index] = mh_pauses_sent; target_stat_values[++index] = nesvnic->endnode_ipv4_tcp_retransmits; @@ -51029,7 +51254,7 @@ index 9291453..b3d0366 100644 /** diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c -index fba69a3..ecf3aee 100644 +index 464d6da..ccff860 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.c +++ b/drivers/infiniband/hw/nes/nes_verbs.c @@ -46,9 +46,9 @@ @@ -51045,7 +51270,7 @@ index fba69a3..ecf3aee 100644 static void nes_unregister_ofa_device(struct nes_ib_device *nesibdev); static int nes_dereg_mr(struct ib_mr *ib_mr); -@@ -1041,7 +1041,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, +@@ -1040,7 +1040,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, if (init_attr->create_flags) return ERR_PTR(-EINVAL); @@ -51054,7 +51279,7 @@ index fba69a3..ecf3aee 100644 switch (init_attr->qp_type) { case IB_QPT_RC: if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) { -@@ -1375,7 +1375,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp) +@@ -1376,7 +1376,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp) struct iw_cm_event cm_event; int ret = 0; @@ -51064,7 +51289,7 @@ index fba69a3..ecf3aee 100644 /* Blow away the connection if it exists. */ diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c -index 82d7c4b..5da4377 100644 +index ce40340..b211076 100644 --- a/drivers/infiniband/hw/qib/qib_iba7322.c +++ b/drivers/infiniband/hw/qib/qib_iba7322.c @@ -150,7 +150,7 @@ static struct kparam_string kp_txselect = { @@ -51076,7 +51301,7 @@ index 82d7c4b..5da4377 100644 module_param_call(txselect, setup_txselect, param_get_string, &kp_txselect, S_IWUSR | S_IRUGO); MODULE_PARM_DESC(txselect, -@@ -6192,7 +6192,7 @@ static void set_no_qsfp_atten(struct qib_devdata *dd, int change) +@@ -6177,7 +6177,7 @@ static void set_no_qsfp_atten(struct qib_devdata *dd, int change) } /* handle the txselect parameter changing */ @@ -51086,10 +51311,10 @@ index 82d7c4b..5da4377 100644 struct qib_devdata *dd; unsigned long val; diff --git a/drivers/infiniband/hw/qib/qib_pcie.c b/drivers/infiniband/hw/qib/qib_pcie.c -index 4758a38..571a55f 100644 +index 6abe1c6..f866a31 100644 --- a/drivers/infiniband/hw/qib/qib_pcie.c +++ b/drivers/infiniband/hw/qib/qib_pcie.c -@@ -628,7 +628,7 @@ static void qib_tune_pcie_caps(struct qib_devdata *dd) +@@ -622,7 +622,7 @@ static void qib_tune_pcie_caps(struct qib_devdata *dd) * PCI error infrastructure, registered via pci */ static pci_ers_result_t @@ -51099,10 +51324,10 @@ index 4758a38..571a55f 100644 struct qib_devdata *dd = pci_get_drvdata(pdev); pci_ers_result_t ret = PCI_ERS_RESULT_RECOVERED; diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c -index 80807d6..a72293a 100644 +index 5f58c41..d96d038 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c -@@ -948,7 +948,7 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev, +@@ -1022,7 +1022,7 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev, spin_unlock_irqrestore(&priv->lock, flags); } @@ -51125,7 +51350,7 @@ index cdc7df4..a2fdfdb 100644 .maxtype = IFLA_IPOIB_MAX, .policy = ipoib_policy, diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c -index 8b42401..f855977 100644 +index 4a41556..8fcf256 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -80,7 +80,7 @@ module_param(srpt_srq_size, int, 0444); @@ -51148,7 +51373,7 @@ index 8b42401..f855977 100644 pr_debug("QP event %d on cm_id=%p sess_name=%s state=%d\n", event->event, ch->cm_id, ch->sess_name, ch->state); -@@ -1825,8 +1826,7 @@ retry: +@@ -1622,8 +1623,7 @@ retry: } qp_init->qp_context = (void *)ch; @@ -51331,23 +51556,11 @@ index 92e2243..8fd9092 100644 { .ident = "Shift", .matches = { -diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig -index dd1dc39..f595bbe 100644 ---- a/drivers/iommu/Kconfig -+++ b/drivers/iommu/Kconfig -@@ -128,6 +128,7 @@ config AMD_IOMMU_STATS - bool "Export AMD IOMMU statistics to debugfs" - depends on AMD_IOMMU - select DEBUG_FS -+ depends on !GRKERNSEC_KMEM - ---help--- - This option enables code in the AMD IOMMU driver to collect various - statistics about whats happening in the driver and exports that diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c -index 5efadad..d1b358e 100644 +index 634f6363..cfe6f70 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c -@@ -804,11 +804,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu, +@@ -825,11 +825,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu, static void build_completion_wait(struct iommu_cmd *cmd, u64 address) { @@ -51372,23 +51585,113 @@ index 5efadad..d1b358e 100644 CMD_SET_TYPE(cmd, CMD_COMPL_WAIT); } diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c -index 3e20208..e0a3c34 100644 +index 5f6b3bc..5fb943b 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c -@@ -1562,7 +1562,7 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain) +@@ -626,7 +626,7 @@ struct arm_smmu_domain { + struct arm_smmu_device *smmu; + struct mutex init_mutex; /* Protects smmu pointer */ + +- struct io_pgtable_ops *pgtbl_ops; ++ struct io_pgtable *pgtbl; + spinlock_t pgtbl_lock; + + enum arm_smmu_domain_stage stage; +@@ -1445,7 +1445,7 @@ static void arm_smmu_domain_free(struct iommu_domain *domain) + struct arm_smmu_device *smmu = smmu_domain->smmu; + + iommu_put_dma_cookie(domain); +- free_io_pgtable_ops(smmu_domain->pgtbl_ops); ++ free_io_pgtable(smmu_domain->pgtbl); + + /* Free the CD and ASID, if we allocated them */ + if (smmu_domain->stage == ARM_SMMU_DOMAIN_S1) { +@@ -1523,7 +1523,7 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain) + unsigned long ias, oas; + enum io_pgtable_fmt fmt; + struct io_pgtable_cfg pgtbl_cfg; +- struct io_pgtable_ops *pgtbl_ops; ++ struct io_pgtable *iop; + int (*finalise_stage_fn)(struct arm_smmu_domain *, + struct io_pgtable_cfg *); + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); +@@ -1561,16 +1561,16 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain) .iommu_dev = smmu->dev, }; - pgtbl_ops = alloc_io_pgtable_ops(fmt, &pgtbl_cfg, smmu_domain); -+ pgtbl_ops = alloc_io_pgtable(fmt, &pgtbl_cfg, smmu_domain); - if (!pgtbl_ops) +- if (!pgtbl_ops) ++ iop = alloc_io_pgtable(fmt, &pgtbl_cfg, smmu_domain); ++ if (!iop) return -ENOMEM; + domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap; +- smmu_domain->pgtbl_ops = pgtbl_ops; ++ smmu_domain->pgtbl = iop; + + ret = finalise_stage_fn(smmu_domain, &pgtbl_cfg); + if (ret < 0) +- free_io_pgtable_ops(pgtbl_ops); ++ free_io_pgtable(iop); + + return ret; + } +@@ -1708,13 +1708,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova, + int ret; + unsigned long flags; + 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; + +- if (!ops) ++ if (!iop) + return -ENODEV; + + spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags); +- ret = ops->map(ops, iova, paddr, size, prot); ++ ret = iop->ops->map(iop, iova, paddr, size, prot); + spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); + return ret; + } +@@ -1725,13 +1725,13 @@ arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova, size_t size) + size_t ret; + unsigned long flags; + 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; + +- if (!ops) ++ if (!iop) + return 0; + + spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags); +- ret = ops->unmap(ops, iova, size); ++ ret = iop->ops->unmap(iop, iova, size); + spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); + return ret; + } +@@ -1742,13 +1742,13 @@ arm_smmu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) + phys_addr_t ret; + unsigned long flags; + 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; + +- if (!ops) ++ if (!iop) + return 0; + + spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags); +- ret = ops->iova_to_phys(ops, iova); ++ ret = iop->ops->iova_to_phys(iop, iova); + spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); + + return ret; diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c -index 7c39ac4..c43d295 100644 +index 9345a3f..dc983d1 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c -@@ -349,7 +349,7 @@ enum arm_smmu_domain_stage { +@@ -389,7 +389,7 @@ enum arm_smmu_domain_stage { struct arm_smmu_domain { struct arm_smmu_device *smmu; @@ -51397,7 +51700,7 @@ index 7c39ac4..c43d295 100644 spinlock_t pgtbl_lock; struct arm_smmu_cfg cfg; enum arm_smmu_domain_stage stage; -@@ -816,7 +816,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, +@@ -851,7 +851,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, { int irq, start, ret = 0; unsigned long ias, oas; @@ -51406,7 +51709,7 @@ index 7c39ac4..c43d295 100644 struct io_pgtable_cfg pgtbl_cfg; enum io_pgtable_fmt fmt; struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); -@@ -908,14 +908,16 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, +@@ -970,8 +970,8 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, }; smmu_domain->smmu = smmu; @@ -51417,16 +51720,7 @@ index 7c39ac4..c43d295 100644 ret = -ENOMEM; goto out_clear_smmu; } - - /* Update our support page sizes to reflect the page table format */ -- arm_smmu_ops.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap; -+ pax_open_kernel(); -+ const_cast(arm_smmu_ops.pgsize_bitmap) = pgtbl_cfg.pgsize_bitmap; -+ pax_close_kernel(); - - /* Initialise the context bank with our page table cfg */ - arm_smmu_init_context_bank(smmu_domain, &pgtbl_cfg); -@@ -936,7 +938,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, +@@ -998,7 +998,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 */ @@ -51435,7 +51729,7 @@ index 7c39ac4..c43d295 100644 return 0; out_clear_smmu: -@@ -969,7 +971,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain) +@@ -1031,7 +1031,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain) free_irq(irq, domain); } @@ -51444,7 +51738,7 @@ index 7c39ac4..c43d295 100644 __arm_smmu_free_bitmap(smmu->context_map, cfg->cbndx); } -@@ -1206,13 +1208,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova, +@@ -1268,13 +1268,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova, int ret; unsigned long flags; struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); @@ -51461,7 +51755,7 @@ index 7c39ac4..c43d295 100644 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); return ret; } -@@ -1223,13 +1225,13 @@ static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova, +@@ -1285,13 +1285,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 = to_smmu_domain(domain); @@ -51478,7 +51772,7 @@ index 7c39ac4..c43d295 100644 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); return ret; } -@@ -1240,7 +1242,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, +@@ -1302,7 +1302,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; @@ -51487,7 +51781,7 @@ index 7c39ac4..c43d295 100644 struct device *dev = smmu->dev; void __iomem *cb_base; u32 tmp; -@@ -1261,7 +1263,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, +@@ -1323,7 +1323,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, dev_err(dev, "iova to phys timed out on %pad. Falling back to software table walk.\n", &iova); @@ -51495,8 +51789,8 @@ index 7c39ac4..c43d295 100644 + return iop->ops->iova_to_phys(iop, iova); } - phys = readl_relaxed(cb_base + ARM_SMMU_CB_PAR_LO); -@@ -1282,9 +1284,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, + phys = readq_relaxed(cb_base + ARM_SMMU_CB_PAR); +@@ -1342,9 +1342,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 = to_smmu_domain(domain); @@ -51508,7 +51802,7 @@ index 7c39ac4..c43d295 100644 return 0; spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags); -@@ -1292,7 +1294,7 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, +@@ -1352,7 +1352,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 { @@ -51517,19 +51811,23 @@ index 7c39ac4..c43d295 100644 } spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); -@@ -1714,7 +1716,9 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu) - size |= SZ_64K | SZ_512M; - } +@@ -1829,10 +1829,12 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu) + if (smmu->features & ARM_SMMU_FEAT_FMT_AARCH64_64K) + smmu->pgsize_bitmap |= SZ_64K | SZ_512M; -- arm_smmu_ops.pgsize_bitmap &= size; + pax_open_kernel(); -+ const_cast(arm_smmu_ops.pgsize_bitmap) &= size; + if (arm_smmu_ops.pgsize_bitmap == -1UL) +- arm_smmu_ops.pgsize_bitmap = smmu->pgsize_bitmap; ++ const_cast(arm_smmu_ops.pgsize_bitmap) = smmu->pgsize_bitmap; + else +- arm_smmu_ops.pgsize_bitmap |= smmu->pgsize_bitmap; ++ const_cast(arm_smmu_ops.pgsize_bitmap) |= smmu->pgsize_bitmap; + pax_close_kernel(); - dev_notice(smmu->dev, "\tSupported page sizes: 0x%08lx\n", size); + dev_notice(smmu->dev, "\tSupported page sizes: 0x%08lx\n", + smmu->pgsize_bitmap); - if (smmu->features & ARM_SMMU_FEAT_TRANS_S1) diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c -index 9488e3c..1411569 100644 +index 8c61399..a141537 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c @@ -49,9 +49,6 @@ @@ -51542,7 +51840,7 @@ index 9488e3c..1411569 100644 /* * We have 32 bits total; 12 bits resolved at level 1, 8 bits at level 2, * and 12 bits in a page. With some carefully-chosen coefficients we can -@@ -413,11 +410,10 @@ static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, +@@ -424,11 +421,10 @@ static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep); } @@ -51556,7 +51854,7 @@ index 9488e3c..1411569 100644 int ret; /* If no access, then nothing to do */ -@@ -580,10 +576,10 @@ static int __arm_v7s_unmap(struct arm_v7s_io_pgtable *data, +@@ -591,10 +587,10 @@ static int __arm_v7s_unmap(struct arm_v7s_io_pgtable *data, return __arm_v7s_unmap(data, iova, size, lvl + 1, ptep); } @@ -51569,7 +51867,7 @@ index 9488e3c..1411569 100644 size_t unmapped; unmapped = __arm_v7s_unmap(data, iova, size, 1, data->pgd); -@@ -593,10 +589,10 @@ static int arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova, +@@ -604,10 +600,10 @@ static int arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova, return unmapped; } @@ -51582,7 +51880,7 @@ index 9488e3c..1411569 100644 arm_v7s_iopte *ptep = data->pgd, pte; int lvl = 0; u32 mask; -@@ -615,6 +611,12 @@ static phys_addr_t arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, +@@ -626,6 +622,12 @@ static phys_addr_t arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, return (pte & mask) | (iova & ~mask); } @@ -51595,7 +51893,7 @@ index 9488e3c..1411569 100644 static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg, void *cookie) { -@@ -639,11 +641,7 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg, +@@ -656,11 +658,7 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg, if (!data->l2_tables) goto out_free_data; @@ -51608,7 +51906,7 @@ index 9488e3c..1411569 100644 /* We have to do this early for __arm_v7s_alloc_table to work... */ data->iop.cfg = *cfg; -@@ -732,7 +730,7 @@ static struct iommu_gather_ops dummy_tlb_ops = { +@@ -749,7 +747,7 @@ static struct iommu_gather_ops dummy_tlb_ops = { static int __init arm_v7s_do_selftests(void) { @@ -51617,7 +51915,7 @@ index 9488e3c..1411569 100644 struct io_pgtable_cfg cfg = { .tlb = &dummy_tlb_ops, .oas = 32, -@@ -747,8 +745,8 @@ static int __init arm_v7s_do_selftests(void) +@@ -764,8 +762,8 @@ static int __init arm_v7s_do_selftests(void) cfg_cookie = &cfg; @@ -51628,7 +51926,7 @@ index 9488e3c..1411569 100644 pr_err("selftest: failed to allocate io pgtable ops\n"); return -EINVAL; } -@@ -757,13 +755,13 @@ static int __init arm_v7s_do_selftests(void) +@@ -774,13 +772,13 @@ static int __init arm_v7s_do_selftests(void) * Initial sanity checks. * Empty page tables shouldn't provide any translations. */ @@ -51645,7 +51943,7 @@ index 9488e3c..1411569 100644 return __FAIL(ops); /* -@@ -773,18 +771,18 @@ static int __init arm_v7s_do_selftests(void) +@@ -790,18 +788,18 @@ static int __init arm_v7s_do_selftests(void) i = find_first_bit(&cfg.pgsize_bitmap, BITS_PER_LONG); while (i != BITS_PER_LONG) { size = 1UL << i; @@ -51667,7 +51965,7 @@ index 9488e3c..1411569 100644 return __FAIL(ops); iova += SZ_16M; -@@ -798,14 +796,14 @@ static int __init arm_v7s_do_selftests(void) +@@ -815,14 +813,14 @@ static int __init arm_v7s_do_selftests(void) size = 1UL << __ffs(cfg.pgsize_bitmap); while (i < loopnr) { iova_start = i * SZ_16M; @@ -51685,7 +51983,7 @@ index 9488e3c..1411569 100644 != (size + 42)) return __FAIL(ops); i++; -@@ -817,17 +815,17 @@ static int __init arm_v7s_do_selftests(void) +@@ -834,17 +832,17 @@ static int __init arm_v7s_do_selftests(void) while (i != BITS_PER_LONG) { size = 1UL << i; @@ -51707,7 +52005,7 @@ index 9488e3c..1411569 100644 return __FAIL(ops); iova += SZ_16M; -@@ -835,7 +833,7 @@ static int __init arm_v7s_do_selftests(void) +@@ -852,7 +850,7 @@ static int __init arm_v7s_do_selftests(void) i = find_next_bit(&cfg.pgsize_bitmap, BITS_PER_LONG, i); } @@ -51717,7 +52015,7 @@ index 9488e3c..1411569 100644 selftest_running = false; diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c -index f433b51..5cc8f88 100644 +index a1ed1b7..3df0f22 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -39,9 +39,6 @@ @@ -51730,7 +52028,7 @@ index f433b51..5cc8f88 100644 /* * For consistency with the architecture, we always consider * ARM_LPAE_MAX_LEVELS levels, with the walk starting at level n >=0 -@@ -376,10 +373,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data, +@@ -381,10 +378,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data, return pte; } @@ -51743,7 +52041,7 @@ index f433b51..5cc8f88 100644 arm_lpae_iopte *ptep = data->pgd; int ret, lvl = ARM_LPAE_START_LVL(data); arm_lpae_iopte prot; -@@ -525,11 +522,11 @@ static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, +@@ -530,11 +527,11 @@ static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, return __arm_lpae_unmap(data, iova, size, lvl + 1, ptep); } @@ -51757,7 +52055,7 @@ index f433b51..5cc8f88 100644 arm_lpae_iopte *ptep = data->pgd; int lvl = ARM_LPAE_START_LVL(data); -@@ -540,10 +537,10 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, +@@ -545,10 +542,10 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, return unmapped; } @@ -51770,7 +52068,7 @@ index f433b51..5cc8f88 100644 arm_lpae_iopte pte, *ptep = data->pgd; int lvl = ARM_LPAE_START_LVL(data); -@@ -610,6 +607,12 @@ static void arm_lpae_restrict_pgsizes(struct io_pgtable_cfg *cfg) +@@ -615,6 +612,12 @@ static void arm_lpae_restrict_pgsizes(struct io_pgtable_cfg *cfg) } } @@ -51783,7 +52081,7 @@ index f433b51..5cc8f88 100644 static struct arm_lpae_io_pgtable * arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) { -@@ -646,11 +649,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) +@@ -651,11 +654,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))); @@ -51796,7 +52094,7 @@ index f433b51..5cc8f88 100644 return data; } -@@ -911,15 +910,15 @@ static void dummy_tlb_sync(void *cookie) +@@ -916,15 +915,15 @@ static void dummy_tlb_sync(void *cookie) WARN_ON(cookie != cfg_cookie); } @@ -51815,7 +52113,7 @@ index f433b51..5cc8f88 100644 struct io_pgtable_cfg *cfg = &data->iop.cfg; pr_err("cfg: pgsize_bitmap 0x%lx, ias %u-bit\n", -@@ -929,9 +928,9 @@ static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops) +@@ -934,9 +933,9 @@ static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops) data->bits_per_level, data->pgd); } @@ -51827,7 +52125,7 @@ index f433b51..5cc8f88 100644 selftest_running = false; \ -EFAULT; \ }) -@@ -946,30 +945,32 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -951,30 +950,32 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) int i, j; unsigned long iova; size_t size; @@ -51869,7 +52167,7 @@ index f433b51..5cc8f88 100644 /* * Distinct mappings of different granule sizes. -@@ -979,19 +980,19 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -984,19 +985,19 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) while (j != BITS_PER_LONG) { size = 1UL << j; @@ -51895,7 +52193,7 @@ index f433b51..5cc8f88 100644 iova += SZ_1G; j++; -@@ -1000,15 +1001,15 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -1005,15 +1006,15 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) /* Partial unmap */ size = 1UL << __ffs(cfg->pgsize_bitmap); @@ -51917,7 +52215,7 @@ index f433b51..5cc8f88 100644 /* Full unmap */ iova = 0; -@@ -1016,25 +1017,25 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -1021,25 +1022,25 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) while (j != BITS_PER_LONG) { size = 1UL << j; @@ -51953,10 +52251,10 @@ index f433b51..5cc8f88 100644 selftest_running = false; diff --git a/drivers/iommu/io-pgtable.c b/drivers/iommu/io-pgtable.c -index 876f6a7..cb29f0f 100644 +index 127558d..bc60b81 100644 --- a/drivers/iommu/io-pgtable.c +++ b/drivers/iommu/io-pgtable.c -@@ -38,7 +38,7 @@ io_pgtable_init_table[IO_PGTABLE_NUM_FMTS] = +@@ -37,7 +37,7 @@ io_pgtable_init_table[IO_PGTABLE_NUM_FMTS] = { #endif }; @@ -51965,7 +52263,7 @@ index 876f6a7..cb29f0f 100644 struct io_pgtable_cfg *cfg, void *cookie) { -@@ -60,21 +60,18 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt, +@@ -59,21 +59,18 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt, iop->cookie = cookie; iop->cfg = *cfg; @@ -51991,10 +52289,10 @@ index 876f6a7..cb29f0f 100644 io_pgtable_init_table[iop->fmt]->free(iop); } diff --git a/drivers/iommu/io-pgtable.h b/drivers/iommu/io-pgtable.h -index d4f5027..0265cd8 100644 +index 969d82c..1ba9b6e 100644 --- a/drivers/iommu/io-pgtable.h +++ b/drivers/iommu/io-pgtable.h -@@ -103,17 +103,18 @@ struct io_pgtable_cfg { +@@ -109,17 +109,18 @@ struct io_pgtable_cfg { * These functions map directly onto the iommu_ops member functions with * the same names. */ @@ -52017,7 +52315,7 @@ index d4f5027..0265cd8 100644 * * @fmt: The page table format. * @cfg: The page table configuration. This will be modified to represent -@@ -122,9 +123,9 @@ struct io_pgtable_ops { +@@ -128,9 +129,9 @@ struct io_pgtable_ops { * @cookie: An opaque token provided by the IOMMU driver and passed back to * the callback routines in cfg->tlb. */ @@ -52030,7 +52328,7 @@ index d4f5027..0265cd8 100644 /** * free_io_pgtable_ops() - Free an io_pgtable_ops structure. The caller -@@ -133,7 +134,7 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt, +@@ -139,7 +140,7 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt, * * @ops: The ops returned from alloc_io_pgtable_ops. */ @@ -52039,7 +52337,7 @@ index d4f5027..0265cd8 100644 /* -@@ -155,11 +156,9 @@ struct io_pgtable { +@@ -161,11 +162,9 @@ struct io_pgtable { void *cookie; bool tlb_sync_pending; struct io_pgtable_cfg cfg; @@ -52053,10 +52351,10 @@ index d4f5027..0265cd8 100644 { iop->cfg.tlb->tlb_flush_all(iop->cookie); diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c -index b9df141..7c67a2d 100644 +index 3000051..b26bce1 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c -@@ -957,7 +957,7 @@ static int iommu_bus_notifier(struct notifier_block *nb, +@@ -953,7 +953,7 @@ static int iommu_bus_notifier(struct notifier_block *nb, static int iommu_bus_init(struct bus_type *bus, const struct iommu_ops *ops) { int err; @@ -52125,7 +52423,7 @@ index 2fdbac6..7095311 100644 static int ipmmu_find_utlbs(struct ipmmu_vmsa_device *mmu, struct device *dev, diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c -index 8adaaea..99dab8e 100644 +index 49721b4..62874d3 100644 --- a/drivers/iommu/irq_remapping.c +++ b/drivers/iommu/irq_remapping.c @@ -153,7 +153,7 @@ int __init irq_remap_enable_fault_handling(void) @@ -52138,10 +52436,10 @@ index 8adaaea..99dab8e 100644 void ir_ack_apic_edge(struct irq_data *data) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c -index 929a66a..4e61ad0 100644 +index c3043d8..3243e9c 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c -@@ -110,7 +110,7 @@ struct mtk_iommu_domain { +@@ -111,7 +111,7 @@ struct mtk_iommu_domain { spinlock_t pgtlock; /* lock for page table */ struct io_pgtable_cfg cfg; @@ -52150,26 +52448,16 @@ index 929a66a..4e61ad0 100644 struct iommu_domain domain; }; -@@ -257,14 +257,16 @@ static int mtk_iommu_domain_finalise(struct mtk_iommu_data *data) - .iommu_dev = data->dev, - }; +@@ -262,7 +262,7 @@ static int mtk_iommu_domain_finalise(struct mtk_iommu_data *data) + if (data->enable_4GB) + dom->cfg.quirks |= IO_PGTABLE_QUIRK_ARM_MTK_4GB; - dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data); + dom->iop = alloc_io_pgtable(ARM_V7S, &dom->cfg, data); if (!dom->iop) { dev_err(data->dev, "Failed to alloc io pgtable\n"); return -EINVAL; - } - - /* Update our support page sizes bitmap */ -- mtk_iommu_ops.pgsize_bitmap = dom->cfg.pgsize_bitmap; -+ pax_open_kernel(); -+ const_cast(mtk_iommu_ops.pgsize_bitmap) = dom->cfg.pgsize_bitmap; -+ pax_close_kernel(); - - writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0], - data->base + REG_MMU_PT_BASE_ADDR); -@@ -350,7 +352,7 @@ static int mtk_iommu_map(struct iommu_domain *domain, unsigned long iova, +@@ -355,7 +355,7 @@ static int mtk_iommu_map(struct iommu_domain *domain, unsigned long iova, int ret; spin_lock_irqsave(&dom->pgtlock, flags); @@ -52178,7 +52466,7 @@ index 929a66a..4e61ad0 100644 spin_unlock_irqrestore(&dom->pgtlock, flags); return ret; -@@ -364,7 +366,7 @@ static size_t mtk_iommu_unmap(struct iommu_domain *domain, +@@ -369,7 +369,7 @@ static size_t mtk_iommu_unmap(struct iommu_domain *domain, size_t unmapsz; spin_lock_irqsave(&dom->pgtlock, flags); @@ -52187,7 +52475,7 @@ index 929a66a..4e61ad0 100644 spin_unlock_irqrestore(&dom->pgtlock, flags); return unmapsz; -@@ -378,7 +380,7 @@ static phys_addr_t mtk_iommu_iova_to_phys(struct iommu_domain *domain, +@@ -383,7 +383,7 @@ static phys_addr_t mtk_iommu_iova_to_phys(struct iommu_domain *domain, phys_addr_t pa; spin_lock_irqsave(&dom->pgtlock, flags); @@ -52196,7 +52484,7 @@ index 929a66a..4e61ad0 100644 spin_unlock_irqrestore(&dom->pgtlock, flags); return pa; -@@ -654,7 +656,7 @@ static int mtk_iommu_remove(struct platform_device *pdev) +@@ -662,7 +662,7 @@ static int mtk_iommu_remove(struct platform_device *pdev) if (iommu_present(&platform_bus_type)) bus_set_iommu(&platform_bus_type, NULL); @@ -52206,10 +52494,10 @@ index 929a66a..4e61ad0 100644 devm_free_irq(&pdev->dev, data->irq, data); component_master_del(&pdev->dev, &mtk_iommu_com_ops); diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c -index 5c4da58..54606f1 100644 +index fbc4ae2..36c69ec 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c -@@ -387,7 +387,7 @@ static void gic_handle_cascade_irq(struct irq_desc *desc) +@@ -392,7 +392,7 @@ static void gic_handle_cascade_irq(struct irq_desc *desc) chained_irq_exit(chip, desc); } @@ -53661,10 +53949,10 @@ index 91d5730..336523e 100644 /* The following should better go into a dedicated source file such that diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c -index 947d5c9..d75f751 100644 +index 63eaa0a..00a663c 100644 --- a/drivers/isdn/i4l/isdn_tty.c +++ b/drivers/isdn/i4l/isdn_tty.c -@@ -1503,9 +1503,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp) +@@ -1499,9 +1499,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp) #ifdef ISDN_DEBUG_MODEM_OPEN printk(KERN_DEBUG "isdn_tty_open %s, count = %d\n", tty->name, @@ -53676,7 +53964,7 @@ index 947d5c9..d75f751 100644 port->tty = tty; /* * Start up serial port -@@ -1549,7 +1549,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) +@@ -1545,7 +1545,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) #endif return; } @@ -53685,7 +53973,7 @@ index 947d5c9..d75f751 100644 /* * Uh, oh. tty->count is 1, which means that the tty * structure will be freed. Info->count should always -@@ -1558,15 +1558,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) +@@ -1554,15 +1554,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) * serial port won't be shutdown. */ printk(KERN_ERR "isdn_tty_close: bad port count; tty->count is 1, " @@ -53707,16 +53995,16 @@ index 947d5c9..d75f751 100644 #ifdef ISDN_DEBUG_MODEM_OPEN printk(KERN_DEBUG "isdn_tty_close after info->count != 0\n"); #endif -@@ -1621,7 +1621,7 @@ isdn_tty_hangup(struct tty_struct *tty) +@@ -1617,7 +1617,7 @@ isdn_tty_hangup(struct tty_struct *tty) if (isdn_tty_paranoia_check(info, tty->name, "isdn_tty_hangup")) return; isdn_tty_shutdown(info); - port->count = 0; + atomic_set(&port->count, 0); - port->flags &= ~ASYNC_NORMAL_ACTIVE; + tty_port_set_active(port, 0); port->tty = NULL; wake_up_interruptible(&port->open_wait); -@@ -1966,7 +1966,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup) +@@ -1962,7 +1962,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup) for (i = 0; i < ISDN_MAX_CHANNELS; i++) { modem_info *info = &dev->mdm.info[i]; @@ -53726,7 +54014,7 @@ index 947d5c9..d75f751 100644 if ((info->emu.mdmreg[REG_SI1] & si2bit[si1]) && /* SI1 is matching */ (info->emu.mdmreg[REG_SI2] == si2)) { /* SI2 is matching */ diff --git a/drivers/isdn/i4l/isdn_x25iface.c b/drivers/isdn/i4l/isdn_x25iface.c -index e2d4e58..40cd045 100644 +index 0c5d8de..ba60076 100644 --- a/drivers/isdn/i4l/isdn_x25iface.c +++ b/drivers/isdn/i4l/isdn_x25iface.c @@ -53,14 +53,14 @@ static int isdn_x25iface_disconn_ind(struct concap_proto *); @@ -53903,7 +54191,7 @@ index 0f9ed1e..492789f 100644 .callback = clevo_mail_led_dmi_callback, .ident = "Clevo D410J", diff --git a/drivers/leds/leds-ss4200.c b/drivers/leds/leds-ss4200.c -index 046cb70..79757fd 100644 +index 732eb86..a9db867 100644 --- a/drivers/leds/leds-ss4200.c +++ b/drivers/leds/leds-ss4200.c @@ -91,7 +91,7 @@ MODULE_PARM_DESC(nodetect, "Skip DMI-based hardware detection"); @@ -53959,7 +54247,7 @@ index e3abebc9..6a35328 100644 /* If the entry's not present, there's nothing to release. */ if (pmd_flags(*spmd) & _PAGE_PRESENT) { diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c -index adc162c..5ecc00b 100644 +index 6e9042e..befd030 100644 --- a/drivers/lguest/x86/core.c +++ b/drivers/lguest/x86/core.c @@ -60,7 +60,7 @@ static struct { @@ -54066,7 +54354,7 @@ index 40634b0..4f5855e 100644 // Every interrupt can come to us here // But we must truly tell each apart. diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c -index 3ab6495..457e2ea 100644 +index 2103e97..dc6e50c 100644 --- a/drivers/lightnvm/rrpc.c +++ b/drivers/lightnvm/rrpc.c @@ -241,7 +241,7 @@ static void rrpc_put_blks(struct rrpc *rrpc) @@ -54078,8 +54366,8 @@ index 3ab6495..457e2ea 100644 return &rrpc->luns[next % rrpc->nr_luns]; } -@@ -1390,7 +1390,7 @@ static void *rrpc_init(struct nvm_dev *dev, struct gendisk *tdisk, - rrpc->nr_luns = lun_end - lun_begin + 1; +@@ -1388,7 +1388,7 @@ static void *rrpc_init(struct nvm_dev *dev, struct gendisk *tdisk, + rrpc->nr_sects = (unsigned long long)dev->sec_per_lun * rrpc->nr_luns; /* simple round-robin strategy */ - atomic_set(&rrpc->next_lun, -1); @@ -54088,7 +54376,7 @@ index 3ab6495..457e2ea 100644 ret = rrpc_area_init(rrpc, &soffset); if (ret < 0) { diff --git a/drivers/lightnvm/rrpc.h b/drivers/lightnvm/rrpc.h -index 2653484..d581105 100644 +index 87e84b5..3635ab8 100644 --- a/drivers/lightnvm/rrpc.h +++ b/drivers/lightnvm/rrpc.h @@ -111,7 +111,7 @@ struct rrpc { @@ -54113,10 +54401,10 @@ index 4d20088..de60cb2 100644 Keeps all active closures in a linked list and provides a debugfs interface to list them, which makes it possible to see asynchronous diff --git a/drivers/md/bcache/alloc.c b/drivers/md/bcache/alloc.c -index 8eeab72..292b65d 100644 +index ca4abe1..0b029ef 100644 --- a/drivers/md/bcache/alloc.c +++ b/drivers/md/bcache/alloc.c -@@ -633,7 +633,7 @@ bool bch_alloc_sectors(struct cache_set *c, struct bkey *k, unsigned sectors, +@@ -631,7 +631,7 @@ bool bch_alloc_sectors(struct cache_set *c, struct bkey *k, unsigned sectors, for (i = 0; i < KEY_PTRS(&b->key); i++) { SET_PTR_OFFSET(&b->key, i, PTR_OFFSET(&b->key, i) + sectors); @@ -54148,10 +54436,10 @@ index 6b420a5..d5acb8f 100644 struct gc_stat { diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c -index 22b9e34..d8406e7 100644 +index eab505e..a848c16 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c -@@ -337,15 +337,17 @@ static void btree_complete_write(struct btree *b, struct btree_write *w) +@@ -336,15 +336,17 @@ static void btree_complete_write(struct btree *b, struct btree_write *w) w->journal = NULL; } @@ -54171,7 +54459,7 @@ index 22b9e34..d8406e7 100644 struct btree *b = container_of(cl, struct btree, io); struct btree_write *w = btree_prev_write(b); -@@ -359,8 +361,9 @@ static void __btree_node_write_done(struct closure *cl) +@@ -358,8 +360,9 @@ static void __btree_node_write_done(struct closure *cl) closure_return_with_destructor(cl, btree_node_write_unlock); } @@ -54182,7 +54470,7 @@ index 22b9e34..d8406e7 100644 struct btree *b = container_of(cl, struct btree, io); struct bio_vec *bv; int n; -@@ -368,7 +371,7 @@ static void btree_node_write_done(struct closure *cl) +@@ -367,7 +370,7 @@ static void btree_node_write_done(struct closure *cl) bio_for_each_segment_all(bv, b->bio, n) __free_page(bv->bv_page); @@ -54191,7 +54479,7 @@ index 22b9e34..d8406e7 100644 } static void btree_node_write_endio(struct bio *bio) -@@ -468,7 +471,7 @@ void __bch_btree_node_write(struct btree *b, struct closure *parent) +@@ -467,7 +470,7 @@ void __bch_btree_node_write(struct btree *b, struct closure *parent) do_btree_node_write(b); @@ -54740,7 +55028,7 @@ index adbff14..018c2d2 100644 struct cache_stat_collector collector; diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c -index a296425..c5d881c 100644 +index f5dbb4e..26a4c2e 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c @@ -241,8 +241,9 @@ static void __write_super(struct cache_sb *sb, struct bio *bio) @@ -54905,10 +55193,10 @@ index b3ff57d..b2e30fb 100644 return size; diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c -index b9346cd..708ea8f 100644 +index 6012367..f45567b 100644 --- a/drivers/md/bcache/writeback.c +++ b/drivers/md/bcache/writeback.c -@@ -118,14 +118,16 @@ static void dirty_init(struct keybuf_key *w) +@@ -117,14 +117,16 @@ static void dirty_init(struct keybuf_key *w) bch_bio_map(bio, NULL); } @@ -54927,7 +55215,7 @@ index b9346cd..708ea8f 100644 struct dirty_io *io = container_of(cl, struct dirty_io, cl); struct keybuf_key *w = io->bio.bi_private; struct cached_dev *dc = io->dc; -@@ -177,8 +179,9 @@ static void dirty_endio(struct bio *bio) +@@ -176,8 +178,9 @@ static void dirty_endio(struct bio *bio) closure_put(&io->cl); } @@ -54938,7 +55226,7 @@ index b9346cd..708ea8f 100644 struct dirty_io *io = container_of(cl, struct dirty_io, cl); struct keybuf_key *w = io->bio.bi_private; -@@ -204,8 +207,9 @@ static void read_dirty_endio(struct bio *bio) +@@ -203,8 +206,9 @@ static void read_dirty_endio(struct bio *bio) dirty_endio(bio); } @@ -54950,10 +55238,10 @@ index b9346cd..708ea8f 100644 closure_bio_submit(&io->bio, cl); diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c -index 3fe86b5..fd3b459 100644 +index d8129ec..4d96ec3 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c -@@ -1928,7 +1928,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) +@@ -1965,7 +1965,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) chunk_kb ? "KB" : "B"); if (bitmap->storage.file) { seq_printf(seq, ", file: "); @@ -55262,7 +55550,7 @@ index ee0510f..69457f6 100644 if (writethrough_mode(&cache->features)) diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c -index 2adf81d..c3e8e3c 100644 +index 2c7ca25..ada556c 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -1774,7 +1774,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param) @@ -55274,11 +55562,69 @@ index 2adf81d..c3e8e3c 100644 if (!*param->name) { DMWARN("name not supplied when creating device"); return -EINVAL; +diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c +index 52baf8a..d331c6f 100644 +--- a/drivers/md/dm-mpath.c ++++ b/drivers/md/dm-mpath.c +@@ -87,7 +87,7 @@ struct multipath { + + atomic_t nr_valid_paths; /* Total number of usable paths */ + atomic_t pg_init_in_progress; /* Only one pg_init allowed at once */ +- atomic_t pg_init_count; /* Number of times pg_init called */ ++ atomic_unchecked_t pg_init_count;/* Number of times pg_init called */ + + /* + * We must use a mempool of dm_mpath_io structs so that we +@@ -196,7 +196,7 @@ static struct multipath *alloc_multipath(struct dm_target *ti, bool use_blk_mq) + set_bit(MPATHF_QUEUE_IO, &m->flags); + atomic_set(&m->nr_valid_paths, 0); + atomic_set(&m->pg_init_in_progress, 0); +- atomic_set(&m->pg_init_count, 0); ++ atomic_set_unchecked(&m->pg_init_count, 0); + m->pg_init_delay_msecs = DM_PG_INIT_DELAY_DEFAULT; + INIT_WORK(&m->trigger_event, trigger_event); + init_waitqueue_head(&m->pg_init_wait); +@@ -284,7 +284,7 @@ static int __pg_init_all_paths(struct multipath *m) + if (atomic_read(&m->pg_init_in_progress) || test_bit(MPATHF_PG_INIT_DISABLED, &m->flags)) + return 0; + +- atomic_inc(&m->pg_init_count); ++ atomic_inc_unchecked(&m->pg_init_count); + clear_bit(MPATHF_PG_INIT_REQUIRED, &m->flags); + + /* Check here to reset pg_init_required */ +@@ -330,7 +330,7 @@ static void __switch_pg(struct multipath *m, struct priority_group *pg) + clear_bit(MPATHF_QUEUE_IO, &m->flags); + } + +- atomic_set(&m->pg_init_count, 0); ++ atomic_set_unchecked(&m->pg_init_count, 0); + } + + static struct pgpath *choose_path_in_pg(struct multipath *m, +@@ -1195,7 +1195,7 @@ static bool pg_init_limit_reached(struct multipath *m, struct pgpath *pgpath) + + spin_lock_irqsave(&m->lock, flags); + +- if (atomic_read(&m->pg_init_count) <= m->pg_init_retries && ++ if (atomic_read_unchecked(&m->pg_init_count) <= m->pg_init_retries && + !test_bit(MPATHF_PG_INIT_DISABLED, &m->flags)) + set_bit(MPATHF_PG_INIT_REQUIRED, &m->flags); + else +@@ -1449,7 +1449,7 @@ static void multipath_status(struct dm_target *ti, status_type_t type, + /* Features */ + if (type == STATUSTYPE_INFO) + DMEMIT("2 %u %u ", test_bit(MPATHF_QUEUE_IO, &m->flags), +- atomic_read(&m->pg_init_count)); ++ atomic_read_unchecked(&m->pg_init_count)); + else { + DMEMIT("%u ", test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) + + (m->pg_init_retries > 0) * 2 + diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c -index a090121..9f14702 100644 +index 5253274..01585f7 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c -@@ -1452,7 +1452,7 @@ static void raid_status(struct dm_target *ti, status_type_t type, +@@ -1457,7 +1457,7 @@ static void raid_status(struct dm_target *ti, status_type_t type, DMEMIT(" %llu", (strcmp(rs->md.last_sync_action, "check")) ? 0 : (unsigned long long) @@ -55439,7 +55785,7 @@ index 797ddb9..9595c24 100644 schedule_work(&sc->trigger_event); } diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c -index f9e8f0b..a305122 100644 +index 626a5ec..158a89c 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -305,7 +305,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, @@ -55474,7 +55820,7 @@ index 43824d7..fb6a7b0 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 3d3ac13..4a7d0f3 100644 +index 1b2f962..e2efabd 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -170,8 +170,8 @@ struct mapped_device { @@ -55525,7 +55871,7 @@ index 3d3ac13..4a7d0f3 100644 { rcu_read_unlock(); } -@@ -2371,8 +2375,8 @@ static struct mapped_device *alloc_dev(int minor) +@@ -2369,8 +2373,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); @@ -55536,7 +55882,7 @@ index 3d3ac13..4a7d0f3 100644 INIT_LIST_HEAD(&md->uevent_list); INIT_LIST_HEAD(&md->table_devices); spin_lock_init(&md->uevent_lock); -@@ -2515,7 +2519,7 @@ static void event_callback(void *context) +@@ -2513,7 +2517,7 @@ static void event_callback(void *context) dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); @@ -55545,7 +55891,7 @@ index 3d3ac13..4a7d0f3 100644 wake_up(&md->eventq); } -@@ -3453,18 +3457,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, +@@ -3451,18 +3455,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, uint32_t dm_next_uevent_seq(struct mapped_device *md) { @@ -55568,7 +55914,7 @@ index 3d3ac13..4a7d0f3 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 85b16aa..99b84b1 100644 +index 866825f..0c08c28 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -198,10 +198,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); @@ -55602,7 +55948,7 @@ index 85b16aa..99b84b1 100644 sb->raid_disks = cpu_to_le32(mddev->raid_disks); sb->size = cpu_to_le64(mddev->dev_sectors); -@@ -2714,7 +2714,7 @@ __ATTR_PREALLOC(state, S_IRUGO|S_IWUSR, state_show, state_store); +@@ -2715,7 +2715,7 @@ __ATTR_PREALLOC(state, S_IRUGO|S_IWUSR, state_show, state_store); static ssize_t errors_show(struct md_rdev *rdev, char *page) { @@ -55611,7 +55957,7 @@ index 85b16aa..99b84b1 100644 } static ssize_t -@@ -2726,7 +2726,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) +@@ -2727,7 +2727,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) rv = kstrtouint(buf, 10, &n); if (rv < 0) return rv; @@ -55620,7 +55966,7 @@ index 85b16aa..99b84b1 100644 return len; } static struct rdev_sysfs_entry rdev_errors = -@@ -3176,8 +3176,8 @@ int md_rdev_init(struct md_rdev *rdev) +@@ -3177,8 +3177,8 @@ int md_rdev_init(struct md_rdev *rdev) rdev->sb_loaded = 0; rdev->bb_page = NULL; atomic_set(&rdev->nr_pending, 0); @@ -55631,7 +55977,7 @@ index 85b16aa..99b84b1 100644 INIT_LIST_HEAD(&rdev->same_set); init_waitqueue_head(&rdev->blocked_wait); -@@ -4394,7 +4394,7 @@ mismatch_cnt_show(struct mddev *mddev, char *page) +@@ -4395,7 +4395,7 @@ mismatch_cnt_show(struct mddev *mddev, char *page) { return sprintf(page, "%llu\n", (unsigned long long) @@ -55640,7 +55986,7 @@ index 85b16aa..99b84b1 100644 } static struct md_sysfs_entry md_mismatches = __ATTR_RO(mismatch_cnt); -@@ -5082,7 +5082,7 @@ static struct kobject *md_probe(dev_t dev, int *part, void *data) +@@ -5087,7 +5087,7 @@ static struct kobject *md_probe(dev_t dev, int *part, void *data) return NULL; } @@ -55649,7 +55995,7 @@ index 85b16aa..99b84b1 100644 { /* val must be "md_*" where * is not all digits. * We allocate an array with a large free minor number, and -@@ -5432,7 +5432,7 @@ static void md_clean(struct mddev *mddev) +@@ -5437,7 +5437,7 @@ static void md_clean(struct mddev *mddev) mddev->new_layout = 0; mddev->new_chunk_sectors = 0; mddev->curr_resync = 0; @@ -55658,7 +56004,7 @@ index 85b16aa..99b84b1 100644 mddev->suspend_lo = mddev->suspend_hi = 0; mddev->sync_speed_min = mddev->sync_speed_max = 0; mddev->recovery = 0; -@@ -5846,9 +5846,10 @@ static int get_array_info(struct mddev *mddev, void __user *arg) +@@ -5851,9 +5851,10 @@ static int get_array_info(struct mddev *mddev, void __user *arg) info.patch_version = MD_PATCHLEVEL_VERSION; info.ctime = clamp_t(time64_t, mddev->ctime, 0, U32_MAX); info.level = mddev->level; @@ -55671,7 +56017,7 @@ index 85b16aa..99b84b1 100644 info.nr_disks = nr; info.raid_disks = mddev->raid_disks; info.md_minor = mddev->md_minor; -@@ -7411,7 +7412,7 @@ static int md_seq_show(struct seq_file *seq, void *v) +@@ -7420,7 +7421,7 @@ static int md_seq_show(struct seq_file *seq, void *v) spin_unlock(&pers_lock); seq_printf(seq, "\n"); @@ -55680,7 +56026,7 @@ index 85b16aa..99b84b1 100644 return 0; } if (v == (void*)2) { -@@ -7511,7 +7512,7 @@ static int md_seq_open(struct inode *inode, struct file *file) +@@ -7520,7 +7521,7 @@ static int md_seq_open(struct inode *inode, struct file *file) return error; seq = file->private_data; @@ -55689,7 +56035,7 @@ index 85b16aa..99b84b1 100644 return error; } -@@ -7528,7 +7529,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) +@@ -7537,7 +7538,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) /* always allow read */ mask = POLLIN | POLLRDNORM; @@ -55698,7 +56044,7 @@ index 85b16aa..99b84b1 100644 mask |= POLLERR | POLLPRI; return mask; } -@@ -7628,7 +7629,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) +@@ -7637,7 +7638,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]) - @@ -55707,7 +56053,7 @@ index 85b16aa..99b84b1 100644 /* sync IO will cause sync_io to increase before the disk_stats * as sync_io is counted when a request starts, and * disk_stats is counted when it completes. -@@ -7879,7 +7880,7 @@ void md_do_sync(struct md_thread *thread) +@@ -7901,7 +7902,7 @@ void md_do_sync(struct md_thread *thread) * which defaults to physical size, but can be virtual size */ max_sectors = mddev->resync_max_sectors; @@ -55716,7 +56062,7 @@ index 85b16aa..99b84b1 100644 /* we don't use the checkpoint if there's a bitmap */ if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) j = mddev->resync_min; -@@ -8875,11 +8876,11 @@ static __exit void md_exit(void) +@@ -8895,11 +8896,11 @@ static __exit void md_exit(void) subsys_initcall(md_init); module_exit(md_exit) @@ -55803,7 +56149,7 @@ index 3e6d115..ffecdeb 100644 /*----------------------------------------------------------------*/ diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c -index a7f2b9c..38362f6 100644 +index c7c8cde..913b672 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1063,7 +1063,7 @@ static void raid1_make_request(struct mddev *mddev, struct bio * bio) @@ -55843,7 +56189,7 @@ index a7f2b9c..38362f6 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 e3fd725..9e365b2 100644 +index c7de2a5..b476a79 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1068,7 +1068,7 @@ static void __make_request(struct mddev *mddev, struct bio *bio) @@ -55924,7 +56270,7 @@ index e3fd725..9e365b2 100644 rdev_dec_pending(rdev, mddev); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index e48c262..e88ac00 100644 +index 8959e6d..b90f4e1 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -1110,23 +1110,23 @@ async_copy_data(int frombio, struct bio *bio, struct page **page, @@ -56047,7 +56393,7 @@ index ce6a711..f87ae51 100644 dev_kfree_skb(skb); return NETDEV_TX_OK; diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c -index e1684c5..3fc5b59 100644 +index 75a3f4b..06b70a3 100644 --- a/drivers/media/dvb-core/dvbdev.c +++ b/drivers/media/dvb-core/dvbdev.c @@ -428,7 +428,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, @@ -56367,10 +56713,10 @@ index 4ab6586..e1c352e 100644 unsigned int p2m_timeouts; diff --git a/drivers/media/pci/sta2x11/sta2x11_vip.c b/drivers/media/pci/sta2x11/sta2x11_vip.c -index 753411c..e3498f8 100644 +index 1fc195f..8fe473b 100644 --- a/drivers/media/pci/sta2x11/sta2x11_vip.c +++ b/drivers/media/pci/sta2x11/sta2x11_vip.c -@@ -786,8 +786,9 @@ static struct video_device video_dev_template = { +@@ -778,8 +778,9 @@ static struct video_device video_dev_template = { * * IRQ_HANDLED, interrupt done. */ @@ -56381,7 +56727,7 @@ index 753411c..e3498f8 100644 unsigned int status; status = reg_read(vip, DVP_ITS); -@@ -1079,7 +1080,7 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev, +@@ -1071,7 +1072,7 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev, spin_lock_init(&vip->slock); ret = request_irq(pdev->irq, @@ -56458,19 +56804,6 @@ index 80caa70..d076ecf 100644 vma->vm_ops = &zoran_vm_ops; vma->vm_flags |= VM_DONTEXPAND; -diff --git a/drivers/media/platform/am437x/am437x-vpfe.c b/drivers/media/platform/am437x/am437x-vpfe.c -index de32e3a..e6a7bff 100644 ---- a/drivers/media/platform/am437x/am437x-vpfe.c -+++ b/drivers/media/platform/am437x/am437x-vpfe.c -@@ -1706,7 +1706,7 @@ static int vpfe_get_app_input_index(struct vpfe_device *vpfe, - sdinfo = &cfg->sub_devs[i]; - client = v4l2_get_subdevdata(sdinfo->sd); - if (client->addr == curr_client->addr && -- client->adapter->nr == client->adapter->nr) { -+ client->adapter->nr == curr_client->adapter->nr) { - if (vpfe->current_input >= 1) - return -1; - *app_input_index = j + vpfe->current_input; diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c index 70c28d1..ff21b13 100644 --- a/drivers/media/platform/omap/omap_vout.c @@ -56508,7 +56841,7 @@ index 70c28d1..ff21b13 100644 videobuf_queue_dma_contig_init(q, &video_vbq_ops, q->dev, diff --git a/drivers/media/platform/s5p-tv/mixer.h b/drivers/media/platform/s5p-tv/mixer.h -index 42cd270..b8ebb97 100644 +index 4dd62a9..ec811d0 100644 --- a/drivers/media/platform/s5p-tv/mixer.h +++ b/drivers/media/platform/s5p-tv/mixer.h @@ -156,7 +156,7 @@ struct mxr_layer { @@ -56521,15 +56854,15 @@ index 42cd270..b8ebb97 100644 const struct mxr_format **fmt_array; /** size of format array */ diff --git a/drivers/media/platform/s5p-tv/mixer_grp_layer.c b/drivers/media/platform/s5p-tv/mixer_grp_layer.c -index db3163b2..d7a6b4d 100644 +index d4d2564..f4570ea 100644 --- a/drivers/media/platform/s5p-tv/mixer_grp_layer.c +++ b/drivers/media/platform/s5p-tv/mixer_grp_layer.c @@ -235,7 +235,7 @@ struct mxr_layer *mxr_graph_layer_create(struct mxr_device *mdev, int idx) { struct mxr_layer *layer; int ret; -- struct mxr_layer_ops ops = { -+ static struct mxr_layer_ops ops = { +- const struct mxr_layer_ops ops = { ++ static const struct mxr_layer_ops ops = { .release = mxr_graph_layer_release, .buffer_set = mxr_graph_buffer_set, .stream_set = mxr_graph_stream_set, @@ -56547,7 +56880,7 @@ index a0ec14a..225f4ac 100644 if (done && done != layer->shadow_buf) vb2_buffer_done(&done->vb.vb2_buf, 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 d9e7f03..2732585 100644 +index 7ab5578..88024b5 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) @@ -56647,15 +56980,15 @@ index d9e7f03..2732585 100644 spin_lock_init(&layer->enq_slock); INIT_LIST_HEAD(&layer->enq_list); diff --git a/drivers/media/platform/s5p-tv/mixer_vp_layer.c b/drivers/media/platform/s5p-tv/mixer_vp_layer.c -index dd002a4..7fafd8a 100644 +index 6fa6f67..04b574b 100644 --- a/drivers/media/platform/s5p-tv/mixer_vp_layer.c +++ b/drivers/media/platform/s5p-tv/mixer_vp_layer.c @@ -207,7 +207,7 @@ struct mxr_layer *mxr_vp_layer_create(struct mxr_device *mdev, int idx) { struct mxr_layer *layer; int ret; -- struct mxr_layer_ops ops = { -+ static struct mxr_layer_ops ops = { +- const struct mxr_layer_ops ops = { ++ static const struct mxr_layer_ops ops = { .release = mxr_vp_layer_release, .buffer_set = mxr_vp_buffer_set, .stream_set = mxr_vp_stream_set, @@ -57390,7 +57723,7 @@ index 8c95793..2309b9e 100644 ret = pvr2_stream_set_buffer_count(stream, PVR2_DVB_BUFFER_COUNT); if (ret < 0) return ret; diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c -index 1a093e5..f865fff 100644 +index 83e9a3e..e52b7f1 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c @@ -2097,7 +2097,7 @@ static void pvr2_hdw_load_modules(struct pvr2_hdw *hdw) @@ -57550,10 +57883,10 @@ index 06fa5f1..2231dda 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 170dd68..19b339d 100644 +index 528390f..cacc274 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -2406,49 +2406,216 @@ static int v4l_enum_freq_bands(const struct v4l2_ioctl_ops *ops, +@@ -2425,49 +2425,216 @@ static int v4l_enum_freq_bands(const struct v4l2_ioctl_ops *ops, return -ENOTTY; } @@ -57790,7 +58123,7 @@ index 170dd68..19b339d 100644 .debug = _debug, \ } -@@ -2459,17 +2626,17 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { +@@ -2478,17 +2645,17 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { IOCTL_INFO_FNC(VIDIOC_S_FMT, v4l_s_fmt, v4l_print_format, INFO_FL_PRIO), IOCTL_INFO_FNC(VIDIOC_REQBUFS, v4l_reqbufs, v4l_print_requestbuffers, INFO_FL_PRIO | INFO_FL_QUEUE), IOCTL_INFO_FNC(VIDIOC_QUERYBUF, v4l_querybuf, v4l_print_buffer, INFO_FL_QUEUE | INFO_FL_CLEAR(v4l2_buffer, length)), @@ -57812,7 +58145,7 @@ index 170dd68..19b339d 100644 IOCTL_INFO_FNC(VIDIOC_S_STD, v4l_s_std, v4l_print_std, INFO_FL_PRIO), IOCTL_INFO_FNC(VIDIOC_ENUMSTD, v4l_enumstd, v4l_print_standard, INFO_FL_CLEAR(v4l2_standard, index)), IOCTL_INFO_FNC(VIDIOC_ENUMINPUT, v4l_enuminput, v4l_print_enuminput, INFO_FL_CLEAR(v4l2_input, index)), -@@ -2477,19 +2644,19 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { +@@ -2496,19 +2663,19 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { IOCTL_INFO_FNC(VIDIOC_S_CTRL, v4l_s_ctrl, v4l_print_control, INFO_FL_PRIO | INFO_FL_CTRL), IOCTL_INFO_FNC(VIDIOC_G_TUNER, v4l_g_tuner, v4l_print_tuner, INFO_FL_CLEAR(v4l2_tuner, index)), IOCTL_INFO_FNC(VIDIOC_S_TUNER, v4l_s_tuner, v4l_print_tuner, INFO_FL_PRIO), @@ -57840,7 +58173,7 @@ index 170dd68..19b339d 100644 IOCTL_INFO_FNC(VIDIOC_G_MODULATOR, v4l_g_modulator, v4l_print_modulator, INFO_FL_CLEAR(v4l2_modulator, index)), IOCTL_INFO_FNC(VIDIOC_S_MODULATOR, v4l_s_modulator, v4l_print_modulator, INFO_FL_PRIO), IOCTL_INFO_FNC(VIDIOC_G_FREQUENCY, v4l_g_frequency, v4l_print_frequency, INFO_FL_CLEAR(v4l2_frequency, tuner)), -@@ -2497,14 +2664,14 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { +@@ -2516,14 +2683,14 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { IOCTL_INFO_FNC(VIDIOC_CROPCAP, v4l_cropcap, v4l_print_cropcap, INFO_FL_CLEAR(v4l2_cropcap, type)), IOCTL_INFO_FNC(VIDIOC_G_CROP, v4l_g_crop, v4l_print_crop, INFO_FL_CLEAR(v4l2_crop, type)), IOCTL_INFO_FNC(VIDIOC_S_CROP, v4l_s_crop, v4l_print_crop, INFO_FL_PRIO), @@ -57861,7 +58194,7 @@ index 170dd68..19b339d 100644 IOCTL_INFO_FNC(VIDIOC_G_PRIORITY, v4l_g_priority, v4l_print_u32, 0), IOCTL_INFO_FNC(VIDIOC_S_PRIORITY, v4l_s_priority, v4l_print_u32, INFO_FL_PRIO), IOCTL_INFO_FNC(VIDIOC_G_SLICED_VBI_CAP, v4l_g_sliced_vbi_cap, v4l_print_sliced_vbi_cap, INFO_FL_CLEAR(v4l2_sliced_vbi_cap, type)), -@@ -2512,26 +2679,26 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { +@@ -2531,26 +2698,26 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { IOCTL_INFO_FNC(VIDIOC_G_EXT_CTRLS, v4l_g_ext_ctrls, v4l_print_ext_controls, INFO_FL_CTRL), IOCTL_INFO_FNC(VIDIOC_S_EXT_CTRLS, v4l_s_ext_ctrls, v4l_print_ext_controls, INFO_FL_PRIO | INFO_FL_CTRL), IOCTL_INFO_FNC(VIDIOC_TRY_EXT_CTRLS, v4l_try_ext_ctrls, v4l_print_ext_controls, INFO_FL_CTRL), @@ -57900,7 +58233,7 @@ index 170dd68..19b339d 100644 IOCTL_INFO_FNC(VIDIOC_ENUM_FREQ_BANDS, v4l_enum_freq_bands, v4l_print_freq_band, 0), IOCTL_INFO_FNC(VIDIOC_DBG_G_CHIP_INFO, v4l_dbg_g_chip_info, v4l_print_dbg_chip_info, INFO_FL_CLEAR(v4l2_dbg_chip_info, match)), IOCTL_INFO_FNC(VIDIOC_QUERY_EXT_CTRL, v4l_query_ext_ctrl, v4l_print_query_ext_ctrl, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_query_ext_ctrl, id)), -@@ -2600,7 +2767,7 @@ static long __video_do_ioctl(struct file *file, +@@ -2619,7 +2786,7 @@ static long __video_do_ioctl(struct file *file, struct video_device *vfd = video_devdata(file); const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops; bool write_only = false; @@ -57909,7 +58242,7 @@ index 170dd68..19b339d 100644 const struct v4l2_ioctl_info *info; void *fh = file->private_data; struct v4l2_fh *vfh = NULL; -@@ -2636,14 +2803,8 @@ static long __video_do_ioctl(struct file *file, +@@ -2655,14 +2822,8 @@ static long __video_do_ioctl(struct file *file, } write_only = _IOC_DIR(cmd) == _IOC_WRITE; @@ -57926,7 +58259,7 @@ index 170dd68..19b339d 100644 } else if (!ops->vidioc_default) { ret = -ENOTTY; } else { -@@ -2691,7 +2852,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, +@@ -2710,7 +2871,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, ret = -EINVAL; break; } @@ -57935,7 +58268,7 @@ index 170dd68..19b339d 100644 *kernel_ptr = (void **)&buf->m.planes; *array_size = sizeof(struct v4l2_plane) * buf->length; ret = 1; -@@ -2708,7 +2869,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, +@@ -2727,7 +2888,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, ret = -EINVAL; break; } @@ -57944,7 +58277,7 @@ index 170dd68..19b339d 100644 *kernel_ptr = (void **)&edid->edid; *array_size = edid->blocks * 128; ret = 1; -@@ -2726,7 +2887,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, +@@ -2745,7 +2906,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, ret = -EINVAL; break; } @@ -57953,7 +58286,7 @@ index 170dd68..19b339d 100644 *kernel_ptr = (void **)&ctrls->controls; *array_size = sizeof(struct v4l2_ext_control) * ctrls->count; -@@ -2827,7 +2988,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, +@@ -2846,7 +3007,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, } if (has_array_args) { @@ -57963,51 +58296,63 @@ index 170dd68..19b339d 100644 err = -EFAULT; goto out_array_args; diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c -index 859b4a1..a6f983f 100644 +index 15508df..5f0ee4e 100644 --- a/drivers/memory/omap-gpmc.c +++ b/drivers/memory/omap-gpmc.c -@@ -232,7 +232,6 @@ struct omap3_gpmc_regs { - }; - - static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ]; --static struct irq_chip gpmc_irq_chip; - static int gpmc_irq_start; - - static struct resource gpmc_mem_root; -@@ -1165,6 +1164,17 @@ static void gpmc_irq_noop(struct irq_data *data) { } +@@ -234,7 +234,7 @@ struct omap3_gpmc_regs { + struct gpmc_device { + struct device *dev; + int irq; +- struct irq_chip irq_chip; ++ struct irq_chip *irq_chip; + struct gpio_chip gpio_chip; + int nirqs; + }; +@@ -1255,10 +1255,10 @@ static int gpmc_irq_map(struct irq_domain *d, unsigned int virq, + irq_set_chip_data(virq, gpmc); + if (hw < GPMC_NR_NAND_IRQS) { + irq_modify_status(virq, IRQ_NOREQUEST, IRQ_NOAUTOEN); +- irq_set_chip_and_handler(virq, &gpmc->irq_chip, ++ irq_set_chip_and_handler(virq, gpmc->irq_chip, + handle_simple_irq); + } else { +- irq_set_chip_and_handler(virq, &gpmc->irq_chip, ++ irq_set_chip_and_handler(virq, gpmc->irq_chip, + handle_edge_irq); + } - static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; } +@@ -1304,6 +1304,16 @@ static irqreturn_t gpmc_handle_irq(int irq, void *data) + return IRQ_HANDLED; + } +static struct irq_chip gpmc_irq_chip = { + .name = "gpmc", -+ .irq_startup = gpmc_irq_noop_ret, + .irq_enable = gpmc_irq_enable, + .irq_disable = gpmc_irq_disable, -+ .irq_shutdown = gpmc_irq_noop, -+ .irq_ack = gpmc_irq_noop, -+ .irq_mask = gpmc_irq_noop, -+ .irq_unmask = gpmc_irq_noop, ++ .irq_ack = gpmc_irq_ack, ++ .irq_mask = gpmc_irq_mask, ++ .irq_unmask = gpmc_irq_unmask, ++ .irq_set_type = gpmc_irq_set_type, +}; + - static int gpmc_setup_irq(void) + static int gpmc_setup_irq(struct gpmc_device *gpmc) { - int i; -@@ -1179,15 +1189,6 @@ static int gpmc_setup_irq(void) - return gpmc_irq_start; - } - -- gpmc_irq_chip.name = "gpmc"; -- gpmc_irq_chip.irq_startup = gpmc_irq_noop_ret; -- gpmc_irq_chip.irq_enable = gpmc_irq_enable; -- gpmc_irq_chip.irq_disable = gpmc_irq_disable; -- gpmc_irq_chip.irq_shutdown = gpmc_irq_noop; -- gpmc_irq_chip.irq_ack = gpmc_irq_noop; -- gpmc_irq_chip.irq_mask = gpmc_irq_noop; -- gpmc_irq_chip.irq_unmask = gpmc_irq_noop; -- - gpmc_client_irq[0].bitmask = GPMC_IRQ_FIFOEVENTENABLE; - gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT; + u32 regval; +@@ -1316,13 +1326,7 @@ static int gpmc_setup_irq(struct gpmc_device *gpmc) + regval = gpmc_read_reg(GPMC_IRQSTATUS); + gpmc_write_reg(GPMC_IRQSTATUS, regval); +- gpmc->irq_chip.name = "gpmc"; +- gpmc->irq_chip.irq_enable = gpmc_irq_enable; +- gpmc->irq_chip.irq_disable = gpmc_irq_disable; +- gpmc->irq_chip.irq_ack = gpmc_irq_ack; +- gpmc->irq_chip.irq_mask = gpmc_irq_mask; +- gpmc->irq_chip.irq_unmask = gpmc_irq_unmask; +- gpmc->irq_chip.irq_set_type = gpmc_irq_set_type; ++ gpmc->irq_chip = &gpmc_irq_chip; + + gpmc_irq_domain = irq_domain_add_linear(gpmc->dev->of_node, + gpmc->nirqs, diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index 5537f8d..f990a1d 100644 --- a/drivers/message/fusion/mptbase.c @@ -58057,7 +58402,7 @@ index 5537f8d..f990a1d 100644 seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n", ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz); diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c -index cbe9607..50db310 100644 +index 6955c9e..03bc466 100644 --- a/drivers/message/fusion/mptlan.c +++ b/drivers/message/fusion/mptlan.c @@ -680,7 +680,7 @@ out: @@ -58070,7 +58415,7 @@ index cbe9607..50db310 100644 { struct mpt_lan_priv *priv = netdev_priv(dev); diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c -index 7ebccfa..a0cd0e6 100644 +index 7ee1667..c36740d 100644 --- a/drivers/message/fusion/mptsas.c +++ b/drivers/message/fusion/mptsas.c @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached) @@ -58122,7 +58467,7 @@ index 7ebccfa..a0cd0e6 100644 mptsas_get_port(struct mptsas_phyinfo *phy_info) { diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c -index 69d9fff..62cd090 100644 +index 0aecd7b..41bf9bf 100644 --- a/drivers/mfd/ab8500-debugfs.c +++ b/drivers/mfd/ab8500-debugfs.c @@ -100,7 +100,7 @@ static int irq_last; @@ -58161,7 +58506,7 @@ index 70443b1..e6da89d 100644 if (node && !pdata) { diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c -index f7ab115..16b2087 100644 +index 11cab15..d144bd9 100644 --- a/drivers/mfd/tps65910.c +++ b/drivers/mfd/tps65910.c @@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq, @@ -58174,7 +58519,7 @@ index f7ab115..16b2087 100644 if (!irq) { dev_warn(tps65910->dev, "No interrupt support, no core IRQ\n"); diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c -index 40e51b0..af35565 100644 +index b46c0cf..89e322b 100644 --- a/drivers/mfd/twl4030-irq.c +++ b/drivers/mfd/twl4030-irq.c @@ -34,6 +34,7 @@ @@ -58747,10 +59092,10 @@ index 557f978..c8ce9fb 100644 { struct xpnet_pending_msg *queued_msg; diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c -index 71b6455..9cc7886 100644 +index bf0d770..9b331b0d 100644 --- a/drivers/misc/ti-st/st_kim.c +++ b/drivers/misc/ti-st/st_kim.c -@@ -582,9 +582,10 @@ static int show_list(struct seq_file *s, void *unused) +@@ -581,9 +581,10 @@ static int show_list(struct seq_file *s, void *unused) return 0; } @@ -58763,7 +59108,7 @@ index 71b6455..9cc7886 100644 struct kim_data_s *kim_data = dev_get_drvdata(dev); return sprintf(buf, "%d\n", kim_data->ldisc_install); } -@@ -611,47 +612,50 @@ static ssize_t store_baud_rate(struct device *dev, +@@ -610,47 +611,50 @@ static ssize_t store_baud_rate(struct device *dev, } #endif /* if DEBUG */ @@ -58842,10 +59187,10 @@ index c032eef..16a2a74 100644 if (rw->do_nonblock_req && ((!pre_req && post_req) || (pre_req && !post_req))) { diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h -index 68d5da2..7cf7308 100644 +index 1e8d838..265d97b 100644 --- a/drivers/mmc/host/dw_mmc.h +++ b/drivers/mmc/host/dw_mmc.h -@@ -297,5 +297,5 @@ struct dw_mci_drv_data { +@@ -295,5 +295,5 @@ struct dw_mci_drv_data { struct mmc_ios *ios); int (*switch_voltage)(struct mmc_host *mmc, struct mmc_ios *ios); @@ -58853,10 +59198,10 @@ index 68d5da2..7cf7308 100644 +} __do_const; #endif /* _DW_MMC_H_ */ diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 2e6c968..0a99c02 100644 +index df990bb..e647253 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c -@@ -1633,7 +1633,9 @@ static int mmci_probe(struct amba_device *dev, +@@ -1613,7 +1613,9 @@ static int mmci_probe(struct amba_device *dev, mmc->caps |= MMC_CAP_CMD23; if (variant->busy_detect) { @@ -58868,10 +59213,10 @@ index 2e6c968..0a99c02 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 f9ac3bb..4709b44 100644 +index 24ebc9a..f75606a 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c -@@ -2091,7 +2091,9 @@ static int omap_hsmmc_probe(struct platform_device *pdev) +@@ -2076,7 +2076,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"); @@ -58883,7 +59228,7 @@ index f9ac3bb..4709b44 100644 device_init_wakeup(&pdev->dev, true); diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c -index 2d300d8..35cc03f 100644 +index 9d3ae1f..43420eb 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1190,9 +1190,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) @@ -58920,6 +59265,22 @@ index 70c724b..0c24beb 100644 } /* It supports additional host capabilities if needed */ +diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c +index f44e2ab..6ce0c2c 100644 +--- a/drivers/mmc/host/tmio_mmc_pio.c ++++ b/drivers/mmc/host/tmio_mmc_pio.c +@@ -1072,7 +1072,10 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host, + goto host_free; + } + +- tmio_mmc_ops.start_signal_voltage_switch = _host->start_signal_voltage_switch; ++ pax_open_kernel(); ++ const_cast(tmio_mmc_ops.start_signal_voltage_switch) = ++ _host->start_signal_voltage_switch; ++ pax_close_kernel(); + mmc->ops = &tmio_mmc_ops; + + mmc->caps |= MMC_CAP_4_BIT_DATA | pdata->capabilities; diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c index 9a1a6ff..b8f1a57 100644 --- a/drivers/mtd/chips/cfi_cmdset_0020.c @@ -59103,7 +59464,7 @@ index 585596c..da877c2 100644 return brcmnand_probe(pdev, soc); } diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c -index e553aff..62fc6b8 100644 +index 0b0c937..e3a9cca 100644 --- a/drivers/mtd/nand/cafe_nand.c +++ b/drivers/mtd/nand/cafe_nand.c @@ -345,7 +345,17 @@ static irqreturn_t cafe_nand_interrupt(int irq, void *id) @@ -59125,7 +59486,7 @@ index e553aff..62fc6b8 100644 { BUG(); } -@@ -760,9 +770,9 @@ static int cafe_nand_probe(struct pci_dev *pdev, +@@ -780,9 +790,9 @@ static int cafe_nand_probe(struct pci_dev *pdev, cafe->nand.ecc.size = mtd->writesize; cafe->nand.ecc.bytes = 14; cafe->nand.ecc.strength = 4; @@ -59139,7 +59500,7 @@ index e553aff..62fc6b8 100644 cafe->nand.ecc.write_oob = cafe_nand_write_oob; cafe->nand.ecc.read_page = cafe_nand_read_page; diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c -index 30bf5f6..9bb67d1 100644 +index 0476ae8..8d320ef 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c @@ -24,6 +24,7 @@ @@ -59151,10 +59512,10 @@ index 30bf5f6..9bb67d1 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 8122c69..96522f2 100644 +index 6e46156..923c436 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c -@@ -388,7 +388,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr) +@@ -414,7 +414,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr) /* first try to map the upper buffer directly */ if (virt_addr_valid(this->upper_buf) && @@ -59176,7 +59537,7 @@ index a5dfbfb..8042ab4 100644 #include <linux/mtd/nand.h> #include <linux/mtd/nftl.h> diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c -index b096f8b..727cc94 100644 +index 3692dd5..b731a9b 100644 --- a/drivers/mtd/sm_ftl.c +++ b/drivers/mtd/sm_ftl.c @@ -56,7 +56,7 @@ static ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr, @@ -59189,10 +59550,10 @@ index b096f8b..727cc94 100644 struct sm_sysfs_attribute *vendor_attribute; char *vendor; diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c -index 22fd19c..54e16b1 100644 +index ef36182..d5736e4 100644 --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c -@@ -1377,7 +1377,7 @@ static int __init bytes_str_to_int(const char *str) +@@ -1386,7 +1386,7 @@ static int __init bytes_str_to_int(const char *str) * This function returns zero in case of success and a negative error code in * case of error. */ @@ -59202,10 +59563,10 @@ index 22fd19c..54e16b1 100644 int i, len; struct mtd_dev_param *p; diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c -index db760e8..d53ca99 100644 +index b8df0f5..0d64b6e 100644 --- a/drivers/net/bonding/bond_netlink.c +++ b/drivers/net/bonding/bond_netlink.c -@@ -662,7 +662,7 @@ nla_put_failure: +@@ -666,7 +666,7 @@ nla_put_failure: return -EMSGSIZE; } @@ -59302,11 +59663,11 @@ index 1deb8ff..4e2b0c1 100644 struct bfin_can_priv *priv = netdev_priv(dev); struct bfin_can_regs __iomem *reg = priv->membase; diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c -index 910c12e..b9c005d 100644 +index ad535a8..b7e3ad7 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c -@@ -1008,7 +1008,7 @@ static int can_newlink(struct net *src_net, struct net_device *dev, - return -EOPNOTSUPP; +@@ -1016,7 +1016,7 @@ static void can_dellink(struct net_device *dev, struct list_head *head) + return; } -static struct rtnl_link_ops can_link_ops __read_mostly = { @@ -59328,10 +59689,10 @@ index 41c0fc9..517f7e3 100644 const struct flexcan_priv *priv = netdev_priv(dev); struct flexcan_regs __iomem *regs = priv->regs; diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c -index 5d04f54..9586a90 100644 +index f13bb8d..26e4a44 100644 --- a/drivers/net/can/janz-ican3.c +++ b/drivers/net/can/janz-ican3.c -@@ -1598,7 +1598,7 @@ static int ican3_stop(struct net_device *ndev) +@@ -1684,7 +1684,7 @@ static int ican3_stop(struct net_device *ndev) return 0; } @@ -59432,7 +59793,7 @@ index c89b9aee..66151c0 100644 if (!request_mem_region(mem->start, mem_size, pdev->name)) { diff --git a/drivers/net/ethernet/8390/axnet_cs.c b/drivers/net/ethernet/8390/axnet_cs.c -index ec6eac1..4426e27 100644 +index 4ea717d..549ae69 100644 --- a/drivers/net/ethernet/8390/axnet_cs.c +++ b/drivers/net/ethernet/8390/axnet_cs.c @@ -96,7 +96,7 @@ static void get_8390_hdr(struct net_device *, @@ -59500,7 +59861,7 @@ index 2f79d29..ed5a64e 100644 void __iomem *shmem = ei_status.mem + (start_page << 8); shmem -= ei_status.tx_start_page << 8; diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c -index 74139cb..6c2a056 100644 +index 3d2245f..9ac7187 100644 --- a/drivers/net/ethernet/adi/bfin_mac.c +++ b/drivers/net/ethernet/adi/bfin_mac.c @@ -1123,7 +1123,7 @@ static void tx_reclaim_skb_timeout(unsigned long lp) @@ -59513,7 +59874,7 @@ index 74139cb..6c2a056 100644 { struct bfin_mac_local *lp = netdev_priv(dev); diff --git a/drivers/net/ethernet/allwinner/sun4i-emac.c b/drivers/net/ethernet/allwinner/sun4i-emac.c -index 8d50314..df65782 100644 +index de2c4bf..716e0c8 100644 --- a/drivers/net/ethernet/allwinner/sun4i-emac.c +++ b/drivers/net/ethernet/allwinner/sun4i-emac.c @@ -438,7 +438,7 @@ static void emac_timeout(struct net_device *dev) @@ -59562,7 +59923,7 @@ index f749e4d..23a27f1 100644 /* Scatter/gather IO is not supported, * so it is turned off diff --git a/drivers/net/ethernet/amd/7990.c b/drivers/net/ethernet/amd/7990.c -index 66d0b73c..5e0763f 100644 +index dcf2a1f..ec0c782 100644 --- a/drivers/net/ethernet/amd/7990.c +++ b/drivers/net/ethernet/amd/7990.c @@ -535,7 +535,7 @@ void lance_tx_timeout(struct net_device *dev) @@ -59612,7 +59973,7 @@ index 9496005..1fb7ac2 100644 IPG_CONVERGE_JIFFIES; lp->ipg_data.ipg = DEFAULT_IPG; diff --git a/drivers/net/ethernet/amd/atarilance.c b/drivers/net/ethernet/amd/atarilance.c -index b10964e..93b7cb8 100644 +index d2bc8e5..2285a75 100644 --- a/drivers/net/ethernet/amd/atarilance.c +++ b/drivers/net/ethernet/amd/atarilance.c @@ -339,7 +339,7 @@ static unsigned long lance_probe1( struct net_device *dev, struct lance_addr @@ -59634,7 +59995,7 @@ index b10964e..93b7cb8 100644 struct lance_private *lp = netdev_priv(dev); struct lance_ioreg *IO = lp->iobase; diff --git a/drivers/net/ethernet/amd/declance.c b/drivers/net/ethernet/amd/declance.c -index b584b78..5e994f9 100644 +index b799c7a..58bd5b3 100644 --- a/drivers/net/ethernet/amd/declance.c +++ b/drivers/net/ethernet/amd/declance.c @@ -893,7 +893,7 @@ static void lance_tx_timeout(struct net_device *dev) @@ -59647,7 +60008,7 @@ index b584b78..5e994f9 100644 struct lance_private *lp = netdev_priv(dev); volatile struct lance_regs *ll = lp->ll; diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c -index 7ccebae..237f6bb 100644 +index c22bf52..a83f5f6 100644 --- a/drivers/net/ethernet/amd/pcnet32.c +++ b/drivers/net/ethernet/amd/pcnet32.c @@ -318,7 +318,7 @@ static struct net_device_stats *pcnet32_get_stats(struct net_device *); @@ -59702,7 +60063,7 @@ index 3d8c6b2..35160ad 100644 struct lance_private *lp = netdev_priv(dev); int entry, len; diff --git a/drivers/net/ethernet/amd/sunlance.c b/drivers/net/ethernet/amd/sunlance.c -index 7847638..6126840 100644 +index 9b56b40..f183a4d 100644 --- a/drivers/net/ethernet/amd/sunlance.c +++ b/drivers/net/ethernet/amd/sunlance.c @@ -1106,7 +1106,7 @@ static void lance_tx_timeout(struct net_device *dev) @@ -60484,7 +60845,7 @@ index 98d9d63..3825a58 100644 void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *); diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c -index fd20088..2c16ef15 100644 +index d208b17..b5c2cf7 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -123,7 +123,7 @@ static void xgene_enet_delete_bufpool(struct xgene_enet_desc_ring *buf_pool) @@ -60519,10 +60880,10 @@ index a3a9392..d4c1818 100644 struct arc_emac_priv *priv = netdev_priv(ndev); unsigned int len, *txbd_curr = &priv->txbd_curr; diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c -index 8611811..be1aaac 100644 +index e708e36..7de02e6 100644 --- a/drivers/net/ethernet/atheros/alx/main.c +++ b/drivers/net/ethernet/atheros/alx/main.c -@@ -1497,7 +1497,7 @@ static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); +@@ -1464,7 +1464,7 @@ static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); static pci_ers_result_t alx_pci_error_detected(struct pci_dev *pdev, @@ -60532,10 +60893,10 @@ index 8611811..be1aaac 100644 struct alx_priv *alx = pci_get_drvdata(pdev); struct net_device *netdev = alx->dev; diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -index d0084d4..d5d7f46 100644 +index a3200ea..d02b523 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -@@ -2715,7 +2715,7 @@ static void atl1c_remove(struct pci_dev *pdev) +@@ -2704,7 +2704,7 @@ static void atl1c_remove(struct pci_dev *pdev) * this device has been detected. */ static pci_ers_result_t atl1c_io_error_detected(struct pci_dev *pdev, @@ -60545,10 +60906,10 @@ index d0084d4..d5d7f46 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct atl1c_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -index 59a03a1..1ae287b 100644 +index 974713b..5e0112b 100644 --- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -@@ -2485,7 +2485,7 @@ static void atl1e_remove(struct pci_dev *pdev) +@@ -2475,7 +2475,7 @@ static void atl1e_remove(struct pci_dev *pdev) * this device has been detected. */ static pci_ers_result_t @@ -60558,10 +60919,10 @@ index 59a03a1..1ae287b 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct atl1e_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c -index 08a23e6..2ffb80f 100644 +index 1a3555d..d4d8a5a 100644 --- a/drivers/net/ethernet/aurora/nb8800.c +++ b/drivers/net/ethernet/aurora/nb8800.c -@@ -395,7 +395,7 @@ static void nb8800_tx_dma_start_irq(struct net_device *dev) +@@ -396,7 +396,7 @@ static void nb8800_tx_dma_start_irq(struct net_device *dev) spin_unlock(&priv->tx_lock); } @@ -61152,10 +61513,10 @@ index b7d2511..a625bae 100644 typedef void (*set_link_led_t)(struct bnx2x_phy *phy, struct link_params *params, u8 mode); diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -index d465bd7..85bff75 100644 +index a59d55e..f537eff 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -@@ -14201,7 +14201,7 @@ static int bnx2x_eeh_nic_unload(struct bnx2x *bp) +@@ -14176,7 +14176,7 @@ static int bnx2x_eeh_nic_unload(struct bnx2x *bp) * this device has been detected. */ static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev, @@ -61204,10 +61565,10 @@ index 4048fc5..333809f 100644 /** * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters. diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c -index c39a7f5..f145270 100644 +index c777cde..7fa85f9 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c -@@ -6149,7 +6149,7 @@ init_err_free: +@@ -6421,7 +6421,7 @@ init_err_free: * this device has been detected. */ static pci_ers_result_t bnxt_io_error_detected(struct pci_dev *pdev, @@ -61217,7 +61578,7 @@ index c39a7f5..f145270 100644 struct net_device *netdev = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c -index 3010080..49824f1 100644 +index ff300f7..0e84e81 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -18124,7 +18124,7 @@ static void tg3_shutdown(struct pci_dev *pdev) @@ -61610,10 +61971,10 @@ index 771cc26..c681a90 100644 /* * Init NAPI, so that state is set to NAPI_STATE_SCHED, diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c -index a63551d0a..f460dd6 100644 +index cb07d95..2e48443 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c -@@ -1329,7 +1329,7 @@ dma_error: +@@ -1324,7 +1324,7 @@ dma_error: return 0; } @@ -61622,7 +61983,7 @@ index a63551d0a..f460dd6 100644 { u16 queue_index = skb_get_queue_mapping(skb); struct macb *bp = netdev_priv(dev); -@@ -2628,7 +2628,7 @@ static int at91ether_close(struct net_device *dev) +@@ -2613,7 +2613,7 @@ static int at91ether_close(struct net_device *dev) } /* Transmit packet */ @@ -61657,7 +62018,7 @@ index 245c063..74ed9c9 100644 mdio_cmd->op = op; mdio_cmd->mdio_addr = loc; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c -index 34d269c..69e1ac2 100644 +index 0e7e7da..814e3ca 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -475,7 +475,7 @@ static void stop_pci_io(struct octeon_device *oct) @@ -61687,7 +62048,7 @@ index 34d269c..69e1ac2 100644 { struct lio *lio; struct octnet_buf_free_info *finfo; -@@ -3174,7 +3174,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) +@@ -3175,7 +3175,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) dev_dbg(&octeon_dev->pci_dev->dev, "requesting config for interface %d, iqs %d, oqs %d\n", i, num_iqueues, num_oqueues); @@ -61696,7 +62057,7 @@ index 34d269c..69e1ac2 100644 ctx->octeon_id = lio_get_device_id(octeon_dev); init_waitqueue_head(&ctx->wc); -@@ -3237,8 +3237,11 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) +@@ -3238,8 +3238,11 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) props = &octeon_dev->props[i]; props->netdev = netdev; @@ -61737,10 +62098,10 @@ 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 d1e3f09..23cfbef 100644 +index 477db47..f2b8a2c 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c -@@ -4177,7 +4177,7 @@ bye: +@@ -4195,7 +4195,7 @@ bye: /* EEH callbacks */ static pci_ers_result_t eeh_err_detected(struct pci_dev *pdev, @@ -61750,10 +62111,10 @@ index d1e3f09..23cfbef 100644 int i; struct adapter *adap = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h -index 4a707c3..de12401 100644 +index 734dd77..85f036e 100644 --- a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h +++ b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h -@@ -546,7 +546,7 @@ int t4vf_sge_alloc_eth_txq(struct adapter *, struct sge_eth_txq *, +@@ -550,7 +550,7 @@ int t4vf_sge_alloc_eth_txq(struct adapter *, struct sge_eth_txq *, unsigned int); void t4vf_free_sge_resources(struct adapter *); @@ -61763,7 +62124,7 @@ index 4a707c3..de12401 100644 const struct pkt_gl *); diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c -index 1ccd282..93f6dd4 100644 +index 1bb57d3..6b9d78e 100644 --- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c @@ -1159,7 +1159,7 @@ static inline void txq_advance(struct sge_txq *tq, unsigned int n) @@ -61776,7 +62137,7 @@ index 1ccd282..93f6dd4 100644 u32 wr_mid; u64 cntrl, *end; diff --git a/drivers/net/ethernet/davicom/dm9000.c b/drivers/net/ethernet/davicom/dm9000.c -index 48d9194..68ced25 100644 +index 1471e16..fa50073 100644 --- a/drivers/net/ethernet/davicom/dm9000.c +++ b/drivers/net/ethernet/davicom/dm9000.c @@ -1021,7 +1021,7 @@ static void dm9000_send_packet(struct net_device *dev, @@ -61789,7 +62150,7 @@ index 48d9194..68ced25 100644 { unsigned long flags; diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c -index 3acde3b..284086c 100644 +index cbe8497..1c7dcc9 100644 --- a/drivers/net/ethernet/dec/tulip/de4x5.c +++ b/drivers/net/ethernet/dec/tulip/de4x5.c @@ -912,7 +912,7 @@ static int de4x5_init(struct net_device *dev); @@ -61810,7 +62171,7 @@ index 3acde3b..284086c 100644 lp->timer.data = (unsigned long)dev; de4x5_parse_params(dev); -@@ -1740,8 +1740,9 @@ de4x5_tx(struct net_device *dev) +@@ -1743,8 +1743,9 @@ de4x5_tx(struct net_device *dev) } static void @@ -61821,7 +62182,7 @@ index 3acde3b..284086c 100644 struct de4x5_private *lp = netdev_priv(dev); int next_tick = DE4X5_AUTOSENSE_MS; int dt; -@@ -2368,7 +2369,7 @@ autoconf_media(struct net_device *dev) +@@ -2371,7 +2372,7 @@ autoconf_media(struct net_device *dev) lp->media = INIT; lp->tcount = 0; @@ -61830,7 +62191,7 @@ index 3acde3b..284086c 100644 return lp->media; } -@@ -5373,7 +5374,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +@@ -5376,7 +5377,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) for (i=0; i<ETH_ALEN; i++) { tmp.addr[i] = dev->dev_addr[i]; } @@ -61839,7 +62200,7 @@ index 3acde3b..284086c 100644 break; case DE4X5_SET_HWADDR: /* Set the hardware address */ -@@ -5413,7 +5414,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +@@ -5416,7 +5417,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) spin_lock_irqsave(&lp->lock, flags); memcpy(&statbuf, &lp->pktStats, ioc->len); spin_unlock_irqrestore(&lp->lock, flags); @@ -61849,7 +62210,7 @@ index 3acde3b..284086c 100644 break; } diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c -index 5366864..5aab985 100644 +index ed98ef1..5b80ca5 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -556,7 +556,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) @@ -61861,7 +62222,7 @@ index 5366864..5aab985 100644 } static void populate_erx_stats(struct be_adapter *adapter, -@@ -5467,7 +5467,7 @@ static void be_shutdown(struct pci_dev *pdev) +@@ -5469,7 +5469,7 @@ static void be_shutdown(struct pci_dev *pdev) } static pci_ers_result_t be_eeh_err_detected(struct pci_dev *pdev, @@ -61871,7 +62232,7 @@ index 5366864..5aab985 100644 struct be_adapter *adapter = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c -index 84384e1..9643fe6 100644 +index e7cf313..304fdbb 100644 --- a/drivers/net/ethernet/faraday/ftgmac100.c +++ b/drivers/net/ethernet/faraday/ftgmac100.c @@ -30,6 +30,8 @@ @@ -61883,7 +62244,7 @@ index 84384e1..9643fe6 100644 #include <net/ip.h> #include "ftgmac100.h" -@@ -1120,7 +1122,7 @@ static int ftgmac100_stop(struct net_device *netdev) +@@ -1102,7 +1104,7 @@ static int ftgmac100_stop(struct net_device *netdev) return 0; } @@ -61915,10 +62276,10 @@ index dce5f7b..222e709 100644 struct ftmac100 *priv = netdev_priv(netdev); dma_addr_t map; diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c -index 25553ee..0b3cdea 100644 +index 446ae9d..79d1d75 100644 --- a/drivers/net/ethernet/freescale/fec_mpc52xx.c +++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c -@@ -306,7 +306,7 @@ static int mpc52xx_fec_close(struct net_device *dev) +@@ -305,7 +305,7 @@ static int mpc52xx_fec_close(struct net_device *dev) * invariant will hold if you make sure that the netif_*_queue() * calls are done at the proper times. */ @@ -61928,7 +62289,7 @@ index 25553ee..0b3cdea 100644 struct mpc52xx_fec_priv *priv = netdev_priv(dev); struct bcom_fec_bd *bd; diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c -index 48a9c17..0745505 100644 +index 61fd486..06047eb 100644 --- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c +++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c @@ -509,7 +509,7 @@ static struct sk_buff *tx_skb_align_workaround(struct net_device *dev, @@ -61941,7 +62302,7 @@ index 48a9c17..0745505 100644 struct fs_enet_private *fep = netdev_priv(dev); cbd_t __iomem *bdp; diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c -index d2f917a..ed4d7f5 100644 +index 2e6785b..193f8a2 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -112,7 +112,7 @@ @@ -61953,7 +62314,7 @@ index d2f917a..ed4d7f5 100644 static void gfar_reset_task(struct work_struct *work); static void gfar_timeout(struct net_device *dev); static int gfar_close(struct net_device *dev); -@@ -2315,7 +2315,7 @@ static inline bool gfar_csum_errata_76(struct gfar_private *priv, +@@ -2316,7 +2316,7 @@ static inline bool gfar_csum_errata_76(struct gfar_private *priv, /* This is called by the kernel when a frame is ready for transmission. * It is pointed to by the dev->hard_start_xmit function pointer */ @@ -61989,7 +62350,7 @@ index 0c4afe9..d888314 100644 struct hip04_priv *priv = netdev_priv(ndev); struct net_device_stats *stats = &ndev->stats; diff --git a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c -index e51892d..3e645f4 100644 +index b9f2ea5..82cb18e 100644 --- a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c +++ b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c @@ -601,7 +601,7 @@ static irqreturn_t hix5hd2_interrupt(int irq, void *dev_id) @@ -62002,10 +62363,10 @@ index e51892d..3e645f4 100644 struct hix5hd2_priv *priv = netdev_priv(dev); struct hix5hd2_desc *desc; diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c -index a1cb461..05164e3 100644 +index 7a757e8..9509b7f 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c -@@ -845,16 +845,18 @@ int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) +@@ -818,16 +818,18 @@ int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) struct hnae_ae_dev *ae_dev = &dsaf_dev->ae_dev; static atomic_t id = ATOMIC_INIT(-1); @@ -62027,7 +62388,7 @@ index a1cb461..05164e3 100644 snprintf(ae_dev->name, AE_NAME_SIZE, "%s%d", DSAF_DEVICE_NAME, (int)atomic_inc_return(&id)); diff --git a/drivers/net/ethernet/i825xx/lib82596.c b/drivers/net/ethernet/i825xx/lib82596.c -index c984998..187fa04 100644 +index 3dbc53c2..fa08fb8 100644 --- a/drivers/net/ethernet/i825xx/lib82596.c +++ b/drivers/net/ethernet/i825xx/lib82596.c @@ -347,7 +347,7 @@ static const char init_setup[] = @@ -62049,10 +62410,10 @@ index c984998..187fa04 100644 struct i596_private *lp = netdev_priv(dev); struct tx_cmd *tx_cmd; diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c -index 2a0dc12..d590cfd 100644 +index 54efa9a..0d297bd 100644 --- a/drivers/net/ethernet/ibm/ehea/ehea_main.c +++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c -@@ -2048,7 +2048,7 @@ static void ehea_xmit3(struct sk_buff *skb, struct net_device *dev, +@@ -2047,7 +2047,7 @@ static void ehea_xmit3(struct sk_buff *skb, struct net_device *dev, dev_consume_skb_any(skb); } @@ -62062,7 +62423,7 @@ index 2a0dc12..d590cfd 100644 struct ehea_port *port = netdev_priv(dev); struct ehea_swqe *swqe; diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c -index 5d7db6c..1592aba 100644 +index 4c9771d..3b030dc 100644 --- a/drivers/net/ethernet/ibm/emac/core.c +++ b/drivers/net/ethernet/ibm/emac/core.c @@ -1385,7 +1385,7 @@ static inline int emac_xmit_finish(struct emac_instance *dev, int len) @@ -62097,7 +62458,7 @@ index 068789e..f4928f0 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct nic *nic = netdev_priv(netdev); diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c -index ae90d4f..666cb68 100644 +index f42129d..d2e3932 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -5272,7 +5272,7 @@ static void e1000_netpoll(struct net_device *netdev) @@ -62110,10 +62471,10 @@ index ae90d4f..666cb68 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c -index 9b4ec13..c0cd7ab 100644 +index 2b2e2f8..ad9257f 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -6734,7 +6734,7 @@ static void e1000_netpoll(struct net_device *netdev) +@@ -6771,7 +6771,7 @@ static void e1000_netpoll(struct net_device *netdev) * this device has been detected. */ static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev, @@ -62123,10 +62484,10 @@ index 9b4ec13..c0cd7ab 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c -index 4eb7a6f..da3c328 100644 +index e05aca9..f6c507e 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c -@@ -2249,7 +2249,7 @@ static int fm10k_suspend(struct pci_dev *pdev, +@@ -2185,7 +2185,7 @@ static int fm10k_suspend(struct pci_dev *pdev, * this device has been detected. */ static pci_ers_result_t fm10k_io_error_detected(struct pci_dev *pdev, @@ -62136,10 +62497,10 @@ index 4eb7a6f..da3c328 100644 struct fm10k_intfc *interface = pci_get_drvdata(pdev); struct net_device *netdev = interface->netdev; diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c -index 565ca7c..dcdf764 100644 +index ed39cba..76569b9 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c -@@ -418,7 +418,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf) +@@ -417,7 +417,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf) wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32); /* Update the base adjustement value. */ @@ -62149,10 +62510,10 @@ index 565ca7c..dcdf764 100644 } diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c -index 55a1405c..b722e63 100644 +index ef3d642..4479a38 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c -@@ -7750,7 +7750,7 @@ static void igb_netpoll(struct net_device *netdev) +@@ -7809,7 +7809,7 @@ static void igb_netpoll(struct net_device *netdev) * this device has been detected. **/ static pci_ers_result_t igb_io_error_detected(struct pci_dev *pdev, @@ -62162,10 +62523,10 @@ index 55a1405c..b722e63 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct igb_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c -index c124422..5d471ad 100644 +index b0778ba..ed4357a 100644 --- a/drivers/net/ethernet/intel/igbvf/netdev.c +++ b/drivers/net/ethernet/intel/igbvf/netdev.c -@@ -2523,7 +2523,7 @@ static void igbvf_netpoll(struct net_device *netdev) +@@ -2511,7 +2511,7 @@ static void igbvf_netpoll(struct net_device *netdev) * this device has been detected. */ static pci_ers_result_t igbvf_io_error_detected(struct pci_dev *pdev, @@ -62175,10 +62536,10 @@ index c124422..5d471ad 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct igbvf_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c -index 7df3fe2..88f9610 100644 +index 8bebd86..61406f4 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c -@@ -9551,7 +9551,7 @@ static void ixgbe_remove(struct pci_dev *pdev) +@@ -9818,7 +9818,7 @@ static void ixgbe_remove(struct pci_dev *pdev) * this device has been detected. */ static pci_ers_result_t ixgbe_io_error_detected(struct pci_dev *pdev, @@ -62188,10 +62549,10 @@ index 7df3fe2..88f9610 100644 struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); struct net_device *netdev = adapter->netdev; diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c -index ef1504d..e1c3402 100644 +index e5431bf..1db690e 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c -@@ -1119,7 +1119,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) +@@ -1122,7 +1122,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) } /* update the base incval used to calculate frequency adjustment */ @@ -62201,10 +62562,10 @@ index ef1504d..e1c3402 100644 /* need lock to prevent incorrect read while modifying cyclecounter */ diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c -index b0edae9..c068ee7 100644 +index acc2401..8f9a051 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c -@@ -3607,7 +3607,7 @@ static int ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size) +@@ -3614,7 +3614,7 @@ static int ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size) return __ixgbevf_maybe_stop_tx(tx_ring, size); } @@ -62213,7 +62574,7 @@ index b0edae9..c068ee7 100644 { struct ixgbevf_adapter *adapter = netdev_priv(netdev); struct ixgbevf_tx_buffer *first; -@@ -4148,7 +4148,7 @@ static void ixgbevf_remove(struct pci_dev *pdev) +@@ -4200,7 +4200,7 @@ static void ixgbevf_remove(struct pci_dev *pdev) * this device has been detected. **/ static pci_ers_result_t ixgbevf_io_error_detected(struct pci_dev *pdev, @@ -62223,10 +62584,10 @@ index b0edae9..c068ee7 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct ixgbevf_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c -index c442f6a..f41971a 100644 +index 54d5154..5371b4a 100644 --- a/drivers/net/ethernet/marvell/pxa168_eth.c +++ b/drivers/net/ethernet/marvell/pxa168_eth.c -@@ -1272,7 +1272,7 @@ static int pxa168_rx_poll(struct napi_struct *napi, int budget) +@@ -1270,7 +1270,7 @@ static int pxa168_rx_poll(struct napi_struct *napi, int budget) return work_done; } @@ -62236,10 +62597,10 @@ index c442f6a..f41971a 100644 struct pxa168_eth_private *pep = netdev_priv(dev); struct net_device_stats *stats = &dev->stats; diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c -index a386f04..532dac2 100644 +index 76aa4d2..30ac36b 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c -@@ -482,8 +482,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev, +@@ -473,8 +473,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev, wmb(); /* we want to dirty this cache line once */ @@ -62251,10 +62612,10 @@ index a386f04..532dac2 100644 netdev_tx_completed_queue(ring->tx_queue, packets, bytes); diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c -index 12c77a7..d3814dd 100644 +index 546fab0..8eeb822 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c -@@ -4056,7 +4056,7 @@ static const struct pci_device_id mlx4_pci_table[] = { +@@ -4057,7 +4057,7 @@ static const struct pci_device_id mlx4_pci_table[] = { MODULE_DEVICE_TABLE(pci, mlx4_pci_table); static pci_ers_result_t mlx4_pci_err_detected(struct pci_dev *pdev, @@ -62264,10 +62625,10 @@ index 12c77a7..d3814dd 100644 struct mlx4_dev_persistent *persist = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c -index 6892746f..bd445ae 100644 +index 6695893..6abc392 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c -@@ -1349,7 +1349,7 @@ static void remove_one(struct pci_dev *pdev) +@@ -1384,7 +1384,7 @@ static void remove_one(struct pci_dev *pdev) } static pci_ers_result_t mlx5_pci_err_detected(struct pci_dev *pdev, @@ -62277,10 +62638,10 @@ index 6892746f..bd445ae 100644 struct mlx5_core_dev *dev = pci_get_drvdata(pdev); struct mlx5_priv *priv = &dev->priv; diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c -index 668b2f4..add3ac0 100644 +index 3740800..ab88252 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c -@@ -3228,7 +3228,7 @@ static int mlxsw_sp_netdevice_event(struct notifier_block *unused, +@@ -3533,7 +3533,7 @@ static int mlxsw_sp_netdevice_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -62290,7 +62651,7 @@ index 668b2f4..add3ac0 100644 }; diff --git a/drivers/net/ethernet/micrel/ks8695net.c b/drivers/net/ethernet/micrel/ks8695net.c -index a8522d8..2126286 100644 +index 20cb85b..6135d90 100644 --- a/drivers/net/ethernet/micrel/ks8695net.c +++ b/drivers/net/ethernet/micrel/ks8695net.c @@ -1156,7 +1156,7 @@ ks8695_timeout(struct net_device *ndev) @@ -62316,7 +62677,7 @@ index 2fc5cd5..6c6108a 100644 int retv = NETDEV_TX_OK; struct ks_net *ks = netdev_priv(netdev); diff --git a/drivers/net/ethernet/moxa/moxart_ether.c b/drivers/net/ethernet/moxa/moxart_ether.c -index 3e67f45..f1e1504 100644 +index 4367dd6..c32f151 100644 --- a/drivers/net/ethernet/moxa/moxart_ether.c +++ b/drivers/net/ethernet/moxa/moxart_ether.c @@ -319,7 +319,7 @@ static irqreturn_t moxart_mac_interrupt(int irq, void *dev_id) @@ -62329,10 +62690,10 @@ index 3e67f45..f1e1504 100644 struct moxart_mac_priv_t *priv = netdev_priv(ndev); void *desc; diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c -index 9ba9758..9c7c77f 100644 +index 2874dff..fe466a4 100644 --- a/drivers/net/ethernet/neterion/s2io.c +++ b/drivers/net/ethernet/neterion/s2io.c -@@ -8563,7 +8563,7 @@ static void lro_append_pkt(struct s2io_nic *sp, struct lro *lro, +@@ -8556,7 +8556,7 @@ static void lro_append_pkt(struct s2io_nic *sp, struct lro *lro, * this device has been detected. */ static pci_ers_result_t s2io_io_error_detected(struct pci_dev *pdev, @@ -62380,10 +62741,10 @@ index e0993eb..d8d7f50 100644 struct __vxge_hw_device *hldev = pci_get_drvdata(pdev); struct net_device *netdev = hldev->ndev; diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c -index 43c618b..bb6e368 100644 +index ba26bb3..cdf1919 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c -@@ -630,7 +630,7 @@ static void nfp_net_tx_csum(struct nfp_net *nn, struct nfp_net_r_vector *r_vec, +@@ -752,7 +752,7 @@ static void nfp_net_tx_csum(struct nfp_net *nn, struct nfp_net_r_vector *r_vec, * * Return: NETDEV_TX_OK on success. */ @@ -62393,7 +62754,7 @@ index 43c618b..bb6e368 100644 struct nfp_net *nn = netdev_priv(netdev); const struct skb_frag_struct *frag; diff --git a/drivers/net/ethernet/netx-eth.c b/drivers/net/ethernet/netx-eth.c -index 9fbc302..f87f84a 100644 +index adbc47f..d072612 100644 --- a/drivers/net/ethernet/netx-eth.c +++ b/drivers/net/ethernet/netx-eth.c @@ -107,7 +107,7 @@ static void netx_eth_set_multicast_list(struct net_device *ndev) @@ -62406,7 +62767,7 @@ index 9fbc302..f87f84a 100644 { struct netx_eth_priv *priv = netdev_priv(ndev); diff --git a/drivers/net/ethernet/nuvoton/w90p910_ether.c b/drivers/net/ethernet/nuvoton/w90p910_ether.c -index 52d9a94..cc230d4 100644 +index 87b7b81..b352c4b 100644 --- a/drivers/net/ethernet/nuvoton/w90p910_ether.c +++ b/drivers/net/ethernet/nuvoton/w90p910_ether.c @@ -633,7 +633,7 @@ static int w90p910_send_frame(struct net_device *dev, @@ -62447,10 +62808,10 @@ index b1ce7aa..c082651 100644 struct netdata_local *pldat = netdev_priv(ndev); u32 len, txidx; diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -index 3b98b263b..13d2129 100644 +index 3cd87a4..3eb33e7 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -@@ -2131,7 +2131,7 @@ static int pch_gbe_stop(struct net_device *netdev) +@@ -2130,7 +2130,7 @@ static int pch_gbe_stop(struct net_device *netdev) * - NETDEV_TX_OK: Normal end * - NETDEV_TX_BUSY: Error end */ @@ -62459,7 +62820,7 @@ index 3b98b263b..13d2129 100644 { struct pch_gbe_adapter *adapter = netdev_priv(netdev); struct pch_gbe_tx_ring *tx_ring = adapter->tx_ring; -@@ -2447,7 +2447,7 @@ static const struct net_device_ops pch_gbe_netdev_ops = { +@@ -2439,7 +2439,7 @@ static const struct net_device_ops pch_gbe_netdev_ops = { }; static pci_ers_result_t pch_gbe_io_error_detected(struct pci_dev *pdev, @@ -62469,7 +62830,7 @@ index 3b98b263b..13d2129 100644 struct net_device *netdev = pci_get_drvdata(pdev); struct pch_gbe_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c -index 9c6eed9..a3ef643 100644 +index 7a0281a..ff425351 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -1757,7 +1757,7 @@ err_out: @@ -62482,19 +62843,19 @@ index 9c6eed9..a3ef643 100644 struct netxen_adapter *adapter = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c b/drivers/net/ethernet/qlogic/qed/qed_mcp.c -index b89c9a8..06b18ff 100644 +index 1182361..fe70de3 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c +++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c -@@ -938,9 +938,9 @@ qed_mcp_send_drv_version(struct qed_hwfn *p_hwfn, - +@@ -1116,9 +1116,9 @@ qed_mcp_send_drv_version(struct qed_hwfn *p_hwfn, p_drv_version = &union_data.drv_version; p_drv_version->version = p_ver->version; + - for (i = 0; i < MCP_DRV_VER_STR_SIZE - 1; i += 4) { - val = cpu_to_be32(p_ver->name[i]); -- *(u32 *)&p_drv_version->name[i * sizeof(u32)] = val; +- *(__be32 *)&p_drv_version->name[i * sizeof(u32)] = val; + for (i = 0; i < MCP_DRV_VER_STR_SIZE - 4; i += 4) { + val = cpu_to_be32(*(u32 *)&p_ver->name[i]); -+ *(u32 *)&p_drv_version->name[i] = val; ++ *(__be32 *)&p_drv_version->name[i] = val; } memset(&mb_params, 0, sizeof(mb_params)); @@ -62545,10 +62906,10 @@ index 3490675..cf148ea 100644 default: dev_err(&adapter->pdev->dev, "Invalid Virtual NIC opmode\n"); diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c -index 1205f6f..4b7c75b 100644 +index 1c29105..5126b11 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c -@@ -3970,7 +3970,7 @@ static void qlcnic_82xx_io_resume(struct pci_dev *pdev) +@@ -3976,7 +3976,7 @@ static void qlcnic_82xx_io_resume(struct pci_dev *pdev) } static pci_ers_result_t qlcnic_io_error_detected(struct pci_dev *pdev, @@ -62571,7 +62932,7 @@ index 0844b7c..afa10a1 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 94f08f1..501c50d 100644 +index 0e62d74..6f697a0 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -798,22 +798,22 @@ struct rtl8169_private { @@ -62602,10 +62963,10 @@ index 94f08f1..501c50d 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/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c -index ceea74c..fa02088 100644 +index 04cd39f..c14453a 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c -@@ -2305,7 +2305,7 @@ static void sh_eth_tx_timeout(struct net_device *ndev) +@@ -2294,7 +2294,7 @@ static void sh_eth_tx_timeout(struct net_device *ndev) } /* Packet transmit function */ @@ -62637,7 +62998,7 @@ index 28b775e..110ef62 100644 }; diff --git a/drivers/net/ethernet/seeq/sgiseeq.c b/drivers/net/ethernet/seeq/sgiseeq.c -index ca73366..8debe39 100644 +index c2bd537..540a981 100644 --- a/drivers/net/ethernet/seeq/sgiseeq.c +++ b/drivers/net/ethernet/seeq/sgiseeq.c @@ -578,7 +578,7 @@ static inline int sgiseeq_reset(struct net_device *dev) @@ -62755,7 +63116,7 @@ index 7a254da..0693a2b4 100644 unsigned long data; struct ioc3_private *ip = netdev_priv(dev); diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c -index a733868..7fc73e1 100644 +index cb49c96..c1498cc 100644 --- a/drivers/net/ethernet/smsc/smc911x.c +++ b/drivers/net/ethernet/smsc/smc911x.c @@ -514,7 +514,7 @@ static void smc911x_hardware_send_pkt(struct net_device *dev) @@ -62768,7 +63129,7 @@ index a733868..7fc73e1 100644 struct smc911x_local *lp = netdev_priv(dev); unsigned int free; diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c -index c5ed27c..bea1ce5 100644 +index 18ac52d..5fd8ce3 100644 --- a/drivers/net/ethernet/smsc/smc91x.c +++ b/drivers/net/ethernet/smsc/smc91x.c @@ -637,7 +637,7 @@ done: if (!THROTTLE_TX_PKTS) @@ -62781,10 +63142,10 @@ index c5ed27c..bea1ce5 100644 struct smc_local *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c -index 8af2556..6da27b9 100644 +index b5ab5e1..7173c1f 100644 --- a/drivers/net/ethernet/smsc/smsc911x.c +++ b/drivers/net/ethernet/smsc/smsc911x.c -@@ -1673,7 +1673,7 @@ static int smsc911x_stop(struct net_device *dev) +@@ -1671,7 +1671,7 @@ static int smsc911x_stop(struct net_device *dev) } /* Entry point for transmitting a packet */ @@ -62794,12 +63155,12 @@ index 8af2556..6da27b9 100644 struct smsc911x_data *pdata = netdev_priv(dev); unsigned int freespace; diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c -index 3f20bb1..59add41 100644 +index ce9aa79..ad1831f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c -@@ -140,8 +140,8 @@ void dwmac_mmc_ctrl(void __iomem *ioaddr, unsigned int mode) +@@ -140,8 +140,8 @@ void dwmac_mmc_ctrl(void __iomem *mmcaddr, unsigned int mode) - writel(value, ioaddr + MMC_CNTRL); + writel(value, mmcaddr + MMC_CNTRL); - pr_debug("stmmac: MMC ctrl register (offset 0x%x): 0x%08x\n", - MMC_CNTRL, value); @@ -62879,7 +63240,7 @@ index 904a5a1..6ef5cff 100644 struct sk_buff *curr = segs; diff --git a/drivers/net/ethernet/synopsys/dwc_eth_qos.c b/drivers/net/ethernet/synopsys/dwc_eth_qos.c -index af11ed1..21bca5f 100644 +index 158213c..814fb25 100644 --- a/drivers/net/ethernet/synopsys/dwc_eth_qos.c +++ b/drivers/net/ethernet/synopsys/dwc_eth_qos.c @@ -2173,7 +2173,7 @@ static void dwceqos_tx_rollback(struct net_local *lp, struct dwceqos_tx *tx) @@ -62905,7 +63266,7 @@ index 7eef45e..c813085 100644 int queue, len; struct cpmac_desc *desc; diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c -index 1d0942c..0c473eb 100644 +index 3251666..6eb86ae 100644 --- a/drivers/net/ethernet/ti/netcp_core.c +++ b/drivers/net/ethernet/ti/netcp_core.c @@ -1237,7 +1237,7 @@ out: @@ -62918,7 +63279,7 @@ index 1d0942c..0c473eb 100644 struct netcp_intf *netcp = netdev_priv(ndev); int subqueue = skb_get_queue_mapping(skb); diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c -index 2b7550c..f75bc6c 100644 +index 9d14731..7d6ad91 100644 --- a/drivers/net/ethernet/via/via-rhine.c +++ b/drivers/net/ethernet/via/via-rhine.c @@ -2600,7 +2600,7 @@ static struct platform_driver rhine_driver_platform = { @@ -62931,20 +63292,20 @@ index 2b7550c..f75bc6c 100644 .ident = "EPIA-M", .matches = { diff --git a/drivers/net/ethernet/wiznet/w5100.c b/drivers/net/ethernet/wiznet/w5100.c -index 8b282d0..134ab2e 100644 +index 4f6255c..0f3aabe 100644 --- a/drivers/net/ethernet/wiznet/w5100.c +++ b/drivers/net/ethernet/wiznet/w5100.c -@@ -437,7 +437,7 @@ static void w5100_tx_timeout(struct net_device *ndev) - netif_wake_queue(ndev); +@@ -836,7 +836,7 @@ static void w5100_tx_work(struct work_struct *work) + w5100_tx_skb(priv->ndev, skb); } -static int w5100_start_tx(struct sk_buff *skb, struct net_device *ndev) +static netdev_tx_t w5100_start_tx(struct sk_buff *skb, struct net_device *ndev) { struct w5100_priv *priv = netdev_priv(ndev); - u16 offset; + diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c -index 8da7b93..719204a 100644 +index 0b37ce9..4ec594b 100644 --- a/drivers/net/ethernet/wiznet/w5300.c +++ b/drivers/net/ethernet/wiznet/w5300.c @@ -366,7 +366,7 @@ static void w5300_tx_timeout(struct net_device *ndev) @@ -62957,7 +63318,7 @@ index 8da7b93..719204a 100644 struct w5300_priv *priv = netdev_priv(ndev); diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c -index 5a1068d..6de663b 100644 +index 7397087..962089d 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -673,7 +673,7 @@ static inline int temac_check_tx_bd_space(struct temac_local *lp, int num_frag) @@ -62970,7 +63331,7 @@ index 5a1068d..6de663b 100644 struct temac_local *lp = netdev_priv(ndev); struct cdmac_bd *cur_p; diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c -index 4684644..6687c7f 100644 +index 8c7f5be..b9a09fc 100644 --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -652,7 +652,7 @@ static inline int axienet_check_tx_bd_space(struct axienet_local *lp, @@ -62983,10 +63344,10 @@ index 4684644..6687c7f 100644 u32 ii; u32 num_frag; diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c -index c70e515..4abd90a 100644 +index 9b3dc3c..db4d0a2 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c -@@ -1513,7 +1513,7 @@ nla_put_failure: +@@ -1495,7 +1495,7 @@ nla_put_failure: return -EMSGSIZE; } @@ -62995,8 +63356,57 @@ index c70e515..4abd90a 100644 .kind = "geneve", .maxtype = IFLA_GENEVE_MAX, .policy = geneve_policy, +@@ -1561,7 +1561,7 @@ static int geneve_netdevice_event(struct notifier_block *unused, + return NOTIFY_DONE; + } + +-static struct notifier_block geneve_notifier_block __read_mostly = { ++static struct notifier_block geneve_notifier_block = { + .notifier_call = geneve_netdevice_event, + }; + +diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c +index 4e976a0..3c6ae49 100644 +--- a/drivers/net/gtp.c ++++ b/drivers/net/gtp.c +@@ -59,7 +59,7 @@ struct pdp_ctx { + struct in_addr ms_addr_ip4; + struct in_addr sgsn_addr_ip4; + +- atomic_t tx_seq; ++ atomic_unchecked_t tx_seq; + struct rcu_head rcu_head; + }; + +@@ -408,7 +408,7 @@ static inline void gtp0_push_header(struct sk_buff *skb, struct pdp_ctx *pctx) + gtp0->flags = 0x1e; /* v0, GTP-non-prime. */ + gtp0->type = GTP_TPDU; + gtp0->length = htons(payload_len); +- gtp0->seq = htons((atomic_inc_return(&pctx->tx_seq) - 1) % 0xffff); ++ gtp0->seq = htons((atomic_inc_return_unchecked(&pctx->tx_seq) - 1) % 0xffff); + gtp0->flow = htons(pctx->u.v0.flow); + gtp0->number = 0xff; + gtp0->spare[0] = gtp0->spare[1] = gtp0->spare[2] = 0xff; +@@ -752,7 +752,7 @@ nla_put_failure: + return -EMSGSIZE; + } + +-static struct rtnl_link_ops gtp_link_ops __read_mostly = { ++static struct rtnl_link_ops gtp_link_ops = { + .kind = "gtp", + .maxtype = IFLA_GTP_MAX, + .policy = gtp_policy, +@@ -960,7 +960,7 @@ static int ipv4_pdp_add(struct net_device *dev, struct genl_info *info) + return -ENOMEM; + + ipv4_pdp_fill(pctx, info); +- atomic_set(&pctx->tx_seq, 0); ++ atomic_set_unchecked(&pctx->tx_seq, 0); + + switch (pctx->gtp_version) { + case GTP_V0: diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c -index 72c9f1f..98f72c8 100644 +index 78dbc44..b7831d0 100644 --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -768,7 +768,7 @@ static void epp_bh(struct work_struct *work) @@ -63009,7 +63419,7 @@ index 72c9f1f..98f72c8 100644 struct baycom_state *bc = netdev_priv(dev); diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h -index 8b3bd8e..f67d832 100644 +index c270c5a..f925f05 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -162,7 +162,7 @@ struct rndis_device { @@ -63022,10 +63432,10 @@ index 8b3bd8e..f67d832 100644 spinlock_t request_lock; struct list_head req_list; diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c -index b8121eb..d17ef42 100644 +index 6a69b5c..5446caf 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c -@@ -353,7 +353,7 @@ not_ip: +@@ -352,7 +352,7 @@ not_ip: return ret_val; } @@ -63035,7 +63445,7 @@ index b8121eb..d17ef42 100644 struct net_device_context *net_device_ctx = netdev_priv(net); struct hv_netvsc_packet *packet = NULL; diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c -index c4e1e04..c1f4cba 100644 +index 97c292b..09671d5a 100644 --- a/drivers/net/hyperv/rndis_filter.c +++ b/drivers/net/hyperv/rndis_filter.c @@ -101,7 +101,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev, @@ -63047,7 +63457,7 @@ index c4e1e04..c1f4cba 100644 /* Add to the request list */ spin_lock_irqsave(&dev->request_lock, flags); -@@ -922,7 +922,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev) +@@ -918,7 +918,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev) /* Setup the rndis set */ halt = &request->request_msg.msg.halt_req; @@ -63056,7 +63466,7 @@ index c4e1e04..c1f4cba 100644 /* Ignore return since this msg is optional. */ rndis_filter_send_request(dev, request); -@@ -1136,8 +1136,7 @@ int rndis_filter_device_add(struct hv_device *dev, +@@ -1134,8 +1134,7 @@ int rndis_filter_device_add(struct hv_device *dev, if (net_device->num_chn == 1) goto out; @@ -63067,10 +63477,10 @@ index c4e1e04..c1f4cba 100644 net_device->num_chn = 1; dev_info(&dev->device, "No memory for subchannels.\n"); diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c -index cc56fac..c15b884 100644 +index 66c0eea..27486de 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c -@@ -287,7 +287,7 @@ static int ifb_validate(struct nlattr *tb[], struct nlattr *data[]) +@@ -290,7 +290,7 @@ static int ifb_validate(struct nlattr *tb[], struct nlattr *data[]) return 0; } @@ -63093,10 +63503,10 @@ index d6d0524..109f6ad 100644 } } diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c -index 57941d3..99d97ae 100644 +index 1c4d395..b8cb009 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c -@@ -757,15 +757,15 @@ static int ipvlan_addr4_event(struct notifier_block *unused, +@@ -754,15 +754,15 @@ static int ipvlan_addr4_event(struct notifier_block *unused, return NOTIFY_OK; } @@ -63115,19 +63525,6 @@ index 57941d3..99d97ae 100644 .notifier_call = ipvlan_addr6_event, }; -diff --git a/drivers/net/irda/sh_irda.c b/drivers/net/irda/sh_irda.c -index c96b46b..09f0e8c 100644 ---- a/drivers/net/irda/sh_irda.c -+++ b/drivers/net/irda/sh_irda.c -@@ -620,7 +620,7 @@ static int sh_irda_init_iobuf(struct sh_irda_self *self, int rxsize, int txsize) - - - ************************************************************************/ --static int sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev) -+static netdev_tx_t sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev) - { - struct sh_irda_self *self = netdev_priv(ndev); - struct device *dev = &self->ndev->dev; diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c index a0849f4..147a4a6 100644 --- a/drivers/net/irda/vlsi_ir.c @@ -63238,10 +63635,10 @@ index a400288..0c59bcd 100644 .init = loopback_net_init, }; diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c -index 8f3c55d..223d73b 100644 +index 8bcd78f..a8a3ed1 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c -@@ -3218,7 +3218,7 @@ nla_put_failure: +@@ -3295,7 +3295,7 @@ nla_put_failure: return -EMSGSIZE; } @@ -63251,7 +63648,7 @@ index 8f3c55d..223d73b 100644 .priv_size = sizeof(struct macsec_dev), .maxtype = IFLA_MACSEC_MAX, diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c -index 2bcf1f3..f2bef9c 100644 +index cb01023..68f4e44 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -335,7 +335,7 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port, @@ -63263,7 +63660,7 @@ index 2bcf1f3..f2bef9c 100644 } static void macvlan_flush_sources(struct macvlan_port *port, -@@ -1485,13 +1485,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { +@@ -1483,13 +1483,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { int macvlan_link_register(struct rtnl_link_ops *ops) { /* common fields */ @@ -63286,7 +63683,7 @@ index 2bcf1f3..f2bef9c 100644 return rtnl_link_register(ops); }; -@@ -1579,7 +1581,7 @@ static int macvlan_device_event(struct notifier_block *unused, +@@ -1577,7 +1579,7 @@ static int macvlan_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -63296,10 +63693,10 @@ index 2bcf1f3..f2bef9c 100644 }; diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c -index 9a35aa4..ef7ef34 100644 +index bd67209..2718882 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c -@@ -485,7 +485,7 @@ static void macvtap_setup(struct net_device *dev) +@@ -496,7 +496,7 @@ static void macvtap_setup(struct net_device *dev) dev->tx_queue_len = TUN_READQ_SIZE; } @@ -63308,7 +63705,7 @@ index 9a35aa4..ef7ef34 100644 .kind = "macvtap", .setup = macvtap_setup, .newlink = macvtap_newlink, -@@ -1094,7 +1094,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, +@@ -1105,7 +1105,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, ret = 0; u = q->flags; @@ -63317,7 +63714,7 @@ index 9a35aa4..ef7ef34 100644 put_user(u, &ifr->ifr_flags)) ret = -EFAULT; macvtap_put_vlan(vlan); -@@ -1177,8 +1177,8 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, +@@ -1188,8 +1188,8 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, } ret = 0; u = vlan->dev->type; @@ -63328,7 +63725,7 @@ index 9a35aa4..ef7ef34 100644 put_user(u, &ifr->ifr_hwaddr.sa_family)) ret = -EFAULT; macvtap_put_vlan(vlan); -@@ -1312,7 +1312,7 @@ static int macvtap_device_event(struct notifier_block *unused, +@@ -1333,7 +1333,7 @@ static int macvtap_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -63351,7 +63748,7 @@ index 7b7c70e..a92dc83 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 e551f3a..e5fdf87 100644 +index e977ba9..e3df8dcd8 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -411,7 +411,7 @@ static int get_phy_c45_devs_in_pkg(struct mii_bus *bus, int addr, int dev_addr, @@ -63395,10 +63792,19 @@ index 9c4b41a..03da80b 100644 { struct net_local *nl = netdev_priv(dev); diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c -index f572b31..3a19b6ff 100644 +index a30ee42..b904eb3 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c -@@ -1056,7 +1056,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -1135,7 +1135,7 @@ static struct net *ppp_nl_get_link_net(const struct net_device *dev) + return ppp->ppp_net; + } + +-static struct rtnl_link_ops ppp_link_ops __read_mostly = { ++static struct rtnl_link_ops ppp_link_ops = { + .kind = "ppp", + .maxtype = IFLA_PPP_MAX, + .policy = ppp_nl_policy, +@@ -1253,7 +1253,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data; struct ppp_stats stats; struct ppp_comp_stats cstats; @@ -63406,7 +63812,7 @@ index f572b31..3a19b6ff 100644 switch (cmd) { case SIOCGPPPSTATS: -@@ -1078,8 +1077,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -1275,8 +1274,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) break; case SIOCGPPPVER: @@ -63430,7 +63836,7 @@ index ae0905e..f22c8e9d 100644 return NET_RX_SUCCESS; diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c -index 9cfe6ae..3ec3a5f 100644 +index a31f461..949a77a 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c @@ -170,7 +170,7 @@ static int rionet_queue_tx_msg(struct sk_buff *skb, struct net_device *ndev, @@ -63456,10 +63862,10 @@ index 27ed252..80cffde 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 2ace126..c06df62 100644 +index fdee772..6c3ba123 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c -@@ -2148,7 +2148,7 @@ static unsigned int team_get_num_rx_queues(void) +@@ -2150,7 +2150,7 @@ static unsigned int team_get_num_rx_queues(void) return TEAM_DEFAULT_NUM_RX_QUEUES; } @@ -63468,7 +63874,7 @@ index 2ace126..c06df62 100644 .kind = DRV_NAME, .priv_size = sizeof(struct team), .setup = team_setup, -@@ -2943,7 +2943,7 @@ static int team_device_event(struct notifier_block *unused, +@@ -2945,7 +2945,7 @@ static int team_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -63478,10 +63884,10 @@ index 2ace126..c06df62 100644 }; diff --git a/drivers/net/tun.c b/drivers/net/tun.c -index dda4905..c0a1944 100644 +index e16487c..95eee32 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c -@@ -1491,7 +1491,7 @@ static int tun_validate(struct nlattr *tb[], struct nlattr *data[]) +@@ -1558,7 +1558,7 @@ static int tun_validate(struct nlattr *tb[], struct nlattr *data[]) return -EINVAL; } @@ -63490,7 +63896,7 @@ index dda4905..c0a1944 100644 .kind = DRV_NAME, .priv_size = sizeof(struct tun_struct), .setup = tun_setup, -@@ -1892,7 +1892,7 @@ unlock: +@@ -1970,7 +1970,7 @@ unlock: } static long __tun_chr_ioctl(struct file *file, unsigned int cmd, @@ -63499,7 +63905,7 @@ index dda4905..c0a1944 100644 { struct tun_file *tfile = file->private_data; struct tun_struct *tun; -@@ -1906,6 +1906,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, +@@ -1984,6 +1984,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, int le; int ret; @@ -63510,7 +63916,7 @@ index dda4905..c0a1944 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 111d907..1dbbd3f 100644 +index 4b44586..ae19659 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -70,7 +70,7 @@ @@ -63628,13 +64034,13 @@ index 76465b1..2d72355 100644 struct ipheth_device *dev = netdev_priv(net); struct usb_device *udev = dev->udev; diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index d1f78c2..5596ab1 100644 +index e9654a6..dec6e0e 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c -@@ -619,7 +619,7 @@ struct r8152 { - int (*eee_get)(struct r8152 *, struct ethtool_eee *); +@@ -631,7 +631,7 @@ struct r8152 { int (*eee_set)(struct r8152 *, struct ethtool_eee *); bool (*in_nway)(struct r8152 *); + void (*autosuspend_en)(struct r8152 *tp, bool enable); - } rtl_ops; + } __no_const rtl_ops; @@ -63663,7 +64069,7 @@ index a2515887..6d13233 100644 /* we will have to manufacture ethernet headers, prepare template */ diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c -index 49d84e5..2492568 100644 +index e0638e5..b0874cc 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -48,7 +48,7 @@ module_param(gso, bool, 0444); @@ -63676,10 +64082,10 @@ index 49d84e5..2492568 100644 #define VIRTNET_DRIVER_VERSION "1.0.0" diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c -index 8a8f1e5..15da5ea 100644 +index 8bd8c7e..1dcbf60 100644 --- a/drivers/net/vrf.c +++ b/drivers/net/vrf.c -@@ -781,7 +781,7 @@ static const struct nla_policy vrf_nl_policy[IFLA_VRF_MAX + 1] = { +@@ -809,7 +809,7 @@ static const struct nla_policy vrf_nl_policy[IFLA_VRF_MAX + 1] = { [IFLA_VRF_TABLE] = { .type = NLA_U32 }, }; @@ -63688,7 +64094,7 @@ index 8a8f1e5..15da5ea 100644 .kind = DRV_NAME, .priv_size = sizeof(struct net_vrf), -@@ -818,7 +818,7 @@ out: +@@ -846,7 +846,7 @@ out: return NOTIFY_DONE; } @@ -63698,10 +64104,10 @@ index 8a8f1e5..15da5ea 100644 }; diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c -index 7e29b55..13e9b3e 100644 +index b3b9db6..9386b66 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c -@@ -3119,7 +3119,7 @@ static struct net *vxlan_get_link_net(const struct net_device *dev) +@@ -3230,7 +3230,7 @@ static struct net *vxlan_get_link_net(const struct net_device *dev) return vxlan->net; } @@ -63710,13 +64116,13 @@ index 7e29b55..13e9b3e 100644 .kind = "vxlan", .maxtype = IFLA_VXLAN_MAX, .policy = vxlan_policy, -@@ -3167,7 +3167,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused, +@@ -3314,7 +3314,7 @@ static int vxlan_netdevice_event(struct notifier_block *unused, return NOTIFY_DONE; } -static struct notifier_block vxlan_notifier_block __read_mostly = { +static struct notifier_block vxlan_notifier_block = { - .notifier_call = vxlan_lowerdev_event, + .notifier_call = vxlan_netdevice_event, }; diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c @@ -63901,10 +64307,10 @@ index 0b60295..b8bfa5b 100644 if (rd == NULL) { result = -ENOMEM; diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c -index edf3629..9f20ef9 100644 +index 9fb8d74..90debe0 100644 --- a/drivers/net/wireless/ath/ath10k/ce.c +++ b/drivers/net/wireless/ath/ath10k/ce.c -@@ -878,12 +878,12 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar, +@@ -880,12 +880,12 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar, return 0; } @@ -63919,7 +64325,7 @@ index edf3629..9f20ef9 100644 dma_addr_t base_addr; nentries = roundup_pow_of_two(nentries); -@@ -929,7 +929,7 @@ ath10k_ce_alloc_dest_ring(struct ath10k *ar, unsigned int ce_id, +@@ -931,7 +931,7 @@ ath10k_ce_alloc_dest_ring(struct ath10k *ar, unsigned int ce_id, const struct ce_attr *attr) { struct ath10k_ce_ring *dest_ring; @@ -63929,7 +64335,7 @@ index edf3629..9f20ef9 100644 nentries = roundup_pow_of_two(attr->dest_nentries); diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h -index e70aa38..2fcc407 100644 +index cc82718..336fff3 100644 --- a/drivers/net/wireless/ath/ath10k/htc.h +++ b/drivers/net/wireless/ath/ath10k/htc.h @@ -270,13 +270,13 @@ enum ath10k_htc_ep_id { @@ -63949,10 +64355,10 @@ index e70aa38..2fcc407 100644 /* service connection information */ struct ath10k_htc_svc_conn_req { diff --git a/drivers/net/wireless/ath/ath6kl/core.h b/drivers/net/wireless/ath/ath6kl/core.h -index 5f3acfe..e0d6a6b 100644 +index 7a1970e..f50ce2b 100644 --- a/drivers/net/wireless/ath/ath6kl/core.h +++ b/drivers/net/wireless/ath/ath6kl/core.h -@@ -914,7 +914,7 @@ void ath6kl_tx_data_cleanup(struct ath6kl *ar); +@@ -915,7 +915,7 @@ void ath6kl_tx_data_cleanup(struct ath6kl *ar); struct ath6kl_cookie *ath6kl_alloc_cookie(struct ath6kl *ar); void ath6kl_free_cookie(struct ath6kl *ar, struct ath6kl_cookie *cookie); @@ -63975,7 +64381,7 @@ index 40432fe..57d85b3 100644 struct ath6kl *ar = ath6kl_priv(dev); struct ath6kl_cookie *cookie = NULL; diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig -index 40fa915..9e5e0c4 100644 +index f68cb00..7e16ed6 100644 --- a/drivers/net/wireless/ath/ath9k/Kconfig +++ b/drivers/net/wireless/ath/ath9k/Kconfig @@ -3,7 +3,6 @@ config ATH9K_HW @@ -64210,10 +64616,10 @@ 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 831a544..d846785 100644 +index 9cbca12..eae7c79 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -671,7 +671,7 @@ struct ath_hw_private_ops { +@@ -672,7 +672,7 @@ struct ath_hw_private_ops { #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT bool (*is_aic_enabled)(struct ath_hw *ah); #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */ @@ -64222,7 +64628,7 @@ index 831a544..d846785 100644 /** * struct ath_spec_scan - parameters for Atheros spectral scan -@@ -747,7 +747,7 @@ struct ath_hw_ops { +@@ -748,7 +748,7 @@ struct ath_hw_ops { #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable); #endif @@ -64232,10 +64638,10 @@ index 831a544..d846785 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 3aed43a..f415cc5 100644 +index 8b63988..2fd4697 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -2594,16 +2594,18 @@ void ath9k_fill_chanctx_ops(void) +@@ -2589,16 +2589,18 @@ void ath9k_fill_chanctx_ops(void) if (!ath9k_is_chanctx_enabled()) return; @@ -64327,7 +64733,7 @@ index 6808db4..3a5df05 100644 DEBUGFS_READONLY_FILE(tx_total_pending, 20, "%d", atomic_read(&ar->tx_total_pending)); diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c -index 4d1527a..4f60738 100644 +index ffb22a0..231c7bc 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c @@ -320,7 +320,7 @@ static void carl9170_zap_queues(struct ar9170 *ar) @@ -64376,7 +64782,7 @@ index 4d1527a..4f60738 100644 for (i = 0; i < ar->hw->queues; i++) { skb_queue_head_init(&ar->tx_status[i]); diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c -index ae86a600..28696b2 100644 +index 2bf04c9..ae05957 100644 --- a/drivers/net/wireless/ath/carl9170/tx.c +++ b/drivers/net/wireless/ath/carl9170/tx.c @@ -193,7 +193,7 @@ static int carl9170_alloc_dev_space(struct ar9170 *ar, struct sk_buff *skb) @@ -64398,7 +64804,7 @@ index ae86a600..28696b2 100644 if (atomic_read(&ar->tx_ampdu_upload)) diff --git a/drivers/net/wireless/ath/wil6210/pcie_bus.c b/drivers/net/wireless/ath/wil6210/pcie_bus.c -index e36f2a0..462af92 100644 +index aeb72c4..aafc0cc 100644 --- a/drivers/net/wireless/ath/wil6210/pcie_bus.c +++ b/drivers/net/wireless/ath/wil6210/pcie_bus.c @@ -152,7 +152,7 @@ static int wil_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) @@ -64411,20 +64817,20 @@ index e36f2a0..462af92 100644 .fw_recovery = wil_platform_rop_fw_recovery, }; diff --git a/drivers/net/wireless/ath/wil6210/wil_platform.h b/drivers/net/wireless/ath/wil6210/wil_platform.h -index 9a949d9..1307d61 100644 +index 33d4a34..b8335d9 100644 --- a/drivers/net/wireless/ath/wil6210/wil_platform.h +++ b/drivers/net/wireless/ath/wil6210/wil_platform.h -@@ -29,7 +29,7 @@ struct wil_platform_ops { +@@ -35,7 +35,7 @@ struct wil_platform_ops { int (*resume)(void *handle); void (*uninit)(void *handle); - int (*notify_crash)(void *handle); + int (*notify)(void *handle, enum wil_platform_event evt); -}; +} __no_const; /** * struct wil_platform_rops - wil platform module callbacks from diff --git a/drivers/net/wireless/atmel/at76c50x-usb.c b/drivers/net/wireless/atmel/at76c50x-usb.c -index 1efb1d6..66134a3 100644 +index 7c10804..9ea162d 100644 --- a/drivers/net/wireless/atmel/at76c50x-usb.c +++ b/drivers/net/wireless/atmel/at76c50x-usb.c @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state) @@ -64437,7 +64843,7 @@ index 1efb1d6..66134a3 100644 return msecs_to_jiffies((s->poll_timeout[2] << 16) | (s->poll_timeout[1] << 8) diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/net/wireless/atmel/atmel.c -index 6a1f03c..8a14da4 100644 +index bf2e9a0..b55366e 100644 --- a/drivers/net/wireless/atmel/atmel.c +++ b/drivers/net/wireless/atmel/atmel.c @@ -1663,9 +1663,10 @@ EXPORT_SYMBOL(stop_atmel_card); @@ -64851,7 +65257,7 @@ index 6a1f03c..8a14da4 100644 static const iw_handler atmel_private_handler[] = diff --git a/drivers/net/wireless/broadcom/b43/phy_lp.c b/drivers/net/wireless/broadcom/b43/phy_lp.c -index 058a9f2..d5cb1ba 100644 +index 6922cbb..c45026c 100644 --- a/drivers/net/wireless/broadcom/b43/phy_lp.c +++ b/drivers/net/wireless/broadcom/b43/phy_lp.c @@ -2502,7 +2502,7 @@ static int lpphy_b2063_tune(struct b43_wldev *dev, @@ -64864,7 +65270,7 @@ index 058a9f2..d5cb1ba 100644 u32 freqref, vco_freq, val1, val2, val3, timeout, timeoutref, count; u16 old_comm15, scale; diff --git a/drivers/net/wireless/broadcom/b43legacy/main.c b/drivers/net/wireless/broadcom/b43legacy/main.c -index afc1fb3..79698d1 100644 +index 83770d2..3ec8a40 100644 --- a/drivers/net/wireless/broadcom/b43legacy/main.c +++ b/drivers/net/wireless/broadcom/b43legacy/main.c @@ -1304,8 +1304,9 @@ static void handle_irq_ucode_debug(struct b43legacy_wldev *dev) @@ -64888,10 +65294,10 @@ index afc1fb3..79698d1 100644 if (modparam_pio) wldev->__using_pio = true; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index d5c2a27..4ed31de 100644 +index 62f475e..c5c90d3 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -5000,6 +5000,50 @@ static struct cfg80211_ops brcmf_cfg80211_ops = { +@@ -5077,6 +5077,50 @@ static struct cfg80211_ops brcmf_cfg80211_ops = { .tdls_oper = brcmf_cfg80211_tdls_oper, }; @@ -64942,7 +65348,7 @@ index d5c2a27..4ed31de 100644 struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg, enum nl80211_iftype type, bool pm_block) -@@ -6622,7 +6666,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, +@@ -6703,7 +6747,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, struct net_device *ndev = brcmf_get_ifp(drvr, 0)->ndev; struct brcmf_cfg80211_info *cfg; struct wiphy *wiphy; @@ -64951,7 +65357,7 @@ index d5c2a27..4ed31de 100644 struct brcmf_cfg80211_vif *vif; struct brcmf_if *ifp; s32 err = 0; -@@ -6634,15 +6678,10 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, +@@ -6715,15 +6759,10 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, return NULL; } @@ -64968,7 +65374,7 @@ index d5c2a27..4ed31de 100644 #endif wiphy = wiphy_new(ops, sizeof(struct brcmf_cfg80211_info)); if (!wiphy) { -@@ -6781,7 +6820,6 @@ priv_out: +@@ -6862,7 +6901,6 @@ priv_out: ifp->vif = NULL; wiphy_out: brcmf_free_wiphy(wiphy); @@ -64976,7 +65382,7 @@ index d5c2a27..4ed31de 100644 return NULL; } -@@ -6792,7 +6830,6 @@ void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg) +@@ -6873,7 +6911,6 @@ void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg) brcmf_btcoex_detach(cfg); wiphy_unregister(cfg->wiphy); @@ -65032,7 +65438,7 @@ index dd87747..27d0934 100644 void wlapi_free_timer(struct wlapi_timer *t); void wlapi_add_timer(struct wlapi_timer *t, uint ms, int periodic); diff --git a/drivers/net/wireless/cisco/airo.c b/drivers/net/wireless/cisco/airo.c -index d2353f6..03379d9 100644 +index ca3cd21..2d7ecf0 100644 --- a/drivers/net/wireless/cisco/airo.c +++ b/drivers/net/wireless/cisco/airo.c @@ -4779,7 +4779,7 @@ static int get_dec_u16( char *buffer, int *start, int limit ) { @@ -65546,7 +65952,7 @@ index d2353f6..03379d9 100644 /* Only super-user can write RIDs */ diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -index f93a7f7..eb25e2b 100644 +index bfa542c..c2488f7 100644 --- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c +++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c @@ -3220,8 +3220,9 @@ static void ipw2100_tx_send_data(struct ipw2100_priv *priv) @@ -65580,7 +65986,7 @@ index f93a7f7..eb25e2b 100644 /* NOTE: We do not start the deferred work for status checks yet */ priv->stop_rf_kill = 1; diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -index ed0adaf..4bb4f53 100644 +index 5adb7ce..3a0c6fa 100644 --- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c @@ -1968,8 +1968,9 @@ static void notify_wx_assoc_event(struct ipw_priv *priv) @@ -65605,7 +66011,7 @@ index ed0adaf..4bb4f53 100644 return ret; } diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c -index af1b3e6..c014779 100644 +index 466912e..a59ae61 100644 --- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c @@ -1399,8 +1399,9 @@ il3945_dump_nic_error_log(struct il_priv *il) @@ -65649,7 +66055,7 @@ index af1b3e6..c014779 100644 D_INFO("*** LOAD DRIVER ***\n"); diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c -index b75f4ef..8fe465b 100644 +index a91d170..4b3876a 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c @@ -4361,8 +4361,9 @@ il4965_synchronize_irq(struct il_priv *il) @@ -65663,7 +66069,7 @@ index b75f4ef..8fe465b 100644 u32 inta, handled = 0; u32 inta_fh; unsigned long flags; -@@ -6256,9 +6257,7 @@ il4965_setup_deferred_work(struct il_priv *il) +@@ -6259,9 +6260,7 @@ il4965_setup_deferred_work(struct il_priv *il) setup_timer(&il->watchdog, il_bg_watchdog, (unsigned long)il); @@ -65675,7 +66081,7 @@ index b75f4ef..8fe465b 100644 static void diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c -index 74c5161..f0a52a5 100644 +index f6591c8..363b5b3 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c @@ -190,7 +190,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file, @@ -65811,7 +66217,7 @@ index 74c5161..f0a52a5 100644 memset(buf, 0, sizeof(buf)); buf_size = min(count, sizeof(buf) - 1); diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c -index 1799469..f0c488d 100644 +index 8dda52a..2591e0c 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c @@ -950,7 +950,7 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw, @@ -65833,7 +66239,7 @@ index 1799469..f0c488d 100644 } else aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc; diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c -index c1a3131..2592a24 100644 +index 4fdc3da..4f63dd9 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c @@ -258,7 +258,7 @@ static void iwl_mvm_wowlan_program_keys(struct ieee80211_hw *hw, @@ -65870,10 +66276,10 @@ index c1a3131..2592a24 100644 ((u64)seq.tkip.iv32 << 16)); break; diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c -index 34731e2..9bd389b 100644 +index 779bafc..6ec6ea1 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c -@@ -290,7 +290,7 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, +@@ -405,7 +405,7 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, case WLAN_CIPHER_SUITE_CCMP: case WLAN_CIPHER_SUITE_CCMP_256: iwl_mvm_set_tx_cmd_ccmp(info, tx_cmd); @@ -65882,7 +66288,7 @@ index 34731e2..9bd389b 100644 crypto_hdr[0] = pn; crypto_hdr[2] = 0; crypto_hdr[3] = 0x20 | (keyconf->keyidx << 6); -@@ -303,7 +303,7 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, +@@ -418,7 +418,7 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, case WLAN_CIPHER_SUITE_TKIP: tx_cmd->sec_ctl = TX_CMD_SEC_TKIP; @@ -65892,10 +66298,10 @@ index 34731e2..9bd389b 100644 ieee80211_get_tkip_p2k(keyconf, skb_frag, tx_cmd->key); break; diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c -index b2b7935..cc6abc7 100644 +index f603d78..4a66baa 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c -@@ -2308,7 +2308,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, +@@ -2299,7 +2299,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, struct isr_statistics *isr_stats = &trans_pcie->isr_stats; char buf[8]; @@ -65904,7 +66310,7 @@ index b2b7935..cc6abc7 100644 u32 reset_flag; memset(buf, 0, sizeof(buf)); -@@ -2329,7 +2329,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, +@@ -2320,7 +2320,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, { struct iwl_trans *trans = file->private_data; char buf[8]; @@ -67472,10 +67878,10 @@ index 48e8a97..3499ec8 100644 const struct iw_handler_def prism54_handler_def = { diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c -index 06664ba..974b505 100644 +index 4dd5adc..7c1c2a4 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -3219,20 +3219,20 @@ static int __init init_mac80211_hwsim(void) +@@ -3224,20 +3224,20 @@ static int __init init_mac80211_hwsim(void) if (channels < 1) return -EINVAL; @@ -67524,7 +67930,7 @@ index 1efef3b..dc49c3d 100644 spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock, ra_list_flags); diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c -index 3cfa946..101832c 100644 +index 8b67a55..423f9d6 100644 --- a/drivers/net/wireless/marvell/mwifiex/main.c +++ b/drivers/net/wireless/marvell/mwifiex/main.c @@ -808,7 +808,7 @@ mwifiex_clone_skb_for_tx_status(struct mwifiex_private *priv, @@ -67537,10 +67943,10 @@ index 3cfa946..101832c 100644 { struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index de36438..ac74367 100644 +index 0c7937e..adcf08b 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -503,7 +503,7 @@ static int mwifiex_init_rxq_ring(struct mwifiex_adapter *adapter) +@@ -507,7 +507,7 @@ static int mwifiex_init_rxq_ring(struct mwifiex_adapter *adapter) for (i = 0; i < MWIFIEX_MAX_TXRX_BD; i++) { /* Allocate skb here so that firmware can DMA data from it */ skb = mwifiex_alloc_dma_align_buf(MWIFIEX_RX_DATA_BUF_SIZE, @@ -67549,7 +67955,7 @@ index de36438..ac74367 100644 if (!skb) { mwifiex_dbg(adapter, ERROR, "Unable to allocate skb for RX ring.\n"); -@@ -1315,7 +1315,7 @@ static int mwifiex_pcie_process_recv_data(struct mwifiex_adapter *adapter) +@@ -1319,7 +1319,7 @@ static int mwifiex_pcie_process_recv_data(struct mwifiex_adapter *adapter) } skb_tmp = mwifiex_alloc_dma_align_buf(MWIFIEX_RX_DATA_BUF_SIZE, @@ -67559,30 +67965,10 @@ index de36438..ac74367 100644 mwifiex_dbg(adapter, ERROR, "Unable to allocate skb.\n"); diff --git a/drivers/net/wireless/marvell/mwifiex/sdio.c b/drivers/net/wireless/marvell/mwifiex/sdio.c -index b2c839a..5647267 100644 +index bdc51ff..674465e 100644 --- a/drivers/net/wireless/marvell/mwifiex/sdio.c +++ b/drivers/net/wireless/marvell/mwifiex/sdio.c -@@ -1123,8 +1123,7 @@ static void mwifiex_deaggr_sdio_pkt(struct mwifiex_adapter *adapter, - __func__, pkt_len, blk_size); - break; - } -- skb_deaggr = mwifiex_alloc_dma_align_buf(pkt_len, -- GFP_KERNEL | GFP_DMA); -+ skb_deaggr = mwifiex_alloc_dma_align_buf(pkt_len, GFP_KERNEL); - if (!skb_deaggr) - break; - skb_put(skb_deaggr, pkt_len); -@@ -1373,8 +1372,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, - - /* copy pkt to deaggr buf */ - skb_deaggr = mwifiex_alloc_dma_align_buf(len_arr[pind], -- GFP_KERNEL | -- GFP_DMA); -+ GFP_KERNEL); - if (!skb_deaggr) { - mwifiex_dbg(adapter, ERROR, "skb allocation failure\t" - "drop pkt len=%d type=%d\n", -@@ -1416,7 +1414,7 @@ rx_curr_single: +@@ -1492,7 +1492,7 @@ rx_curr_single: mwifiex_dbg(adapter, INFO, "info: RX: port: %d, rx_len: %d\n", port, rx_len); @@ -67591,7 +67977,7 @@ index b2c839a..5647267 100644 if (!skb) { mwifiex_dbg(adapter, ERROR, "single skb allocated fail,\t" -@@ -1521,7 +1519,7 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) +@@ -1597,7 +1597,7 @@ static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) rx_len = (u16) (rx_blocks * MWIFIEX_SDIO_BLOCK_SIZE); mwifiex_dbg(adapter, INFO, "info: rx_len = %d\n", rx_len); @@ -67667,7 +68053,7 @@ index 2d64611..66754f4 100644 u16 reg; diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 7fa0128..8b7e948 100644 +index bf3f0a3..9d2a6d0 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -83,7 +83,7 @@ static inline bool rt2800_is_305x_soc(struct rt2x00_dev *rt2x00dev) @@ -67698,10 +68084,10 @@ index 7fa0128..8b7e948 100644 u32 reg; diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index 6418620..31729cf 100644 +index f68d492..38ba52d 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -@@ -377,7 +377,7 @@ struct rt2x00_intf { +@@ -378,7 +378,7 @@ struct rt2x00_intf { * for hardware which doesn't support hardware * sequence counting. */ @@ -67727,7 +68113,7 @@ index 68b620b..92ecd9e 100644 hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); hdr->seq_ctrl |= cpu_to_le16(seqno); diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c -index 24a3436..b74d6b7 100644 +index 03013eb..ade7027 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c @@ -63,7 +63,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); @@ -67749,7 +68135,7 @@ index 24a3436..b74d6b7 100644 u32 reg; diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c -index 7bbc869..d69e243 100644 +index c1397a6..82c223d 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c +++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c @@ -61,7 +61,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); @@ -67771,7 +68157,7 @@ index 7bbc869..d69e243 100644 u32 reg; diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c -index 7a40d8d..09b0e06 100644 +index 264466f..ab69236 100644 --- a/drivers/net/wireless/realtek/rtlwifi/base.c +++ b/drivers/net/wireless/realtek/rtlwifi/base.c @@ -467,15 +467,15 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw) @@ -67829,10 +68215,10 @@ index 74233d6..482e495 100644 void rtl_get_tcb_desc(struct ieee80211_hw *hw, struct ieee80211_tx_info *info, diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c -index e5037d1..ce357fe 100644 +index d12586d..d6f3388 100644 --- a/drivers/net/wireless/realtek/rtlwifi/pci.c +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c -@@ -1100,13 +1100,16 @@ done: +@@ -1098,13 +1098,16 @@ done: return ret; } @@ -67851,7 +68237,7 @@ index e5037d1..ce357fe 100644 struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); -@@ -1226,12 +1229,8 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw, +@@ -1225,12 +1228,8 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw, rtlpci->acm_method = EACMWAY2_SW; /*task */ @@ -67867,7 +68253,7 @@ index e5037d1..ce357fe 100644 rtl_lps_change_work_callback); } diff --git a/drivers/net/wireless/realtek/rtlwifi/ps.c b/drivers/net/wireless/realtek/rtlwifi/ps.c -index b69321d..ee3a01c 100644 +index 93579cac..0d490ad 100644 --- a/drivers/net/wireless/realtek/rtlwifi/ps.c +++ b/drivers/net/wireless/realtek/rtlwifi/ps.c @@ -205,7 +205,7 @@ static void _rtl_ps_inactive_ps(struct ieee80211_hw *hw) @@ -67879,7 +68265,7 @@ index b69321d..ee3a01c 100644 { struct rtl_works *rtlworks = container_of_dwork_rtl(data, struct rtl_works, ips_nic_off_wq); -@@ -595,7 +595,7 @@ void rtl_swlps_rf_awake(struct ieee80211_hw *hw) +@@ -591,7 +591,7 @@ void rtl_swlps_rf_awake(struct ieee80211_hw *hw) spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag); } @@ -67888,7 +68274,7 @@ index b69321d..ee3a01c 100644 { struct rtl_works *rtlworks = container_of_dwork_rtl(data, struct rtl_works, ps_rfon_wq); -@@ -687,7 +687,7 @@ void rtl_lps_change_work_callback(struct work_struct *work) +@@ -683,7 +683,7 @@ void rtl_lps_change_work_callback(struct work_struct *work) } EXPORT_SYMBOL_GPL(rtl_lps_change_work_callback); @@ -67947,7 +68333,7 @@ index b661f896..ebea675 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 a0d6ccc..36e1ae3 100644 +index 22009e1..2e5e0c1 100644 --- a/drivers/net/wireless/ti/wl12xx/main.c +++ b/drivers/net/wireless/ti/wl12xx/main.c @@ -656,7 +656,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) @@ -67973,7 +68359,7 @@ index a0d6ccc..36e1ae3 100644 wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER, WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER, diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c -index 1bf26cc..7dd1267 100644 +index ae47c79..db9c714 100644 --- a/drivers/net/wireless/ti/wl18xx/main.c +++ b/drivers/net/wireless/ti/wl18xx/main.c @@ -2018,8 +2018,10 @@ static int wl18xx_setup(struct wl1271 *wl) @@ -67990,7 +68376,7 @@ index 1bf26cc..7dd1267 100644 /* Enable 11a Band only if we have 5G antennas */ diff --git a/drivers/net/wireless/zydas/zd1201.c b/drivers/net/wireless/zydas/zd1201.c -index 6f5c793..42f0dde 100644 +index dea049b..ef3bcdd 100644 --- a/drivers/net/wireless/zydas/zd1201.c +++ b/drivers/net/wireless/zydas/zd1201.c @@ -891,7 +891,7 @@ static void zd1201_set_multicast(struct net_device *dev) @@ -68438,11 +68824,11 @@ index a912dc0..a8225ba 100644 ZD_ASSERT(in_interrupt()); diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c -index f5231a2..966574d 100644 +index 83deeeb..bbc8855 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c -@@ -142,7 +142,7 @@ void xenvif_wake_queue(struct xenvif_queue *queue) - netif_tx_wake_queue(netdev_get_tx_queue(dev, id)); +@@ -178,7 +178,7 @@ static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, + return vif->hash.mapping[skb_get_hash_raw(skb) % size]; } -static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) @@ -68464,10 +68850,10 @@ index 96ccd4e..8e1c6b7 100644 struct netfront_info *np = netdev_priv(dev); struct netfront_stats *tx_stats = this_cpu_ptr(np->tx_stats); diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c -index 4fd733f..9240d85 100644 +index befac5b..f37ddef7 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c -@@ -2126,7 +2126,7 @@ static int nvme_resume(struct device *dev) +@@ -2060,7 +2060,7 @@ static int nvme_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(nvme_dev_pm_ops, nvme_suspend, nvme_resume); static pci_ers_result_t nvme_error_detected(struct pci_dev *pdev, @@ -68477,10 +68863,10 @@ index 4fd733f..9240d85 100644 struct nvme_dev *dev = pci_get_drvdata(pdev); diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c -index 3349d2a..226e4df 100644 +index 33daffc..65eceee 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -1179,7 +1179,9 @@ static int __init of_fdt_raw_init(void) +@@ -1284,7 +1284,9 @@ static int __init of_fdt_raw_init(void) pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n"); return 0; } @@ -68636,7 +69022,7 @@ index bdef916..88c7dee 100644 }; diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c -index c776333..aa6b325 100644 +index 74ed3e4..3e74a1c 100644 --- a/drivers/parport/procfs.c +++ b/drivers/parport/procfs.c @@ -65,7 +65,7 @@ static int do_active_device(struct ctl_table *table, int write, @@ -68657,24 +69043,11 @@ index c776333..aa6b325 100644 } #endif /* IEEE1284.3 support. */ -diff --git a/drivers/pci/host/pci-host-common.h b/drivers/pci/host/pci-host-common.h -index 09f3fa0..af67bc0 100644 ---- a/drivers/pci/host/pci-host-common.h -+++ b/drivers/pci/host/pci-host-common.h -@@ -25,7 +25,7 @@ - struct gen_pci_cfg_bus_ops { - u32 bus_shift; - struct pci_ops ops; --}; -+} __do_const; - - struct gen_pci_cfg_windows { - struct resource res; diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c -index 2f6d3a1..cb43cfc 100644 +index f6221d7..80121ae 100644 --- a/drivers/pci/hotplug/acpiphp_ibm.c +++ b/drivers/pci/hotplug/acpiphp_ibm.c -@@ -463,7 +463,9 @@ static int __init ibm_acpiphp_init(void) +@@ -465,7 +465,9 @@ static int __init ibm_acpiphp_init(void) goto init_cleanup; } @@ -68867,10 +69240,10 @@ index a080f44..24ad26c 100644 /** diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c -index 342b691..aede3f4 100644 +index d319a9c..6a247fe 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c -@@ -1137,7 +1137,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) +@@ -1136,7 +1136,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) { /* allocate attribute structure, piggyback attribute name */ int name_len = write_combine ? 13 : 10; @@ -68879,7 +69252,7 @@ index 342b691..aede3f4 100644 char *res_attr_name; int retval; -@@ -1317,7 +1317,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor +@@ -1316,7 +1316,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor static int pci_create_capabilities_sysfs(struct pci_dev *dev) { int retval; @@ -68888,7 +69261,7 @@ index 342b691..aede3f4 100644 /* If the device has VPD, try to expose it in sysfs. */ if (dev->vpd) { -@@ -1364,7 +1364,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev) +@@ -1363,7 +1363,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev) { int retval; int rom_size; @@ -68968,7 +69341,7 @@ 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 bf8405f..80490e5 100644 +index 8e3ef72..f777af2 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -179,7 +179,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, @@ -69030,10 +69403,10 @@ index 55641a3..ff9c8dc 100644 if (res->flags & IORESOURCE_IO) return pci_cardbus_io_size; diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c -index c8969dd..4764267 100644 +index 38facef..ac0ba00 100644 --- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c +++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c -@@ -1207,7 +1207,7 @@ static int nmk_gpio_probe(struct platform_device *dev) +@@ -1194,7 +1194,7 @@ static int nmk_gpio_probe(struct platform_device *dev) struct device_node *np = dev->dev.of_node; struct nmk_gpio_chip *nmk_chip; struct gpio_chip *chip; @@ -69043,7 +69416,7 @@ index c8969dd..4764267 100644 bool supports_sleepmode; int irq; diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c -index 523b6b7..eb4c74d 100644 +index b7c0d6f..0ec1e8c 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c @@ -24,6 +24,7 @@ @@ -69054,7 +69427,7 @@ index 523b6b7..eb4c74d 100644 #include "pinctrl-at91.h" #include "core.h" -@@ -1609,7 +1610,9 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev, +@@ -1601,7 +1602,9 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev, at91_gpio->pioc_hwirq = irqd_to_hwirq(d); /* Setup proper .irq_set_type function */ @@ -69066,10 +69439,10 @@ index 523b6b7..eb4c74d 100644 /* Disable irqs of this PIO controller */ writel_relaxed(~0, at91_gpio->regbase + PIO_IDR); diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c -index 2b441e9..0377267 100644 +index e8a44a9..d859973 100644 --- a/drivers/platform/chrome/chromeos_laptop.c +++ b/drivers/platform/chrome/chromeos_laptop.c -@@ -498,7 +498,7 @@ static struct chromeos_laptop cr48 = { +@@ -518,7 +518,7 @@ static struct chromeos_laptop cr48 = { .callback = chromeos_laptop_dmi_matched, \ .driver_data = (void *)&board_ @@ -69079,10 +69452,10 @@ index 2b441e9..0377267 100644 .ident = "Samsung Series 5 550", .matches = { diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c -index 3474920..acc9581 100644 +index 308a853..b0693fd 100644 --- a/drivers/platform/chrome/chromeos_pstore.c +++ b/drivers/platform/chrome/chromeos_pstore.c -@@ -13,7 +13,7 @@ +@@ -14,7 +14,7 @@ #include <linux/platform_device.h> #include <linux/pstore_ram.h> @@ -69140,10 +69513,10 @@ index 4034d2d..53ed0bd 100644 /* * Early Macbook Pros with switchable graphics use nvidia diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index a96630d..0fe8410 100644 +index a26dca3..7626b8c 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -1867,6 +1867,10 @@ static int show_dsts(struct seq_file *m, void *data) +@@ -1872,6 +1872,10 @@ static int show_dsts(struct seq_file *m, void *data) int err; u32 retval = -1; @@ -69154,7 +69527,7 @@ index a96630d..0fe8410 100644 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); if (err < 0) -@@ -1883,6 +1887,10 @@ static int show_devs(struct seq_file *m, void *data) +@@ -1888,6 +1892,10 @@ static int show_devs(struct seq_file *m, void *data) int err; u32 retval = -1; @@ -69165,7 +69538,7 @@ index a96630d..0fe8410 100644 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, &retval); -@@ -1907,6 +1915,10 @@ static int show_call(struct seq_file *m, void *data) +@@ -1912,6 +1920,10 @@ static int show_call(struct seq_file *m, void *data) union acpi_object *obj; acpi_status status; @@ -69302,10 +69675,10 @@ index e6aac72..e11ff24 100644 .ident = "Samsung Q10", .matches = { diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c -index e9caa34..72ed655 100644 +index 1dba359..2850ab9 100644 --- a/drivers/platform/x86/sony-laptop.c +++ b/drivers/platform/x86/sony-laptop.c -@@ -2553,7 +2553,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd) +@@ -2556,7 +2556,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd) } /* High speed charging function */ @@ -69314,7 +69687,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_highspeed_charging_store(struct device *dev, struct device_attribute *attr, -@@ -2627,7 +2627,7 @@ static void sony_nc_highspeed_charging_cleanup(struct platform_device *pd) +@@ -2630,7 +2630,7 @@ static void sony_nc_highspeed_charging_cleanup(struct platform_device *pd) } /* low battery function */ @@ -69323,7 +69696,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_lowbatt_store(struct device *dev, struct device_attribute *attr, -@@ -2693,7 +2693,7 @@ static void sony_nc_lowbatt_cleanup(struct platform_device *pd) +@@ -2696,7 +2696,7 @@ static void sony_nc_lowbatt_cleanup(struct platform_device *pd) } /* fan speed function */ @@ -69332,7 +69705,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_hsfan_store(struct device *dev, struct device_attribute *attr, -@@ -2800,7 +2800,7 @@ static void sony_nc_fanspeed_cleanup(struct platform_device *pd) +@@ -2803,7 +2803,7 @@ static void sony_nc_fanspeed_cleanup(struct platform_device *pd) } /* USB charge function */ @@ -69341,7 +69714,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_usb_charge_store(struct device *dev, struct device_attribute *attr, -@@ -2874,7 +2874,7 @@ static void sony_nc_usb_charge_cleanup(struct platform_device *pd) +@@ -2877,7 +2877,7 @@ static void sony_nc_usb_charge_cleanup(struct platform_device *pd) } /* Panel ID function */ @@ -69350,7 +69723,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_panelid_show(struct device *dev, struct device_attribute *attr, char *buffer) -@@ -2921,7 +2921,7 @@ static void sony_nc_panelid_cleanup(struct platform_device *pd) +@@ -2924,7 +2924,7 @@ static void sony_nc_panelid_cleanup(struct platform_device *pd) } /* smart connect function */ @@ -69359,7 +69732,7 @@ index e9caa34..72ed655 100644 static ssize_t sony_nc_smart_conn_store(struct device *dev, struct device_attribute *attr, -@@ -4877,7 +4877,7 @@ static struct acpi_driver sony_pic_driver = { +@@ -4880,7 +4880,7 @@ static struct acpi_driver sony_pic_driver = { .drv.pm = &sony_pic_pm, }; @@ -69369,10 +69742,10 @@ index e9caa34..72ed655 100644 .ident = "Sony Vaio", .matches = { diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c -index 9255ff3..b38a0d9 100644 +index b65ce75..d92001e 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c -@@ -2461,10 +2461,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, +@@ -2462,10 +2462,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); } @@ -69384,7 +69757,7 @@ index 9255ff3..b38a0d9 100644 /* * Polling driver -@@ -4164,7 +4164,7 @@ static int bluetooth_get_status(void) +@@ -4203,7 +4203,7 @@ static int bluetooth_get_status(void) TPACPI_RFK_RADIO_ON : TPACPI_RFK_RADIO_OFF; } @@ -69393,7 +69766,7 @@ index 9255ff3..b38a0d9 100644 { int status; -@@ -4352,7 +4352,7 @@ static int wan_get_status(void) +@@ -4391,7 +4391,7 @@ static int wan_get_status(void) TPACPI_RFK_RADIO_ON : TPACPI_RFK_RADIO_OFF; } @@ -69402,7 +69775,7 @@ index 9255ff3..b38a0d9 100644 { int status; -@@ -4538,7 +4538,7 @@ static int uwb_get_status(void) +@@ -4577,7 +4577,7 @@ static int uwb_get_status(void) TPACPI_RFK_RADIO_ON : TPACPI_RFK_RADIO_OFF; } @@ -69411,7 +69784,7 @@ index 9255ff3..b38a0d9 100644 { int status; -@@ -9450,7 +9450,7 @@ static struct ibm_init_struct ibms_init[] __initdata = { +@@ -9526,7 +9526,7 @@ static struct ibm_init_struct ibms_init[] __initdata = { }, }; @@ -69494,7 +69867,7 @@ index 438d4c7..ca8a2fb 100644 + pax_close_kernel(); } diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c -index facd43b..b291260 100644 +index 81603d9..dd8f9e1 100644 --- a/drivers/pnp/pnpbios/core.c +++ b/drivers/pnp/pnpbios/core.c @@ -494,7 +494,7 @@ static int __init exploding_pnp_bios(const struct dmi_system_id *d) @@ -69573,7 +69946,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 456987c..45396a3 100644 +index b13cd07..3c68692 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); @@ -69588,7 +69961,7 @@ index 456987c..45396a3 100644 #define POWER_SUPPLY_DEFERRED_REGISTER_TIME msecs_to_jiffies(10) -@@ -960,7 +963,7 @@ static int __init power_supply_class_init(void) +@@ -965,7 +968,7 @@ static int __init power_supply_class_init(void) return PTR_ERR(power_supply_class); power_supply_class->dev_uevent = power_supply_uevent; @@ -69860,10 +70233,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 fd0e4e3..2f2eba9 100644 +index ec8184d5..33fe31c 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c -@@ -3861,7 +3861,7 @@ regulator_register(const struct regulator_desc *regulator_desc, +@@ -3913,7 +3913,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; @@ -69872,15 +70245,15 @@ index fd0e4e3..2f2eba9 100644 struct regulator_dev *rdev; struct device *dev; int ret, i; -@@ -3954,7 +3954,7 @@ regulator_register(const struct regulator_desc *regulator_desc, +@@ -4006,7 +4006,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", - (unsigned long) atomic_inc_return(®ulator_no)); + (unsigned long) atomic_inc_return_unchecked(®ulator_no)); - ret = device_register(&rdev->dev); - if (ret != 0) { - put_device(&rdev->dev); + + /* set regulator constraints */ + if (init_data) diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c index b87f62d..34f1cdf 100644 --- a/drivers/regulator/max8660.c @@ -69899,10 +70272,10 @@ index b87f62d..34f1cdf 100644 /* diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c -index 5b75b7c..8b1bb06 100644 +index 08d2f13..5cad68a 100644 --- a/drivers/regulator/max8973-regulator.c +++ b/drivers/regulator/max8973-regulator.c -@@ -658,9 +658,11 @@ static int max8973_probe(struct i2c_client *client, +@@ -754,9 +754,11 @@ static int max8973_probe(struct i2c_client *client, if (!pdata->enable_ext_control) { max->desc.enable_reg = MAX8973_VOUT; max->desc.enable_mask = MAX8973_VOUT_ENABLE; @@ -69917,7 +70290,7 @@ index 5b75b7c..8b1bb06 100644 break; } -@@ -688,9 +690,11 @@ static int max8973_probe(struct i2c_client *client, +@@ -784,9 +786,11 @@ static int max8973_probe(struct i2c_client *client, max->desc.enable_reg = MAX8973_VOUT; max->desc.enable_mask = MAX8973_VOUT_ENABLE; @@ -69953,10 +70326,10 @@ index 0d17c92..ce5897e 100644 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators, diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c -index 3d7d58a..308df86 100644 +index db3958b..4d1f2ae 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c -@@ -327,9 +327,10 @@ void rproc_free_vring(struct rproc_vring *rvring) +@@ -329,9 +329,10 @@ void rproc_free_vring(struct rproc_vring *rvring) * * Returns 0 on success, or an appropriate error code otherwise */ @@ -69968,7 +70341,7 @@ index 3d7d58a..308df86 100644 struct device *dev = &rproc->dev; struct rproc_vdev *rvdev; int i, ret; -@@ -404,9 +405,10 @@ free_rvdev: +@@ -406,9 +407,10 @@ free_rvdev: * * Returns 0 on success, or an appropriate error code otherwise */ @@ -69980,7 +70353,7 @@ index 3d7d58a..308df86 100644 struct rproc_mem_entry *trace; struct device *dev = &rproc->dev; void *ptr; -@@ -484,9 +486,10 @@ static int rproc_handle_trace(struct rproc *rproc, struct fw_rsc_trace *rsc, +@@ -486,9 +488,10 @@ static int rproc_handle_trace(struct rproc *rproc, struct fw_rsc_trace *rsc, * and not allow firmwares to request access to physical addresses that * are outside those ranges. */ @@ -69992,7 +70365,7 @@ index 3d7d58a..308df86 100644 struct rproc_mem_entry *mapping; struct device *dev = &rproc->dev; int ret; -@@ -556,10 +559,11 @@ out: +@@ -558,10 +561,11 @@ out: * pressure is important; it may have a substantial impact on performance. */ static int rproc_handle_carveout(struct rproc *rproc, @@ -70005,7 +70378,7 @@ index 3d7d58a..308df86 100644 struct rproc_mem_entry *carveout, *mapping; struct device *dev = &rproc->dev; dma_addr_t dma; -@@ -678,9 +682,11 @@ free_carv: +@@ -680,9 +684,11 @@ free_carv: return ret; } @@ -70018,7 +70391,7 @@ index 3d7d58a..308df86 100644 /* Summarize the number of notification IDs */ rproc->max_notifyid += rsc->num_of_vrings; -@@ -692,18 +698,18 @@ static int rproc_count_vrings(struct rproc *rproc, struct fw_rsc_vdev *rsc, +@@ -694,18 +700,18 @@ static int rproc_count_vrings(struct rproc *rproc, struct fw_rsc_vdev *rsc, * enum fw_resource_type. */ static rproc_handle_resource_t rproc_loading_handlers[RSC_LAST] = { @@ -70068,7 +70441,7 @@ index 9a3f2a6..c19b00a 100644 platform_set_drvdata(pdev, rtc); if (rtc->irq != -1) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c -index 84fb541..a526dd0 100644 +index fbe9c72..1432a06 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -735,7 +735,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) @@ -70104,7 +70477,7 @@ index a6d9434..dc26b71 100644 case RTC_PIE_ON: diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c -index ecb7dba..d2ea086 100644 +index 821d9c0..d71c3b5 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -111,7 +111,7 @@ struct ds1307 { @@ -70116,6 +70489,25 @@ index ecb7dba..d2ea086 100644 enum ds_type type; unsigned long flags; #define HAS_NVRAM 0 /* bit 0 == sysfs file active */ +diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c +index d1bf93a..4271bfd 100644 +--- a/drivers/rtc/rtc-m41t80.c ++++ b/drivers/rtc/rtc-m41t80.c +@@ -776,9 +776,11 @@ static int m41t80_probe(struct i2c_client *client, + dev_warn(&client->dev, "unable to request IRQ, alarms disabled\n"); + client->irq = 0; + } else { +- m41t80_rtc_ops.read_alarm = m41t80_read_alarm; +- m41t80_rtc_ops.set_alarm = m41t80_set_alarm; +- m41t80_rtc_ops.alarm_irq_enable = m41t80_alarm_irq_enable; ++ pax_open_kernel(); ++ const_cast(m41t80_rtc_ops.read_alarm) = m41t80_read_alarm; ++ const_cast(m41t80_rtc_ops.set_alarm) = m41t80_set_alarm; ++ const_cast(m41t80_rtc_ops.alarm_irq_enable) = m41t80_alarm_irq_enable; ++ pax_close_kernel(); + /* Enable the wakealarm */ + device_init_wakeup(&client->dev, true); + } diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c index d99a705..99654e7 100644 --- a/drivers/rtc/rtc-m48t59.c @@ -70131,6 +70523,25 @@ index d99a705..99654e7 100644 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr); if (ret) +diff --git a/drivers/rtc/rtc-rv3029c2.c b/drivers/rtc/rtc-rv3029c2.c +index 1f9f7b4..6f87883 100644 +--- a/drivers/rtc/rtc-rv3029c2.c ++++ b/drivers/rtc/rtc-rv3029c2.c +@@ -832,9 +832,11 @@ static int rv3029_probe(struct device *dev, struct regmap *regmap, int irq, + dev_warn(dev, "unable to request IRQ, alarms disabled\n"); + rv3029->irq = 0; + } else { +- rv3029_rtc_ops.read_alarm = rv3029_read_alarm; +- rv3029_rtc_ops.set_alarm = rv3029_set_alarm; +- rv3029_rtc_ops.alarm_irq_enable = rv3029_alarm_irq_enable; ++ pax_open_kernel(); ++ const_cast(rv3029_rtc_ops.read_alarm) = rv3029_read_alarm; ++ const_cast(rv3029_rtc_ops.set_alarm) = rv3029_set_alarm; ++ const_cast(rv3029_rtc_ops.alarm_irq_enable) = rv3029_alarm_irq_enable; ++ pax_close_kernel(); + } + } + diff --git a/drivers/rtc/rtc-rv8803.c b/drivers/rtc/rtc-rv8803.c index f623038..c22e72a 100644 --- a/drivers/rtc/rtc-rv8803.c @@ -70205,10 +70616,10 @@ index 3a2da4c..1d1d4b1 100644 rtc = devm_rtc_device_register(&plat_dev->dev, "test", diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c -index 7dfd0fa..5535b6b 100644 +index 6678d1f..0293b70 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c -@@ -772,6 +772,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd) +@@ -770,6 +770,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd) return 0; } @@ -70220,7 +70631,7 @@ index 7dfd0fa..5535b6b 100644 int aac_probe_container(struct aac_dev *dev, int cid) { struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL); -@@ -784,7 +789,7 @@ int aac_probe_container(struct aac_dev *dev, int cid) +@@ -782,7 +787,7 @@ int aac_probe_container(struct aac_dev *dev, int cid) return -ENOMEM; } scsicmd->list.next = NULL; @@ -70586,7 +70997,7 @@ index 1e7e139..c2031dd 100644 /* diff --git a/drivers/scsi/bfa/bfa_fcs.h b/drivers/scsi/bfa/bfa_fcs.h -index 06dc215..543c5aaa 100644 +index 0f797a5..73b170a 100644 --- a/drivers/scsi/bfa/bfa_fcs.h +++ b/drivers/scsi/bfa/bfa_fcs.h @@ -67,8 +67,10 @@ struct bfa_fcs_s; @@ -70718,7 +71129,7 @@ index 06dc215..543c5aaa 100644 struct bfad_itnim_s *itnim_drv; /* driver peer instance */ struct bfa_fcs_s *fcs; /* fcs instance */ diff --git a/drivers/scsi/bfa/bfa_fcs_fcpim.c b/drivers/scsi/bfa/bfa_fcs_fcpim.c -index 4f089d7..89b3d8e 100644 +index 2e3b19e..7a9b729 100644 --- a/drivers/scsi/bfa/bfa_fcs_fcpim.c +++ b/drivers/scsi/bfa/bfa_fcs_fcpim.c @@ -60,7 +60,7 @@ static void bfa_fcs_itnim_sm_hcb_offline(struct bfa_fcs_itnim_s *itnim, @@ -70730,7 +71141,7 @@ index 4f089d7..89b3d8e 100644 {BFA_SM(bfa_fcs_itnim_sm_offline), BFA_ITNIM_OFFLINE}, {BFA_SM(bfa_fcs_itnim_sm_prli_send), BFA_ITNIM_PRLI_SEND}, {BFA_SM(bfa_fcs_itnim_sm_prli), BFA_ITNIM_PRLI_SENT}, -@@ -672,7 +672,7 @@ bfa_status_t +@@ -673,7 +673,7 @@ bfa_status_t bfa_fcs_itnim_get_online_state(struct bfa_fcs_itnim_s *itnim) { bfa_trc(itnim->fcs, itnim->rport->pid); @@ -70739,7 +71150,7 @@ index 4f089d7..89b3d8e 100644 case BFA_ITNIM_ONLINE: case BFA_ITNIM_INITIATIOR: return BFA_STATUS_OK; -@@ -772,7 +772,7 @@ bfa_fcs_itnim_attr_get(struct bfa_fcs_lport_s *port, wwn_t rpwwn, +@@ -773,7 +773,7 @@ bfa_fcs_itnim_attr_get(struct bfa_fcs_lport_s *port, wwn_t rpwwn, if (itnim == NULL) return BFA_STATUS_NO_FCPIM_NEXUS; @@ -71777,10 +72188,10 @@ index 641c60e..5bfb1f1 100644 int rc = -ENODEV; struct net_device *netdev = NULL; diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c -index 5be944c..4a7936d 100644 +index ff8dcd5..b53efa2 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c -@@ -914,10 +914,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) +@@ -942,10 +942,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) struct reply_queue_buffer *rq = &h->reply_queue[q]; if (h->transMethod & CFGTBL_Trans_io_accel1) @@ -71793,7 +72204,7 @@ index 5be944c..4a7936d 100644 if ((rq->head[rq->current_entry] & 1) == rq->wraparound) { a = rq->head[rq->current_entry]; -@@ -1099,7 +1099,7 @@ static void __enqueue_cmd_and_start_io(struct ctlr_info *h, +@@ -1127,7 +1127,7 @@ static void __enqueue_cmd_and_start_io(struct ctlr_info *h, break; default: set_performant_mode(h, c, reply_queue); @@ -71802,7 +72213,7 @@ index 5be944c..4a7936d 100644 } } -@@ -6843,17 +6843,17 @@ static void __iomem *remap_pci_mem(ulong base, ulong size) +@@ -6951,17 +6951,17 @@ static void __iomem *remap_pci_mem(ulong base, ulong size) static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q) { @@ -71823,7 +72234,7 @@ index 5be944c..4a7936d 100644 (h->interrupts_enabled == 0); } -@@ -7781,7 +7781,7 @@ static int hpsa_pci_init(struct ctlr_info *h) +@@ -7889,7 +7889,7 @@ static int hpsa_pci_init(struct ctlr_info *h) if (prod_index < 0) return prod_index; h->product_name = products[prod_index].product_name; @@ -71832,7 +72243,7 @@ index 5be944c..4a7936d 100644 h->needs_abort_tags_swizzled = ctlr_needs_abort_tags_swizzled(h->board_id); -@@ -8180,7 +8180,7 @@ static void controller_lockup_detected(struct ctlr_info *h) +@@ -8288,7 +8288,7 @@ static void controller_lockup_detected(struct ctlr_info *h) unsigned long flags; u32 lockup_detected; @@ -71841,7 +72252,7 @@ index 5be944c..4a7936d 100644 spin_lock_irqsave(&h->lock, flags); lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); if (!lockup_detected) { -@@ -8516,7 +8516,7 @@ reinit_after_soft_reset: +@@ -8626,7 +8626,7 @@ reinit_after_soft_reset: } /* make sure the board interrupts are off */ @@ -71850,7 +72261,7 @@ index 5be944c..4a7936d 100644 rc = hpsa_request_irqs(h, do_hpsa_intr_msi, do_hpsa_intr_intx); if (rc) -@@ -8574,7 +8574,7 @@ reinit_after_soft_reset: +@@ -8679,7 +8679,7 @@ reinit_after_soft_reset: * fake ones to scoop up any residual completions. */ spin_lock_irqsave(&h->lock, flags); @@ -71859,7 +72270,7 @@ index 5be944c..4a7936d 100644 spin_unlock_irqrestore(&h->lock, flags); hpsa_free_irqs(h); rc = hpsa_request_irqs(h, hpsa_msix_discard_completions, -@@ -8604,9 +8604,9 @@ reinit_after_soft_reset: +@@ -8709,9 +8709,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"); @@ -71871,7 +72282,7 @@ index 5be944c..4a7936d 100644 rc = controller_reset_failed(h->cfgtable); if (rc) -@@ -8633,7 +8633,7 @@ reinit_after_soft_reset: +@@ -8738,7 +8738,7 @@ reinit_after_soft_reset: /* Turn the interrupts on so we can service requests */ @@ -71880,7 +72291,7 @@ index 5be944c..4a7936d 100644 hpsa_hba_inquiry(h); -@@ -8654,7 +8654,7 @@ reinit_after_soft_reset: +@@ -8764,7 +8764,7 @@ reinit_after_soft_reset: clean7: /* perf, sg, cmd, irq, shost, pci, lu, aer/h */ hpsa_free_performant_mode(h); @@ -71889,7 +72300,7 @@ index 5be944c..4a7936d 100644 clean6: /* sg, cmd, irq, pci, lockup, wq/aer/h */ hpsa_free_sg_chain_blocks(h); clean5: /* cmd, irq, shost, pci, lu, aer/h */ -@@ -8789,7 +8789,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) +@@ -8899,7 +8899,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) * To write all data in the battery backed cache to disks */ hpsa_flush_cache(h); @@ -71898,7 +72309,7 @@ index 5be944c..4a7936d 100644 hpsa_free_irqs(h); /* init_one 4 */ hpsa_disable_interrupt_mode(h); /* pci_init 2 */ } -@@ -8931,7 +8931,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -9041,7 +9041,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)); @@ -71907,7 +72318,7 @@ index 5be944c..4a7936d 100644 /* This is a bit complicated. There are 8 registers on * the controller which we write to to tell it 8 different -@@ -8973,7 +8973,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -9083,7 +9083,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)) @@ -71916,7 +72327,7 @@ index 5be944c..4a7936d 100644 /* Controller spec: zero out this buffer. */ for (i = 0; i < h->nreply_queues; i++) -@@ -9003,12 +9003,12 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -9113,12 +9113,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) { @@ -71932,10 +72343,10 @@ index 5be944c..4a7936d 100644 writel(4, &h->cfgtable->HostWrite.CoalIntCount); } diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h -index d06bb74..8650763 100644 +index a1487e6..53a2c5d 100644 --- a/drivers/scsi/hpsa.h +++ b/drivers/scsi/hpsa.h -@@ -178,7 +178,7 @@ struct ctlr_info { +@@ -179,7 +179,7 @@ struct ctlr_info { unsigned int msix_vector; unsigned int msi_vector; int intr_mode; /* either PERF_MODE_INT or SIMPLE_MODE_INT */ @@ -71944,7 +72355,7 @@ index d06bb74..8650763 100644 /* queue and queue Info */ unsigned int Qdepth; -@@ -578,38 +578,38 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q) +@@ -579,38 +579,38 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q) } static struct access_method SA5_access = { @@ -72036,7 +72447,7 @@ index 4d1c511..d5744cb 100644 wait_queue_head_t reset_wq; diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c -index d6a691e..59e3128 100644 +index d6803a9..412f546 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c @@ -947,7 +947,7 @@ static void ipr_send_command(struct ipr_cmnd *ipr_cmd) @@ -72326,10 +72737,10 @@ index 30f9ef0..a1e29ac 100644 } EXPORT_SYMBOL(fc_exch_update_stats); diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c -index 9c706d8..d3e3ed2 100644 +index 935c430..a73e08b 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c -@@ -535,7 +535,7 @@ static struct ata_port_operations sas_sata_ops = { +@@ -538,7 +538,7 @@ static struct ata_port_operations sas_sata_ops = { .postreset = ata_std_postreset, .error_handler = ata_std_error_handler, .post_internal_cmd = sas_ata_post_internal, @@ -72339,7 +72750,7 @@ 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 90a3ca5..a68c8cd 100644 +index d5bd420..a0f6ea6 100644 --- a/drivers/scsi/lpfc/lpfc.h +++ b/drivers/scsi/lpfc/lpfc.h @@ -430,7 +430,7 @@ struct lpfc_vport { @@ -72455,10 +72866,10 @@ index a63542b..80692ee 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 f57d02c..6ba534b 100644 +index b43f7ac..a635694 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c -@@ -11028,7 +11028,7 @@ lpfc_pci_resume_one(struct pci_dev *pdev) +@@ -11045,7 +11045,7 @@ lpfc_pci_resume_one(struct pci_dev *pdev) * PCI_ERS_RESULT_DISCONNECT - device could not be recovered **/ static pci_ers_result_t @@ -72467,7 +72878,7 @@ index f57d02c..6ba534b 100644 { struct Scsi_Host *shost = pci_get_drvdata(pdev); struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba; -@@ -11436,8 +11436,10 @@ lpfc_init(void) +@@ -11453,8 +11453,10 @@ lpfc_init(void) "misc_register returned with status %d", error); if (lpfc_enable_npiv) { @@ -72516,10 +72927,10 @@ index 3bd0be6..f9b0725e 100644 /** diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h -index fce414a..3c5884e 100644 +index ca86c88..175be62 100644 --- a/drivers/scsi/megaraid/megaraid_sas.h +++ b/drivers/scsi/megaraid/megaraid_sas.h -@@ -2046,7 +2046,7 @@ struct megasas_instance { +@@ -2048,7 +2048,7 @@ struct megasas_instance { s8 init_id; u16 max_num_sge; @@ -72529,10 +72940,10 @@ index fce414a..3c5884e 100644 u16 max_scsi_cmds; u16 ldio_threshold; diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c -index 8c44b9c..a55ec7f 100644 +index 751f13e..c68a4f99 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c -@@ -104,7 +104,7 @@ _base_get_ioc_facts(struct MPT3SAS_ADAPTER *ioc, int sleep_flag); +@@ -105,7 +105,7 @@ _base_get_ioc_facts(struct MPT3SAS_ADAPTER *ioc, int sleep_flag); * */ static int @@ -72542,10 +72953,10 @@ index 8c44b9c..a55ec7f 100644 int ret = param_set_int(val, kp); struct MPT3SAS_ADAPTER *ioc; diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c -index e0e4920..62b1b8e1 100644 +index 6bff13e..f00582c 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c -@@ -282,7 +282,7 @@ struct _scsi_io_transfer { +@@ -280,7 +280,7 @@ struct _scsi_io_transfer { * Note: The logging levels are defined in mpt3sas_debug.h. */ static int @@ -72554,7 +72965,7 @@ index e0e4920..62b1b8e1 100644 { int ret = param_set_int(val, kp); struct MPT3SAS_ADAPTER *ioc; -@@ -8910,7 +8910,7 @@ scsih_resume(struct pci_dev *pdev) +@@ -8932,7 +8932,7 @@ scsih_resume(struct pci_dev *pdev) * PCI_ERS_RESULT_NEED_RESET or PCI_ERS_RESULT_DISCONNECT */ pci_ers_result_t @@ -72870,10 +73281,10 @@ index 7c0b60c..0c2c9de 100644 scsi_qla_host_t *vha = pci_get_drvdata(pdev); struct qla_hw_data *ha = vha->hw; diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c -index 8a44d15..a3a925a 100644 +index ca39deb..bd37bc2 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c -@@ -668,7 +668,7 @@ static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) +@@ -678,7 +678,7 @@ static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) loop_id = le16_to_cpu(n->u.isp24.nport_handle); if (loop_id == 0xFFFF) { /* Global event */ @@ -72882,7 +73293,7 @@ index 8a44d15..a3a925a 100644 spin_lock_irqsave(&ha->tgt.sess_lock, flags); qlt_clear_tgt_db(vha->vha_tgt.qla_tgt); spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); -@@ -835,8 +835,9 @@ static void qlt_undelete_sess(struct qla_tgt_sess *sess) +@@ -845,8 +845,9 @@ static void qlt_undelete_sess(struct qla_tgt_sess *sess) sess->deleted = 0; } @@ -72893,7 +73304,7 @@ index 8a44d15..a3a925a 100644 struct qla_tgt *tgt = container_of(work, struct qla_tgt, sess_del_work); struct scsi_qla_host *vha = tgt->vha; -@@ -5817,7 +5818,7 @@ static struct qla_tgt_sess *qlt_make_local_sess(struct scsi_qla_host *vha, +@@ -5825,7 +5826,7 @@ static struct qla_tgt_sess *qlt_make_local_sess(struct scsi_qla_host *vha, retry: global_resets = @@ -72902,7 +73313,7 @@ index 8a44d15..a3a925a 100644 rc = qla24xx_get_loop_id(vha, s_id, &loop_id); if (rc != 0) { -@@ -5856,12 +5857,12 @@ retry: +@@ -5864,12 +5865,12 @@ retry: } if (global_resets != @@ -72917,7 +73328,7 @@ index 8a44d15..a3a925a 100644 qla_tgt->tgt_global_resets_count)); goto retry; } -@@ -6074,8 +6075,7 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha) +@@ -6080,8 +6081,7 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha) init_waitqueue_head(&tgt->waitQ); INIT_LIST_HEAD(&tgt->sess_list); INIT_LIST_HEAD(&tgt->del_sess_list); @@ -72927,7 +73338,7 @@ index 8a44d15..a3a925a 100644 spin_lock_init(&tgt->sess_work_lock); INIT_WORK(&tgt->sess_work, qlt_sess_work_fn); INIT_LIST_HEAD(&tgt->sess_works_list); -@@ -6083,7 +6083,7 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha) +@@ -6089,7 +6089,7 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha) INIT_LIST_HEAD(&tgt->srr_ctio_list); INIT_LIST_HEAD(&tgt->srr_imm_list); INIT_WORK(&tgt->srr_work, qlt_handle_srr_work); @@ -72937,10 +73348,10 @@ index 8a44d15..a3a925a 100644 base_vha->vha_tgt.qla_tgt = tgt; diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h -index d857fee..01fc070 100644 +index f26c5f6..e88e9c5 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h -@@ -877,7 +877,7 @@ struct qla_tgt { +@@ -876,7 +876,7 @@ struct qla_tgt { struct list_head srr_imm_list; struct work_struct srr_work; @@ -73042,129 +73453,117 @@ index 1deb6ad..3057db5 100644 if (drv->done) good_bytes = drv->done(cmd); diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c -index f3d69a98..40f8223 100644 +index 0f9ba41..104dc67 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c -@@ -559,9 +559,9 @@ static bool scsi_debug_host_lock = DEF_HOST_LOCK; - static bool scsi_debug_strict = DEF_STRICT; - static bool sdebug_any_injecting_opt; - --static atomic_t sdebug_cmnd_count; --static atomic_t sdebug_completions; --static atomic_t sdebug_a_tsf; /* counter of 'almost' TSFs */ -+static atomic_unchecked_t sdebug_cmnd_count; -+static atomic_unchecked_t sdebug_completions; -+static atomic_unchecked_t sdebug_a_tsf; /* counter of 'almost' TSFs */ - - #define DEV_READONLY(TGT) (0) - -@@ -3447,7 +3447,7 @@ static void sdebug_q_cmd_complete(unsigned long indx) - struct scsi_cmnd *scp; - struct sdebug_dev_info *devip; - -- atomic_inc(&sdebug_completions); -+ atomic_inc_unchecked(&sdebug_completions); - qa_indx = indx; - if ((qa_indx < 0) || (qa_indx >= SCSI_DEBUG_CANQUEUE)) { - pr_err("wild qa_indx=%d\n", qa_indx); -@@ -3507,7 +3507,7 @@ sdebug_q_cmd_hrt_complete(struct hrtimer *timer) - struct scsi_cmnd *scp; - struct sdebug_dev_info *devip; - -- atomic_inc(&sdebug_completions); -+ atomic_inc_unchecked(&sdebug_completions); - qa_indx = sd_hrtp->qa_indx; - if ((qa_indx < 0) || (qa_indx >= SCSI_DEBUG_CANQUEUE)) { - pr_err("wild qa_indx=%d\n", qa_indx); -@@ -3976,9 +3976,9 @@ schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip, - (SCSI_DEBUG_OPT_RARE_TSF & scsi_debug_opts) && - (scsi_result == 0)) { - if ((num_in_q == (qdepth - 1)) && -- (atomic_inc_return(&sdebug_a_tsf) >= -+ (atomic_inc_return_unchecked(&sdebug_a_tsf) >= - abs(scsi_debug_every_nth))) { -- atomic_set(&sdebug_a_tsf, 0); -+ atomic_set_unchecked(&sdebug_a_tsf, 0); - inject = 1; - scsi_result = device_qfull_result; - } -@@ -4182,7 +4182,7 @@ static int scsi_debug_write_info(struct Scsi_Host *host, char *buffer, int lengt - return -EINVAL; - scsi_debug_opts = opts; - if (scsi_debug_every_nth != 0) -- atomic_set(&sdebug_cmnd_count, 0); -+ atomic_set_unchecked(&sdebug_cmnd_count, 0); - return length; +@@ -289,10 +289,10 @@ struct sdebug_queue { + atomic_t blocked; /* to temporarily stop more being queued */ + }; + +-static atomic_t sdebug_cmnd_count; /* number of incoming commands */ +-static atomic_t sdebug_completions; /* count of deferred completions */ +-static atomic_t sdebug_miss_cpus; /* submission + completion cpus differ */ +-static atomic_t sdebug_a_tsf; /* 'almost task set full' counter */ ++static atomic_unchecked_t sdebug_cmnd_count; /* number of incoming commands */ ++static atomic_unchecked_t sdebug_completions; /* count of deferred completions */ ++static atomic_unchecked_t sdebug_miss_cpus; /* submission + completion cpus differ */ ++static atomic_unchecked_t sdebug_a_tsf; /* 'almost task set full' counter */ + + struct opcode_info_t { + u8 num_attached; /* 0 if this is it (i.e. a leaf); use 0xff */ +@@ -3453,9 +3453,9 @@ static void sdebug_q_cmd_complete(struct sdebug_defer *sd_dp) + qc_idx = sd_dp->qc_idx; + sqp = sdebug_q_arr + sd_dp->sqa_idx; + if (sdebug_statistics) { +- atomic_inc(&sdebug_completions); ++ atomic_inc_unchecked(&sdebug_completions); + if (raw_smp_processor_id() != sd_dp->issuing_cpu) +- atomic_inc(&sdebug_miss_cpus); ++ atomic_inc_unchecked(&sdebug_miss_cpus); + } + if (unlikely((qc_idx < 0) || (qc_idx >= SDEBUG_CANQUEUE))) { + pr_err("wild qc_idx=%d\n", qc_idx); +@@ -3927,23 +3927,23 @@ static void tweak_cmnd_count(void) + if (modulo < 2) + return; + block_unblock_all_queues(true); +- count = atomic_read(&sdebug_cmnd_count); +- atomic_set(&sdebug_cmnd_count, (count / modulo) * modulo); ++ count = atomic_read_unchecked(&sdebug_cmnd_count); ++ atomic_set_unchecked(&sdebug_cmnd_count, (count / modulo) * modulo); + block_unblock_all_queues(false); } -@@ -4197,8 +4197,8 @@ static int scsi_debug_show_info(struct seq_file *m, struct Scsi_Host *host) - if (scsi_debug_every_nth > 0) - snprintf(b, sizeof(b), " (curr:%d)", - ((SCSI_DEBUG_OPT_RARE_TSF & scsi_debug_opts) ? -- atomic_read(&sdebug_a_tsf) : -- atomic_read(&sdebug_cmnd_count))); -+ atomic_read_unchecked(&sdebug_a_tsf) : -+ atomic_read_unchecked(&sdebug_cmnd_count))); - else - b[0] = '\0'; - -@@ -4213,7 +4213,7 @@ static int scsi_debug_show_info(struct seq_file *m, struct Scsi_Host *host) - SCSI_DEBUG_VERSION, scsi_debug_version_date, - scsi_debug_num_tgts, scsi_debug_dev_size_mb, scsi_debug_opts, - scsi_debug_every_nth, b, scsi_debug_delay, scsi_debug_ndelay, -- scsi_debug_max_luns, atomic_read(&sdebug_completions), -+ scsi_debug_max_luns, atomic_read_unchecked(&sdebug_completions), - scsi_debug_sector_size, sdebug_cylinders_per, sdebug_heads, - sdebug_sectors_per, num_aborts, num_dev_resets, - num_target_resets, num_bus_resets, num_host_resets, -@@ -4328,8 +4328,8 @@ opts_done: - sdebug_any_injecting_opt = true; - else if (SCSI_DEBUG_OPT_SHORT_TRANSFER & opts) - sdebug_any_injecting_opt = true; + static void clear_queue_stats(void) + { - atomic_set(&sdebug_cmnd_count, 0); +- atomic_set(&sdebug_completions, 0); +- atomic_set(&sdebug_miss_cpus, 0); - atomic_set(&sdebug_a_tsf, 0); + atomic_set_unchecked(&sdebug_cmnd_count, 0); ++ atomic_set_unchecked(&sdebug_completions, 0); ++ atomic_set_unchecked(&sdebug_miss_cpus, 0); + atomic_set_unchecked(&sdebug_a_tsf, 0); - return count; } - static DRIVER_ATTR_RW(opts); -@@ -4459,7 +4459,7 @@ static ssize_t every_nth_store(struct device_driver *ddp, const char *buf, - if ((count > 0) && (1 == sscanf(buf, "%d", &nth))) { - scsi_debug_every_nth = nth; -- atomic_set(&sdebug_cmnd_count, 0); -+ atomic_set_unchecked(&sdebug_cmnd_count, 0); - return count; - } - return -EINVAL; -@@ -4783,8 +4783,8 @@ static int __init scsi_debug_init(void) - int k; - int ret; - -- atomic_set(&sdebug_cmnd_count, 0); -- atomic_set(&sdebug_completions, 0); -+ atomic_set_unchecked(&sdebug_cmnd_count, 0); -+ atomic_set_unchecked(&sdebug_completions, 0); - atomic_set(&retired_max_queue, 0); - - if (scsi_debug_ndelay >= 1000000000) { -@@ -5106,9 +5106,9 @@ check_inject(struct scsi_cmnd *scp) - - memset(ep, 0, sizeof(struct sdebug_scmd_extra_t)); - -- if (atomic_inc_return(&sdebug_cmnd_count) >= -+ if (atomic_inc_return_unchecked(&sdebug_cmnd_count) >= - abs(scsi_debug_every_nth)) { -- atomic_set(&sdebug_cmnd_count, 0); -+ atomic_set_unchecked(&sdebug_cmnd_count, 0); - if (scsi_debug_every_nth < -1) - scsi_debug_every_nth = -1; - if (SCSI_DEBUG_OPT_TIMEOUT & scsi_debug_opts) + static void setup_inject(struct sdebug_queue *sqp, + struct sdebug_queued_cmd *sqcp) + { +- if ((atomic_read(&sdebug_cmnd_count) % abs(sdebug_every_nth)) > 0) ++ if ((atomic_read_unchecked(&sdebug_cmnd_count) % abs(sdebug_every_nth)) > 0) + return; + sqcp->inj_recovered = !!(SDEBUG_OPT_RECOVERED_ERR & sdebug_opts); + sqcp->inj_transport = !!(SDEBUG_OPT_TRANSPORT_ERR & sdebug_opts); +@@ -4000,9 +4000,9 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip, + (SDEBUG_OPT_RARE_TSF & sdebug_opts) && + (scsi_result == 0))) { + if ((num_in_q == (qdepth - 1)) && +- (atomic_inc_return(&sdebug_a_tsf) >= ++ (atomic_inc_return_unchecked(&sdebug_a_tsf) >= + abs(sdebug_every_nth))) { +- atomic_set(&sdebug_a_tsf, 0); ++ atomic_set_unchecked(&sdebug_a_tsf, 0); + inject = 1; + scsi_result = device_qfull_result; + } +@@ -4257,10 +4257,10 @@ static int scsi_debug_show_info(struct seq_file *m, struct Scsi_Host *host) + TICK_NSEC / 1000, "statistics", sdebug_statistics, + sdebug_mq_active); + seq_printf(m, "cmnd_count=%d, completions=%d, %s=%d, a_tsf=%d\n", +- atomic_read(&sdebug_cmnd_count), +- atomic_read(&sdebug_completions), +- "miss_cpus", atomic_read(&sdebug_miss_cpus), +- atomic_read(&sdebug_a_tsf)); ++ atomic_read_unchecked(&sdebug_cmnd_count), ++ atomic_read_unchecked(&sdebug_completions), ++ "miss_cpus", atomic_read_unchecked(&sdebug_miss_cpus), ++ atomic_read_unchecked(&sdebug_a_tsf)); + + seq_printf(m, "submit_queues=%d\n", submit_queues); + for (j = 0, sqp = sdebug_q_arr; j < submit_queues; ++j, ++sqp) { +@@ -5213,7 +5213,7 @@ static int sdebug_change_qdepth(struct scsi_device *sdev, int qdepth) + + static bool fake_timeout(struct scsi_cmnd *scp) + { +- if (0 == (atomic_read(&sdebug_cmnd_count) % abs(sdebug_every_nth))) { ++ if (0 == (atomic_read_unchecked(&sdebug_cmnd_count) % abs(sdebug_every_nth))) { + if (sdebug_every_nth < -1) + sdebug_every_nth = -1; + if (SDEBUG_OPT_TIMEOUT & sdebug_opts) +@@ -5244,7 +5244,7 @@ static int scsi_debug_queuecommand(struct Scsi_Host *shost, + + scsi_set_resid(scp, 0); + if (sdebug_statistics) +- atomic_inc(&sdebug_cmnd_count); ++ atomic_inc_unchecked(&sdebug_cmnd_count); + if (unlikely(sdebug_verbose && + !(SDEBUG_OPT_NO_CDB_NOISE & sdebug_opts))) { + char b[120]; diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c -index f704d02..18cad07 100644 +index c71344a..94f1f9e 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c -@@ -1602,7 +1602,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) +@@ -1513,7 +1513,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) shost = sdev->host; scsi_init_cmd_errh(cmd); cmd->result = DID_NO_CONNECT << 16; @@ -73173,7 +73572,7 @@ index f704d02..18cad07 100644 /* * SCSI request completion path will do scsi_device_unbusy(), -@@ -1625,9 +1625,9 @@ static void scsi_softirq_done(struct request *rq) +@@ -1536,9 +1536,9 @@ static void scsi_softirq_done(struct request *rq) INIT_LIST_HEAD(&cmd->eh_entry); @@ -73185,7 +73584,7 @@ index f704d02..18cad07 100644 disposition = scsi_decide_disposition(cmd); if (disposition != SUCCESS && -@@ -1668,7 +1668,7 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd) +@@ -1579,7 +1579,7 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd) struct Scsi_Host *host = cmd->device->host; int rtn = 0; @@ -73195,10 +73594,10 @@ index f704d02..18cad07 100644 /* check if the device is still usable */ if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c -index c7e4b5e..ee7495b 100644 +index 0734927..427833a 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c -@@ -847,7 +847,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \ +@@ -848,7 +848,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \ char *buf) \ { \ struct scsi_device *sdev = to_scsi_device(dev); \ @@ -73208,7 +73607,7 @@ index c7e4b5e..ee7495b 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 8a88226..0d26fd1 100644 +index 0f3a386..1616cee 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c @@ -502,7 +502,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class, @@ -73248,7 +73647,7 @@ index 8a88226..0d26fd1 100644 /* * Check for overflow; dev_loss_tmo is u32 diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c -index 4414816..95c7991 100644 +index 42bca61..ceceb5d 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c @@ -79,7 +79,7 @@ struct iscsi_internal { @@ -73260,16 +73659,16 @@ index 4414816..95c7991 100644 static struct workqueue_struct *iscsi_eh_timer_workq; static DEFINE_IDA(iscsi_sess_ida); -@@ -2074,7 +2074,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) +@@ -2073,7 +2073,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) + int id = 0; int err; - ihost = shost->shost_data; - session->sid = atomic_add_return(1, &iscsi_session_nr); + session->sid = atomic_add_return_unchecked(1, &iscsi_session_nr); if (target_id == ISCSI_MAX_TARGET) { id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL); -@@ -4524,7 +4524,7 @@ static __init int iscsi_transport_init(void) +@@ -4523,7 +4523,7 @@ static __init int iscsi_transport_init(void) printk(KERN_INFO "Loading iSCSI transport class v%s.\n", ISCSI_TRANSPORT_VERSION); @@ -73332,7 +73731,7 @@ index e3cd3ec..97ab643 100644 transport_setup_device(&rport->dev); diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index 41c3a2c..9aa3d32 100644 +index 60bff78..36bbe07 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -112,7 +112,7 @@ static int sd_resume(struct device *); @@ -73344,7 +73743,7 @@ index 41c3a2c..9aa3d32 100644 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); -@@ -1757,7 +1757,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd) +@@ -1762,7 +1762,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd) * * Note: potentially run from within an ISR. Must not block. **/ @@ -73353,7 +73752,7 @@ index 41c3a2c..9aa3d32 100644 { int result = SCpnt->result; unsigned int good_bytes = result ? 0 : scsi_bufflen(SCpnt); -@@ -3071,7 +3071,7 @@ static int sd_probe(struct device *dev) +@@ -3076,7 +3076,7 @@ static int sd_probe(struct device *dev) sdkp->disk = gd; sdkp->index = index; atomic_set(&sdkp->openers, 0); @@ -73437,10 +73836,10 @@ index de2c1bf..60b8563 100644 .read = fuse_read, }; diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c -index 0239b45..b196163 100644 +index 77e6e45..19e6c3d 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -2934,7 +2934,7 @@ int spi_bus_unlock(struct spi_master *master) +@@ -2937,7 +2937,7 @@ int spi_bus_unlock(struct spi_master *master) EXPORT_SYMBOL_GPL(spi_bus_unlock); /* portable code must never pass more than 32 bytes */ @@ -73449,42 +73848,11 @@ index 0239b45..b196163 100644 static u8 *buf; -diff --git a/drivers/staging/android/timed_output.c b/drivers/staging/android/timed_output.c -index aff9cdb..a2f1a81 100644 ---- a/drivers/staging/android/timed_output.c -+++ b/drivers/staging/android/timed_output.c -@@ -26,7 +26,7 @@ - #include "timed_output.h" - - static struct class *timed_output_class; --static atomic_t device_count; -+static atomic_unchecked_t device_count; - - static ssize_t enable_show(struct device *dev, struct device_attribute *attr, - char *buf) -@@ -66,7 +66,7 @@ static int create_timed_output_class(void) - timed_output_class = class_create(THIS_MODULE, "timed_output"); - if (IS_ERR(timed_output_class)) - return PTR_ERR(timed_output_class); -- atomic_set(&device_count, 0); -+ atomic_set_unchecked(&device_count, 0); - timed_output_class->dev_groups = timed_output_groups; - } - -@@ -84,7 +84,7 @@ int timed_output_dev_register(struct timed_output_dev *tdev) - if (ret < 0) - return ret; - -- tdev->index = atomic_inc_return(&device_count); -+ tdev->index = atomic_inc_return_unchecked(&device_count); - tdev->dev = device_create(timed_output_class, NULL, - 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 7c7b477..8f133af 100644 +index 629080f..b6db85a 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c -@@ -311,8 +311,8 @@ static void comedi_file_reset(struct file *file) +@@ -312,8 +312,8 @@ static void comedi_file_reset(struct file *file) } cfp->last_attached = dev->attached; cfp->last_detach_count = dev->detach_count; @@ -73495,7 +73863,7 @@ index 7c7b477..8f133af 100644 } static void comedi_file_check(struct file *file) -@@ -1989,7 +1989,7 @@ static int do_setrsubd_ioctl(struct comedi_device *dev, unsigned long arg, +@@ -1992,7 +1992,7 @@ static int do_setrsubd_ioctl(struct comedi_device *dev, unsigned long arg, !(s_old->async->cmd.flags & CMDF_WRITE)) return -EBUSY; @@ -73504,7 +73872,7 @@ index 7c7b477..8f133af 100644 return 0; } -@@ -2031,7 +2031,7 @@ static int do_setwsubd_ioctl(struct comedi_device *dev, unsigned long arg, +@@ -2034,7 +2034,7 @@ static int do_setwsubd_ioctl(struct comedi_device *dev, unsigned long arg, (s_old->async->cmd.flags & CMDF_WRITE)) return -EBUSY; @@ -73592,7 +73960,7 @@ index 50c162e..b5d8b7e 100644 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 62e5eca..fbd4927 100644 +index a06b46c..b49c700 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) @@ -73623,52 +73991,32 @@ index a60d72f..ef54d2f 100644 atomic_t ksnc_conn_refcount;/* conn refcount */ atomic_t ksnc_sock_refcount;/* sock refcount */ ksock_sched_t *ksnc_scheduler; /* who schedules this connection -diff --git a/drivers/staging/lustre/lnet/libcfs/module.c b/drivers/staging/lustre/lnet/libcfs/module.c -index cdc640b..b5d7a2b 100644 ---- a/drivers/staging/lustre/lnet/libcfs/module.c -+++ b/drivers/staging/lustre/lnet/libcfs/module.c -@@ -210,11 +210,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 - }; - - int lprocfs_call_handler(void *data, int write, loff_t *ppos, diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c -index dcb6e50..6d3b10f 100644 +index a63d86c..aea8493 100644 --- a/drivers/staging/lustre/lnet/selftest/brw_test.c +++ b/drivers/staging/lustre/lnet/selftest/brw_test.c -@@ -490,13 +490,11 @@ brw_server_handle(struct srpc_server_rpc *rpc) +@@ -488,14 +488,11 @@ brw_server_handle(struct srpc_server_rpc *rpc) return 0; } --sfw_test_client_ops_t brw_test_client; +-struct sfw_test_client_ops brw_test_client; +- -void brw_init_test_client(void) -{ - brw_test_client.tso_init = brw_client_init; - brw_test_client.tso_fini = brw_client_fini; - brw_test_client.tso_prep_rpc = brw_client_prep_rpc; - brw_test_client.tso_done_rpc = brw_client_done_rpc; -+sfw_test_client_ops_t brw_test_client = { ++struct sfw_test_client_ops brw_test_client = { + .tso_init = brw_client_init, + .tso_fini = brw_client_fini, + .tso_prep_rpc = brw_client_prep_rpc, + .tso_done_rpc = brw_client_done_rpc, }; - srpc_service_t brw_test_service; + struct srpc_service brw_test_service; diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c -index e2c5323..403c917 100644 +index 30e4f71..a3216ff 100644 --- a/drivers/staging/lustre/lnet/selftest/framework.c +++ b/drivers/staging/lustre/lnet/selftest/framework.c @@ -1659,12 +1659,10 @@ sfw_startup(void) @@ -73685,14 +74033,15 @@ index e2c5323..403c917 100644 rc = sfw_register_test(&ping_test_service, &ping_test_client); LASSERT(!rc); diff --git a/drivers/staging/lustre/lnet/selftest/ping_test.c b/drivers/staging/lustre/lnet/selftest/ping_test.c -index 81a4504..507a945 100644 +index ad26fe9..bbe81b5 100644 --- a/drivers/staging/lustre/lnet/selftest/ping_test.c +++ b/drivers/staging/lustre/lnet/selftest/ping_test.c -@@ -210,14 +210,12 @@ ping_server_handle(struct srpc_server_rpc *rpc) +@@ -210,15 +210,12 @@ ping_server_handle(struct srpc_server_rpc *rpc) return 0; } --sfw_test_client_ops_t ping_test_client; +-struct sfw_test_client_ops ping_test_client; +- -void ping_init_test_client(void) -{ - ping_test_client.tso_init = ping_client_init; @@ -73700,38 +74049,38 @@ index 81a4504..507a945 100644 - ping_test_client.tso_prep_rpc = ping_client_prep_rpc; - ping_test_client.tso_done_rpc = ping_client_done_rpc; -} -+sfw_test_client_ops_t ping_test_client = { ++struct sfw_test_client_ops ping_test_client = { + .tso_init = ping_client_init, + .tso_fini = ping_client_fini, + .tso_prep_rpc = ping_client_prep_rpc, + .tso_done_rpc = ping_client_done_rpc, +}; - srpc_service_t ping_test_service; - void ping_init_test_service(void) + struct srpc_service ping_test_service; + diff --git a/drivers/staging/lustre/lnet/selftest/selftest.h b/drivers/staging/lustre/lnet/selftest/selftest.h -index e689ca1..b7555bb 100644 +index 4eac1c9..498313a 100644 --- a/drivers/staging/lustre/lnet/selftest/selftest.h +++ b/drivers/staging/lustre/lnet/selftest/selftest.h -@@ -608,13 +608,11 @@ srpc_wait_service_shutdown(srpc_service_t *sv) +@@ -612,13 +612,11 @@ srpc_wait_service_shutdown(struct srpc_service *sv) } - extern sfw_test_client_ops_t brw_test_client; + extern struct sfw_test_client_ops brw_test_client; -void brw_init_test_client(void); - extern srpc_service_t brw_test_service; + extern struct srpc_service brw_test_service; void brw_init_test_service(void); - extern sfw_test_client_ops_t ping_test_client; + extern struct sfw_test_client_ops ping_test_client; -void ping_init_test_client(void); - extern srpc_service_t ping_test_service; + extern struct srpc_service ping_test_service; void ping_init_test_service(void); diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h -index 5aae1d0..75f31ca 100644 +index 9c53c17..c8b7b4c 100644 --- a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h -@@ -759,7 +759,7 @@ static inline ino_t lu_igif_ino(const struct lu_fid *fid) +@@ -788,7 +788,7 @@ static inline ino_t lu_igif_ino(const struct lu_fid *fid) return fid_seq(fid); } @@ -73740,7 +74089,7 @@ index 5aae1d0..75f31ca 100644 /** * Get inode generation from a igif. -@@ -826,8 +826,8 @@ static inline int fid_is_zero(const struct lu_fid *fid) +@@ -855,8 +855,8 @@ static inline int fid_is_zero(const struct lu_fid *fid) return fid_seq(fid) == 0 && fid_oid(fid) == 0; } @@ -73751,7 +74100,7 @@ index 5aae1d0..75f31ca 100644 static inline int lu_fid_eq(const struct lu_fid *f0, const struct lu_fid *f1) { -@@ -1131,7 +1131,7 @@ struct ptlrpc_body_v2 { +@@ -1161,7 +1161,7 @@ struct ptlrpc_body_v2 { __u64 pb_padding[4]; }; @@ -73760,7 +74109,7 @@ index 5aae1d0..75f31ca 100644 /* message body offset for lustre_msg_v2 */ /* ptlrpc body offset in all request/reply messages */ -@@ -1361,7 +1361,7 @@ struct obd_connect_data { +@@ -1394,7 +1394,7 @@ struct obd_connect_data { * reserve the flag for future use. */ @@ -73769,7 +74118,7 @@ index 5aae1d0..75f31ca 100644 /* * Supported checksum algorithms. Up to 32 checksum types are supported. -@@ -1708,10 +1708,10 @@ struct hsm_state_set { +@@ -1748,10 +1748,10 @@ struct hsm_state_set { __u64 hss_clearmask; }; @@ -73783,7 +74132,7 @@ index 5aae1d0..75f31ca 100644 /* ost_body.data values for OST_BRW */ -@@ -1753,7 +1753,7 @@ struct obd_ioobj { +@@ -1798,7 +1798,7 @@ struct obd_ioobj { #define ioobj_max_brw_set(ioo, num) \ do { (ioo)->ioo_max_brw = ((num) - 1) << IOOBJ_MAX_BRW_BITS; } while (0) @@ -73792,7 +74141,7 @@ index 5aae1d0..75f31ca 100644 /* multiple of 8 bytes => can array */ struct niobuf_remote { -@@ -1762,7 +1762,7 @@ struct niobuf_remote { +@@ -1807,7 +1807,7 @@ struct niobuf_remote { __u32 flags; }; @@ -73801,7 +74150,7 @@ index 5aae1d0..75f31ca 100644 /* lock value block communicated between the filter and llite */ -@@ -1827,7 +1827,7 @@ struct obd_quotactl { +@@ -1872,7 +1872,7 @@ struct obd_quotactl { struct obd_dqblk qc_dqblk; }; @@ -73810,7 +74159,7 @@ index 5aae1d0..75f31ca 100644 #define Q_QUOTACHECK 0x800100 /* deprecated as of 2.4 */ #define Q_INITQUOTA 0x800101 /* deprecated as of 2.4 */ -@@ -1939,7 +1939,7 @@ enum mdt_reint_cmd { +@@ -1984,7 +1984,7 @@ enum mdt_reint_cmd { REINT_MAX }; @@ -73819,7 +74168,7 @@ index 5aae1d0..75f31ca 100644 /* the disposition of the intent outlines what was executed */ #define DISP_IT_EXECD 0x00000001 -@@ -2098,7 +2098,7 @@ struct mdt_body { +@@ -2143,7 +2143,7 @@ struct mdt_body { __u64 padding_10; }; /* 216 */ @@ -73828,7 +74177,7 @@ index 5aae1d0..75f31ca 100644 struct mdt_ioepoch { struct lustre_handle handle; -@@ -2107,7 +2107,7 @@ struct mdt_ioepoch { +@@ -2152,7 +2152,7 @@ struct mdt_ioepoch { __u32 padding; }; @@ -73837,16 +74186,16 @@ index 5aae1d0..75f31ca 100644 /* permissions for md_perm.mp_perm */ enum { -@@ -2434,7 +2434,7 @@ struct mdt_rec_reint { +@@ -2479,7 +2479,7 @@ struct mdt_rec_reint { __u32 rr_padding_4; /* also fix lustre_swab_mdt_rec_reint */ }; -void lustre_swab_mdt_rec_reint(struct mdt_rec_reint *rr); +void lustre_swab_mdt_rec_reint(void *rr); + /* lmv structures */ struct lmv_desc { - __u32 ld_tgt_count; /* how many MDS's */ -@@ -2624,13 +2624,13 @@ union ldlm_gl_desc { +@@ -2678,13 +2678,13 @@ union ldlm_gl_desc { struct ldlm_gl_lquota_desc lquota_desc; }; @@ -73862,7 +74211,7 @@ index 5aae1d0..75f31ca 100644 struct ldlm_resource_desc { enum ldlm_type lr_type; -@@ -2655,7 +2655,7 @@ struct ldlm_request { +@@ -2709,7 +2709,7 @@ struct ldlm_request { struct lustre_handle lock_handle[LDLM_LOCKREQ_HANDLES]; }; @@ -73871,7 +74220,7 @@ index 5aae1d0..75f31ca 100644 /* If LDLM_ENQUEUE, 1 slot is already occupied, 1 is available. * Otherwise, 2 are available. -@@ -2678,7 +2678,7 @@ struct ldlm_reply { +@@ -2732,7 +2732,7 @@ struct ldlm_reply { __u64 lock_policy_res2; }; @@ -73880,7 +74229,7 @@ index 5aae1d0..75f31ca 100644 #define ldlm_flags_to_wire(flags) ((__u32)(flags)) #define ldlm_flags_from_wire(flags) ((__u64)(flags)) -@@ -2723,7 +2723,7 @@ struct mgs_target_info { +@@ -2777,7 +2777,7 @@ struct mgs_target_info { char mti_params[MTI_PARAM_MAXLEN]; }; @@ -73889,7 +74238,7 @@ index 5aae1d0..75f31ca 100644 struct mgs_nidtbl_entry { __u64 mne_version; /* table version of this entry */ -@@ -2750,14 +2750,14 @@ struct mgs_config_body { +@@ -2804,14 +2804,14 @@ struct mgs_config_body { __u32 mcb_units; /* # of units for bulk transfer */ }; @@ -73906,7 +74255,7 @@ index 5aae1d0..75f31ca 100644 /* Config marker flags (in config log) */ #define CM_START 0x01 -@@ -3184,9 +3184,9 @@ struct ll_fiemap_info_key { +@@ -3238,9 +3238,9 @@ struct ll_fiemap_info_key { struct ll_user_fiemap fiemap; }; @@ -73919,7 +74268,7 @@ index 5aae1d0..75f31ca 100644 void lustre_swab_lov_user_md_v1(struct lov_user_md_v1 *lum); void lustre_swab_lov_user_md_v3(struct lov_user_md_v3 *lum); -@@ -3195,19 +3195,19 @@ void lustre_swab_lov_user_md_objects(struct lov_user_ost_data *lod, +@@ -3249,19 +3249,19 @@ void lustre_swab_lov_user_md_objects(struct lov_user_ost_data *lod, void lustre_swab_lov_mds_md(struct lov_mds_md *lmm); /* llog_swab.c */ @@ -73946,7 +74295,7 @@ index 5aae1d0..75f31ca 100644 /* security opcodes */ enum sec_cmd { -@@ -3240,7 +3240,7 @@ struct lustre_capa { +@@ -3294,7 +3294,7 @@ struct lustre_capa { __u8 lc_hmac[CAPA_HMAC_MAX_LEN]; /** HMAC */ } __packed; @@ -73955,7 +74304,7 @@ index 5aae1d0..75f31ca 100644 /** lustre_capa::lc_opc */ enum { -@@ -3324,7 +3324,7 @@ struct layout_intent { +@@ -3378,7 +3378,7 @@ struct layout_intent { __u64 li_end; }; @@ -73964,7 +74313,7 @@ index 5aae1d0..75f31ca 100644 /** * On the wire version of hsm_progress structure. -@@ -3344,12 +3344,10 @@ struct hsm_progress_kernel { +@@ -3398,12 +3398,10 @@ struct hsm_progress_kernel { __u64 hpk_padding2; } __packed; @@ -73981,7 +74330,7 @@ index 5aae1d0..75f31ca 100644 /** layout swap request structure * fid1 and fid2 are in mdt_body -@@ -3358,7 +3356,7 @@ struct mdc_swap_layouts { +@@ -3412,7 +3410,7 @@ struct mdc_swap_layouts { __u64 msl_flags; } __packed; @@ -73990,7 +74339,7 @@ index 5aae1d0..75f31ca 100644 struct close_data { struct lustre_handle cd_handle; -@@ -3367,7 +3365,7 @@ struct close_data { +@@ -3421,7 +3419,7 @@ struct close_data { __u64 cd_reserved[8]; }; @@ -74000,10 +74349,10 @@ index 5aae1d0..75f31ca 100644 #endif /** @} lustreidl */ diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h -index 8b0364f..66ddfbf 100644 +index 9cade14..28c1861 100644 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h -@@ -964,9 +964,9 @@ struct ldlm_ast_work { +@@ -968,9 +968,9 @@ struct ldlm_ast_work { struct ldlm_enqueue_info { __u32 ei_type; /** Type of the lock being enqueued. */ __u32 ei_mode; /** Mode of the lock being enqueued. */ @@ -74016,7 +74365,7 @@ index 8b0364f..66ddfbf 100644 void *ei_cbdata; /** Data to be passed into callbacks. */ }; -@@ -1060,7 +1060,7 @@ struct ldlm_callback_suite { +@@ -1064,7 +1064,7 @@ struct ldlm_callback_suite { ldlm_completion_callback lcs_completion; ldlm_blocking_callback lcs_blocking; ldlm_glimpse_callback lcs_glimpse; @@ -74026,10 +74375,10 @@ index 8b0364f..66ddfbf 100644 /* ldlm_lockd.c */ int ldlm_get_ref(void); diff --git a/drivers/staging/lustre/lustre/include/lustre_net.h b/drivers/staging/lustre/lustre/include/lustre_net.h -index 69586a52..e4a2921 100644 +index a7973d5..b44385e 100644 --- a/drivers/staging/lustre/lustre/include/lustre_net.h +++ b/drivers/staging/lustre/lustre/include/lustre_net.h -@@ -2571,7 +2571,7 @@ void *lustre_msg_buf_v2(struct lustre_msg_v2 *m, int n, int min_size); +@@ -2573,7 +2573,7 @@ void *lustre_msg_buf_v2(struct lustre_msg_v2 *m, int n, int min_size); void *lustre_msg_buf(struct lustre_msg *m, int n, int minlen); int lustre_msg_buflen(struct lustre_msg *m, int n); int lustre_msg_bufcount(struct lustre_msg *m); @@ -74039,10 +74388,10 @@ index 69586a52..e4a2921 100644 void lustre_msghdr_set_flags(struct lustre_msg *msg, __u32 flags); __u32 lustre_msg_get_flags(struct lustre_msg *msg); diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h -index 4264d97..038b93f 100644 +index 2d926e0..48c1add 100644 --- a/drivers/staging/lustre/lustre/include/obd.h +++ b/drivers/staging/lustre/lustre/include/obd.h -@@ -1195,7 +1195,7 @@ struct md_ops { +@@ -1134,7 +1134,7 @@ struct md_ops { * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a * wrapper function in include/linux/obd_class.h. */ @@ -74052,10 +74401,10 @@ index 4264d97..038b93f 100644 struct lsm_operations { void (*lsm_free)(struct lov_stripe_md *); diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c -index b88b786..645197d 100644 +index 349bfcc..fde40a7 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c -@@ -148,7 +148,7 @@ static int ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, +@@ -147,7 +147,7 @@ static int ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int added = (mode == LCK_NL); int overlaps = 0; int splitted = 0; @@ -74065,10 +74414,10 @@ index b88b786..645197d 100644 CDEBUG(D_DLMTRACE, "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n", diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c -index 74e193e..c23cd85 100644 +index 107314e..528c5a6 100644 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c -@@ -1828,8 +1828,9 @@ static int ldlm_chain_lock_for_replay(struct ldlm_lock *lock, void *closure) +@@ -1857,8 +1857,9 @@ static int ldlm_chain_lock_for_replay(struct ldlm_lock *lock, void *closure) static int replay_lock_interpret(const struct lu_env *env, struct ptlrpc_request *req, @@ -74079,7 +74428,7 @@ index 74e193e..c23cd85 100644 struct ldlm_lock *lock; struct ldlm_reply *reply; struct obd_export *exp; -@@ -1956,7 +1957,7 @@ static int replay_one_lock(struct obd_import *imp, struct ldlm_lock *lock) +@@ -1985,7 +1986,7 @@ static int replay_one_lock(struct obd_import *imp, struct ldlm_lock *lock) CLASSERT(sizeof(*aa) <= sizeof(req->rq_async_args)); aa = ptlrpc_req_async_args(req); aa->lock_handle = body->lock_handle[0]; @@ -74089,7 +74438,7 @@ index 74e193e..c23cd85 100644 return 0; diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c -index e4c8288..7e9ed16 100644 +index 4b00d1a..dd3cc63 100644 --- a/drivers/staging/lustre/lustre/llite/dir.c +++ b/drivers/staging/lustre/lustre/llite/dir.c @@ -140,7 +140,7 @@ @@ -74102,10 +74451,10 @@ index e4c8288..7e9ed16 100644 struct inode *inode = page0->mapping->host; int hash64 = ll_i2sbi(inode)->ll_flags & LL_SBI_64BIT_HASH; diff --git a/drivers/staging/lustre/lustre/lov/lov_io.c b/drivers/staging/lustre/lustre/lov/lov_io.c -index 4296aac..c485767 100644 +index 86cb3f8..f224438 100644 --- a/drivers/staging/lustre/lustre/lov/lov_io.c +++ b/drivers/staging/lustre/lustre/lov/lov_io.c -@@ -831,12 +831,32 @@ static void lov_empty_io_fini(const struct lu_env *env, +@@ -814,12 +814,32 @@ static void lov_empty_io_fini(const struct lu_env *env, } static void lov_empty_impossible(const struct lu_env *env, @@ -74132,15 +74481,15 @@ index 4296aac..c485767 100644 + +static int lov_empty_impossible4(const struct lu_env *env, + const struct cl_io_slice *slice, -+ const struct cl_page_slice *page, -+ unsigned from, unsigned to) ++ struct cl_page_list *queue, int from, int to, ++ cl_commit_cbt cb) +{ + LBUG(); +} /** * An io operation vector for files without stripes. -@@ -846,32 +866,32 @@ static const struct cl_io_operations lov_empty_io_ops = { +@@ -829,32 +849,32 @@ static const struct cl_io_operations lov_empty_io_ops = { [CIT_READ] = { .cio_fini = lov_empty_io_fini, #if 0 @@ -74189,20 +74538,14 @@ index 4296aac..c485767 100644 }, [CIT_FSYNC] = { .cio_fini = lov_empty_io_fini -@@ -882,13 +902,13 @@ static const struct cl_io_operations lov_empty_io_ops = { +@@ -863,8 +883,8 @@ static const struct cl_io_operations lov_empty_io_ops = { + .cio_fini = lov_empty_io_fini + } }, - .req_op = { - [CRT_READ] = { -- .cio_submit = LOV_EMPTY_IMPOSSIBLE -+ .cio_submit = lov_empty_impossible3 - }, - [CRT_WRITE] = { -- .cio_submit = LOV_EMPTY_IMPOSSIBLE -+ .cio_submit = lov_empty_impossible3 - } - }, -- .cio_commit_write = LOV_EMPTY_IMPOSSIBLE -+ .cio_commit_write = lov_empty_impossible4 +- .cio_submit = LOV_EMPTY_IMPOSSIBLE, +- .cio_commit_async = LOV_EMPTY_IMPOSSIBLE ++ .cio_submit = lov_empty_impossible3, ++ .cio_commit_async = lov_empty_impossible4 }; int lov_io_init_raid0(const struct lu_env *env, struct cl_object *obj, @@ -74282,10 +74625,10 @@ index 967ba2e..6f341521 100644 lustre_swab_llog_rec(&h->llh_hdr); diff --git a/drivers/staging/lustre/lustre/osc/osc_request.c b/drivers/staging/lustre/lustre/osc/osc_request.c -index 30526eb..7cfe274 100644 +index 47417f8..1d0354c 100644 --- a/drivers/staging/lustre/lustre/osc/osc_request.c +++ b/drivers/staging/lustre/lustre/osc/osc_request.c -@@ -211,8 +211,9 @@ static inline void osc_pack_req_body(struct ptlrpc_request *req, +@@ -212,8 +212,9 @@ static inline void osc_pack_req_body(struct ptlrpc_request *req, static int osc_getattr_interpret(const struct lu_env *env, struct ptlrpc_request *req, @@ -74296,7 +74639,7 @@ index 30526eb..7cfe274 100644 struct ost_body *body; if (rc != 0) -@@ -257,7 +258,7 @@ static int osc_getattr_async(struct obd_export *exp, struct obd_info *oinfo, +@@ -258,7 +259,7 @@ static int osc_getattr_async(struct obd_export *exp, struct obd_info *oinfo, osc_pack_req_body(req, oinfo); ptlrpc_request_set_replen(req); @@ -74305,7 +74648,7 @@ index 30526eb..7cfe274 100644 CLASSERT(sizeof(*aa) <= sizeof(req->rq_async_args)); aa = ptlrpc_req_async_args(req); -@@ -353,8 +354,9 @@ out: +@@ -354,8 +355,9 @@ out: static int osc_setattr_interpret(const struct lu_env *env, struct ptlrpc_request *req, @@ -74316,7 +74659,7 @@ index 30526eb..7cfe274 100644 struct ost_body *body; if (rc != 0) -@@ -404,8 +406,7 @@ int osc_setattr_async_base(struct obd_export *exp, struct obd_info *oinfo, +@@ -405,8 +407,7 @@ int osc_setattr_async_base(struct obd_export *exp, struct obd_info *oinfo, /* Do not wait for response. */ ptlrpcd_add_req(req); } else { @@ -74326,7 +74669,7 @@ index 30526eb..7cfe274 100644 CLASSERT(sizeof(*sa) <= sizeof(req->rq_async_args)); sa = ptlrpc_req_async_args(req); -@@ -547,7 +548,7 @@ int osc_punch_base(struct obd_export *exp, struct obd_info *oinfo, +@@ -548,7 +549,7 @@ int osc_punch_base(struct obd_export *exp, struct obd_info *oinfo, ptlrpc_request_set_replen(req); @@ -74335,7 +74678,7 @@ index 30526eb..7cfe274 100644 CLASSERT(sizeof(*sa) <= sizeof(req->rq_async_args)); sa = ptlrpc_req_async_args(req); sa->sa_oa = oinfo->oi_oa; -@@ -2139,8 +2140,9 @@ static int osc_enqueue_fini(struct ptlrpc_request *req, struct ost_lvb *lvb, +@@ -2177,8 +2178,9 @@ static int osc_enqueue_fini(struct ptlrpc_request *req, static int osc_enqueue_interpret(const struct lu_env *env, struct ptlrpc_request *req, @@ -74344,11 +74687,11 @@ index 30526eb..7cfe274 100644 { + struct osc_enqueue_args *aa = _aa; struct ldlm_lock *lock; - struct lustre_handle handle; - __u32 mode; -@@ -2347,8 +2349,7 @@ int osc_enqueue_base(struct obd_export *exp, struct ldlm_res_id *res_id, - aa->oa_lockh = lockh; - aa->oa_agl = !!agl; + struct lustre_handle *lockh = &aa->oa_lockh; + enum ldlm_mode mode = aa->oa_mode; +@@ -2365,8 +2367,7 @@ no_match: + aa->oa_flags = NULL; + } - req->rq_interpret_reply = - (ptlrpc_interpterer_t)osc_enqueue_interpret; @@ -74356,7 +74699,7 @@ index 30526eb..7cfe274 100644 if (rqset == PTLRPCD_SET) ptlrpcd_add_req(req); else -@@ -2423,8 +2424,9 @@ int osc_cancel_base(struct lustre_handle *lockh, __u32 mode) +@@ -2442,8 +2443,9 @@ int osc_cancel_base(struct lustre_handle *lockh, __u32 mode) static int osc_statfs_interpret(const struct lu_env *env, struct ptlrpc_request *req, @@ -74367,20 +74710,20 @@ index 30526eb..7cfe274 100644 struct obd_statfs *msfs; if (rc == -EBADR) -@@ -2492,7 +2494,7 @@ static int osc_statfs_async(struct obd_export *exp, +@@ -2511,7 +2513,7 @@ static int osc_statfs_async(struct obd_export *exp, req->rq_no_delay = 1; } - req->rq_interpret_reply = (ptlrpc_interpterer_t)osc_statfs_interpret; + req->rq_interpret_reply = osc_statfs_interpret; - CLASSERT (sizeof(*aa) <= sizeof(req->rq_async_args)); + CLASSERT(sizeof(*aa) <= sizeof(req->rq_async_args)); aa = ptlrpc_req_async_args(req); aa->aa_oi = oinfo; diff --git a/drivers/staging/lustre/lustre/ptlrpc/layout.c b/drivers/staging/lustre/lustre/ptlrpc/layout.c -index 5b06901..e27766d 100644 +index c0ecd16..27f0540 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/layout.c +++ b/drivers/staging/lustre/lustre/ptlrpc/layout.c -@@ -768,8 +768,8 @@ struct req_capsule; +@@ -785,8 +785,8 @@ struct req_capsule; .rmf_name = (name), \ .rmf_flags = (flags), \ .rmf_size = (size), \ @@ -74391,7 +74734,7 @@ index 5b06901..e27766d 100644 } struct req_msg_field RMF_GENERIC_DATA = -@@ -1872,8 +1872,7 @@ static void *__req_capsule_get(struct req_capsule *pill, +@@ -1893,8 +1893,7 @@ static void *__req_capsule_get(struct req_capsule *pill, msg = __req_msg(pill, loc); LASSERT(msg); @@ -74402,7 +74745,7 @@ index 5b06901..e27766d 100644 if (field->rmf_flags & RMF_F_STRUCT_ARRAY) { /* diff --git a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c -index 492d63f..a8a4f76 100644 +index 811acf6..44a4c33 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c +++ b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c @@ -693,7 +693,7 @@ int lustre_msg_bufcount(struct lustre_msg *m) @@ -74414,7 +74757,7 @@ index 492d63f..a8a4f76 100644 { /* max_len == 0 means the string should fill the buffer */ char *str; -@@ -1467,8 +1467,10 @@ EXPORT_SYMBOL(do_set_info_async); +@@ -1465,8 +1465,10 @@ EXPORT_SYMBOL(do_set_info_async); /* byte flipping routines for all wire types declared in * lustre_idl.h implemented here. */ @@ -74426,7 +74769,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&b->pb_type); __swab32s(&b->pb_version); __swab32s(&b->pb_opc); -@@ -1499,8 +1501,10 @@ void lustre_swab_ptlrpc_body(struct ptlrpc_body *b) +@@ -1497,8 +1499,10 @@ void lustre_swab_ptlrpc_body(struct ptlrpc_body *b) } EXPORT_SYMBOL(lustre_swab_ptlrpc_body); @@ -74438,8 +74781,8 @@ index 492d63f..a8a4f76 100644 __swab64s(&ocd->ocd_connect_flags); __swab32s(&ocd->ocd_version); __swab32s(&ocd->ocd_grant); -@@ -1575,8 +1579,10 @@ static void lustre_swab_obdo(struct obdo *o) - +@@ -1572,8 +1576,10 @@ static void lustre_swab_obdo(struct obdo *o) + CLASSERT(offsetof(typeof(*o), o_padding_6) != 0); } -void lustre_swab_obd_statfs(struct obd_statfs *os) @@ -74450,7 +74793,7 @@ index 492d63f..a8a4f76 100644 __swab64s(&os->os_type); __swab64s(&os->os_blocks); __swab64s(&os->os_bfree); -@@ -1600,42 +1606,54 @@ void lustre_swab_obd_statfs(struct obd_statfs *os) +@@ -1597,42 +1603,54 @@ void lustre_swab_obd_statfs(struct obd_statfs *os) } EXPORT_SYMBOL(lustre_swab_obd_statfs); @@ -74511,7 +74854,7 @@ index 492d63f..a8a4f76 100644 lustre_swab_lu_fid(&desc->lquota_desc.gl_id.qid_fid); __swab64s(&desc->lquota_desc.gl_flags); __swab64s(&desc->lquota_desc.gl_ver); -@@ -1679,8 +1697,10 @@ void lustre_swab_lquota_lvb(struct lquota_lvb *lvb) +@@ -1676,8 +1694,10 @@ void lustre_swab_lquota_lvb(struct lquota_lvb *lvb) } EXPORT_SYMBOL(lustre_swab_lquota_lvb); @@ -74523,7 +74866,7 @@ index 492d63f..a8a4f76 100644 lustre_swab_lu_fid(&b->fid1); lustre_swab_lu_fid(&b->fid2); /* handle is opaque */ -@@ -1713,8 +1733,10 @@ void lustre_swab_mdt_body(struct mdt_body *b) +@@ -1710,8 +1730,10 @@ void lustre_swab_mdt_body(struct mdt_body *b) } EXPORT_SYMBOL(lustre_swab_mdt_body); @@ -74535,7 +74878,7 @@ index 492d63f..a8a4f76 100644 /* handle is opaque */ __swab64s(&b->ioepoch); __swab32s(&b->flags); -@@ -1722,8 +1744,9 @@ void lustre_swab_mdt_ioepoch(struct mdt_ioepoch *b) +@@ -1719,8 +1741,9 @@ void lustre_swab_mdt_ioepoch(struct mdt_ioepoch *b) } EXPORT_SYMBOL(lustre_swab_mdt_ioepoch); @@ -74546,7 +74889,7 @@ index 492d63f..a8a4f76 100644 int i; __swab32s(&mti->mti_lustre_ver); -@@ -1761,16 +1784,20 @@ void lustre_swab_mgs_nidtbl_entry(struct mgs_nidtbl_entry *entry) +@@ -1758,16 +1781,20 @@ void lustre_swab_mgs_nidtbl_entry(struct mgs_nidtbl_entry *entry) } EXPORT_SYMBOL(lustre_swab_mgs_nidtbl_entry); @@ -74569,7 +74912,7 @@ index 492d63f..a8a4f76 100644 __swab64s(&body->mcr_offset); __swab64s(&body->mcr_size); } -@@ -1798,8 +1825,10 @@ static void lustre_swab_obd_dqblk(struct obd_dqblk *b) +@@ -1795,8 +1822,10 @@ static void lustre_swab_obd_dqblk(struct obd_dqblk *b) CLASSERT(offsetof(typeof(*b), dqb_padding) != 0); } @@ -74581,7 +74924,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&q->qc_cmd); __swab32s(&q->qc_type); __swab32s(&q->qc_id); -@@ -1840,8 +1869,9 @@ static void lustre_swab_fiemap_extent(struct ll_fiemap_extent *fm_extent) +@@ -1837,8 +1866,9 @@ static void lustre_swab_fiemap_extent(struct ll_fiemap_extent *fm_extent) __swab32s(&fm_extent->fe_device); } @@ -74592,7 +74935,7 @@ index 492d63f..a8a4f76 100644 int i; __swab64s(&fiemap->fm_start); -@@ -1856,8 +1886,10 @@ void lustre_swab_fiemap(struct ll_user_fiemap *fiemap) +@@ -1853,8 +1883,10 @@ void lustre_swab_fiemap(struct ll_user_fiemap *fiemap) } EXPORT_SYMBOL(lustre_swab_fiemap); @@ -74604,7 +74947,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&rr->rr_opcode); __swab32s(&rr->rr_cap); __swab32s(&rr->rr_fsuid); -@@ -1989,8 +2021,10 @@ static void lustre_swab_ldlm_policy_data(ldlm_wire_policy_data_t *d) +@@ -1986,8 +2018,10 @@ static void lustre_swab_ldlm_policy_data(ldlm_wire_policy_data_t *d) __swab32s(&d->l_flock.lfw_pid); } @@ -74616,7 +74959,7 @@ index 492d63f..a8a4f76 100644 __swab64s(&i->opc); } EXPORT_SYMBOL(lustre_swab_ldlm_intent); -@@ -2010,8 +2044,10 @@ static void lustre_swab_ldlm_lock_desc(struct ldlm_lock_desc *l) +@@ -2007,8 +2041,10 @@ static void lustre_swab_ldlm_lock_desc(struct ldlm_lock_desc *l) lustre_swab_ldlm_policy_data(&l->l_policy_data); } @@ -74628,7 +74971,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&rq->lock_flags); lustre_swab_ldlm_lock_desc(&rq->lock_desc); __swab32s(&rq->lock_count); -@@ -2019,8 +2055,10 @@ void lustre_swab_ldlm_request(struct ldlm_request *rq) +@@ -2016,8 +2052,10 @@ void lustre_swab_ldlm_request(struct ldlm_request *rq) } EXPORT_SYMBOL(lustre_swab_ldlm_request); @@ -74640,7 +74983,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&r->lock_flags); CLASSERT(offsetof(typeof(*r), lock_padding) != 0); lustre_swab_ldlm_lock_desc(&r->lock_desc); -@@ -2031,8 +2069,10 @@ void lustre_swab_ldlm_reply(struct ldlm_reply *r) +@@ -2028,8 +2066,10 @@ void lustre_swab_ldlm_reply(struct ldlm_reply *r) EXPORT_SYMBOL(lustre_swab_ldlm_reply); /* Dump functions */ @@ -74652,7 +74995,7 @@ index 492d63f..a8a4f76 100644 CDEBUG(D_RPCTRACE, "obd_ioobj: ioo_oid=" DOSTID ", ioo_max_brw=%#x, ioo_bufct=%d\n", POSTID(&ioo->ioo_oid), ioo->ioo_max_brw, -@@ -2040,8 +2080,10 @@ void dump_ioo(struct obd_ioobj *ioo) +@@ -2037,8 +2077,10 @@ void dump_ioo(struct obd_ioobj *ioo) } EXPORT_SYMBOL(dump_ioo); @@ -74664,7 +75007,7 @@ index 492d63f..a8a4f76 100644 CDEBUG(D_RPCTRACE, "niobuf_remote: offset=%llu, len=%d, flags=%x\n", nb->offset, nb->len, nb->flags); } -@@ -2109,14 +2151,18 @@ static void dump_obdo(struct obdo *oa) +@@ -2106,14 +2148,18 @@ static void dump_obdo(struct obdo *oa) CDEBUG(D_RPCTRACE, "obdo: o_lcookie = (llog_cookie dumping not yet implemented)\n"); } @@ -74685,7 +75028,7 @@ index 492d63f..a8a4f76 100644 CDEBUG(D_RPCTRACE, "rmf_rcs: %d\n", *rc); } EXPORT_SYMBOL(dump_rcs); -@@ -2193,8 +2239,10 @@ void _debug_req(struct ptlrpc_request *req, +@@ -2190,8 +2236,10 @@ void _debug_req(struct ptlrpc_request *req, } EXPORT_SYMBOL(_debug_req); @@ -74697,7 +75040,7 @@ index 492d63f..a8a4f76 100644 lustre_swab_lu_fid(&c->lc_fid); __swab64s(&c->lc_opc); __swab64s(&c->lc_uid); -@@ -2206,15 +2254,19 @@ void lustre_swab_lustre_capa(struct lustre_capa *c) +@@ -2203,15 +2251,19 @@ void lustre_swab_lustre_capa(struct lustre_capa *c) } EXPORT_SYMBOL(lustre_swab_lustre_capa); @@ -74719,7 +75062,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&hss->hss_valid); __swab64s(&hss->hss_setmask); __swab64s(&hss->hss_clearmask); -@@ -2228,23 +2280,29 @@ static void lustre_swab_hsm_extent(struct hsm_extent *extent) +@@ -2225,23 +2277,29 @@ static void lustre_swab_hsm_extent(struct hsm_extent *extent) __swab64s(&extent->length); } @@ -74752,7 +75095,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&li->li_opc); __swab32s(&li->li_flags); __swab64s(&li->li_start); -@@ -2252,8 +2310,10 @@ void lustre_swab_layout_intent(struct layout_intent *li) +@@ -2249,8 +2307,10 @@ void lustre_swab_layout_intent(struct layout_intent *li) } EXPORT_SYMBOL(lustre_swab_layout_intent); @@ -74764,7 +75107,7 @@ index 492d63f..a8a4f76 100644 lustre_swab_lu_fid(&hpk->hpk_fid); __swab64s(&hpk->hpk_cookie); __swab64s(&hpk->hpk_extent.offset); -@@ -2263,8 +2323,10 @@ void lustre_swab_hsm_progress_kernel(struct hsm_progress_kernel *hpk) +@@ -2260,8 +2320,10 @@ void lustre_swab_hsm_progress_kernel(struct hsm_progress_kernel *hpk) } EXPORT_SYMBOL(lustre_swab_hsm_progress_kernel); @@ -74776,7 +75119,7 @@ index 492d63f..a8a4f76 100644 __swab32s(&hr->hr_action); __swab32s(&hr->hr_archive_id); __swab64s(&hr->hr_flags); -@@ -2273,14 +2335,18 @@ void lustre_swab_hsm_request(struct hsm_request *hr) +@@ -2270,14 +2332,18 @@ void lustre_swab_hsm_request(struct hsm_request *hr) } EXPORT_SYMBOL(lustre_swab_hsm_request); @@ -74797,24 +75140,11 @@ index 492d63f..a8a4f76 100644 lustre_swab_lu_fid(&cd->cd_fid); __swab64s(&cd->cd_data_version); } -diff --git a/drivers/staging/rdma/hfi1/pcie.c b/drivers/staging/rdma/hfi1/pcie.c -index 0bac21e..2b9ef9c 100644 ---- a/drivers/staging/rdma/hfi1/pcie.c -+++ b/drivers/staging/rdma/hfi1/pcie.c -@@ -537,7 +537,7 @@ static void tune_pcie_caps(struct hfi1_devdata *dd) - * PCI error infrastructure, registered via pci - */ - static pci_ers_result_t --pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state) -+pci_error_detected(struct pci_dev *pdev, enum pci_channel_state state) - { - struct hfi1_devdata *dd = pci_get_drvdata(pdev); - pci_ers_result_t ret = PCI_ERS_RESULT_RECOVERED; diff --git a/drivers/staging/rtl8188eu/core/rtw_mlme_ext.c b/drivers/staging/rtl8188eu/core/rtw_mlme_ext.c -index 591a912..484a285 100644 +index 7f32b39..e24cff3 100644 --- a/drivers/staging/rtl8188eu/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8188eu/core/rtw_mlme_ext.c -@@ -3990,7 +3990,7 @@ static void init_mlme_ext_priv_value(struct adapter *padapter) +@@ -3978,7 +3978,7 @@ static void init_mlme_ext_priv_value(struct adapter *padapter) _12M_RATE_, _24M_RATE_, 0xff, }; @@ -74823,7 +75153,7 @@ index 591a912..484a285 100644 pmlmeext->mgnt_seq = 0;/* reset to zero when disconnect at client mode */ pmlmeext->cur_channel = padapter->registrypriv.channel; -@@ -4183,7 +4183,7 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext) +@@ -4171,7 +4171,7 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext) static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, struct recv_frame *precv_frame) { @@ -74832,7 +75162,7 @@ index 591a912..484a285 100644 u8 *pframe = precv_frame->rx_data; if (ptable->func) { -@@ -4202,7 +4202,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame) +@@ -4190,7 +4190,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame) #ifdef CONFIG_88EU_AP_MODE struct mlme_priv *pmlmepriv = &padapter->mlmepriv; #endif /* CONFIG_88EU_AP_MODE */ @@ -74841,7 +75171,7 @@ index 591a912..484a285 100644 u8 *pframe = precv_frame->rx_data; struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe)); -@@ -4227,7 +4227,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame) +@@ -4215,7 +4215,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame) index = GetFrameSubType(pframe) >> 4; @@ -74850,7 +75180,7 @@ index 591a912..484a285 100644 RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("Currently we do not support reserved sub-fr-type=%d\n", index)); return; } -@@ -4317,7 +4317,7 @@ void report_survey_event(struct adapter *padapter, +@@ -4305,7 +4305,7 @@ void report_survey_event(struct adapter *padapter, pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd); pc2h_evt_hdr->len = sizeof(struct survey_event); pc2h_evt_hdr->ID = GEN_EVT_CODE(_Survey); @@ -74859,7 +75189,7 @@ index 591a912..484a285 100644 psurvey_evt = (struct survey_event *)(pevtcmd + sizeof(struct C2HEvent_Header)); -@@ -4369,7 +4369,7 @@ void report_surveydone_event(struct adapter *padapter) +@@ -4355,7 +4355,7 @@ void report_surveydone_event(struct adapter *padapter) pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd); pc2h_evt_hdr->len = sizeof(struct surveydone_event); pc2h_evt_hdr->ID = GEN_EVT_CODE(_SurveyDone); @@ -74868,7 +75198,7 @@ index 591a912..484a285 100644 psurveydone_evt = (struct surveydone_event *)(pevtcmd + sizeof(struct C2HEvent_Header)); psurveydone_evt->bss_cnt = pmlmeext->sitesurvey_res.bss_cnt; -@@ -4415,7 +4415,7 @@ void report_join_res(struct adapter *padapter, int res) +@@ -4399,7 +4399,7 @@ void report_join_res(struct adapter *padapter, int res) pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd); pc2h_evt_hdr->len = sizeof(struct joinbss_event); pc2h_evt_hdr->ID = GEN_EVT_CODE(_JoinBss); @@ -74877,7 +75207,7 @@ index 591a912..484a285 100644 pjoinbss_evt = (struct joinbss_event *)(pevtcmd + sizeof(struct C2HEvent_Header)); memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex)); -@@ -4468,7 +4468,7 @@ void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsi +@@ -4450,7 +4450,7 @@ void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsi pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd); pc2h_evt_hdr->len = sizeof(struct stadel_event); pc2h_evt_hdr->ID = GEN_EVT_CODE(_DelSTA); @@ -74886,7 +75216,7 @@ index 591a912..484a285 100644 pdel_sta_evt = (struct stadel_event *)(pevtcmd + sizeof(struct C2HEvent_Header)); memcpy((unsigned char *)(&(pdel_sta_evt->macaddr)), MacAddr, ETH_ALEN); -@@ -4523,7 +4523,7 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int +@@ -4503,7 +4503,7 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd); pc2h_evt_hdr->len = sizeof(struct stassoc_event); pc2h_evt_hdr->ID = GEN_EVT_CODE(_AddSTA); @@ -74896,10 +75226,10 @@ index 591a912..484a285 100644 padd_sta_evt = (struct stassoc_event *)(pevtcmd + sizeof(struct C2HEvent_Header)); memcpy((unsigned char *)(&(padd_sta_evt->macaddr)), MacAddr, ETH_ALEN); diff --git a/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c b/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c -index d6d009a..c21609e 100644 +index 255d6f2..52553d3 100644 --- a/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c +++ b/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c -@@ -35,7 +35,7 @@ int rtl8188eu_init_recv_priv(struct adapter *padapter) +@@ -30,7 +30,7 @@ int rtl8188eu_init_recv_priv(struct adapter *padapter) struct recv_buf *precvbuf; tasklet_init(&precvpriv->recv_tasklet, @@ -74909,10 +75239,10 @@ index d6d009a..c21609e 100644 /* init recv_buf */ diff --git a/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c b/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c -index c96d804..76d5771 100644 +index ec21d8c..1c2e09c 100644 --- a/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c +++ b/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c -@@ -31,7 +31,7 @@ s32 rtl8188eu_init_xmit_priv(struct adapter *adapt) +@@ -26,7 +26,7 @@ s32 rtl8188eu_init_xmit_priv(struct adapter *adapt) struct xmit_priv *pxmitpriv = &adapt->xmitpriv; tasklet_init(&pxmitpriv->xmit_tasklet, @@ -74922,10 +75252,10 @@ index c96d804..76d5771 100644 return _SUCCESS; } diff --git a/drivers/staging/rtl8188eu/include/Hal8188EPhyCfg.h b/drivers/staging/rtl8188eu/include/Hal8188EPhyCfg.h -index 2670d6b..b9a6852 100644 +index 8990748..7727f80 100644 --- a/drivers/staging/rtl8188eu/include/Hal8188EPhyCfg.h +++ b/drivers/staging/rtl8188eu/include/Hal8188EPhyCfg.h -@@ -205,17 +205,9 @@ void PHY_GetTxPowerLevel8188E(struct adapter *adapter, u32 *powerlevel); +@@ -200,17 +200,9 @@ void PHY_GetTxPowerLevel8188E(struct adapter *adapter, u32 *powerlevel); void PHY_ScanOperationBackup8188E(struct adapter *Adapter, u8 Operation); @@ -74944,10 +75274,10 @@ index 2670d6b..b9a6852 100644 /*--------------------------Exported Function prototype---------------------*/ diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h -index 1b1c102..4f76875 100644 +index eaf939b..356437b 100644 --- a/drivers/staging/rtl8188eu/include/hal_intf.h +++ b/drivers/staging/rtl8188eu/include/hal_intf.h -@@ -217,7 +217,7 @@ struct hal_ops { +@@ -212,7 +212,7 @@ struct hal_ops { void (*hal_notch_filter)(struct adapter *adapter, bool enable); void (*hal_reset_security_engine)(struct adapter *adapter); @@ -74956,7 +75286,7 @@ index 1b1c102..4f76875 100644 enum rt_eeprom_type { EEPROM_93C46, -@@ -251,7 +251,6 @@ void rtw_hal_sw_led_deinit(struct adapter *padapter); +@@ -246,7 +246,6 @@ void rtw_hal_sw_led_deinit(struct adapter *padapter); u32 rtw_hal_power_on(struct adapter *padapter); uint rtw_hal_init(struct adapter *padapter); uint rtw_hal_deinit(struct adapter *padapter); @@ -74964,7 +75294,7 @@ index 1b1c102..4f76875 100644 void rtw_hal_set_hwreg(struct adapter *padapter, u8 variable, u8 *val); void rtw_hal_get_hwreg(struct adapter *padapter, u8 variable, u8 *val); -@@ -280,8 +279,6 @@ void rtw_hal_free_recv_priv(struct adapter *padapter); +@@ -275,8 +274,6 @@ void rtw_hal_free_recv_priv(struct adapter *padapter); void rtw_hal_update_ra_mask(struct adapter *padapter, u32 mac_id, u8 level); void rtw_hal_add_ra_tid(struct adapter *adapt, u32 bitmap, u8 arg, u8 level); @@ -74974,10 +75304,10 @@ index 1b1c102..4f76875 100644 void rtw_hal_bcn_related_reg_setting(struct adapter *padapter); diff --git a/drivers/staging/rtl8188eu/include/odm_precomp.h b/drivers/staging/rtl8188eu/include/odm_precomp.h -index 0f236da..d2507aa 100644 +index 9e5fe17..bdb77bb 100644 --- a/drivers/staging/rtl8188eu/include/odm_precomp.h +++ b/drivers/staging/rtl8188eu/include/odm_precomp.h -@@ -75,7 +75,7 @@ void odm_RSSIMonitorCheckCE(struct odm_dm_struct *pDM_Odm); +@@ -70,7 +70,7 @@ void odm_RSSIMonitorCheckCE(struct odm_dm_struct *pDM_Odm); void odm_TXPowerTrackingThermalMeterInit(struct odm_dm_struct *pDM_Odm); void odm_EdcaTurboCheckCE(struct odm_dm_struct *pDM_Odm); void odm_TXPowerTrackingCheckCE(struct odm_dm_struct *pDM_Odm); @@ -74987,10 +75317,10 @@ index 0f236da..d2507aa 100644 void odm_HwAntDiv(struct odm_dm_struct *pDM_Odm); diff --git a/drivers/staging/rtl8188eu/include/recv_osdep.h b/drivers/staging/rtl8188eu/include/recv_osdep.h -index fdeb603..3db91e6 100644 +index cad3158..a1ca486 100644 --- a/drivers/staging/rtl8188eu/include/recv_osdep.h +++ b/drivers/staging/rtl8188eu/include/recv_osdep.h -@@ -35,7 +35,6 @@ void rtw_recv_returnpacket(struct net_device *cnxt, struct sk_buff *retpkt); +@@ -30,7 +30,6 @@ void rtw_recv_returnpacket(struct net_device *cnxt, struct sk_buff *retpkt); void rtw_handle_tkip_mic_err(struct adapter *padapter, u8 bgroup); @@ -74999,10 +75329,10 @@ index fdeb603..3db91e6 100644 void rtw_os_recv_resource_alloc(struct recv_frame *recvfr); diff --git a/drivers/staging/rtl8188eu/include/rtl8188e_recv.h b/drivers/staging/rtl8188eu/include/rtl8188e_recv.h -index 5fed30d..efd81d5 100644 +index 54048bc..e86fdf4 100644 --- a/drivers/staging/rtl8188eu/include/rtl8188e_recv.h +++ b/drivers/staging/rtl8188eu/include/rtl8188e_recv.h -@@ -59,7 +59,7 @@ enum rx_packet_type { +@@ -54,7 +54,7 @@ enum rx_packet_type { s32 rtl8188eu_init_recv_priv(struct adapter *padapter); void rtl8188eu_free_recv_priv(struct adapter *padapter); void rtl8188eu_recv_hdl(struct adapter *padapter, struct recv_buf *precvbuf); @@ -75012,10 +75342,10 @@ index 5fed30d..efd81d5 100644 void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe); void update_recvframe_phyinfo_88e(struct recv_frame *fra, struct phy_stat *phy); diff --git a/drivers/staging/rtl8188eu/include/rtl8188e_xmit.h b/drivers/staging/rtl8188eu/include/rtl8188e_xmit.h -index 0b96d42..117d0b5 100644 +index 65a63df..171cfed 100644 --- a/drivers/staging/rtl8188eu/include/rtl8188e_xmit.h +++ b/drivers/staging/rtl8188eu/include/rtl8188e_xmit.h -@@ -163,7 +163,7 @@ s32 rtl8188eu_hal_xmit(struct adapter *padapter, struct xmit_frame *frame); +@@ -158,7 +158,7 @@ s32 rtl8188eu_hal_xmit(struct adapter *padapter, struct xmit_frame *frame); s32 rtl8188eu_mgnt_xmit(struct adapter *padapter, struct xmit_frame *frame); s32 rtl8188eu_xmit_buf_handler(struct adapter *padapter); #define hal_xmit_handler rtl8188eu_xmit_buf_handler @@ -75025,10 +75355,10 @@ index 0b96d42..117d0b5 100644 struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); diff --git a/drivers/staging/rtl8188eu/include/rtw_cmd.h b/drivers/staging/rtl8188eu/include/rtw_cmd.h -index 9e9f5f4..eff152f 100644 +index 08ca592..0eeed5d 100644 --- a/drivers/staging/rtl8188eu/include/rtw_cmd.h +++ b/drivers/staging/rtl8188eu/include/rtw_cmd.h -@@ -373,7 +373,6 @@ void rtw_readtssi_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd); +@@ -368,7 +368,6 @@ void rtw_readtssi_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd); void rtw_setstaKey_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd); void rtw_setassocsta_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cm); @@ -75037,10 +75367,10 @@ index 9e9f5f4..eff152f 100644 struct _cmd_callback { u32 cmd_code; diff --git a/drivers/staging/rtl8188eu/include/rtw_eeprom.h b/drivers/staging/rtl8188eu/include/rtw_eeprom.h -index 904fea1..008aa74 100644 +index 5dd7384..337cc49 100644 --- a/drivers/staging/rtl8188eu/include/rtw_eeprom.h +++ b/drivers/staging/rtl8188eu/include/rtw_eeprom.h -@@ -121,10 +121,4 @@ struct eeprom_priv { +@@ -116,10 +116,4 @@ struct eeprom_priv { u8 efuse_eeprom_data[HWSET_MAX_SIZE_512]; }; @@ -75052,10 +75382,10 @@ index 904fea1..008aa74 100644 - #endif /* __RTL871X_EEPROM_H__ */ diff --git a/drivers/staging/rtl8188eu/include/rtw_ioctl.h b/drivers/staging/rtl8188eu/include/rtw_ioctl.h -index ee2cb54..03dc80b 100644 +index 3a652df..4b3ac6b 100644 --- a/drivers/staging/rtl8188eu/include/rtw_ioctl.h +++ b/drivers/staging/rtl8188eu/include/rtw_ioctl.h -@@ -108,13 +108,4 @@ static int oid_null_function(struct oid_par_priv *poid_par_priv) { +@@ -103,13 +103,4 @@ static int oid_null_function(struct oid_par_priv *poid_par_priv) { extern struct iw_handler_def rtw_handlers_def; @@ -75070,10 +75400,10 @@ index ee2cb54..03dc80b 100644 - #endif /* #ifndef __INC_CEINFO_ */ diff --git a/drivers/staging/rtl8188eu/include/rtw_mlme_ext.h b/drivers/staging/rtl8188eu/include/rtw_mlme_ext.h -index 4471133..a1522eb 100644 +index 27382ff..851aeb0 100644 --- a/drivers/staging/rtl8188eu/include/rtw_mlme_ext.h +++ b/drivers/staging/rtl8188eu/include/rtw_mlme_ext.h -@@ -409,7 +409,7 @@ struct p2p_oper_class_map { +@@ -404,7 +404,7 @@ struct p2p_oper_class_map { struct mlme_ext_priv { struct adapter *padapter; u8 mlmeext_init; @@ -75082,7 +75412,7 @@ index 4471133..a1522eb 100644 u16 mgnt_seq; unsigned char cur_channel; -@@ -555,8 +555,6 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *addr, +@@ -550,8 +550,6 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *addr, void beacon_timing_control(struct adapter *padapter); u8 set_tx_beacon_cmd(struct adapter *padapter); @@ -75091,7 +75421,7 @@ index 4471133..a1522eb 100644 void update_mgnt_tx_rate(struct adapter *padapter, u8 rate); void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib); -@@ -604,12 +602,6 @@ struct cmd_hdl { +@@ -599,12 +597,6 @@ struct cmd_hdl { u8 (*h2cfuns)(struct adapter *padapter, u8 *pbuf); }; @@ -75104,7 +75434,7 @@ index 4471133..a1522eb 100644 u8 join_cmd_hdl(struct adapter *padapter, u8 *pbuf); u8 disconnect_hdl(struct adapter *padapter, u8 *pbuf); u8 createbss_hdl(struct adapter *padapter, u8 *pbuf); -@@ -618,8 +610,6 @@ u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf); +@@ -613,8 +605,6 @@ u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf); u8 setauth_hdl(struct adapter *padapter, u8 *pbuf); u8 setkey_hdl(struct adapter *padapter, u8 *pbuf); u8 set_stakey_hdl(struct adapter *padapter, u8 *pbuf); @@ -75114,10 +75444,10 @@ index 4471133..a1522eb 100644 u8 mlme_evt_hdl(struct adapter *padapter, unsigned char *pbuf); diff --git a/drivers/staging/rtl8188eu/include/xmit_osdep.h b/drivers/staging/rtl8188eu/include/xmit_osdep.h -index 13965f2..0ea64d0 100644 +index f96ca6a..104d496 100644 --- a/drivers/staging/rtl8188eu/include/xmit_osdep.h +++ b/drivers/staging/rtl8188eu/include/xmit_osdep.h -@@ -40,7 +40,7 @@ struct sta_xmit_priv; +@@ -35,7 +35,7 @@ struct sta_xmit_priv; struct xmit_frame; struct xmit_buf; @@ -75127,10 +75457,10 @@ index 13965f2..0ea64d0 100644 void rtw_os_xmit_schedule(struct adapter *padapter); diff --git a/drivers/staging/rtl8188eu/os_dep/usb_ops_linux.c b/drivers/staging/rtl8188eu/os_dep/usb_ops_linux.c -index 0fea338..acc951f 100644 +index ce1e1a1..315c3e1 100644 --- a/drivers/staging/rtl8188eu/os_dep/usb_ops_linux.c +++ b/drivers/staging/rtl8188eu/os_dep/usb_ops_linux.c -@@ -814,10 +814,10 @@ void usb_write_port_cancel(struct adapter *padapter) +@@ -810,10 +810,10 @@ void usb_write_port_cancel(struct adapter *padapter) } } @@ -75143,7 +75473,7 @@ index 0fea338..acc951f 100644 struct recv_priv *precvpriv = &adapt->recvpriv; while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) { -@@ -833,10 +833,10 @@ void rtl8188eu_recv_tasklet(void *priv) +@@ -829,10 +829,10 @@ void rtl8188eu_recv_tasklet(void *priv) } } @@ -75157,10 +75487,10 @@ index 0fea338..acc951f 100644 if (check_fwstate(&adapt->mlmepriv, _FW_UNDER_SURVEY)) diff --git a/drivers/staging/rtl8188eu/os_dep/xmit_linux.c b/drivers/staging/rtl8188eu/os_dep/xmit_linux.c -index 1593e28..a4345f9 100644 +index 221e275..bc552c9 100644 --- a/drivers/staging/rtl8188eu/os_dep/xmit_linux.c +++ b/drivers/staging/rtl8188eu/os_dep/xmit_linux.c -@@ -213,7 +213,7 @@ static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb) +@@ -208,7 +208,7 @@ static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb) } @@ -75170,7 +75500,7 @@ index 1593e28..a4345f9 100644 struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev); struct xmit_priv *pxmitpriv = &padapter->xmitpriv; diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c -index 9b7cc7d..527055c 100644 +index 13a5ddc..8a876d9 100644 --- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c +++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c @@ -84,7 +84,7 @@ static struct pci_driver rtl8192_pci_driver = { @@ -75529,7 +75859,7 @@ index 776e179..5a021e6 100644 int rtllib_wx_set_rawtx(struct rtllib_device *ieee, struct iw_request_info *info, diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c -index cfab715..07c64b3 100644 +index 62154e3..bf1e431 100644 --- a/drivers/staging/rtl8192e/rtllib_softmac.c +++ b/drivers/staging/rtl8192e/rtllib_softmac.c @@ -574,7 +574,7 @@ out: @@ -75673,7 +76003,7 @@ index 68931e5..2d98eb2 100644 diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c -index ae1274c..febf7fa 100644 +index d705595..5472509 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c @@ -1765,9 +1765,9 @@ static short ieee80211_sta_ps_sleep(struct ieee80211_device *ieee, u32 *time_h, @@ -75711,10 +76041,10 @@ index 1ab0aea..41de55c 100644 struct ieee80211_device *ieee = netdev_priv(dev); struct ieee80211_txb *txb = NULL; diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c -index 849a95e..debfb75 100644 +index 8c1d737..0d3f6d2e 100644 --- a/drivers/staging/rtl8192u/r8192U_core.c +++ b/drivers/staging/rtl8192u/r8192U_core.c -@@ -2380,7 +2380,7 @@ static void rtl8192_init_priv_lock(struct r8192_priv *priv) +@@ -2368,7 +2368,7 @@ static void rtl8192_init_priv_lock(struct r8192_priv *priv) static void rtl819x_watchdog_wqcallback(struct work_struct *work); @@ -75723,7 +76053,7 @@ index 849a95e..debfb75 100644 /* init tasklet and wait_queue here. only 2.6 above kernel is considered */ #define DRV_NAME "wlan0" static void rtl8192_init_priv_task(struct net_device *dev) -@@ -2403,7 +2403,7 @@ static void rtl8192_init_priv_task(struct net_device *dev) +@@ -2391,7 +2391,7 @@ static void rtl8192_init_priv_task(struct net_device *dev) INIT_WORK(&priv->qos_activate, rtl8192_qos_activate); tasklet_init(&priv->irq_rx_tasklet, @@ -75732,7 +76062,7 @@ index 849a95e..debfb75 100644 (unsigned long)priv); } -@@ -4910,8 +4910,9 @@ static void rtl8192_rx_cmd(struct sk_buff *skb) +@@ -4878,8 +4878,9 @@ static void rtl8192_rx_cmd(struct sk_buff *skb) } } @@ -75744,7 +76074,7 @@ index 849a95e..debfb75 100644 struct rtl8192_rx_info *info; diff --git a/drivers/staging/rtl8712/rtl8712_recv.c b/drivers/staging/rtl8712/rtl8712_recv.c -index d187508..a2e3800 100644 +index f25b34c..487a963 100644 --- a/drivers/staging/rtl8712/rtl8712_recv.c +++ b/drivers/staging/rtl8712/rtl8712_recv.c @@ -45,7 +45,7 @@ static u8 bridge_tunnel_header[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8}; @@ -75811,7 +76141,7 @@ index c9218be..ecda3f6 100644 - #endif diff --git a/drivers/staging/rtl8712/rtl871x_xmit.c b/drivers/staging/rtl8712/rtl871x_xmit.c -index c6d952f..69cfa68 100644 +index 99256ba..1b789b8 100644 --- a/drivers/staging/rtl8712/rtl871x_xmit.c +++ b/drivers/staging/rtl8712/rtl871x_xmit.c @@ -152,7 +152,7 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, @@ -75837,7 +76167,7 @@ index a9633c3..77b0c85 100644 void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe, struct xmit_buf *pxmitbuf); diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c -index 454cdf6..e0a1337 100644 +index 6f1234570..3c8fb5a 100644 --- a/drivers/staging/rtl8712/usb_ops_linux.c +++ b/drivers/staging/rtl8712/usb_ops_linux.c @@ -331,10 +331,10 @@ void r8712_usb_read_port_cancel(struct _adapter *padapter) @@ -75880,7 +76210,7 @@ index 8eba7ca..6c4ce81 100644 int r8712_xmit_resource_alloc(struct _adapter *padapter, struct xmit_buf *pxmitbuf); diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c -index f4fff38..c8c4865 100644 +index 7dd1540..52d1392 100644 --- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c @@ -368,7 +368,7 @@ static void init_mlme_ext_priv23a_value(struct rtw_adapter *padapter) @@ -76093,7 +76423,7 @@ index a86f36e..8addfe7 100644 - #endif /* __RTL871X_EEPROM_H__ */ diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h -index ea2a6c9..7348e18 100644 +index 0e7d3da..4a54c4fa3 100644 --- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h @@ -406,7 +406,7 @@ struct p2p_oper_class_map { @@ -76105,7 +76435,7 @@ index ea2a6c9..7348e18 100644 u16 mgnt_seq; /* struct fw_priv fwpriv; */ -@@ -543,8 +543,6 @@ void report_add_sta_event23a(struct rtw_adapter *padapter, +@@ -541,8 +541,6 @@ void report_add_sta_event23a(struct rtw_adapter *padapter, unsigned char *MacAddr, int cam_idx); int set_tx_beacon_cmd23a(struct rtw_adapter*padapter); @@ -76114,7 +76444,7 @@ index ea2a6c9..7348e18 100644 void update_mgnt_tx_rate23a(struct rtw_adapter *padapter, u8 rate); void update_mgntframe_attrib23a(struct rtw_adapter *padapter, struct pkt_attrib *pattrib); -@@ -597,14 +595,6 @@ struct cmd_hdl { +@@ -595,14 +593,6 @@ struct cmd_hdl { }; @@ -76129,7 +76459,7 @@ index ea2a6c9..7348e18 100644 int NULL_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); -@@ -614,8 +604,6 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); +@@ -612,8 +602,6 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); int setauth_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); int setkey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); int set_stakey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf); @@ -76186,7 +76516,7 @@ index 2be04c48..a494e09 100644 void rtw_os_xmit_schedule23a(struct rtw_adapter *padapter); diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c -index 12d1844..46d0889 100644 +index 0da559d..f8aee41 100644 --- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c @@ -2430,7 +2430,7 @@ static int rtw_cfg80211_monitor_if_close(struct net_device *ndev) @@ -76279,10 +76609,10 @@ index 39edd20..d860d0c 100644 /** Register functions (in the bus driver) to get called by visorchipset * whenever a bus or device appears for which this guest is to be the diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c -index be0d057..9f34086 100644 +index fd7c9a6..5c373da 100644 --- a/drivers/staging/unisys/visornic/visornic_main.c +++ b/drivers/staging/unisys/visornic/visornic_main.c -@@ -807,7 +807,7 @@ static inline bool vnic_hit_low_watermark(struct visornic_devdata *devdata, +@@ -797,7 +797,7 @@ static inline bool vnic_hit_low_watermark(struct visornic_devdata *devdata, * can be called again. * Returns NETDEV_TX_OK. */ @@ -76292,7 +76622,7 @@ index be0d057..9f34086 100644 { struct visornic_devdata *devdata; diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c -index 1a2dda0..f1cb7d1 100644 +index e4c3165..d0c9eeb 100644 --- a/drivers/staging/vt6655/rxtx.c +++ b/drivers/staging/vt6655/rxtx.c @@ -1243,7 +1243,7 @@ static void vnt_fill_txkey(struct ieee80211_hdr *hdr, u8 *key_buffer, @@ -76305,7 +76635,7 @@ index 1a2dda0..f1cb7d1 100644 mic_hdr->ccmp_pn[4] = pn64 >> 8; mic_hdr->ccmp_pn[3] = pn64 >> 16; diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c -index b74e320..bd00d63 100644 +index aa59e7f..094dd59 100644 --- a/drivers/staging/vt6656/rxtx.c +++ b/drivers/staging/vt6656/rxtx.c @@ -749,7 +749,7 @@ static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context, @@ -76318,7 +76648,7 @@ index b74e320..bd00d63 100644 mic_hdr->ccmp_pn[4] = pn64 >> 8; mic_hdr->ccmp_pn[3] = pn64 >> 16; diff --git a/drivers/staging/wilc1000/host_interface.h b/drivers/staging/wilc1000/host_interface.h -index 01f3222..81ea93a 100644 +index 8d2dd0d..ba0194a 100644 --- a/drivers/staging/wilc1000/host_interface.h +++ b/drivers/staging/wilc1000/host_interface.h @@ -1,6 +1,7 @@ @@ -76330,10 +76660,10 @@ index 01f3222..81ea93a 100644 #define IP_ALEN 4 diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c -index bfa754b..4c98e72 100644 +index 4f93c11..6305d2c 100644 --- a/drivers/staging/wilc1000/linux_wlan.c +++ b/drivers/staging/wilc1000/linux_wlan.c -@@ -1037,7 +1037,7 @@ static void linux_wlan_tx_complete(void *priv, int status) +@@ -985,7 +985,7 @@ static void linux_wlan_tx_complete(void *priv, int status) kfree(pv_data); } @@ -76343,7 +76673,7 @@ index bfa754b..4c98e72 100644 struct wilc_vif *vif; struct tx_complete_data *tx_data = NULL; diff --git a/drivers/staging/wilc1000/wilc_spi.c b/drivers/staging/wilc1000/wilc_spi.c -index d41b8b6..2099b97 100644 +index 4268e2f..4311354 100644 --- a/drivers/staging/wilc1000/wilc_spi.c +++ b/drivers/staging/wilc1000/wilc_spi.c @@ -19,6 +19,7 @@ @@ -76355,7 +76685,7 @@ index d41b8b6..2099b97 100644 #include "wilc_wlan.h" #include "wilc_wfi_netdevice.h" diff --git a/drivers/staging/wilc1000/wilc_wlan.h b/drivers/staging/wilc1000/wilc_wlan.h -index bcd4bfa..41bfba0 100644 +index 30e5312..1493a73 100644 --- a/drivers/staging/wilc1000/wilc_wlan.h +++ b/drivers/staging/wilc1000/wilc_wlan.h @@ -295,7 +295,7 @@ void wilc_chip_sleep_manually(struct wilc *wilc); @@ -76368,7 +76698,7 @@ index bcd4bfa..41bfba0 100644 int wilc_mac_open(struct net_device *ndev); int wilc_mac_close(struct net_device *ndev); diff --git a/drivers/staging/wlan-ng/p80211netdev.c b/drivers/staging/wlan-ng/p80211netdev.c -index 88255ce..aab2121 100644 +index 90cc8cd..b98abd7 100644 --- a/drivers/staging/wlan-ng/p80211netdev.c +++ b/drivers/staging/wlan-ng/p80211netdev.c @@ -317,7 +317,7 @@ static void p80211netdev_rx_bh(unsigned long arg) @@ -76381,7 +76711,7 @@ index 88255ce..aab2121 100644 { int result = 0; diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c -index c57e788..24d15dd 100644 +index 58bb6ed..d77a7e3 100644 --- a/drivers/target/sbp/sbp_target.c +++ b/drivers/target/sbp/sbp_target.c @@ -56,7 +56,7 @@ static const u32 sbp_unit_directory_template[] = { @@ -76486,7 +76816,7 @@ index 5836e55..708bbd6 100644 priv->thermal = thermal_zone_device_register("INT3400 Thermal", 0, 0, priv, &int3400_thermal_ops, diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c -index d8ec44b..08609d8 100644 +index b8e509c..f12be01 100644 --- a/drivers/thermal/of-thermal.c +++ b/drivers/thermal/of-thermal.c @@ -31,6 +31,7 @@ @@ -76497,7 +76827,7 @@ index d8ec44b..08609d8 100644 #include "thermal_core.h" -@@ -417,9 +418,11 @@ thermal_zone_of_add_sensor(struct device_node *zone, +@@ -425,9 +426,11 @@ thermal_zone_of_add_sensor(struct device_node *zone, tz->ops = ops; tz->sensor_data = data; @@ -76512,7 +76842,7 @@ index d8ec44b..08609d8 100644 mutex_unlock(&tzd->lock); return tzd; -@@ -545,9 +548,11 @@ void thermal_zone_of_sensor_unregister(struct device *dev, +@@ -553,9 +556,11 @@ void thermal_zone_of_sensor_unregister(struct device *dev, return; mutex_lock(&tzd->lock); @@ -76528,7 +76858,7 @@ index d8ec44b..08609d8 100644 tz->ops = NULL; tz->sensor_data = NULL; diff --git a/drivers/thermal/x86_pkg_temp_thermal.c b/drivers/thermal/x86_pkg_temp_thermal.c -index 7fc919f..5521ec1 100644 +index 97f0a2b..5fa3381 100644 --- a/drivers/thermal/x86_pkg_temp_thermal.c +++ b/drivers/thermal/x86_pkg_temp_thermal.c @@ -567,7 +567,7 @@ static int pkg_temp_thermal_cpu_callback(struct notifier_block *nfb, @@ -76541,7 +76871,7 @@ index 7fc919f..5521ec1 100644 }; diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c -index d67e542..dc84c3d 100644 +index 3840d6b..5292ea3 100644 --- a/drivers/tty/cyclades.c +++ b/drivers/tty/cyclades.c @@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp) @@ -76557,7 +76887,7 @@ index d67e542..dc84c3d 100644 #endif /* -@@ -3959,7 +3959,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v) +@@ -3951,7 +3951,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v) for (j = 0; j < cy_card[i].nports; j++) { info = &cy_card[i].ports[j]; @@ -76567,7 +76897,7 @@ index d67e542..dc84c3d 100644 struct tty_struct *tty; struct tty_ldisc *ld; diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c -index e46d628..d826fa1 100644 +index ce86487..8ff3311 100644 --- a/drivers/tty/hvc/hvc_console.c +++ b/drivers/tty/hvc/hvc_console.c @@ -343,7 +343,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp) @@ -76625,7 +76955,7 @@ index e46d628..d826fa1 100644 spin_lock_irqsave(&hp->lock, flags); diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c -index 5997b17..6851dbc 100644 +index 3c4d7c2..3410b86 100644 --- a/drivers/tty/hvc/hvcs.c +++ b/drivers/tty/hvc/hvcs.c @@ -83,6 +83,7 @@ @@ -76722,7 +77052,7 @@ index 5997b17..6851dbc 100644 return HVCS_BUFF_LEN - hvcsd->chars_in_buffer; diff --git a/drivers/tty/hvc/hvsi.c b/drivers/tty/hvc/hvsi.c -index a75146f..a52c717 100644 +index 96ce6bd..208f20a 100644 --- a/drivers/tty/hvc/hvsi.c +++ b/drivers/tty/hvc/hvsi.c @@ -85,7 +85,7 @@ struct hvsi_struct { @@ -76958,7 +77288,7 @@ index 345cebb..d5a1e9e 100644 ipwireless_disassociate_network_ttys(network, ttyj->channel_idx); diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c -index 92982d7..758ecfe 100644 +index 60d37b2..3d222ca 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -1188,7 +1188,7 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) @@ -76971,7 +77301,7 @@ index 92982d7..758ecfe 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 365dfd8..7b7d867 100644 +index 54cab59..3c05ac4 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) @@ -77104,10 +77434,10 @@ index bdf0e6e..ea92f7e 100644 EXPORT_SYMBOL_GPL(n_tty_inherit_ops); diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c -index e198996..f2b79a2 100644 +index 51e0d32..d1ac13c 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c -@@ -852,8 +852,10 @@ static void __init unix98_pty_init(void) +@@ -856,8 +856,10 @@ static void __init unix98_pty_init(void) panic("Couldn't register Unix98 pts driver"); /* Now create the /dev/ptmx special device */ @@ -77120,10 +77450,10 @@ index e198996..f2b79a2 100644 cdev_init(&ptmx_cdev, &ptmx_fops); if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) || diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c -index 0b802cd..70afed6 100644 +index b0cc47c..58ea7a9 100644 --- a/drivers/tty/rocket.c +++ b/drivers/tty/rocket.c -@@ -905,7 +905,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) +@@ -906,7 +906,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) tty->driver_data = info; tty_port_tty_set(port, tty); @@ -77132,7 +77462,7 @@ index 0b802cd..70afed6 100644 atomic_inc(&rp_num_ports_open); #ifdef ROCKET_DEBUG_OPEN -@@ -914,7 +914,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) +@@ -915,7 +915,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) #endif } #ifdef ROCKET_DEBUG_OPEN @@ -77141,7 +77471,7 @@ index 0b802cd..70afed6 100644 #endif /* -@@ -1498,7 +1498,7 @@ static void rp_hangup(struct tty_struct *tty) +@@ -1500,7 +1500,7 @@ static void rp_hangup(struct tty_struct *tty) #endif rp_flush_buffer(tty); spin_lock_irqsave(&info->port.lock, flags); @@ -77151,7 +77481,7 @@ index 0b802cd..70afed6 100644 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 2f4f5ee..fed5cc6 100644 +index 0fbd7c0..66c6010 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -488,9 +488,9 @@ static void univ8250_release_port(struct uart_port *port) @@ -77180,10 +77510,10 @@ index 2f4f5ee..fed5cc6 100644 if (share_irqs) irqflag = IRQF_SHARED; diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c -index 4eedd1d..4868f61 100644 +index 8dd250f..84599cb 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c -@@ -5620,7 +5620,7 @@ static struct pci_device_id serial_pci_tbl[] = { +@@ -5632,7 +5632,7 @@ static struct pci_device_id serial_pci_tbl[] = { }; static pci_ers_result_t serial8250_io_error_detected(struct pci_dev *dev, @@ -77192,19 +77522,6 @@ index 4eedd1d..4868f61 100644 { struct serial_private *priv = pci_get_drvdata(dev); -diff --git a/drivers/tty/serial/ifx6x60.c b/drivers/tty/serial/ifx6x60.c -index 2085a6c..d386346 100644 ---- a/drivers/tty/serial/ifx6x60.c -+++ b/drivers/tty/serial/ifx6x60.c -@@ -651,7 +651,7 @@ static void ifx_spi_complete(void *ctx) - struct ifx_spi_device *ifx_dev = ctx; - int length; - int actual_length; -- unsigned char more; -+ unsigned char more = 0; - unsigned char cts; - int local_write_pending = 0; - int queue_length; diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c index e5c42fe..f091b02 100644 --- a/drivers/tty/serial/ioc4_serial.c @@ -77380,10 +77697,10 @@ index a260cde..604fce9 100644 /* This is only available if kgdboc is a built in for early debugging */ static int __init kgdboc_early_init(char *opt) diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c -index 96d3ce8..112fce3 100644 +index b7d80bd..50fc855 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c -@@ -1528,7 +1528,7 @@ static struct uart_driver msm_uart_driver = { +@@ -1561,7 +1561,7 @@ static struct uart_driver msm_uart_driver = { .cons = MSM_CONSOLE, }; @@ -77392,7 +77709,7 @@ index 96d3ce8..112fce3 100644 static const struct of_device_id msm_uartdm_table[] = { { .compatible = "qcom,msm-uartdm-v1.1", .data = (void *)UARTDM_1P1 }, -@@ -1552,7 +1552,7 @@ static int msm_serial_probe(struct platform_device *pdev) +@@ -1585,7 +1585,7 @@ static int msm_serial_probe(struct platform_device *pdev) line = pdev->id; if (line < 0) @@ -77434,10 +77751,10 @@ index 99bb231..ba80b07 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 a126a60..b68a648 100644 +index a333c59..61594a8 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c -@@ -1374,7 +1374,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) +@@ -1473,7 +1473,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); @@ -77446,25 +77763,16 @@ index a126a60..b68a648 100644 spin_unlock_irq(&port->lock); return; } -@@ -1383,7 +1383,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) - port = &state->port; - pr_debug("uart_close(%d) called\n", tty->index); - -- if (!port->count || tty_port_close_start(port, tty, filp) == 0) -+ if (!atomic_read(&port->count) || tty_port_close_start(port, tty, filp) == 0) - return; - - /* -@@ -1505,7 +1505,7 @@ static void uart_hangup(struct tty_struct *tty) +@@ -1614,7 +1614,7 @@ static void uart_hangup(struct tty_struct *tty) uart_flush_buffer(tty); uart_shutdown(tty, state); spin_lock_irqsave(&port->lock, flags); - port->count = 0; + atomic_set(&port->count, 0); - clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); spin_unlock_irqrestore(&port->lock, flags); + tty_port_set_active(port, 0); tty_port_tty_set(port, NULL); -@@ -1587,7 +1587,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp) +@@ -1717,7 +1717,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); @@ -77473,31 +77781,11 @@ index a126a60..b68a648 100644 spin_unlock_irq(&port->lock); /* -diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c -index d08baa6..4bb0007 100644 ---- a/drivers/tty/serial/uartlite.c -+++ b/drivers/tty/serial/uartlite.c -@@ -345,13 +345,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 f5476e2..78f1fb9 100644 +index c13e27e..335a512 100644 --- a/drivers/tty/synclink.c +++ b/drivers/tty/synclink.c -@@ -3085,7 +3085,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) +@@ -3075,7 +3075,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgsl_close(%s) entry, count=%d\n", @@ -77506,7 +77794,7 @@ index f5476e2..78f1fb9 100644 if (tty_port_close_start(&info->port, tty, filp) == 0) goto cleanup; -@@ -3103,7 +3103,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) +@@ -3093,7 +3093,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) cleanup: if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgsl_close(%s) exit, count=%d\n", __FILE__,__LINE__, @@ -77515,7 +77803,7 @@ index f5476e2..78f1fb9 100644 } /* end of mgsl_close() */ -@@ -3202,8 +3202,8 @@ static void mgsl_hangup(struct tty_struct *tty) +@@ -3192,8 +3192,8 @@ static void mgsl_hangup(struct tty_struct *tty) mgsl_flush_buffer(tty); shutdown(info); @@ -77523,10 +77811,10 @@ index f5476e2..78f1fb9 100644 - info->port.count = 0; + + atomic_set(&info->port.count, 0); - info->port.flags &= ~ASYNC_NORMAL_ACTIVE; + tty_port_set_active(&info->port, 0); info->port.tty = NULL; -@@ -3291,10 +3291,10 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, +@@ -3281,10 +3281,10 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):block_til_ready before block on %s count=%d\n", @@ -77538,8 +77826,8 @@ index f5476e2..78f1fb9 100644 + atomic_dec(&port->count); spin_unlock_irqrestore(&info->irq_spinlock, flags); port->blocked_open++; - -@@ -3321,7 +3321,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, + +@@ -3311,7 +3311,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):block_til_ready blocking on %s count=%d\n", @@ -77548,7 +77836,7 @@ index f5476e2..78f1fb9 100644 tty_unlock(tty); schedule(); -@@ -3333,12 +3333,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, +@@ -3323,12 +3323,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, /* FIXME: Racy on hangup during close wait */ if (!tty_hung_up_p(filp)) @@ -77562,8 +77850,8 @@ index f5476e2..78f1fb9 100644 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count)); if (!retval) - port->flags |= ASYNC_NORMAL_ACTIVE; -@@ -3390,7 +3390,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) + tty_port_set_active(port, 1); +@@ -3380,7 +3380,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):mgsl_open(%s), old ref count = %d\n", @@ -77572,7 +77860,7 @@ index f5476e2..78f1fb9 100644 info->port.low_latency = (info->port.flags & ASYNC_LOW_LATENCY) ? 1 : 0; -@@ -3400,10 +3400,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) +@@ -3390,10 +3390,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) spin_unlock_irqrestore(&info->netlock, flags); goto cleanup; } @@ -77585,7 +77873,7 @@ index f5476e2..78f1fb9 100644 /* 1st open on this device, init hardware */ retval = startup(info); if (retval < 0) -@@ -3427,8 +3427,8 @@ cleanup: +@@ -3417,8 +3417,8 @@ cleanup: if (retval) { if (tty->count == 1) info->port.tty = NULL; /* tty layer will release tty struct */ @@ -77596,7 +77884,7 @@ index f5476e2..78f1fb9 100644 } return retval; -@@ -7647,7 +7647,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, +@@ -7637,7 +7637,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, unsigned short new_crctype; /* return error if TTY interface open */ @@ -77605,7 +77893,7 @@ index f5476e2..78f1fb9 100644 return -EBUSY; switch (encoding) -@@ -7743,7 +7743,7 @@ static int hdlcdev_open(struct net_device *dev) +@@ -7733,7 +7733,7 @@ static int hdlcdev_open(struct net_device *dev) /* arbitrate between network and tty opens */ spin_lock_irqsave(&info->netlock, flags); @@ -77614,7 +77902,7 @@ index f5476e2..78f1fb9 100644 printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name); spin_unlock_irqrestore(&info->netlock, flags); return -EBUSY; -@@ -7829,7 +7829,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -7819,7 +7819,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name); /* return error if TTY interface open */ @@ -77624,7 +77912,7 @@ index f5476e2..78f1fb9 100644 if (cmd != SIOCWANDEV) diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c -index c0a2f5a..a621130 100644 +index 7aca2d4..45a7121 100644 --- a/drivers/tty/synclink_gt.c +++ b/drivers/tty/synclink_gt.c @@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp) @@ -77684,9 +77972,9 @@ index c0a2f5a..a621130 100644 spin_lock_irqsave(&info->port.lock, flags); - info->port.count = 0; + atomic_set(&info->port.count, 0); - info->port.flags &= ~ASYNC_NORMAL_ACTIVE; info->port.tty = NULL; spin_unlock_irqrestore(&info->port.lock, flags); + tty_port_set_active(&info->port, 0); @@ -1435,7 +1435,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, unsigned short new_crctype; @@ -77723,7 +78011,7 @@ index c0a2f5a..a621130 100644 port->pending_bh && !port->bh_running && !port->bh_requested) { DBGISR(("%s bh queued\n", port->device_name)); -@@ -3289,7 +3289,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, +@@ -3282,7 +3282,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, add_wait_queue(&port->open_wait, &wait); spin_lock_irqsave(&info->lock, flags); @@ -77732,7 +78020,7 @@ index c0a2f5a..a621130 100644 spin_unlock_irqrestore(&info->lock, flags); port->blocked_open++; -@@ -3324,7 +3324,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, +@@ -3317,7 +3317,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, remove_wait_queue(&port->open_wait, &wait); if (!tty_hung_up_p(filp)) @@ -77742,7 +78030,7 @@ index c0a2f5a..a621130 100644 if (!retval) diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c -index 90da0c7..05a09c0 100644 +index dec1565..bbf9fcc 100644 --- a/drivers/tty/synclinkmp.c +++ b/drivers/tty/synclinkmp.c @@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp) @@ -77802,9 +78090,9 @@ index 90da0c7..05a09c0 100644 spin_lock_irqsave(&info->port.lock, flags); - info->port.count = 0; + atomic_set(&info->port.count, 0); - info->port.flags &= ~ASYNC_NORMAL_ACTIVE; info->port.tty = NULL; spin_unlock_irqrestore(&info->port.lock, flags); + tty_port_set_active(&info->port, 1); @@ -1551,7 +1551,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, unsigned short new_crctype; @@ -77841,7 +78129,7 @@ index 90da0c7..05a09c0 100644 port->pending_bh && !port->bh_running && !port->bh_requested ) { if ( debug_level >= DEBUG_LEVEL_ISR ) -@@ -3307,10 +3307,10 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, +@@ -3300,10 +3300,10 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):%s block_til_ready() before block, count=%d\n", @@ -77854,7 +78142,7 @@ index 90da0c7..05a09c0 100644 spin_unlock_irqrestore(&info->lock, flags); port->blocked_open++; -@@ -3337,7 +3337,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, +@@ -3330,7 +3330,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, if (debug_level >= DEBUG_LEVEL_INFO) printk("%s(%d):%s block_til_ready() count=%d\n", @@ -77863,7 +78151,7 @@ index 90da0c7..05a09c0 100644 tty_unlock(tty); schedule(); -@@ -3347,12 +3347,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, +@@ -3340,12 +3340,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp, set_current_state(TASK_RUNNING); remove_wait_queue(&port->open_wait, &wait); if (!tty_hung_up_p(filp)) @@ -77877,7 +78165,7 @@ index 90da0c7..05a09c0 100644 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count)); if (!retval) - port->flags |= ASYNC_NORMAL_ACTIVE; + tty_port_set_active(port, 1); diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index e513940..fb19436 100644 --- a/drivers/tty/sysrq.c @@ -77892,7 +78180,7 @@ index e513940..fb19436 100644 if (get_user(c, buf)) diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index 24d5491..a74f792 100644 +index 734a635..0518bb7 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -105,6 +105,8 @@ @@ -77904,7 +78192,7 @@ index 24d5491..a74f792 100644 #undef TTY_DEBUG_HANGUP #ifdef TTY_DEBUG_HANGUP # define tty_debug_hangup(tty, f, args...) tty_debug(tty, f, ##args) -@@ -2291,6 +2293,8 @@ static int tiocsti(struct tty_struct *tty, char __user *p) +@@ -2286,6 +2288,8 @@ static int tiocsti(struct tty_struct *tty, char __user *p) char ch, mbz = 0; struct tty_ldisc *ld; @@ -77913,7 +78201,7 @@ index 24d5491..a74f792 100644 if ((current->signal->tty != tty) && !capable(CAP_SYS_ADMIN)) return -EPERM; if (get_user(ch, p)) -@@ -3565,7 +3569,7 @@ EXPORT_SYMBOL(tty_devnum); +@@ -3560,7 +3564,7 @@ EXPORT_SYMBOL(tty_devnum); void tty_default_fops(struct file_operations *fops) { @@ -77963,19 +78251,19 @@ index 68947f6..1f85fef2 100644 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags); } diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c -index dbcca30..7549b6f 100644 +index c3f9d93..f81070c 100644 --- a/drivers/tty/tty_port.c +++ b/drivers/tty/tty_port.c -@@ -235,7 +235,7 @@ void tty_port_hangup(struct tty_port *port) +@@ -236,7 +236,7 @@ void tty_port_hangup(struct tty_port *port) unsigned long flags; spin_lock_irqsave(&port->lock, flags); - port->count = 0; + atomic_set(&port->count, 0); - port->flags &= ~ASYNC_NORMAL_ACTIVE; tty = port->tty; if (tty) -@@ -387,7 +387,7 @@ int tty_port_block_til_ready(struct tty_port *port, + set_bit(TTY_IO_ERROR, &tty->flags); +@@ -388,7 +388,7 @@ int tty_port_block_til_ready(struct tty_port *port, /* The port lock protects the port counts */ spin_lock_irqsave(&port->lock, flags); @@ -77984,16 +78272,16 @@ index dbcca30..7549b6f 100644 port->blocked_open++; spin_unlock_irqrestore(&port->lock, flags); -@@ -428,7 +428,7 @@ int tty_port_block_til_ready(struct tty_port *port, +@@ -429,7 +429,7 @@ int tty_port_block_til_ready(struct tty_port *port, we must not mess that up further */ spin_lock_irqsave(&port->lock, flags); if (!tty_hung_up_p(filp)) - port->count++; + atomic_inc(&port->count); port->blocked_open--; + spin_unlock_irqrestore(&port->lock, flags); if (retval == 0) - port->flags |= ASYNC_NORMAL_ACTIVE; -@@ -461,18 +461,18 @@ int tty_port_close_start(struct tty_port *port, +@@ -462,18 +462,18 @@ int tty_port_close_start(struct tty_port *port, return 0; spin_lock_irqsave(&port->lock, flags); @@ -78019,7 +78307,7 @@ index dbcca30..7549b6f 100644 spin_unlock_irqrestore(&port->lock, flags); return 0; } -@@ -566,7 +566,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty, +@@ -567,7 +567,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty, struct file *filp) { spin_lock_irq(&port->lock); @@ -78090,7 +78378,7 @@ index 1e93a37..81c499f 100644 ret = -EPERM; goto reterr; diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c -index bcc1fc0..0d989a9 100644 +index fba021f..977a54e 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c @@ -25,6 +25,7 @@ @@ -78110,7 +78398,7 @@ index bcc1fc0..0d989a9 100644 } static DEVICE_ATTR_RO(event); -@@ -393,7 +394,7 @@ void uio_event_notify(struct uio_info *info) +@@ -401,7 +402,7 @@ void uio_event_notify(struct uio_info *info) { struct uio_device *idev = info->uio_dev; @@ -78119,7 +78407,7 @@ index bcc1fc0..0d989a9 100644 wake_up_interruptible(&idev->wait); kill_fasync(&idev->async_queue, SIGIO, POLL_IN); } -@@ -446,7 +447,7 @@ static int uio_open(struct inode *inode, struct file *filep) +@@ -454,7 +455,7 @@ static int uio_open(struct inode *inode, struct file *filep) } listener->dev = idev; @@ -78128,7 +78416,7 @@ index bcc1fc0..0d989a9 100644 filep->private_data = listener; if (idev->info->open) { -@@ -497,7 +498,7 @@ static unsigned int uio_poll(struct file *filep, poll_table *wait) +@@ -505,7 +506,7 @@ static unsigned int uio_poll(struct file *filep, poll_table *wait) return -EIO; poll_wait(filep, &idev->wait, wait); @@ -78137,7 +78425,7 @@ index bcc1fc0..0d989a9 100644 return POLLIN | POLLRDNORM; return 0; } -@@ -522,7 +523,7 @@ static ssize_t uio_read(struct file *filep, char __user *buf, +@@ -530,7 +531,7 @@ static ssize_t uio_read(struct file *filep, char __user *buf, do { set_current_state(TASK_INTERRUPTIBLE); @@ -78146,7 +78434,7 @@ index bcc1fc0..0d989a9 100644 if (event_count != listener->event_count) { __set_current_state(TASK_RUNNING); if (copy_to_user(buf, &event_count, count)) -@@ -580,9 +581,13 @@ static ssize_t uio_write(struct file *filep, const char __user *buf, +@@ -588,9 +589,13 @@ static ssize_t uio_write(struct file *filep, const char __user *buf, static int uio_find_mem_index(struct vm_area_struct *vma) { struct uio_device *idev = vma->vm_private_data; @@ -78161,7 +78449,7 @@ index bcc1fc0..0d989a9 100644 return -1; return (int)vma->vm_pgoff; } -@@ -814,7 +819,7 @@ int __uio_register_device(struct module *owner, +@@ -822,7 +827,7 @@ int __uio_register_device(struct module *owner, idev->owner = owner; idev->info = info; init_waitqueue_head(&idev->wait); @@ -78311,7 +78599,7 @@ index ef04b50..7582d99 100644 file->f_version = event_count; return POLLIN | POLLRDNORM; diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c -index 52c4461..adf74f5 100644 +index e9f5043..8ecfc4d 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -289,7 +289,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes, @@ -78350,23 +78638,7 @@ index 52c4461..adf74f5 100644 if (copy_to_user(buf, dev->rawdescriptors[i] + (*ppos - pos), min(len, alloclen))) { -@@ -1316,10 +1316,11 @@ static int proc_getdriver(struct usb_dev_state *ps, void __user *arg) - - static int proc_connectinfo(struct usb_dev_state *ps, void __user *arg) - { -- struct usbdevfs_connectinfo ci = { -- .devnum = ps->dev->devnum, -- .slow = ps->dev->speed == USB_SPEED_LOW -- }; -+ struct usbdevfs_connectinfo ci; -+ -+ memset(&ci, 0, sizeof(ci)); -+ ci.devnum = ps->dev->devnum; -+ ci.slow = ps->dev->speed == USB_SPEED_LOW; - - if (copy_to_user(arg, &ci, sizeof(ci))) - return -EFAULT; -@@ -1680,7 +1681,7 @@ static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb +@@ -1681,7 +1681,7 @@ static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb } } as->urb->dev = ps->dev; @@ -78376,10 +78648,10 @@ index 52c4461..adf74f5 100644 (uurb->endpoint & USB_DIR_IN); diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index 2d107d0..9489679 100644 +index d2e3f65..e389998 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c -@@ -1629,7 +1629,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) +@@ -1630,7 +1630,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) */ usb_get_urb(urb); atomic_inc(&urb->use_count); @@ -78388,7 +78660,7 @@ index 2d107d0..9489679 100644 usbmon_urb_submit(&hcd->self, urb); /* NOTE requirements on root-hub callers (usbfs and the hub -@@ -1656,7 +1656,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) +@@ -1657,7 +1657,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) urb->hcpriv = NULL; INIT_LIST_HEAD(&urb->urb_list); atomic_dec(&urb->use_count); @@ -78398,7 +78670,7 @@ index 2d107d0..9489679 100644 wake_up(&usb_kill_urb_queue); usb_put_urb(urb); diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 1ab42bf..0b2f334 100644 +index bee1351..dd3b48b 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -26,6 +26,7 @@ @@ -78409,7 +78681,7 @@ index 1ab42bf..0b2f334 100644 #include <asm/uaccess.h> #include <asm/byteorder.h> -@@ -4788,6 +4789,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, +@@ -4790,6 +4791,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, goto done; return; } @@ -78434,7 +78706,7 @@ index c953a0f..54c64f4 100644 static DEVICE_ATTR_RO(urbnum); diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c -index 479187c3..55625b2a 100644 +index 5e80697..1e91073 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -444,7 +444,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, @@ -78513,7 +78785,7 @@ index f2ac0cb..4038262 100644 #include "u_uac1.h" diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c -index 6af145f..17d4bf2 100644 +index 3580f19..ab3d212 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -747,9 +747,9 @@ static int gs_open(struct tty_struct *tty, struct file *file) @@ -78623,10 +78895,10 @@ index dde4445..f51cd5a 100644 dum->hs_hcd = hcd_to_dummy_hcd(hcd); dum->hs_hcd->dum = dum; diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c -index ae1b6e6..2aa775a 100644 +index a962b89..185683a 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c -@@ -564,7 +564,7 @@ static int ehci_init(struct usb_hcd *hcd) +@@ -573,7 +573,7 @@ static int ehci_init(struct usb_hcd *hcd) /* Accept arbitrarily long scatter-gather lists */ if (!(hcd->driver->flags & HCD_LOCAL_MEM)) @@ -78636,7 +78908,7 @@ index ae1b6e6..2aa775a 100644 /* Prepare for unlinking active QHs */ ehci->old_current = ~0; diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c -index ffc9029..46f0741 100644 +index 74f62d6..459983a 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -777,7 +777,7 @@ static struct urb *request_single_step_set_feature_urb( @@ -78674,10 +78946,10 @@ index eca3710..eca7127 100644 /* one buffer entry per 4K ... first might be short or unaligned */ diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c -index 360a5e9..ff82e6c 100644 +index 66efa9a..50b719d 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c -@@ -5031,7 +5031,7 @@ static int hcd_fotg210_init(struct usb_hcd *hcd) +@@ -5025,7 +5025,7 @@ static int hcd_fotg210_init(struct usb_hcd *hcd) /* Accept arbitrarily long scatter-gather lists */ if (!(hcd->driver->flags & HCD_LOCAL_MEM)) @@ -78726,7 +78998,7 @@ index 1db0626..2e9f5ea 100644 hwahc = container_of(wusbhc, struct hwahc, wusbhc); hwahc_init(hwahc); diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c -index 04dcedf..de1615b 100644 +index 0449235..8f5e347e 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -444,7 +444,7 @@ static int ohci_init (struct ohci_hcd *ohci) @@ -78778,10 +79050,10 @@ index c10972f..7a2d5db5 100644 /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 8b5b2ac..052a44e 100644 +index d7d5025..87d3be1 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -1878,9 +1878,9 @@ td_cleanup: +@@ -1871,9 +1871,9 @@ td_cleanup: * unsigned). Play it safe and say we didn't transfer anything. */ if (urb->actual_length > urb->transfer_buffer_length) { @@ -78793,7 +79065,7 @@ index 8b5b2ac..052a44e 100644 urb->actual_length = 0; if (td->urb->transfer_flags & URB_SHORT_NOT_OK) *status = -EREMOTEIO; -@@ -1959,10 +1959,15 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, +@@ -1952,10 +1952,15 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, return finish_td(xhci, td, event_trb, event, ep, status, false); case COMP_STOP: /* Did we stop at data stage? */ @@ -78813,7 +79085,7 @@ index 8b5b2ac..052a44e 100644 /* fall through */ case COMP_STOP_INVAL: return finish_td(xhci, td, event_trb, event, ep, status, false); -@@ -1976,12 +1981,15 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, +@@ -1969,12 +1974,15 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, /* else fall through */ case COMP_STALL: /* Did we transfer part of the data (middle) phase? */ @@ -78835,7 +79107,7 @@ index 8b5b2ac..052a44e 100644 td->urb->actual_length = 0; return finish_td(xhci, td, event_trb, event, ep, status, false); -@@ -2014,9 +2022,12 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, +@@ -2007,9 +2015,12 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, * the last TRB. */ td->urb_length_set = true; @@ -78851,7 +79123,7 @@ index 8b5b2ac..052a44e 100644 xhci_dbg(xhci, "Waiting for status " "stage event\n"); return 0; -@@ -2211,11 +2222,7 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, +@@ -2204,11 +2215,7 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, /* Fast path - was this the last TRB in the TD for this URB? */ } else if (event_trb == td->last_trb) { if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { @@ -78864,7 +79136,7 @@ index 8b5b2ac..052a44e 100644 xhci_warn(xhci, "HC gave bad length " "of %d bytes left\n", EVENT_TRB_LEN(le32_to_cpu(event->transfer_len))); -@@ -2224,7 +2231,10 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, +@@ -2217,7 +2224,10 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, *status = -EREMOTEIO; else *status = 0; @@ -78877,10 +79149,10 @@ index 8b5b2ac..052a44e 100644 if (*status == -EINPROGRESS) { if (td->urb->transfer_flags & URB_SHORT_NOT_OK) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 3272805..a3f7895 100644 +index f2f9518..24850e7 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -4878,7 +4878,7 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) +@@ -4837,7 +4837,7 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) int retval; /* Accept arbitrarily long scatter-gather lists */ @@ -78912,7 +79184,7 @@ index a0a3827..d7ec10b 100644 props.type = BACKLIGHT_RAW; props.max_brightness = 0xff; diff --git a/drivers/usb/misc/sisusbvga/sisusb_con.c b/drivers/usb/misc/sisusbvga/sisusb_con.c -index ace3430..7536bac 100644 +index afa8532..7ec10d6 100644 --- a/drivers/usb/misc/sisusbvga/sisusb_con.c +++ b/drivers/usb/misc/sisusbvga/sisusb_con.c @@ -1416,32 +1416,94 @@ static void sisusbdummycon_init(struct vc_data *vc, int init) @@ -78981,7 +79253,7 @@ index ace3430..7536bac 100644 + return 0; +} + -+static int sisusb_con_set_palette(struct vc_data *a, unsigned char *b) ++static int sisusb_con_set_palette(struct vc_data *a, const unsigned char *b) +{ + return 0; +} @@ -79029,7 +79301,7 @@ index ace3430..7536bac 100644 int diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c -index a66b01b..95a41b4 100644 +index 8967715..4a3791b 100644 --- a/drivers/usb/serial/console.c +++ b/drivers/usb/serial/console.c @@ -126,7 +126,7 @@ static int usb_console_setup(struct console *co, char *options) @@ -79038,7 +79310,7 @@ index a66b01b..95a41b4 100644 - ++port->port.count; + atomic_inc(&port->port.count); - if (!test_bit(ASYNCB_INITIALIZED, &port->port.flags)) { + if (!tty_port_initialized(&port->port)) { if (serial->type->set_termios) { /* @@ -172,7 +172,7 @@ static int usb_console_setup(struct console *co, char *options) @@ -79069,10 +79341,10 @@ index a66b01b..95a41b4 100644 struct usb_serial *serial; int retval = -ENODEV; diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c -index 5e67f63..2ef08d6 100644 +index ffd0867..eb28464 100644 --- a/drivers/usb/storage/transport.c +++ b/drivers/usb/storage/transport.c -@@ -689,7 +689,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) +@@ -709,7 +709,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) if (need_auto_sense) { int temp_result; struct scsi_eh_save ses; @@ -79082,10 +79354,10 @@ index 5e67f63..2ef08d6 100644 const u8 *scdd; u8 fm_ili; diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c -index 9de988a..4a45fdc 100644 +index ef2d8cd..c3982dd 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c -@@ -915,7 +915,7 @@ static void usb_stor_scan_dwork(struct work_struct *work) +@@ -942,7 +942,7 @@ static void usb_stor_scan_dwork(struct work_struct *work) clear_bit(US_FLIDX_SCAN_PENDING, &us->dflags); } @@ -79095,10 +79367,10 @@ index 9de988a..4a45fdc 100644 struct usb_device *usb_dev = interface_to_usbdev(intf); diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h -index da0ad32..50b5bbe 100644 +index 8fae28b..8b4bfec 100644 --- a/drivers/usb/storage/usb.h +++ b/drivers/usb/storage/usb.h -@@ -63,7 +63,7 @@ struct us_unusual_dev { +@@ -64,7 +64,7 @@ struct us_unusual_dev { __u8 useProtocol; __u8 useTransport; int (*initFunction)(struct us_data *); @@ -79121,7 +79393,7 @@ index a863a98..d272795 100644 /* * NOTE: diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c -index fca5110..60c91ba 100644 +index 2e0450b..6ebf0f6 100644 --- a/drivers/usb/usbip/vhci_hcd.c +++ b/drivers/usb/usbip/vhci_hcd.c @@ -447,7 +447,7 @@ static void vhci_tx_urb(struct urb *urb) @@ -79213,10 +79485,10 @@ index 69af4fd..da390d7 100644 /* Return the xfer's ID. */ diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c -index 712a849..c3ecd41 100644 +index 188b1ff..044b13e 100644 --- a/drivers/vfio/pci/vfio_pci.c +++ b/drivers/vfio/pci/vfio_pci.c -@@ -1172,7 +1172,7 @@ static void vfio_pci_remove(struct pci_dev *pdev) +@@ -1207,7 +1207,7 @@ static void vfio_pci_remove(struct pci_dev *pdev) } static pci_ers_result_t vfio_pci_aer_err_detected(struct pci_dev *pdev, @@ -79312,7 +79584,7 @@ index 84a110a..96312c3 100644 .ident = "Sahara Touch-iT", .matches = { diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c -index 0efc52f..4e72706 100644 +index 0efc52f..3a691cb 100644 --- a/drivers/video/console/dummycon.c +++ b/drivers/video/console/dummycon.c @@ -41,12 +41,74 @@ static void dummycon_init(struct vc_data *vc, int init) @@ -79380,7 +79652,7 @@ index 0efc52f..4e72706 100644 + return 0; +} + -+static int dummycon_set_palette(struct vc_data *a, unsigned char *b) ++static int dummycon_set_palette(struct vc_data *a, const unsigned char *b) +{ + return 0; +} @@ -79429,7 +79701,7 @@ index 0efc52f..4e72706 100644 }; EXPORT_SYMBOL_GPL(dummy_con); diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c -index 6e92917..2f3dbad 100644 +index afd3301..75dcf57 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -106,7 +106,7 @@ static int fbcon_softback_size = 32768; @@ -79442,10 +79714,10 @@ index 6e92917..2f3dbad 100644 static int first_fb_vc; static int last_fb_vc = MAX_NR_CONSOLES - 1; diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c -index 517f565..a0a8f49 100644 +index 8bf9110..8276633 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c -@@ -1411,24 +1411,33 @@ static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, +@@ -1410,24 +1410,33 @@ static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, * The console `switch' structure for the VGA based console */ @@ -79613,10 +79885,10 @@ index 10c988a..f7d9299 100644 + .set_pll = aty_set_pll, }; diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c -index 57721c7..332b94b 100644 +index 74b5bca..5bddbea 100644 --- a/drivers/video/fbdev/core/fb_defio.c +++ b/drivers/video/fbdev/core/fb_defio.c -@@ -207,7 +207,9 @@ void fb_deferred_io_init(struct fb_info *info) +@@ -208,7 +208,9 @@ void fb_deferred_io_init(struct fb_info *info) BUG_ON(!fbdefio); mutex_init(&fbdefio->lock); @@ -79627,7 +79899,7 @@ index 57721c7..332b94b 100644 INIT_DELAYED_WORK(&info->deferred_work, fb_deferred_io_work); INIT_LIST_HEAD(&fbdefio->pagelist); if (fbdefio->delay == 0) /* set a default of 1 s */ -@@ -238,7 +240,9 @@ void fb_deferred_io_cleanup(struct fb_info *info) +@@ -239,7 +241,9 @@ void fb_deferred_io_cleanup(struct fb_info *info) page->mapping = NULL; } @@ -79639,7 +79911,7 @@ index 57721c7..332b94b 100644 } EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup); diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 4e73b6f..69a6b87 100644 +index 76c1ad9..6ec5e94 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1301,7 +1301,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix, @@ -79676,7 +79948,7 @@ index 4e73b6f..69a6b87 100644 struct fb_info * const info = file->private_data; diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c -index e2451bd..ab7ccd1 100644 +index 2fd49b2..67e3d86 100644 --- a/drivers/video/fbdev/hyperv_fb.c +++ b/drivers/video/fbdev/hyperv_fb.c @@ -240,7 +240,7 @@ static uint screen_fb_size; @@ -95428,7 +95700,7 @@ index 0000000..43d7c4f +:1095D00080000A8080000A00800009808000090065 +:00000001FF diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c -index ac9225e..e190518 100644 +index c37fb9c..51d73a3 100644 --- a/fs/9p/vfs_addr.c +++ b/fs/9p/vfs_addr.c @@ -121,7 +121,7 @@ static int v9fs_vfs_readpages(struct file *filp, struct address_space *mapping, @@ -95441,7 +95713,7 @@ index ac9225e..e190518 100644 return ret; } diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c -index a34702c..ff71f79 100644 +index 1b51eaa..0627a09 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c @@ -179,7 +179,7 @@ static int v9fs_mapped_dotl_flags(int flags) @@ -95463,10 +95735,10 @@ index a34702c..ff71f79 100644 { ATTR_UID, P9_ATTR_UID }, { ATTR_GID, P9_ATTR_GID }, diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt -index 2d0cbbd..a6d61492 100644 +index 72c0335..551e08c 100644 --- a/fs/Kconfig.binfmt +++ b/fs/Kconfig.binfmt -@@ -103,7 +103,7 @@ config HAVE_AOUT +@@ -111,7 +111,7 @@ config HAVE_AOUT config BINFMT_AOUT tristate "Kernel support for a.out and ECOFF binaries" @@ -95555,7 +95827,7 @@ index 71d5982..3112bf6 100644 /* * flock.c diff --git a/fs/aio.c b/fs/aio.c -index 155f842..89922d8 100644 +index fb8e45b..d651330 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -450,7 +450,7 @@ static int aio_setup_ring(struct kioctx *ctx) @@ -95583,7 +95855,7 @@ index 25b24d0..85550fc 100644 goto out_sig; if (offset > inode->i_sb->s_maxbytes) diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c -index 0146d91..aaf11f3 100644 +index 631f155..7f9c24c 100644 --- a/fs/autofs4/waitq.c +++ b/fs/autofs4/waitq.c @@ -56,7 +56,7 @@ static int autofs4_write(struct autofs_sb_info *sbi, @@ -95595,7 +95867,7 @@ index 0146d91..aaf11f3 100644 ssize_t wr = 0; sigpipe = sigismember(¤t->pending.signal, SIGPIPE); -@@ -343,6 +343,10 @@ static int validate_request(struct autofs_wait_queue **wait, +@@ -344,6 +344,10 @@ static int validate_request(struct autofs_wait_queue **wait, return 1; } @@ -95606,7 +95878,7 @@ index 0146d91..aaf11f3 100644 int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry, enum autofs_notify notify) { -@@ -388,7 +392,12 @@ int autofs4_wait(struct autofs_sb_info *sbi, +@@ -389,7 +393,12 @@ int autofs4_wait(struct autofs_sb_info *sbi, /* If this is a direct mount request create a dummy name */ if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type)) @@ -95651,7 +95923,7 @@ index 2722387..56059b5 100644 { if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c -index 4c55668..eeae150 100644 +index ae1b540..15cfacf 100644 --- a/fs/binfmt_aout.c +++ b/fs/binfmt_aout.c @@ -16,6 +16,7 @@ @@ -95684,7 +95956,7 @@ index 4c55668..eeae150 100644 if ((dump.u_ssize + 1) * PAGE_SIZE > cprm->limit) dump.u_ssize = 0; -@@ -232,6 +237,8 @@ static int load_aout_binary(struct linux_binprm * bprm) +@@ -228,6 +233,8 @@ static int load_aout_binary(struct linux_binprm * bprm) rlim = rlimit(RLIMIT_DATA); if (rlim >= RLIM_INFINITY) rlim = ~0; @@ -95693,7 +95965,7 @@ index 4c55668..eeae150 100644 if (ex.a_data + ex.a_bss > rlim) return -ENOMEM; -@@ -261,6 +268,27 @@ static int load_aout_binary(struct linux_binprm * bprm) +@@ -257,6 +264,27 @@ static int load_aout_binary(struct linux_binprm * bprm) install_exec_creds(bprm); @@ -95721,7 +95993,7 @@ index 4c55668..eeae150 100644 if (N_MAGIC(ex) == OMAGIC) { unsigned long text_addr, map_size; loff_t pos; -@@ -312,7 +340,7 @@ static int load_aout_binary(struct linux_binprm * bprm) +@@ -311,7 +339,7 @@ static int load_aout_binary(struct linux_binprm * bprm) return error; error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data, @@ -95731,7 +96003,7 @@ 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 81381cc..b8c8a51 100644 +index a7a28110..eddc1f5 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -36,6 +36,7 @@ @@ -95782,16 +96054,16 @@ index 81381cc..b8c8a51 100644 start = ELF_PAGEALIGN(start); end = ELF_PAGEALIGN(end); if (end > start) { -@@ -101,7 +121,7 @@ static int set_brk(unsigned long start, unsigned long end) - if (BAD_ADDR(addr)) - return addr; +@@ -100,7 +120,7 @@ static int set_brk(unsigned long start, unsigned long end) + if (error) + return error; } - current->mm->start_brk = current->mm->brk = end; + current->mm->start_brk = current->mm->brk = e; return 0; } -@@ -162,12 +182,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; @@ -95806,7 +96078,7 @@ index 81381cc..b8c8a51 100644 /* * In some cases (e.g. Hyper-Threading), we want to avoid L1 -@@ -209,8 +230,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)); @@ -95821,7 +96093,7 @@ index 81381cc..b8c8a51 100644 if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) return -EFAULT; -@@ -325,9 +350,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; @@ -95834,7 +96106,7 @@ index 81381cc..b8c8a51 100644 return -EFAULT; return 0; } -@@ -518,14 +545,14 @@ static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp, +@@ -517,14 +544,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, @@ -95852,7 +96124,7 @@ index 81381cc..b8c8a51 100644 unsigned long total_size; int i; -@@ -545,6 +572,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -544,6 +571,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, goto out; } @@ -95864,7 +96136,7 @@ index 81381cc..b8c8a51 100644 eppnt = interp_elf_phdata; for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { if (eppnt->p_type == PT_LOAD) { -@@ -568,8 +600,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -567,8 +599,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; @@ -95873,7 +96145,7 @@ index 81381cc..b8c8a51 100644 error = map_addr; if (BAD_ADDR(map_addr)) goto out; -@@ -588,8 +618,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -587,8 +617,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 || @@ -95884,22 +96156,22 @@ index 81381cc..b8c8a51 100644 error = -ENOMEM; goto out; } -@@ -628,9 +658,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -627,9 +657,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 */ - error = vm_brk(elf_bss, last_bss - elf_bss); -- if (BAD_ADDR(error)) +- if (error) - goto out; + if (last_bss > elf_bss) { + error = vm_brk(elf_bss, last_bss - elf_bss); -+ if (BAD_ADDR(error)) ++ if (error) + goto out; + } } error = load_addr; -@@ -638,6 +670,336 @@ out: +@@ -637,6 +669,336 @@ out: return error; } @@ -96236,7 +96508,7 @@ index 81381cc..b8c8a51 100644 /* * These are the functions used to load ELF style executables and shared * libraries. There is no binary dependent code anywhere else. -@@ -651,6 +1013,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) +@@ -650,6 +1012,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) { unsigned long random_variable = 0; @@ -96248,7 +96520,7 @@ index 81381cc..b8c8a51 100644 if ((current->flags & PF_RANDOMIZE) && !(current->personality & ADDR_NO_RANDOMIZE)) { random_variable = get_random_long(); -@@ -670,7 +1037,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -669,7 +1036,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; @@ -96257,7 +96529,7 @@ index 81381cc..b8c8a51 100644 struct elf_phdr *elf_ppnt, *elf_phdata, *interp_elf_phdata = NULL; unsigned long elf_bss, elf_brk; int retval, i; -@@ -685,6 +1052,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -684,6 +1051,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; @@ -96265,7 +96537,7 @@ index 81381cc..b8c8a51 100644 loc = kmalloc(sizeof(*loc), GFP_KERNEL); if (!loc) { -@@ -845,6 +1213,77 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -844,6 +1212,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); @@ -96343,7 +96615,7 @@ index 81381cc..b8c8a51 100644 if (elf_read_implies_exec(loc->elf_ex, executable_stack)) current->personality |= READ_IMPLIES_EXEC; -@@ -920,8 +1359,21 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -919,8 +1358,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); @@ -96367,7 +96639,7 @@ index 81381cc..b8c8a51 100644 if (!total_size) { retval = -EINVAL; goto out_free_dentry; -@@ -957,9 +1409,9 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -956,9 +1408,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. */ @@ -96380,7 +96652,7 @@ index 81381cc..b8c8a51 100644 /* set_brk can never work. Avoid overflows. */ retval = -EINVAL; goto out_free_dentry; -@@ -995,16 +1447,43 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -994,16 +1446,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))) { @@ -96429,7 +96701,7 @@ index 81381cc..b8c8a51 100644 load_bias, interp_elf_phdata); if (!IS_ERR((void *)elf_entry)) { /* -@@ -1055,6 +1534,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -1054,6 +1533,7 @@ static int load_elf_binary(struct linux_binprm *bprm) current->mm->end_data = end_data; current->mm->start_stack = bprm->p; @@ -96437,7 +96709,7 @@ index 81381cc..b8c8a51 100644 if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) { current->mm->brk = current->mm->start_brk = arch_randomize_brk(current->mm); -@@ -1062,6 +1542,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -1061,6 +1541,7 @@ static int load_elf_binary(struct linux_binprm *bprm) current->brk_randomized = 1; #endif } @@ -96445,7 +96717,7 @@ index 81381cc..b8c8a51 100644 if (current->personality & MMAP_PAGE_ZERO) { /* Why this, you ask??? Well SVr4 maps page 0 as read-only, -@@ -1230,7 +1711,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) +@@ -1232,7 +1713,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, @@ -96454,7 +96726,7 @@ index 81381cc..b8c8a51 100644 { #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) -@@ -1277,7 +1758,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, +@@ -1279,7 +1760,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, if (vma->vm_file == NULL) return 0; @@ -96463,7 +96735,7 @@ index 81381cc..b8c8a51 100644 goto whole; /* -@@ -1377,7 +1858,7 @@ static void fill_elf_header(struct elfhdr *elf, int segs, +@@ -1379,7 +1860,7 @@ static void fill_elf_header(struct elfhdr *elf, int segs, return; } @@ -96472,7 +96744,7 @@ index 81381cc..b8c8a51 100644 { phdr->p_type = PT_NOTE; phdr->p_offset = offset; -@@ -1484,9 +1965,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) +@@ -1486,9 +1967,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; @@ -96484,7 +96756,7 @@ index 81381cc..b8c8a51 100644 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); } -@@ -1495,7 +1976,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, +@@ -1497,7 +1978,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, { mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); @@ -96493,7 +96765,7 @@ index 81381cc..b8c8a51 100644 set_fs(old_fs); fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata); } -@@ -2215,7 +2696,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2217,7 +2698,7 @@ static int elf_core_dump(struct coredump_params *cprm) vma = next_vma(vma, gate_vma)) { unsigned long dump_size; @@ -96502,7 +96774,7 @@ index 81381cc..b8c8a51 100644 vma_filesz[i++] = dump_size; vma_data_size += dump_size; } -@@ -2323,6 +2804,167 @@ out: +@@ -2325,6 +2806,167 @@ out: #endif /* CONFIG_ELF_CORE */ @@ -96671,7 +96943,7 @@ index 81381cc..b8c8a51 100644 { register_binfmt(&elf_format); diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c -index 083ea2bc..46a3cd3 100644 +index 2035893..f42edf1 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c @@ -1336,7 +1336,7 @@ static inline void fill_elf_fdpic_header(struct elfhdr *elf, int segs) @@ -96693,10 +96965,10 @@ index 083ea2bc..46a3cd3 100644 for (i = 0; i < numnote; i++) sz += notesize(notes + i); diff --git a/fs/block_dev.c b/fs/block_dev.c -index 20a2c02..5daa230 100644 +index 71ccab1..8e55e4e 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c -@@ -770,7 +770,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, +@@ -852,7 +852,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 */ @@ -96706,7 +96978,7 @@ index 20a2c02..5daa230 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 234707c..fa73ff27 100644 +index a85cf7d..bf8fc07 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -358,7 +358,7 @@ static inline void tree_mod_log_write_unlock(struct btrfs_fs_info *fs_info) @@ -96735,10 +97007,10 @@ index 234707c..fa73ff27 100644 WARN_ON(trans->transid != btrfs_header_generation(parent)); diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h -index 208d199..c8a54d0 100644 +index 4274a7b..401b2fe 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h -@@ -979,8 +979,8 @@ struct btrfs_dev_replace { +@@ -358,8 +358,8 @@ struct btrfs_dev_replace { u64 replace_state; /* see #define above */ u64 time_started; /* seconds since 1-Jan-1970 */ u64 time_stopped; /* seconds since 1-Jan-1970 */ @@ -96749,7 +97021,7 @@ index 208d199..c8a54d0 100644 u64 cursor_left; u64 committed_cursor_left; -@@ -1615,7 +1615,7 @@ struct btrfs_fs_info { +@@ -846,7 +846,7 @@ struct btrfs_fs_info { /* this protects tree_mod_seq_list */ spinlock_t tree_mod_seq_lock; @@ -96758,7 +97030,7 @@ index 208d199..c8a54d0 100644 struct list_head tree_mod_seq_list; /* this protects tree_mod_log */ -@@ -1925,7 +1925,7 @@ struct btrfs_root { +@@ -1156,7 +1156,7 @@ struct btrfs_root { struct list_head log_ctxs[2]; atomic_t log_writers; atomic_t log_commit[2]; @@ -96768,7 +97040,7 @@ index 208d199..c8a54d0 100644 /* No matter the commit succeeds or not*/ int log_transid_committed; diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c -index 6cef006..48c10a6 100644 +index d3aaabb..a069679 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -456,7 +456,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, @@ -96799,7 +97071,7 @@ index 6cef006..48c10a6 100644 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 0167853c..b7d2bb4 100644 +index 2495b3d..8bdbb07 100644 --- a/fs/btrfs/delayed-inode.h +++ b/fs/btrfs/delayed-inode.h @@ -43,7 +43,7 @@ struct btrfs_delayed_root { @@ -96843,10 +97115,10 @@ index 430b368..85f12e1 100644 /* first set the basic ref node struct up */ atomic_set(&ref->refs, 1); diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c -index 26bcb48..0d4f068 100644 +index 63ef9cd..b0d7148 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c -@@ -85,8 +85,8 @@ no_valid_dev_replace_entry_found: +@@ -82,8 +82,8 @@ no_valid_dev_replace_entry_found: dev_replace->replace_state = 0; dev_replace->time_started = 0; dev_replace->time_stopped = 0; @@ -96857,7 +97129,7 @@ index 26bcb48..0d4f068 100644 dev_replace->cursor_left = 0; dev_replace->committed_cursor_left = 0; dev_replace->cursor_left_last_write_of_item = 0; -@@ -115,9 +115,9 @@ no_valid_dev_replace_entry_found: +@@ -112,9 +112,9 @@ no_valid_dev_replace_entry_found: dev_replace->time_started = btrfs_dev_replace_time_started(eb, ptr); dev_replace->time_stopped = btrfs_dev_replace_time_stopped(eb, ptr); @@ -96869,7 +97141,7 @@ index 26bcb48..0d4f068 100644 btrfs_dev_replace_num_uncorrectable_read_errors(eb, ptr)); dev_replace->cursor_left = btrfs_dev_replace_cursor_left(eb, ptr); dev_replace->committed_cursor_left = dev_replace->cursor_left; -@@ -277,9 +277,9 @@ int btrfs_run_dev_replace(struct btrfs_trans_handle *trans, +@@ -274,9 +274,9 @@ int btrfs_run_dev_replace(struct btrfs_trans_handle *trans, btrfs_set_dev_replace_time_started(eb, ptr, dev_replace->time_started); btrfs_set_dev_replace_time_stopped(eb, ptr, dev_replace->time_stopped); btrfs_set_dev_replace_num_write_errors(eb, ptr, @@ -96881,7 +97153,7 @@ index 26bcb48..0d4f068 100644 dev_replace->cursor_left_last_write_of_item = dev_replace->cursor_left; btrfs_set_dev_replace_cursor_left(eb, ptr, -@@ -394,8 +394,8 @@ int btrfs_dev_replace_start(struct btrfs_root *root, +@@ -377,8 +377,8 @@ int btrfs_dev_replace_start(struct btrfs_root *root, char *tgtdev_name, dev_replace->cursor_right = 0; dev_replace->is_valid = 1; dev_replace->item_needs_writeback = 1; @@ -96889,10 +97161,10 @@ index 26bcb48..0d4f068 100644 - atomic64_set(&dev_replace->num_uncorrectable_read_errors, 0); + atomic64_set_unchecked(&dev_replace->num_write_errors, 0); + atomic64_set_unchecked(&dev_replace->num_uncorrectable_read_errors, 0); - args->result = BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR; btrfs_dev_replace_unlock(dev_replace, 1); -@@ -659,9 +659,9 @@ void btrfs_dev_replace_status(struct btrfs_fs_info *fs_info, + ret = btrfs_sysfs_add_device_link(tgt_device->fs_devices, tgt_device); +@@ -648,9 +648,9 @@ void btrfs_dev_replace_status(struct btrfs_fs_info *fs_info, args->status.time_started = dev_replace->time_started; args->status.time_stopped = dev_replace->time_stopped; args->status.num_write_errors = @@ -96905,10 +97177,10 @@ index 26bcb48..0d4f068 100644 case BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED: case BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED: diff --git a/fs/btrfs/dev-replace.h b/fs/btrfs/dev-replace.h -index 29e3ef5..37e8d79 100644 +index e922b42..2a5a145 100644 --- a/fs/btrfs/dev-replace.h +++ b/fs/btrfs/dev-replace.h -@@ -40,8 +40,8 @@ void btrfs_dev_replace_set_lock_blocking(struct btrfs_dev_replace *dev_replace); +@@ -42,8 +42,8 @@ void btrfs_dev_replace_set_lock_blocking(struct btrfs_dev_replace *dev_replace); void btrfs_dev_replace_clear_lock_blocking( struct btrfs_dev_replace *dev_replace); @@ -96920,10 +97192,10 @@ index 29e3ef5..37e8d79 100644 } #endif diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c -index 4e47849..d0d47dc 100644 +index 60ce119..b517fc9 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c -@@ -1278,7 +1278,7 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize, +@@ -1279,7 +1279,7 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize, atomic_set(&root->log_commit[0], 0); atomic_set(&root->log_commit[1], 0); atomic_set(&root->log_writers, 0); @@ -96932,7 +97204,7 @@ index 4e47849..d0d47dc 100644 atomic_set(&root->orphan_inodes, 0); atomic_set(&root->refs, 1); atomic_set(&root->will_be_snapshoted, 0); -@@ -2612,7 +2612,7 @@ int open_ctree(struct super_block *sb, +@@ -2622,7 +2622,7 @@ int open_ctree(struct super_block *sb, atomic_set(&fs_info->defrag_running, 0); atomic_set(&fs_info->qgroup_op_seq, 0); atomic_set(&fs_info->reada_works_cnt, 0); @@ -96942,7 +97214,7 @@ index 4e47849..d0d47dc 100644 fs_info->max_inline = BTRFS_DEFAULT_MAX_INLINE; fs_info->metadata_ratio = 0; diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c -index 318b048..d91951ea 100644 +index e0715fc..76857e9 100644 --- a/fs/btrfs/extent_map.c +++ b/fs/btrfs/extent_map.c @@ -235,7 +235,9 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em) @@ -96968,10 +97240,10 @@ index 318b048..d91951ea 100644 RB_CLEAR_NODE(&merge->rb_node); em->mod_len = (merge->mod_start + merge->mod_len) - em->mod_start; diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c -index af5c7fa..64568af 100644 +index 2234e88..6f43c26 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c -@@ -1939,7 +1939,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) +@@ -1937,7 +1937,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) return ret; inode_lock(inode); @@ -96980,7 +97252,7 @@ index af5c7fa..64568af 100644 full_sync = test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags); /* -@@ -1993,7 +1993,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) +@@ -1991,7 +1991,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) inode_unlock(inode); goto out; } @@ -96990,7 +97262,7 @@ index af5c7fa..64568af 100644 /* * If the last transaction that changed this file was before the current diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h -index 33178c4..ff2e4ad 100644 +index 3af651c..30b9644 100644 --- a/fs/btrfs/free-space-cache.h +++ b/fs/btrfs/free-space-cache.h @@ -48,6 +48,7 @@ struct btrfs_free_space_op { @@ -97002,7 +97274,7 @@ index 33178c4..ff2e4ad 100644 struct btrfs_io_ctl; diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c -index 0b7792e..be2ccab17 100644 +index f8b6d41..17457e7 100644 --- a/fs/btrfs/raid56.c +++ b/fs/btrfs/raid56.c @@ -153,7 +153,7 @@ struct btrfs_raid_bio { @@ -97137,10 +97409,10 @@ index 0b7792e..be2ccab17 100644 * build a list of bios to read all the missing parts of this * stripe diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c -index 4678f03..0cadde2 100644 +index 70427ef..91038c2 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c -@@ -3667,7 +3667,7 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, +@@ -3716,7 +3716,7 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, if (ret) break; if (is_dev_replace && @@ -97150,10 +97422,10 @@ index 4678f03..0cadde2 100644 break; } diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c -index d7c138f..02ad00f 100644 +index 60e7179..8439191 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c -@@ -248,7 +248,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, +@@ -244,7 +244,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, function, line, errstr); return; } @@ -97163,10 +97435,10 @@ index d7c138f..02ad00f 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 539e7b5..9de4167 100644 +index 4879656..5d76f84 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c -@@ -483,7 +483,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add) +@@ -495,7 +495,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add) for (set = 0; set < FEAT_MAX; set++) { int i; struct attribute *attrs[2]; @@ -97176,7 +97448,7 @@ index 539e7b5..9de4167 100644 .attrs = attrs, }; diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c -index f54bf45..6a69b0b 100644 +index 02223f3..9239b41 100644 --- a/fs/btrfs/tests/btrfs-tests.c +++ b/fs/btrfs/tests/btrfs-tests.c @@ -119,7 +119,7 @@ struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void) @@ -97189,10 +97461,10 @@ index f54bf45..6a69b0b 100644 INIT_LIST_HEAD(&fs_info->dead_roots); INIT_LIST_HEAD(&fs_info->tree_mod_seq_list); diff --git a/fs/btrfs/tests/free-space-tests.c b/fs/btrfs/tests/free-space-tests.c -index 5142475..b290272 100644 +index 3956bb2..b44385f 100644 --- a/fs/btrfs/tests/free-space-tests.c +++ b/fs/btrfs/tests/free-space-tests.c -@@ -405,7 +405,7 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache) +@@ -409,7 +409,7 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache, int ret; u64 offset; u64 max_extent_size; @@ -97202,7 +97474,7 @@ index 5142475..b290272 100644 .use_bitmap = test_use_bitmap, }; diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c -index 43885e5..21cba1c 100644 +index 948aa18..ae3bc17 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -277,7 +277,7 @@ loop: @@ -97215,7 +97487,7 @@ index 43885e5..21cba1c 100644 spin_lock_init(&cur_trans->delayed_refs.lock); diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c -index 517d0cc..a22c356 100644 +index c05f69a..2469b31 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -173,7 +173,7 @@ static int start_log_trans(struct btrfs_trans_handle *trans, @@ -97268,10 +97540,10 @@ index a9f1b75..0df211d 100644 static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info, diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c -index bd0f45f..d28e89b 100644 +index 589f128..88f2043 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c -@@ -232,7 +232,7 @@ static struct btrfs_device *__alloc_device(void) +@@ -247,7 +247,7 @@ static struct btrfs_device *__alloc_device(void) spin_lock_init(&dev->reada_lock); atomic_set(&dev->reada_in_flight, 0); @@ -97280,7 +97552,7 @@ index bd0f45f..d28e89b 100644 btrfs_device_data_ordered_init(dev); INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM); INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM); -@@ -5198,7 +5198,7 @@ static struct btrfs_bio *alloc_btrfs_bio(int total_stripes, int real_stripes) +@@ -5240,7 +5240,7 @@ static struct btrfs_bio *alloc_btrfs_bio(int total_stripes, int real_stripes) sizeof(u64) * (total_stripes), GFP_NOFS|__GFP_NOFAIL); @@ -97289,7 +97561,7 @@ index bd0f45f..d28e89b 100644 atomic_set(&bbio->refs, 1); return bbio; -@@ -5881,7 +5881,7 @@ static void btrfs_end_bio(struct bio *bio) +@@ -5934,7 +5934,7 @@ static void btrfs_end_bio(struct bio *bio) int is_orig_bio = 0; if (bio->bi_error) { @@ -97298,7 +97570,7 @@ index bd0f45f..d28e89b 100644 if (bio->bi_error == -EIO || bio->bi_error == -EREMOTEIO) { unsigned int stripe_index = btrfs_io_bio(bio)->stripe_index; -@@ -5919,7 +5919,7 @@ static void btrfs_end_bio(struct bio *bio) +@@ -5972,7 +5972,7 @@ static void btrfs_end_bio(struct bio *bio) /* only send an error to the higher layers if it is * beyond the tolerance of the btrfs bio */ @@ -97307,16 +97579,16 @@ index bd0f45f..d28e89b 100644 bio->bi_error = -EIO; } else { /* -@@ -6030,7 +6030,7 @@ static void submit_stripe_bio(struct btrfs_root *root, struct btrfs_bio *bbio, +@@ -6083,7 +6083,7 @@ static void submit_stripe_bio(struct btrfs_root *root, struct btrfs_bio *bbio, static void bbio_error(struct btrfs_bio *bbio, struct bio *bio, u64 logical) { - atomic_inc(&bbio->error); + atomic_inc_unchecked(&bbio->error); if (atomic_dec_and_test(&bbio->stripes_pending)) { - /* Shoud be the original bio. */ + /* Should be the original bio. */ WARN_ON(bio != bbio->orig_bio); -@@ -6827,10 +6827,10 @@ int btrfs_run_dev_stats(struct btrfs_trans_handle *trans, +@@ -6958,10 +6958,10 @@ int btrfs_run_dev_stats(struct btrfs_trans_handle *trans, if (!device->dev_stats_valid || !btrfs_dev_stats_dirty(device)) continue; @@ -97330,7 +97602,7 @@ index bd0f45f..d28e89b 100644 mutex_unlock(&fs_devices->device_list_mutex); diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h -index 1939ebd..2330751 100644 +index 0ac90f8..9adeaff 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h @@ -148,8 +148,8 @@ struct btrfs_device { @@ -97353,7 +97625,7 @@ index 1939ebd..2330751 100644 int max_errors; int num_stripes; int mirror_num; -@@ -507,21 +507,21 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, +@@ -466,21 +466,21 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, static inline int btrfs_dev_stats_dirty(struct btrfs_device *dev) { @@ -97379,7 +97651,7 @@ index 1939ebd..2330751 100644 } static inline int btrfs_dev_stat_read_and_reset(struct btrfs_device *dev, -@@ -529,18 +529,18 @@ static inline int btrfs_dev_stat_read_and_reset(struct btrfs_device *dev, +@@ -488,18 +488,18 @@ static inline int btrfs_dev_stat_read_and_reset(struct btrfs_device *dev, { int ret; @@ -97403,7 +97675,7 @@ index 1939ebd..2330751 100644 static inline void btrfs_dev_stat_reset(struct btrfs_device *dev, diff --git a/fs/buffer.c b/fs/buffer.c -index af0d9a8..2437a67 100644 +index 754813a..4c25e3c 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3406,7 +3406,7 @@ void __init buffer_init(void) @@ -97584,17 +97856,17 @@ index eccd339..4c1d995 100644 return 0; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c -index 4fb2bbc..2f8aa11 100644 +index 6e0fedf..37aeaec 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c -@@ -197,10 +197,18 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, +@@ -261,10 +261,18 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, spin_unlock(&dentry->d_lock); if (emit_dentry) { + char d_name[DNAME_INLINE_LEN]; + const unsigned char *name; + - dout(" %llu (%llu) dentry %p %pd %p\n", di->offset, ctx->pos, + dout(" %llx dentry %p %pd %p\n", di->offset, dentry, dentry, d_inode(dentry)); ctx->pos = di->offset; - if (!dir_emit(ctx, dentry->d_name.name, @@ -97607,20 +97879,11 @@ index 4fb2bbc..2f8aa11 100644 dentry->d_name.len, ceph_translate_ino(dentry->d_sb, d_inode(dentry)->i_ino), -@@ -242,7 +250,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; - unsigned frag = fpos_frag(ctx->pos); -- int off = fpos_off(ctx->pos); -+ unsigned int off = fpos_off(ctx->pos); - int err; - u32 ftype; - struct ceph_mds_reply_info_parsed *rinfo; diff --git a/fs/ceph/super.c b/fs/ceph/super.c -index f12d5e2..4d49bf1 100644 +index 91e0248..08de6ce 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c -@@ -904,7 +904,7 @@ static int ceph_compare_super(struct super_block *sb, void *data) +@@ -918,7 +918,7 @@ static int ceph_compare_super(struct super_block *sb, void *data) /* * construct our own bdi so we can control readahead, etc. */ @@ -97629,7 +97892,7 @@ index f12d5e2..4d49bf1 100644 static int ceph_register_bdi(struct super_block *sb, struct ceph_fs_client *fsc) -@@ -921,7 +921,7 @@ static int ceph_register_bdi(struct super_block *sb, +@@ -935,7 +935,7 @@ static int ceph_register_bdi(struct super_block *sb, VM_MAX_READAHEAD * 1024 / PAGE_SIZE; err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld", @@ -97683,10 +97946,10 @@ index 788e191..ca209d6 100644 server->ops->print_stats(m, tcon); } diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c -index 89201564..eafd380 100644 +index 5d841f3..761ed68 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c -@@ -1151,7 +1151,7 @@ cifs_init_request_bufs(void) +@@ -1143,7 +1143,7 @@ cifs_init_request_bufs(void) */ cifs_req_cachep = kmem_cache_create("cifs_request", CIFSMaxBufSize + max_hdr_size, 0, @@ -97695,7 +97958,7 @@ index 89201564..eafd380 100644 if (cifs_req_cachep == NULL) return -ENOMEM; -@@ -1178,7 +1178,7 @@ cifs_init_request_bufs(void) +@@ -1170,7 +1170,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", @@ -97704,7 +97967,7 @@ index 89201564..eafd380 100644 NULL); if (cifs_sm_req_cachep == NULL) { mempool_destroy(cifs_req_poolp); -@@ -1263,8 +1263,8 @@ init_cifs(void) +@@ -1255,8 +1255,8 @@ init_cifs(void) atomic_set(&bufAllocCount, 0); atomic_set(&smBufAllocCount, 0); #ifdef CONFIG_CIFS_STATS2 @@ -97716,10 +97979,10 @@ index 89201564..eafd380 100644 atomic_set(&midCount, 0); diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h -index f2cc0b3..f5168a7 100644 +index 8f1d8c1..2f3f665 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h -@@ -843,35 +843,35 @@ struct cifs_tcon { +@@ -841,35 +841,35 @@ struct cifs_tcon { __u16 Flags; /* optional support bits */ enum statusEnum tidStatus; #ifdef CONFIG_CIFS_STATS @@ -97779,7 +98042,7 @@ index f2cc0b3..f5168a7 100644 } smb2_stats; #endif /* CONFIG_CIFS_SMB2 */ } stats; -@@ -1221,7 +1221,7 @@ convert_delimiter(char *path, char delim) +@@ -1219,7 +1219,7 @@ convert_delimiter(char *path, char delim) } #ifdef CONFIG_CIFS_STATS @@ -97788,7 +98051,7 @@ index f2cc0b3..f5168a7 100644 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon, unsigned int bytes) -@@ -1588,8 +1588,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount; +@@ -1586,8 +1586,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount; /* Various Debug counters */ GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */ #ifdef CONFIG_CIFS_STATS2 @@ -97800,10 +98063,10 @@ index f2cc0b3..f5168a7 100644 GLOBAL_EXTERN atomic_t smBufAllocCount; GLOBAL_EXTERN atomic_t midCount; diff --git a/fs/cifs/file.c b/fs/cifs/file.c -index c03d074..0465e40 100644 +index d4890b6..a79317e 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c -@@ -1372,7 +1372,7 @@ cifs_free_llist(struct list_head *llist) +@@ -1379,7 +1379,7 @@ cifs_free_llist(struct list_head *llist) int cifs_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock, @@ -97812,7 +98075,7 @@ index c03d074..0465e40 100644 { int rc = 0, stored_rc; int types[] = {LOCKING_ANDX_LARGE_FILES, -@@ -2054,10 +2054,14 @@ static int cifs_writepages(struct address_space *mapping, +@@ -2062,10 +2062,14 @@ static int cifs_writepages(struct address_space *mapping, index = mapping->writeback_index; /* Start from prev offset */ end = -1; } else { @@ -97830,7 +98093,7 @@ index c03d074..0465e40 100644 scanned = true; } server = cifs_sb_master_tcon(cifs_sb)->ses->server; -@@ -2531,7 +2535,7 @@ cifs_write_from_iter(loff_t offset, size_t len, struct iov_iter *from, +@@ -2539,7 +2543,7 @@ cifs_write_from_iter(loff_t offset, size_t len, struct iov_iter *from, wdata->pid = pid; wdata->bytes = cur_len; wdata->pagesz = PAGE_SIZE; @@ -98154,7 +98417,7 @@ index 5bb630a..043dc70 100644 return hit; diff --git a/fs/coda/dir.c b/fs/coda/dir.c -index 42e731b..2f87bc5 100644 +index 6fb8672..da34e6a 100644 --- a/fs/coda/dir.c +++ b/fs/coda/dir.c @@ -29,11 +29,10 @@ @@ -98170,7 +98433,7 @@ index 42e731b..2f87bc5 100644 /* inode operations for directories */ /* access routines: lookup, readlink, permission */ -@@ -562,7 +561,7 @@ const struct inode_operations coda_dir_inode_operations = { +@@ -568,7 +567,7 @@ const struct inode_operations coda_dir_inode_operations = { .symlink = coda_symlink, .mkdir = coda_mkdir, .rmdir = coda_rmdir, @@ -98180,7 +98443,7 @@ index 42e731b..2f87bc5 100644 .permission = coda_permission, .getattr = coda_getattr, diff --git a/fs/compat.c b/fs/compat.c -index a71936a..1659c19 100644 +index be6e48b..f7baebf 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -54,7 +54,7 @@ @@ -98255,8 +98518,8 @@ index a71936a..1659c19 100644 + dirent = buf->previous; if (dirent) { - if (__put_user(offset, &dirent->d_off)) -@@ -979,6 +990,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd, + if (signal_pending(current)) +@@ -981,6 +992,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd, if (!f.file) return -EBADF; @@ -98264,7 +98527,7 @@ index a71936a..1659c19 100644 error = iterate_dir(f.file, &buf.ctx); if (error >= 0) error = buf.error; -@@ -999,6 +1011,7 @@ struct compat_getdents_callback64 { +@@ -1001,6 +1013,7 @@ struct compat_getdents_callback64 { struct dir_context ctx; struct linux_dirent64 __user *current_dir; struct linux_dirent64 __user *previous; @@ -98272,7 +98535,7 @@ index a71936a..1659c19 100644 int count; int error; }; -@@ -1017,6 +1030,10 @@ static int compat_filldir64(struct dir_context *ctx, const char *name, +@@ -1019,6 +1032,10 @@ static int compat_filldir64(struct dir_context *ctx, const char *name, buf->error = -EINVAL; /* only used if we fail.. */ if (reclen > buf->count) return -EINVAL; @@ -98283,7 +98546,7 @@ index a71936a..1659c19 100644 dirent = buf->previous; if (dirent) { -@@ -1066,13 +1083,13 @@ COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd, +@@ -1070,13 +1087,13 @@ COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd, if (!f.file) return -EBADF; @@ -98299,7 +98562,7 @@ index a71936a..1659c19 100644 error = -EFAULT; else error = count - buf.count; -@@ -1327,7 +1344,7 @@ COMPAT_SYSCALL_DEFINE5(select, int, n, compat_ulong_t __user *, inp, +@@ -1331,7 +1348,7 @@ COMPAT_SYSCALL_DEFINE5(select, int, n, compat_ulong_t __user *, inp, } struct compat_sel_arg_struct { @@ -98371,11 +98634,11 @@ index bd01b92..f6fcace 100644 return 1; if (a < b) diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c -index ea59c89..568f279 100644 +index 56fb261..156ee82 100644 --- a/fs/configfs/dir.c +++ b/fs/configfs/dir.c -@@ -1639,7 +1639,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx) - } +@@ -1638,7 +1638,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx) + list_move(q, &parent_sd->s_children); for (p = q->next; p != &parent_sd->s_children; p = p->next) { struct configfs_dirent *next; - const char *name; @@ -98384,8 +98647,8 @@ index ea59c89..568f279 100644 int len; struct inode *inode = NULL; -@@ -1648,7 +1649,12 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx) - continue; +@@ -1669,7 +1670,12 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx) + ino = iunique(sb, 2); name = configfs_get_name(next); - len = strlen(name); @@ -98396,13 +98659,13 @@ index ea59c89..568f279 100644 + } else + len = strlen(name); - /* - * We'll have a dentry and an inode for + if (!dir_emit(ctx, name, len, ino, dt_type(next))) + return 0; diff --git a/fs/coredump.c b/fs/coredump.c -index 47c32c3..dc0e594 100644 +index 281b768..f39dcdf 100644 --- a/fs/coredump.c +++ b/fs/coredump.c -@@ -481,8 +481,8 @@ static void wait_for_dump_helpers(struct file *file) +@@ -483,8 +483,8 @@ static void wait_for_dump_helpers(struct file *file) struct pipe_inode_info *pipe = file->private_data; pipe_lock(pipe); @@ -98413,7 +98676,7 @@ index 47c32c3..dc0e594 100644 wake_up_interruptible_sync(&pipe->wait); kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); pipe_unlock(pipe); -@@ -491,11 +491,11 @@ static void wait_for_dump_helpers(struct file *file) +@@ -493,11 +493,11 @@ static void wait_for_dump_helpers(struct file *file) * We actually want wait_event_freezable() but then we need * to clear TIF_SIGPENDING and improve dump_interrupted(). */ @@ -98428,7 +98691,7 @@ index 47c32c3..dc0e594 100644 pipe_unlock(pipe); } -@@ -542,7 +542,9 @@ void do_coredump(const siginfo_t *siginfo) +@@ -544,7 +544,9 @@ void do_coredump(const siginfo_t *siginfo) /* require nonrelative corefile path and be extra careful */ bool need_suid_safe = false; bool core_dumped = false; @@ -98439,7 +98702,7 @@ index 47c32c3..dc0e594 100644 struct coredump_params cprm = { .siginfo = siginfo, .regs = signal_pt_regs(), -@@ -555,12 +557,17 @@ void do_coredump(const siginfo_t *siginfo) +@@ -557,12 +559,17 @@ void do_coredump(const siginfo_t *siginfo) .mm_flags = mm->flags, }; @@ -98459,7 +98722,7 @@ index 47c32c3..dc0e594 100644 goto fail; cred = prepare_creds(); -@@ -578,7 +585,7 @@ void do_coredump(const siginfo_t *siginfo) +@@ -580,7 +587,7 @@ void do_coredump(const siginfo_t *siginfo) need_suid_safe = true; } @@ -98468,7 +98731,7 @@ index 47c32c3..dc0e594 100644 if (retval < 0) goto fail_creds; -@@ -621,7 +628,7 @@ void do_coredump(const siginfo_t *siginfo) +@@ -623,7 +630,7 @@ void do_coredump(const siginfo_t *siginfo) } cprm.limit = RLIM_INFINITY; @@ -98477,7 +98740,7 @@ index 47c32c3..dc0e594 100644 if (core_pipe_limit && (core_pipe_limit < dump_count)) { printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n", task_tgid_vnr(current), current->comm); -@@ -655,6 +662,8 @@ void do_coredump(const siginfo_t *siginfo) +@@ -657,6 +664,8 @@ void do_coredump(const siginfo_t *siginfo) int open_flags = O_CREAT | O_RDWR | O_NOFOLLOW | O_LARGEFILE | O_EXCL; @@ -98486,7 +98749,7 @@ index 47c32c3..dc0e594 100644 if (cprm.limit < binfmt->min_coredump) goto fail_unlock; -@@ -680,7 +689,7 @@ void do_coredump(const siginfo_t *siginfo) +@@ -682,7 +691,7 @@ void do_coredump(const siginfo_t *siginfo) * If it doesn't exist, that's fine. If there's some * other problem, we'll catch it at the filp_open(). */ @@ -98495,7 +98758,7 @@ index 47c32c3..dc0e594 100644 set_fs(old_fs); } -@@ -761,7 +770,7 @@ close_fail: +@@ -763,7 +772,7 @@ close_fail: filp_close(cprm.file, NULL); fail_dropcount: if (ispipe) @@ -98504,7 +98767,7 @@ index 47c32c3..dc0e594 100644 fail_unlock: kfree(cn.corename); coredump_finish(mm, core_dumped); -@@ -782,6 +791,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr) +@@ -784,6 +793,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr) struct file *file = cprm->file; loff_t pos = file->f_pos; ssize_t n; @@ -98514,10 +98777,10 @@ index 47c32c3..dc0e594 100644 return 0; while (nr) { diff --git a/fs/dcache.c b/fs/dcache.c -index 44008e3..c6ec6f3 100644 +index d6847d7..448382e 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -328,8 +328,9 @@ static inline void dentry_rcuwalk_invalidate(struct dentry *dentry) +@@ -339,8 +339,9 @@ static inline void dentry_rcuwalk_invalidate(struct dentry *dentry) * and is unhashed. */ static void dentry_iput(struct dentry * dentry) @@ -98529,7 +98792,7 @@ index 44008e3..c6ec6f3 100644 { struct inode *inode = dentry->d_inode; if (inode) { -@@ -353,8 +354,9 @@ static void dentry_iput(struct dentry * dentry) +@@ -364,8 +365,9 @@ static void dentry_iput(struct dentry * dentry) * d_iput() operation if defined. dentry remains in-use. */ static void dentry_unlink_inode(struct dentry * dentry) @@ -98541,7 +98804,7 @@ index 44008e3..c6ec6f3 100644 { struct inode *inode = dentry->d_inode; -@@ -534,7 +536,7 @@ static void __dentry_kill(struct dentry *dentry) +@@ -578,7 +580,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. */ @@ -98550,7 +98813,7 @@ index 44008e3..c6ec6f3 100644 this_cpu_dec(nr_dentry); if (dentry->d_op && dentry->d_op->d_release) dentry->d_op->d_release(dentry); -@@ -556,7 +558,8 @@ static void __dentry_kill(struct dentry *dentry) +@@ -600,7 +602,8 @@ static void __dentry_kill(struct dentry *dentry) * Returns dentry requiring refcount drop, or NULL if we're done. */ static struct dentry *dentry_kill(struct dentry *dentry) @@ -98560,7 +98823,7 @@ index 44008e3..c6ec6f3 100644 { struct inode *inode = dentry->d_inode; struct dentry *parent = NULL; -@@ -587,7 +590,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry) +@@ -631,7 +634,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry) struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; @@ -98569,7 +98832,7 @@ index 44008e3..c6ec6f3 100644 return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; -@@ -649,8 +652,8 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -693,8 +696,8 @@ static inline bool fast_dput(struct dentry *dentry) */ if (unlikely(ret < 0)) { spin_lock(&dentry->d_lock); @@ -98580,7 +98843,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&dentry->d_lock); return 1; } -@@ -705,7 +708,7 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -749,7 +752,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. */ @@ -98589,7 +98852,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&dentry->d_lock); return 1; } -@@ -715,7 +718,7 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -759,7 +762,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. */ @@ -98598,7 +98861,7 @@ index 44008e3..c6ec6f3 100644 return 0; } -@@ -777,7 +780,7 @@ repeat: +@@ -823,7 +826,7 @@ repeat: dentry->d_flags |= DCACHE_REFERENCED; dentry_lru_add(dentry); @@ -98607,7 +98870,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&dentry->d_lock); return; -@@ -792,7 +795,7 @@ EXPORT_SYMBOL(dput); +@@ -838,7 +841,7 @@ EXPORT_SYMBOL(dput); /* This must be called with d_lock held */ static inline void __dget_dlock(struct dentry *dentry) { @@ -98616,7 +98879,7 @@ index 44008e3..c6ec6f3 100644 } static inline void __dget(struct dentry *dentry) -@@ -833,8 +836,8 @@ repeat: +@@ -879,8 +882,8 @@ repeat: goto repeat; } rcu_read_unlock(); @@ -98627,7 +98890,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&ret->d_lock); return ret; } -@@ -912,9 +915,9 @@ restart: +@@ -958,9 +961,9 @@ restart: spin_lock(&inode->i_lock); hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { spin_lock(&dentry->d_lock); @@ -98639,7 +98902,7 @@ index 44008e3..c6ec6f3 100644 __dentry_kill(dentry); dput(parent); goto restart; -@@ -949,7 +952,7 @@ static void shrink_dentry_list(struct list_head *list) +@@ -995,7 +998,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. */ @@ -98648,7 +98911,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&dentry->d_lock); if (parent) spin_unlock(&parent->d_lock); -@@ -987,8 +990,8 @@ static void shrink_dentry_list(struct list_head *list) +@@ -1033,8 +1036,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); @@ -98659,7 +98922,7 @@ index 44008e3..c6ec6f3 100644 spin_unlock(&dentry->d_lock); if (parent) spin_unlock(&parent->d_lock); -@@ -1028,7 +1031,7 @@ static enum lru_status dentry_lru_isolate(struct list_head *item, +@@ -1074,7 +1077,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. */ @@ -98668,7 +98931,7 @@ index 44008e3..c6ec6f3 100644 d_lru_isolate(lru, dentry); spin_unlock(&dentry->d_lock); return LRU_REMOVED; -@@ -1362,7 +1365,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry) +@@ -1411,7 +1414,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); @@ -98677,7 +98940,7 @@ index 44008e3..c6ec6f3 100644 d_shrink_add(dentry, &data->dispose); data->found++; } -@@ -1410,7 +1413,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) +@@ -1459,7 +1462,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) return D_WALK_CONTINUE; /* root with refcount 1 is fine */ @@ -98686,7 +98949,7 @@ index 44008e3..c6ec6f3 100644 return D_WALK_CONTINUE; printk(KERN_ERR "BUG: Dentry %p{i=%lx,n=%pd} " -@@ -1419,7 +1422,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) +@@ -1468,7 +1471,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) dentry->d_inode ? dentry->d_inode->i_ino : 0UL, dentry, @@ -98695,16 +98958,16 @@ index 44008e3..c6ec6f3 100644 dentry->d_sb->s_type->name, dentry->d_sb->s_id); WARN_ON(1); -@@ -1560,7 +1563,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) { +@@ -1613,7 +1616,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) + dname = dentry->d_iname; + } else if (name->len > DNAME_INLINE_LEN-1) { size_t size = offsetof(struct external_name, name[1]); - struct external_name *p = kmalloc(size + name->len, + struct external_name *p = kmalloc(round_up(size + name->len, sizeof(unsigned long)), GFP_KERNEL_ACCOUNT); if (!p) { kmem_cache_free(dentry_cache, dentry); -@@ -1584,7 +1587,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) +@@ -1637,7 +1640,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) smp_wmb(); dentry->d_name.name = dname; @@ -98713,7 +98976,7 @@ index 44008e3..c6ec6f3 100644 dentry->d_flags = 0; spin_lock_init(&dentry->d_lock); seqcount_init(&dentry->d_seq); -@@ -1593,6 +1596,9 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) +@@ -1646,6 +1649,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; @@ -98723,7 +98986,7 @@ index 44008e3..c6ec6f3 100644 INIT_HLIST_BL_NODE(&dentry->d_hash); INIT_LIST_HEAD(&dentry->d_lru); INIT_LIST_HEAD(&dentry->d_subdirs); -@@ -2245,7 +2251,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) +@@ -2311,7 +2317,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) goto next; } @@ -98732,7 +98995,7 @@ index 44008e3..c6ec6f3 100644 found = dentry; spin_unlock(&dentry->d_lock); break; -@@ -2313,7 +2319,7 @@ again: +@@ -2379,7 +2385,7 @@ again: spin_lock(&dentry->d_lock); inode = dentry->d_inode; isdir = S_ISDIR(inode->i_mode); @@ -98741,7 +99004,7 @@ index 44008e3..c6ec6f3 100644 if (!spin_trylock(&inode->i_lock)) { spin_unlock(&dentry->d_lock); cpu_relax(); -@@ -3336,7 +3342,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry) +@@ -3598,7 +3604,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; @@ -98750,7 +99013,7 @@ index 44008e3..c6ec6f3 100644 } } return D_WALK_CONTINUE; -@@ -3444,7 +3450,8 @@ void __init vfs_caches_init_early(void) +@@ -3706,7 +3712,8 @@ void __init vfs_caches_init_early(void) void __init vfs_caches_init(void) { names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0, @@ -98760,11 +99023,33 @@ index 44008e3..c6ec6f3 100644 dcache_init(); inode_init(); +diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c +index 592059f..8faaef38 100644 +--- a/fs/debugfs/file.c ++++ b/fs/debugfs/file.c +@@ -212,7 +212,7 @@ static int full_proxy_release(struct inode *inode, struct file *filp) + return 0; + } + +-static void __full_proxy_fops_init(struct file_operations *proxy_fops, ++static void __full_proxy_fops_init(file_operations_no_const *proxy_fops, + const struct file_operations *real_fops) + { + proxy_fops->release = full_proxy_release; +@@ -232,7 +232,7 @@ static int full_proxy_open(struct inode *inode, struct file *filp) + { + const struct dentry *dentry = F_DENTRY(filp); + const struct file_operations *real_fops = NULL; +- struct file_operations *proxy_fops = NULL; ++ file_operations_no_const *proxy_fops = NULL; + int srcu_idx, r; + + r = debugfs_use_file_start(dentry, &srcu_idx); diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c -index 8580831..36166e5 100644 +index 4bc1f68..8815afb 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c -@@ -247,6 +247,10 @@ static struct dentry *start_creating(const char *name, struct dentry *parent) +@@ -253,6 +253,10 @@ static struct dentry *start_creating(const char *name, struct dentry *parent) struct dentry *dentry; int error; @@ -98775,7 +99060,7 @@ index 8580831..36166e5 100644 pr_debug("debugfs: creating file '%s'\n",name); if (IS_ERR(parent)) -@@ -406,6 +410,10 @@ EXPORT_SYMBOL_GPL(debugfs_create_file_size); +@@ -466,6 +470,10 @@ EXPORT_SYMBOL_GPL(debugfs_create_file_size); * If debugfs is not enabled in the kernel, the value -%ENODEV will be * returned. */ @@ -98786,7 +99071,7 @@ index 8580831..36166e5 100644 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) { struct dentry *dentry = start_creating(name, parent); -@@ -418,7 +426,12 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) +@@ -478,7 +486,12 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) if (unlikely(!inode)) return failed_creating(dentry); @@ -98800,7 +99085,7 @@ index 8580831..36166e5 100644 inode->i_op = &simple_dir_inode_operations; inode->i_fop = &simple_dir_operations; -@@ -721,6 +734,10 @@ static int __init debugfs_init(void) +@@ -789,6 +802,10 @@ static int __init debugfs_init(void) { int retval; @@ -98811,44 +99096,11 @@ index 8580831..36166e5 100644 retval = sysfs_create_mount_point(kernel_kobj, "debug"); if (retval) return retval; -diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c -index f024040..27794b1 100644 ---- a/fs/ecryptfs/file.c -+++ b/fs/ecryptfs/file.c -@@ -169,6 +169,19 @@ out: - return rc; - } - -+static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma) -+{ -+ struct file *lower_file = ecryptfs_file_to_lower(file); -+ /* -+ * Don't allow mmap on top of file systems that don't support it -+ * natively. If FILESYSTEM_MAX_STACK_DEPTH > 2 or ecryptfs -+ * allows recursive mounting, this will need to be extended. -+ */ -+ if (!lower_file->f_op->mmap) -+ return -ENODEV; -+ return generic_file_mmap(file, vma); -+} -+ - /** - * ecryptfs_open - * @inode: inode speciying file to open -@@ -403,7 +416,7 @@ const struct file_operations ecryptfs_main_fops = { - #ifdef CONFIG_COMPAT - .compat_ioctl = ecryptfs_compat_ioctl, - #endif -- .mmap = generic_file_mmap, -+ .mmap = ecryptfs_mmap, - .open = ecryptfs_open, - .flush = ecryptfs_flush, - .release = ecryptfs_release, diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c -index 224b49e..980370c 100644 +index 9d153b6..60baa46 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c -@@ -654,7 +654,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz) +@@ -639,7 +639,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz) old_fs = get_fs(); set_fs(get_ds()); rc = d_inode(lower_dentry)->i_op->readlink(lower_dentry, @@ -98871,7 +99123,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 c4010b8..a64ddfb 100644 +index 887c1c9..bb6f3604 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -57,8 +57,20 @@ @@ -98986,7 +99238,7 @@ index c4010b8..a64ddfb 100644 /* * Limit to 1/4-th the stack size for the argv+env strings. * This ensures that: -@@ -280,6 +311,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm) +@@ -279,6 +310,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm) vma->vm_end = STACK_TOP_MAX; vma->vm_start = vma->vm_end - PAGE_SIZE; vma->vm_flags = VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP; @@ -98998,7 +99250,7 @@ index c4010b8..a64ddfb 100644 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); INIT_LIST_HEAD(&vma->anon_vma_chain); -@@ -291,6 +327,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm) +@@ -290,6 +326,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm) arch_bprm_mm_init(mm, vma); up_write(&mm->mmap_sem); bprm->p = vma->vm_end - sizeof(void *); @@ -99108,11 +99360,10 @@ index c4010b8..a64ddfb 100644 #endif if (bprm->loader) -@@ -701,8 +744,28 @@ int setup_arg_pages(struct linux_binprm *bprm, - bprm->exec -= stack_shift; +@@ -703,8 +746,27 @@ int setup_arg_pages(struct linux_binprm *bprm, + if (down_write_killable(&mm->mmap_sem)) + return -EINTR; - down_write(&mm->mmap_sem); -+ + /* Move stack pages down in memory. */ + if (stack_shift) { + ret = shift_arg_pages(vma, stack_shift); @@ -99137,7 +99388,7 @@ index c4010b8..a64ddfb 100644 /* * Adjust stack execute permissions; explicitly enable for * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone -@@ -721,13 +784,6 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -723,13 +785,6 @@ int setup_arg_pages(struct linux_binprm *bprm, goto out_unlock; BUG_ON(prev != vma); @@ -99151,7 +99402,7 @@ index c4010b8..a64ddfb 100644 /* mprotect_fixup is overkill to remove the temporary stack flags */ vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP; -@@ -751,6 +807,27 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -753,6 +808,27 @@ int setup_arg_pages(struct linux_binprm *bprm, #endif current->mm->start_stack = bprm->p; ret = expand_stack(vma, stack_base); @@ -99179,7 +99430,7 @@ index c4010b8..a64ddfb 100644 if (ret) ret = -EFAULT; -@@ -766,6 +843,7 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) +@@ -768,6 +844,7 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) { struct file *file; int err; @@ -99187,7 +99438,7 @@ index c4010b8..a64ddfb 100644 struct open_flags open_exec_flags = { .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC, .acc_mode = MAY_EXEC, -@@ -791,12 +869,22 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) +@@ -793,12 +870,22 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) if (path_noexec(&file->f_path)) goto exit; @@ -99211,7 +99462,7 @@ index c4010b8..a64ddfb 100644 out: return file; -@@ -826,10 +914,13 @@ int kernel_read(struct file *file, loff_t offset, +@@ -828,10 +915,13 @@ int kernel_read(struct file *file, loff_t offset, loff_t pos = offset; int result; @@ -99226,7 +99477,7 @@ index c4010b8..a64ddfb 100644 set_fs(old_fs); return result; } -@@ -1373,7 +1464,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm) +@@ -1388,7 +1478,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm) } rcu_read_unlock(); @@ -99235,7 +99486,7 @@ index c4010b8..a64ddfb 100644 bprm->unsafe |= LSM_UNSAFE_SHARE; else p->fs->in_exec = 1; -@@ -1574,6 +1665,31 @@ static int exec_binprm(struct linux_binprm *bprm) +@@ -1591,6 +1681,31 @@ static int exec_binprm(struct linux_binprm *bprm) return ret; } @@ -99267,7 +99518,7 @@ index c4010b8..a64ddfb 100644 /* * sys_execve() executes a new program. */ -@@ -1582,6 +1698,11 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1599,6 +1714,11 @@ static int do_execveat_common(int fd, struct filename *filename, struct user_arg_ptr envp, int flags) { @@ -99279,7 +99530,7 @@ index c4010b8..a64ddfb 100644 char *pathbuf = NULL; struct linux_binprm *bprm; struct file *file; -@@ -1591,6 +1712,8 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1608,6 +1728,8 @@ static int do_execveat_common(int fd, struct filename *filename, if (IS_ERR(filename)) return PTR_ERR(filename); @@ -99288,7 +99539,7 @@ index c4010b8..a64ddfb 100644 /* * We move the actual failure in case of RLIMIT_NPROC excess from * set*uid() to execve() because too many poorly written programs -@@ -1654,6 +1777,11 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1671,6 +1793,11 @@ static int do_execveat_common(int fd, struct filename *filename, } bprm->interp = bprm->filename; @@ -99300,7 +99551,7 @@ index c4010b8..a64ddfb 100644 retval = bprm_mm_init(bprm); if (retval) goto out_unmark; -@@ -1670,24 +1798,70 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1687,24 +1814,70 @@ static int do_execveat_common(int fd, struct filename *filename, if (retval < 0) goto out; @@ -99375,7 +99626,7 @@ index c4010b8..a64ddfb 100644 current->fs->in_exec = 0; current->in_execve = 0; acct_update_integrals(current); -@@ -1699,6 +1873,14 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1716,6 +1889,14 @@ static int do_execveat_common(int fd, struct filename *filename, put_files_struct(displaced); return retval; @@ -99390,7 +99641,7 @@ index c4010b8..a64ddfb 100644 out: if (bprm->mm) { acct_arg_size(bprm, 0); -@@ -1845,3 +2027,316 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd, +@@ -1862,3 +2043,316 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd, argv, envp, flags); } #endif @@ -99708,7 +99959,7 @@ index c4010b8..a64ddfb 100644 +EXPORT_SYMBOL(report_size_overflow); +#endif diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c -index 49e1bd0..41978bb 100644 +index 9dc4c6d..ed7c0e7 100644 --- a/fs/exofs/inode.c +++ b/fs/exofs/inode.c @@ -470,6 +470,11 @@ fail: @@ -99750,7 +100001,7 @@ index 9f9992b..8b59411 100644 } return 1; diff --git a/fs/ext2/super.c b/fs/ext2/super.c -index b78caf2..b568bde 100644 +index 1d93795..77dd5a4 100644 --- a/fs/ext2/super.c +++ b/fs/ext2/super.c @@ -273,10 +273,8 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root) @@ -99802,7 +100053,7 @@ index 1a5e3bf..3229306 100644 cleanup: brelse(bh); diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c -index fe1f50f..3f4c870 100644 +index 3020fd7..6f1b8a2 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c @@ -563,8 +563,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, @@ -99817,10 +100068,10 @@ index fe1f50f..3f4c870 100644 if (free_clusters >= (nclusters + dirty_clusters + resv_clusters)) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h -index 349afeb..904541a 100644 +index b84aa1c..36fd3b0 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h -@@ -1441,19 +1441,19 @@ struct ext4_sb_info { +@@ -1445,19 +1445,19 @@ struct ext4_sb_info { unsigned long s_mb_last_start; /* stats for buddy allocator */ @@ -99851,10 +100102,10 @@ index 349afeb..904541a 100644 /* locality groups */ diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c -index 95bf467..d9294fc 100644 +index 2a2eef9..f37183d 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c -@@ -863,7 +863,7 @@ ext4_find_extent(struct inode *inode, ext4_lblk_t block, +@@ -868,7 +868,7 @@ ext4_find_extent(struct inode *inode, ext4_lblk_t block, struct ext4_extent_header *eh; struct buffer_head *bh; struct ext4_ext_path *path = orig_path ? *orig_path : NULL; @@ -99864,7 +100115,7 @@ index 95bf467..d9294fc 100644 eh = ext_inode_hdr(inode); diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c -index 9d26fa2..169a7b1 100644 +index c1ab3ec..d5064c9 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -1921,7 +1921,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, @@ -99981,7 +100232,7 @@ index 9d26fa2..169a7b1 100644 return 0; diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c -index 34038e3..322fe62 100644 +index cf68100..f96c5c0 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, @@ -100023,10 +100274,10 @@ index 34038e3..322fe62 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 304c712..2c8f9bd 100644 +index 3822a5a..de73791 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c -@@ -1306,7 +1306,7 @@ static ext4_fsblk_t get_sb_block(void **data) +@@ -1307,7 +1307,7 @@ static ext4_fsblk_t get_sb_block(void **data) } #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3)) @@ -100073,6 +100324,44 @@ index e79bd32..769b6b3 100644 } static int +diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h +index 916e7c2..9ffb088 100644 +--- a/fs/f2fs/f2fs.h ++++ b/fs/f2fs/f2fs.h +@@ -49,7 +49,7 @@ enum { + }; + + struct f2fs_fault_info { +- atomic_t inject_ops; ++ atomic_unchecked_t inject_ops; + unsigned int inject_rate; + unsigned int inject_type; + }; +@@ -75,9 +75,8 @@ static inline bool time_to_inject(int type) + else if (type == FAULT_DIR_DEPTH && !IS_FAULT_SET(type)) + return false; + +- atomic_inc(&f2fs_fault.inject_ops); +- if (atomic_read(&f2fs_fault.inject_ops) >= f2fs_fault.inject_rate) { +- atomic_set(&f2fs_fault.inject_ops, 0); ++ if (atomic_inc_return_unchecked(&f2fs_fault.inject_ops) >= f2fs_fault.inject_rate) { ++ atomic_set_unchecked(&f2fs_fault.inject_ops, 0); + printk("%sF2FS-fs : inject %s in %pF\n", + KERN_INFO, + fault_name[type], +diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c +index 74cc852..5d5d8b9 100644 +--- a/fs/f2fs/super.c ++++ b/fs/f2fs/super.c +@@ -54,7 +54,7 @@ char *fault_name[FAULT_MAX] = { + static void f2fs_build_fault_attr(unsigned int rate) + { + if (rate) { +- atomic_set(&f2fs_fault.inject_ops, 0); ++ atomic_set_unchecked(&f2fs_fault.inject_ops, 0); + f2fs_fault.inject_rate = rate; + f2fs_fault.inject_type = (1 << FAULT_MAX) - 1; + } else { diff --git a/fs/fcntl.c b/fs/fcntl.c index 350a2c8..9fb9bf7 100644 --- a/fs/fcntl.c @@ -100129,7 +100418,7 @@ index ca3c3dd..0c5456e 100644 retval = -EFAULT; goto out_handle; diff --git a/fs/file.c b/fs/file.c -index 1fbc5c0..7cfb36d 100644 +index 6b1acdf..b908eba 100644 --- a/fs/file.c +++ b/fs/file.c @@ -16,6 +16,7 @@ @@ -100168,7 +100457,7 @@ index 1fbc5c0..7cfb36d 100644 { struct fdtable *fdt; int expanded = 0; -@@ -817,7 +820,9 @@ bool get_close_on_exec(unsigned int fd) +@@ -822,7 +825,9 @@ bool get_close_on_exec(unsigned int fd) static int do_dup2(struct files_struct *files, struct file *file, unsigned fd, unsigned flags) @@ -100179,7 +100468,7 @@ index 1fbc5c0..7cfb36d 100644 { struct file *tofree; struct fdtable *fdt; -@@ -867,6 +872,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) +@@ -872,6 +877,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) if (!file) return __close_fd(files, fd); @@ -100187,7 +100476,7 @@ index 1fbc5c0..7cfb36d 100644 if (fd >= rlimit(RLIMIT_NOFILE)) return -EBADF; -@@ -893,6 +899,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) +@@ -898,6 +904,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) if (unlikely(oldfd == newfd)) return -EINVAL; @@ -100195,7 +100484,7 @@ index 1fbc5c0..7cfb36d 100644 if (newfd >= rlimit(RLIMIT_NOFILE)) return -EBADF; -@@ -948,6 +955,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) +@@ -953,6 +960,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) int f_dupfd(unsigned int from, struct file *file, unsigned flags) { int err; @@ -100275,7 +100564,7 @@ index 240aeb1..b7dad4f 100644 #define vii_mode vdi_mode #define vii_uid vdi_uid diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c -index 592cea5..a93fb5c 100644 +index fe7e83a..6e42cdc 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -880,9 +880,9 @@ fs_initcall(cgroup_writeback_init); @@ -100300,7 +100589,7 @@ index 592cea5..a93fb5c 100644 { struct bdi_writeback *wb = inode_to_wb(inode); -@@ -1136,9 +1136,8 @@ static int write_inode(struct inode *inode, struct writeback_control *wbc) +@@ -1137,9 +1137,8 @@ static int write_inode(struct inode *inode, struct writeback_control *wbc) * Wait for writeback on an inode to complete. Called with i_lock held. * Caller must make sure inode cannot go away when we drop i_lock. */ @@ -100311,7 +100600,7 @@ index 592cea5..a93fb5c 100644 { DEFINE_WAIT_BIT(wq, &inode->i_state, __I_SYNC); wait_queue_head_t *wqh; -@@ -1167,8 +1166,8 @@ void inode_wait_for_writeback(struct inode *inode) +@@ -1168,8 +1167,8 @@ void inode_wait_for_writeback(struct inode *inode) * held and drops it. It is aimed for callers not holding any inode reference * so once i_lock is dropped, inode can go away. */ @@ -101077,7 +101366,7 @@ index de67745..6a3a9b6 100644 ASSERTCMP(atomic_read(&op->usage), ==, 0); ASSERTCMP(op->state, ==, FSCACHE_OP_ST_DEAD); diff --git a/fs/fscache/page.c b/fs/fscache/page.c -index 3078b67..0c0e3c6 100644 +index c8c4f79..0512aeb 100644 --- a/fs/fscache/page.c +++ b/fs/fscache/page.c @@ -74,7 +74,7 @@ try_again: @@ -101395,7 +101684,7 @@ index 3078b67..0c0e3c6 100644 fscache_stat(&fscache_n_cop_write_page); ret = object->cache->ops->write_page(op, page); fscache_stat_d(&fscache_n_cop_write_page); -@@ -933,7 +933,7 @@ int __fscache_write_page(struct fscache_cookie *cookie, +@@ -935,7 +935,7 @@ int __fscache_write_page(struct fscache_cookie *cookie, ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); ASSERT(PageFsCache(page)); @@ -101404,7 +101693,7 @@ index 3078b67..0c0e3c6 100644 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { _leave(" = -ENOBUFS [invalidating]"); -@@ -992,7 +992,7 @@ int __fscache_write_page(struct fscache_cookie *cookie, +@@ -994,7 +994,7 @@ int __fscache_write_page(struct fscache_cookie *cookie, spin_unlock(&cookie->stores_lock); spin_unlock(&object->lock); @@ -101413,7 +101702,7 @@ index 3078b67..0c0e3c6 100644 op->store_limit = object->store_limit; __fscache_use_cookie(cookie); -@@ -1001,8 +1001,8 @@ int __fscache_write_page(struct fscache_cookie *cookie, +@@ -1003,8 +1003,8 @@ int __fscache_write_page(struct fscache_cookie *cookie, spin_unlock(&cookie->lock); radix_tree_preload_end(); @@ -101424,7 +101713,7 @@ index 3078b67..0c0e3c6 100644 /* the work queue now carries its own ref on the object */ fscache_put_operation(&op->op); -@@ -1010,14 +1010,14 @@ int __fscache_write_page(struct fscache_cookie *cookie, +@@ -1012,14 +1012,14 @@ int __fscache_write_page(struct fscache_cookie *cookie, return 0; already_queued: @@ -101441,7 +101730,7 @@ index 3078b67..0c0e3c6 100644 _leave(" = 0"); return 0; -@@ -1039,14 +1039,14 @@ nobufs: +@@ -1041,14 +1041,14 @@ nobufs: fscache_put_operation(&op->op); if (wake_cookie) __fscache_wake_unused_cookie(cookie); @@ -101458,7 +101747,7 @@ index 3078b67..0c0e3c6 100644 _leave(" = -ENOMEM"); return -ENOMEM; } -@@ -1064,7 +1064,7 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page) +@@ -1066,7 +1066,7 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page) ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); ASSERTCMP(page, !=, NULL); @@ -101467,7 +101756,7 @@ index 3078b67..0c0e3c6 100644 /* cache withdrawal may beat us to it */ if (!PageFsCache(page)) -@@ -1115,7 +1115,7 @@ void fscache_mark_page_cached(struct fscache_retrieval *op, struct page *page) +@@ -1117,7 +1117,7 @@ void fscache_mark_page_cached(struct fscache_retrieval *op, struct page *page) struct fscache_cookie *cookie = op->op.object->cookie; #ifdef CONFIG_FSCACHE_STATS @@ -101906,7 +102195,7 @@ index cbece12..9b01171 100644 } diff --git a/fs/fuse/file.c b/fs/fuse/file.c -index dcad5e2..562be95 100644 +index 9154f86..d653e02 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -825,9 +825,9 @@ struct fuse_fill_data { @@ -101922,7 +102211,7 @@ index dcad5e2..562be95 100644 struct inode *inode = data->inode; struct fuse_conn *fc = get_fuse_conn(inode); diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c -index 1ce6766..16c31cb 100644 +index 9961d843..e3981b0 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -29,7 +29,7 @@ static struct kmem_cache *fuse_inode_cachep; @@ -101934,7 +102223,7 @@ index 1ce6766..16c31cb 100644 unsigned max_user_bgreq; module_param_call(max_user_bgreq, set_global_limit, param_get_uint, -@@ -814,7 +814,7 @@ static void sanitize_global_limit(unsigned *limit) +@@ -828,7 +828,7 @@ static void sanitize_global_limit(unsigned *limit) *limit = (1 << 16) - 1; } @@ -101944,7 +102233,7 @@ index 1ce6766..16c31cb 100644 int rv; diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c -index 1bbbee9..d085f3f 100644 +index 37b7bc1..7e33492 100644 --- a/fs/gfs2/aops.c +++ b/fs/gfs2/aops.c @@ -492,7 +492,7 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page) @@ -101957,10 +102246,10 @@ index 1bbbee9..d085f3f 100644 struct gfs2_inode *ip = GFS2_I(page->mapping->host); struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host); diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c -index 208efc7..a6de70f 100644 +index e0f98e4..8772e3a 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c -@@ -775,7 +775,7 @@ static void calc_max_reserv(struct gfs2_inode *ip, loff_t *len, +@@ -776,7 +776,7 @@ static void calc_max_reserv(struct gfs2_inode *ip, loff_t *len, { loff_t max = *len; const struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); @@ -101970,7 +102259,7 @@ index 208efc7..a6de70f 100644 for (tmp = max_data; tmp > sdp->sd_diptrs;) { tmp = DIV_ROUND_UP(tmp, sdp->sd_inptrs); diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c -index 6539131..09e2dce 100644 +index 706fd93..9325aff 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -324,9 +324,9 @@ static void state_change(struct gfs2_glock *gl, unsigned int new_state) @@ -101985,7 +102274,7 @@ index 6539131..09e2dce 100644 } if (held1 && held2 && list_empty(&gl->gl_holders)) clear_bit(GLF_QUEUED, &gl->gl_flags); -@@ -553,9 +553,9 @@ out: +@@ -560,9 +560,9 @@ out: out_sched: clear_bit(GLF_LOCK, &gl->gl_flags); smp_mb__after_atomic(); @@ -101997,7 +102286,7 @@ index 6539131..09e2dce 100644 return; out_unlock: -@@ -690,7 +690,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, +@@ -697,7 +697,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, gl->gl_node.next = NULL; gl->gl_flags = 0; gl->gl_name = name; @@ -102006,7 +102295,7 @@ index 6539131..09e2dce 100644 gl->gl_state = LM_ST_UNLOCKED; gl->gl_target = LM_ST_UNLOCKED; gl->gl_demote_state = LM_ST_EXCLUSIVE; -@@ -979,9 +979,9 @@ int gfs2_glock_nq(struct gfs2_holder *gh) +@@ -986,9 +986,9 @@ int gfs2_glock_nq(struct gfs2_holder *gh) if (unlikely((LM_FLAG_NOEXP & gh->gh_flags) && test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))) { set_bit(GLF_REPLY_PENDING, &gl->gl_flags); @@ -102018,7 +102307,7 @@ index 6539131..09e2dce 100644 } run_queue(gl, 1); spin_unlock(&gl->gl_lockref.lock); -@@ -1286,7 +1286,7 @@ void gfs2_glock_complete(struct gfs2_glock *gl, int ret) +@@ -1293,7 +1293,7 @@ void gfs2_glock_complete(struct gfs2_glock *gl, int ret) } } @@ -102027,7 +102316,7 @@ index 6539131..09e2dce 100644 set_bit(GLF_REPLY_PENDING, &gl->gl_flags); spin_unlock(&gl->gl_lockref.lock); -@@ -1345,12 +1345,12 @@ add_back_to_lru: +@@ -1352,12 +1352,12 @@ add_back_to_lru: goto add_back_to_lru; } clear_bit(GLF_LRU, &gl->gl_flags); @@ -102042,7 +102331,7 @@ index 6539131..09e2dce 100644 spin_unlock(&gl->gl_lockref.lock); cond_resched_lock(&lru_lock); } -@@ -1677,7 +1677,7 @@ void gfs2_dump_glock(struct seq_file *seq, const struct gfs2_glock *gl) +@@ -1684,7 +1684,7 @@ void gfs2_dump_glock(struct seq_file *seq, const struct gfs2_glock *gl) state2str(gl->gl_demote_state), dtime, atomic_read(&gl->gl_ail_count), atomic_read(&gl->gl_revokes), @@ -102052,10 +102341,10 @@ index 6539131..09e2dce 100644 list_for_each_entry(gh, &gl->gl_holders, gh_list) dump_holder(seq, gh); diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c -index 437fd73..4f85148 100644 +index 5db59d4..817f4eb 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c -@@ -556,9 +556,9 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote) +@@ -549,9 +549,9 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote) if (gl->gl_demote_state == LM_ST_UNLOCKED && gl->gl_state == LM_ST_SHARED && ip) { @@ -102149,10 +102438,10 @@ index 4ea71eb..19effa7 100644 static int can_do_hugetlb_shm(void) { diff --git a/fs/inode.c b/fs/inode.c -index 69b8b52..9b58c2d 100644 +index 4ccbc21..2a84b51 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -850,19 +850,19 @@ unsigned int get_next_ino(void) +@@ -851,19 +851,19 @@ unsigned int get_next_ino(void) unsigned int *p = &get_cpu_var(last_ino); unsigned int res = *p; @@ -102191,10 +102480,10 @@ index 116a333..0f56deb 100644 if (ret) goto out; diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c -index 2ad98d6..00f8858 100644 +index 7007809..8b69fb9 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c -@@ -1073,7 +1073,7 @@ restart_loop: +@@ -1077,7 +1077,7 @@ restart_loop: */ stats.ts_tid = commit_transaction->t_tid; stats.run.rs_handle_count = @@ -102204,7 +102493,7 @@ index 2ad98d6..00f8858 100644 commit_transaction->t_tid, &stats.run); stats.ts_requested = (commit_transaction->t_requested) ? 1 : 0; diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c -index 67c1038..adcb8e3 100644 +index 1749519..d7b5daf 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -91,7 +91,7 @@ jbd2_get_transaction(journal_t *journal, transaction_t *transaction) @@ -102304,7 +102593,7 @@ index b25d28a..7934a69 100644 /* diff --git a/fs/jfs/super.c b/fs/jfs/super.c -index 78d5991..73ba3e4 100644 +index cec8814..e554192 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c @@ -898,7 +898,7 @@ static int __init init_jfs_fs(void) @@ -102317,7 +102606,7 @@ index 78d5991..73ba3e4 100644 if (jfs_inode_cachep == NULL) return -ENOMEM; diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c -index 37f9678..e2528dc 100644 +index 8a65240..59ccf62 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c @@ -334,7 +334,7 @@ struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn) @@ -102329,7 +102618,7 @@ index 37f9678..e2528dc 100644 { unsigned long hash = init_name_hash(); unsigned int len = strlen(name); -@@ -1073,6 +1073,12 @@ static int kernfs_iop_mkdir(struct inode *dir, struct dentry *dentry, +@@ -1074,6 +1074,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); @@ -102343,7 +102632,7 @@ index 37f9678..e2528dc 100644 } diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c -index 7247252..c73808e 100644 +index e157400..1b16643 100644 --- a/fs/kernfs/file.c +++ b/fs/kernfs/file.c @@ -34,7 +34,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex); @@ -102364,7 +102653,7 @@ index 7247252..c73808e 100644 return of->kn->attr.ops->seq_show(sf, v); } -@@ -207,7 +207,7 @@ static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of, +@@ -208,7 +208,7 @@ static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of, goto out_free; } @@ -102373,7 +102662,7 @@ index 7247252..c73808e 100644 ops = kernfs_ops(of->kn); if (ops->read) len = ops->read(of, buf, len, *ppos); -@@ -272,7 +272,7 @@ static ssize_t kernfs_fop_write(struct file *file, const char __user *user_buf, +@@ -275,7 +275,7 @@ static ssize_t kernfs_fop_write(struct file *file, const char __user *user_buf, { struct kernfs_open_file *of = kernfs_of(file); const struct kernfs_ops *ops; @@ -102382,7 +102671,7 @@ index 7247252..c73808e 100644 char *buf; if (of->atomic_write_len) { -@@ -385,12 +385,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma, +@@ -391,12 +391,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma, return ret; } @@ -102398,7 +102687,7 @@ index 7247252..c73808e 100644 if (!of->vm_ops) return -EINVAL; -@@ -569,7 +569,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn, +@@ -575,7 +575,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn, return -ENOMEM; atomic_set(&new_on->refcnt, 0); @@ -102407,7 +102696,7 @@ index 7247252..c73808e 100644 init_waitqueue_head(&new_on->poll); INIT_LIST_HEAD(&new_on->files); goto retry; -@@ -792,7 +792,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait) +@@ -799,7 +799,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait) kernfs_put_active(kn); @@ -102416,7 +102705,7 @@ index 7247252..c73808e 100644 goto trigger; return DEFAULT_POLLMASK; -@@ -823,7 +823,7 @@ repeat: +@@ -830,7 +830,7 @@ repeat: on = kn->attr.open; if (on) { @@ -102426,24 +102715,17 @@ index 7247252..c73808e 100644 } diff --git a/fs/libfs.c b/fs/libfs.c -index f3fa82c..b316fbf 100644 +index 74dc8b9..45e1cf4 100644 --- a/fs/libfs.c +++ b/fs/libfs.c -@@ -155,6 +155,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) - - for (p = q->next; p != &dentry->d_subdirs; p = p->next) { - struct dentry *next = list_entry(p, struct dentry, d_child); +@@ -194,7 +194,15 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) + if (ctx->pos == 2) + p = &dentry->d_subdirs; + while ((next = next_positive(dentry, p, 1)) != NULL) { +- if (!dir_emit(ctx, next->d_name.name, next->d_name.len, + char d_name[sizeof(next->d_iname)]; + const unsigned char *name; + - spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED); - if (!simple_positive(next)) { - spin_unlock(&next->d_lock); -@@ -163,7 +166,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) - - spin_unlock(&next->d_lock); - spin_unlock(&dentry->d_lock); -- if (!dir_emit(ctx, next->d_name.name, next->d_name.len, + name = next->d_name.name; + if (name == next->d_iname) { + memcpy(d_name, name, next->d_name.len); @@ -102451,8 +102733,8 @@ index f3fa82c..b316fbf 100644 + } + if (!dir_emit(ctx, name, next->d_name.len, d_inode(next)->i_ino, dt_type(d_inode(next)))) - return 0; - spin_lock(&dentry->d_lock); + break; + moved = true; diff --git a/fs/lockd/clnt4xdr.c b/fs/lockd/clnt4xdr.c index d3e40db..a300f9c 100644 --- a/fs/lockd/clnt4xdr.c @@ -102799,10 +103081,10 @@ index 19166d4..c841d52 100644 .p_replen = SM_unmonres_sz, .p_statidx = NSMPROC_UNMON, diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c -index 154a107..7b77da4 100644 +index fc4084e..25d725d 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c -@@ -591,7 +591,7 @@ static struct ctl_table nlm_sysctl_root[] = { +@@ -598,7 +598,7 @@ static struct ctl_table nlm_sysctl_root[] = { */ #define param_set_min_max(name, type, which_strtol, min, max) \ @@ -103618,7 +103900,7 @@ index b76a62b..317c6ff 100644 .erase = logfs_mtd_erase, .can_write_buf = logfs_mtd_can_write_buf, diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c -index ddbed2b..4267e7c 100644 +index 2d5336b..14e0552 100644 --- a/fs/logfs/dir.c +++ b/fs/logfs/dir.c @@ -174,7 +174,7 @@ static struct page *logfs_get_dd_page(struct inode *dir, struct dentry *dentry) @@ -103782,10 +104064,10 @@ index 14db05d..687f6d8 100644 #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */ diff --git a/fs/namei.c b/fs/namei.c -index aaa3b69..c610f44 100644 +index 70580ab..cdede72 100644 --- a/fs/namei.c +++ b/fs/namei.c -@@ -336,17 +336,32 @@ int generic_permission(struct inode *inode, int mask) +@@ -337,17 +337,32 @@ int generic_permission(struct inode *inode, int mask) if (ret != -EACCES) return ret; @@ -103822,7 +104104,7 @@ index aaa3b69..c610f44 100644 * Read/write DACs are always overridable. * Executable DACs are overridable when there is * at least one exec bit set. -@@ -355,14 +370,6 @@ int generic_permission(struct inode *inode, int mask) +@@ -356,14 +371,6 @@ int generic_permission(struct inode *inode, int mask) if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE)) return 0; @@ -103837,7 +104119,7 @@ index aaa3b69..c610f44 100644 return -EACCES; } EXPORT_SYMBOL(generic_permission); -@@ -514,12 +521,35 @@ struct nameidata { +@@ -515,12 +522,35 @@ struct nameidata { struct inode *link_inode; unsigned root_seq; int dfd; @@ -103874,7 +104156,7 @@ index aaa3b69..c610f44 100644 p->dfd = dfd; p->name = name; p->total_link_count = old ? old->total_link_count : 0; -@@ -536,6 +566,10 @@ static void restore_nameidata(void) +@@ -537,6 +567,10 @@ static void restore_nameidata(void) old->total_link_count = now->total_link_count; if (now->stack != now->internal) kfree(now->stack); @@ -103885,7 +104167,7 @@ index aaa3b69..c610f44 100644 } static int __nd_alloc_stack(struct nameidata *nd) -@@ -555,6 +589,7 @@ static int __nd_alloc_stack(struct nameidata *nd) +@@ -556,6 +590,7 @@ static int __nd_alloc_stack(struct nameidata *nd) } memcpy(p, nd->internal, sizeof(nd->internal)); nd->stack = p; @@ -103893,7 +104175,7 @@ index aaa3b69..c610f44 100644 return 0; } -@@ -576,8 +611,32 @@ static bool path_connected(const struct path *path) +@@ -577,8 +612,32 @@ static bool path_connected(const struct path *path) return is_subdir(path->dentry, mnt->mnt_root); } @@ -103926,7 +104208,7 @@ index aaa3b69..c610f44 100644 if (likely(nd->depth != EMBEDDED_LEVELS)) return 0; if (likely(nd->stack != nd->internal)) -@@ -603,6 +662,14 @@ static void terminate_walk(struct nameidata *nd) +@@ -604,6 +663,14 @@ static void terminate_walk(struct nameidata *nd) path_put(&nd->path); for (i = 0; i < nd->depth; i++) path_put(&nd->stack[i].link); @@ -103941,7 +104223,7 @@ index aaa3b69..c610f44 100644 if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT)) { path_put(&nd->root); nd->root.mnt = NULL; -@@ -1014,6 +1081,9 @@ const char *get_link(struct nameidata *nd) +@@ -1015,6 +1082,9 @@ const char *get_link(struct nameidata *nd) if (unlikely(error)) return ERR_PTR(error); @@ -103951,7 +104233,7 @@ index aaa3b69..c610f44 100644 nd->last_type = LAST_BIND; res = inode->i_link; if (!res) { -@@ -1683,6 +1753,23 @@ static int pick_link(struct nameidata *nd, struct path *link, +@@ -1701,6 +1771,23 @@ static int pick_link(struct nameidata *nd, struct path *link, } } @@ -103975,16 +104257,16 @@ index aaa3b69..c610f44 100644 last = nd->stack + nd->depth++; last->link = *link; clear_delayed_call(&last->done); -@@ -1830,7 +1917,7 @@ EXPORT_SYMBOL(full_name_hash); +@@ -1938,7 +2025,7 @@ EXPORT_SYMBOL(hashlen_string); static inline u64 hash_name(const char *name) { - unsigned long a, b, adata, bdata, mask, hash, len; + unsigned long a = 0, b, x = 0, y = 0, adata, bdata, mask, len; - const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS; + static const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS; - hash = a = 0; len = -sizeof(unsigned long); -@@ -1998,6 +2085,10 @@ static const char *path_init(struct nameidata *nd, unsigned flags) + do { +@@ -2120,6 +2207,10 @@ static const char *path_init(struct nameidata *nd, unsigned flags) nd->last_type = LAST_ROOT; /* if there are only slashes... */ nd->flags = flags | LOOKUP_JUMPED | LOOKUP_PARENT; nd->depth = 0; @@ -103995,7 +104277,7 @@ index aaa3b69..c610f44 100644 if (flags & LOOKUP_ROOT) { struct dentry *root = nd->root.dentry; struct inode *inode = root->d_inode; -@@ -2129,6 +2220,14 @@ static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path +@@ -2251,6 +2342,14 @@ static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path if (!err) err = complete_walk(nd); @@ -104010,7 +104292,7 @@ index aaa3b69..c610f44 100644 if (!err && nd->flags & LOOKUP_DIRECTORY) if (!d_can_lookup(nd->path.dentry)) err = -ENOTDIR; -@@ -2177,6 +2276,14 @@ static int path_parentat(struct nameidata *nd, unsigned flags, +@@ -2299,6 +2398,14 @@ static int path_parentat(struct nameidata *nd, unsigned flags, err = link_path_walk(s, nd); if (!err) err = complete_walk(nd); @@ -104025,7 +104307,7 @@ index aaa3b69..c610f44 100644 if (!err) { *parent = nd->path; nd->path.mnt = NULL; -@@ -2776,6 +2883,13 @@ static int may_open(struct path *path, int acc_mode, int flag) +@@ -2926,6 +3033,13 @@ static int may_open(struct path *path, int acc_mode, int flag) if (flag & O_NOATIME && !inode_owner_or_capable(inode)) return -EPERM; @@ -104039,11 +104321,10 @@ index aaa3b69..c610f44 100644 return 0; } -@@ -3036,6 +3150,21 @@ static int lookup_open(struct nameidata *nd, struct path *path, +@@ -3165,6 +3279,20 @@ no_open: + /* Negative dentry, just create the file */ - if (!dentry->d_inode && (op->open_flag & O_CREAT)) { - umode_t mode = op->mode; -+ + if (!dentry->d_inode && (open_flag & O_CREAT)) { + error = gr_chroot_pathat(nd->dfd, dentry, nd->path.mnt, nd->flags); + if (error) + goto out_dput; @@ -104058,19 +104339,18 @@ index aaa3b69..c610f44 100644 + goto out_dput; + } + - if (!IS_POSIXACL(dir->d_inode)) - mode &= ~current_umask(); - /* -@@ -3057,6 +3186,8 @@ static int lookup_open(struct nameidata *nd, struct path *path, - nd->flags & LOOKUP_EXCL); + *opened |= FILE_CREATED; + audit_inode_child(dir_inode, dentry, AUDIT_TYPE_CHILD_CREATE); + if (!dir_inode->i_op->create) { +@@ -3175,6 +3303,7 @@ no_open: + open_flag & O_EXCL); if (error) goto out_dput; -+ else -+ gr_handle_create(dentry, nd->path.mnt); ++ gr_handle_create(dentry, nd->path.mnt); + fsnotify_create(dir_inode, dentry); } - out_no_open: - path->dentry = dentry; -@@ -3163,6 +3294,11 @@ retry_lookup: + if (unlikely(create_error) && !dentry->d_inode) { +@@ -3289,6 +3418,11 @@ static int do_last(struct nameidata *nd, goto finish_open_created; } @@ -104082,7 +104362,7 @@ index aaa3b69..c610f44 100644 /* * If atomic_open() acquired write access it is dropped now due to * possible mount and symlink following (this might be optimized away if -@@ -3182,6 +3318,13 @@ retry_lookup: +@@ -3308,6 +3442,13 @@ static int do_last(struct nameidata *nd, return -ENOENT; } @@ -104096,10 +104376,10 @@ index aaa3b69..c610f44 100644 /* * create/update audit record if it already exists. */ -@@ -3219,6 +3362,21 @@ finish_open: - path_put(&save_parent); +@@ -3336,6 +3477,21 @@ finish_open: + error = complete_walk(nd); + if (error) return error; - } + + if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) { + error = -ENOENT; @@ -104116,9 +104396,9 @@ index aaa3b69..c610f44 100644 + } + audit_inode(nd->name, nd->path.dentry, 0); - if (unlikely(d_is_symlink(nd->path.dentry)) && !(open_flag & O_PATH)) { - error = -ELOOP; -@@ -3494,9 +3652,11 @@ static struct dentry *filename_create(int dfd, struct filename *name, + error = -EISDIR; + if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry)) +@@ -3592,9 +3748,11 @@ static struct dentry *filename_create(int dfd, struct filename *name, goto unlock; error = -EEXIST; @@ -104132,7 +104412,7 @@ index aaa3b69..c610f44 100644 /* * Special case - lookup gave negative, but... we had foo/bar/ * From the vfs_mknod() POV we just have a negative dentry - -@@ -3550,6 +3710,20 @@ inline struct dentry *user_path_create(int dfd, const char __user *pathname, +@@ -3648,6 +3806,20 @@ inline struct dentry *user_path_create(int dfd, const char __user *pathname, } EXPORT_SYMBOL(user_path_create); @@ -104153,7 +104433,7 @@ index aaa3b69..c610f44 100644 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) { int error = may_create(dir, dentry); -@@ -3613,6 +3787,17 @@ retry: +@@ -3711,6 +3883,17 @@ retry: if (!IS_POSIXACL(path.dentry->d_inode)) mode &= ~current_umask(); @@ -104171,7 +104451,7 @@ index aaa3b69..c610f44 100644 error = security_path_mknod(&path, dentry, mode, dev); if (error) goto out; -@@ -3628,6 +3813,8 @@ retry: +@@ -3728,6 +3911,8 @@ retry: error = vfs_mknod(path.dentry->d_inode,dentry,mode,0); break; } @@ -104180,7 +104460,7 @@ index aaa3b69..c610f44 100644 out: done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { -@@ -3682,9 +3869,16 @@ retry: +@@ -3782,9 +3967,16 @@ retry: if (!IS_POSIXACL(path.dentry->d_inode)) mode &= ~current_umask(); @@ -104197,7 +104477,7 @@ index aaa3b69..c610f44 100644 done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { lookup_flags |= LOOKUP_REVAL; -@@ -3745,6 +3939,8 @@ static long do_rmdir(int dfd, const char __user *pathname) +@@ -3845,6 +4037,8 @@ static long do_rmdir(int dfd, const char __user *pathname) struct path path; struct qstr last; int type; @@ -104206,7 +104486,7 @@ index aaa3b69..c610f44 100644 unsigned int lookup_flags = 0; retry: name = user_path_parent(dfd, pathname, -@@ -3777,10 +3973,20 @@ retry: +@@ -3877,10 +4071,20 @@ retry: error = -ENOENT; goto exit3; } @@ -104227,7 +104507,7 @@ index aaa3b69..c610f44 100644 exit3: dput(dentry); exit2: -@@ -3875,6 +4081,8 @@ static long do_unlinkat(int dfd, const char __user *pathname) +@@ -3975,6 +4179,8 @@ static long do_unlinkat(int dfd, const char __user *pathname) int type; struct inode *inode = NULL; struct inode *delegated_inode = NULL; @@ -104236,7 +104516,7 @@ index aaa3b69..c610f44 100644 unsigned int lookup_flags = 0; retry: name = user_path_parent(dfd, pathname, -@@ -3901,10 +4109,21 @@ retry_deleg: +@@ -4001,10 +4207,21 @@ retry_deleg: if (d_is_negative(dentry)) goto slashes; ihold(inode); @@ -104258,7 +104538,7 @@ index aaa3b69..c610f44 100644 exit2: dput(dentry); } -@@ -3993,9 +4212,17 @@ retry: +@@ -4093,9 +4310,17 @@ retry: if (IS_ERR(dentry)) goto out_putname; @@ -104276,7 +104556,7 @@ index aaa3b69..c610f44 100644 done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { lookup_flags |= LOOKUP_REVAL; -@@ -4099,6 +4326,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, +@@ -4199,6 +4424,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; @@ -104284,7 +104564,7 @@ index aaa3b69..c610f44 100644 int how = 0; int error; -@@ -4122,7 +4350,7 @@ retry: +@@ -4222,7 +4448,7 @@ retry: if (error) return error; @@ -104293,7 +104573,7 @@ index aaa3b69..c610f44 100644 (how & LOOKUP_REVAL)); error = PTR_ERR(new_dentry); if (IS_ERR(new_dentry)) -@@ -4134,11 +4362,26 @@ retry: +@@ -4234,11 +4460,26 @@ retry: error = may_linkat(&old_path); if (unlikely(error)) goto out_dput; @@ -104320,7 +104600,7 @@ index aaa3b69..c610f44 100644 done_path_create(&new_path, new_dentry); if (delegated_inode) { error = break_deleg_wait(&delegated_inode); -@@ -4457,6 +4700,20 @@ retry_deleg: +@@ -4557,6 +4798,20 @@ retry_deleg: if (new_dentry == trap) goto exit5; @@ -104341,7 +104621,7 @@ index aaa3b69..c610f44 100644 error = security_path_rename(&old_path, old_dentry, &new_path, new_dentry, flags); if (error) -@@ -4464,6 +4721,9 @@ retry_deleg: +@@ -4564,6 +4819,9 @@ retry_deleg: error = vfs_rename(old_path.dentry->d_inode, old_dentry, new_path.dentry->d_inode, new_dentry, &delegated_inode, flags); @@ -104351,7 +104631,7 @@ index aaa3b69..c610f44 100644 exit5: dput(new_dentry); exit4: -@@ -4520,14 +4780,24 @@ EXPORT_SYMBOL(vfs_whiteout); +@@ -4620,14 +4878,24 @@ EXPORT_SYMBOL(vfs_whiteout); int readlink_copy(char __user *buffer, int buflen, const char *link) { @@ -104378,7 +104658,7 @@ index aaa3b69..c610f44 100644 out: return len; diff --git a/fs/namespace.c b/fs/namespace.c -index 783004a..419cf4a 100644 +index 419f746..db66ea9 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1516,6 +1516,9 @@ static int do_umount(struct mount *mnt, int flags) @@ -104401,7 +104681,7 @@ index 783004a..419cf4a 100644 return retval; } -@@ -1600,7 +1606,7 @@ static inline bool may_mandlock(void) +@@ -1601,7 +1607,7 @@ static inline bool may_mandlock(void) * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD */ @@ -104410,7 +104690,7 @@ index 783004a..419cf4a 100644 { struct path path; struct mount *mnt; -@@ -1645,7 +1651,7 @@ out: +@@ -1646,7 +1652,7 @@ out: /* * The 2.0 compatible umount. No flags. */ @@ -104419,7 +104699,7 @@ index 783004a..419cf4a 100644 { return sys_umount(name, 0); } -@@ -2723,6 +2729,16 @@ long do_mount(const char *dev_name, const char __user *dir_name, +@@ -2724,6 +2730,16 @@ long do_mount(const char *dev_name, const char __user *dir_name, MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | MS_STRICTATIME); @@ -104436,7 +104716,7 @@ index 783004a..419cf4a 100644 if (flags & MS_REMOUNT) retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, data_page); -@@ -2736,7 +2752,10 @@ long do_mount(const char *dev_name, const char __user *dir_name, +@@ -2737,7 +2753,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: @@ -104447,7 +104727,7 @@ index 783004a..419cf4a 100644 return retval; } -@@ -2754,7 +2773,7 @@ static void free_mnt_ns(struct mnt_namespace *ns) +@@ -2755,7 +2774,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. */ @@ -104456,7 +104736,7 @@ index 783004a..419cf4a 100644 static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) { -@@ -2770,7 +2789,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) +@@ -2771,7 +2790,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) return ERR_PTR(ret); } new_ns->ns.ops = &mntns_operations; @@ -104465,7 +104745,7 @@ index 783004a..419cf4a 100644 atomic_set(&new_ns->count, 1); new_ns->root = NULL; INIT_LIST_HEAD(&new_ns->list); -@@ -2780,6 +2799,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) +@@ -2781,6 +2800,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) return new_ns; } @@ -104473,7 +104753,7 @@ index 783004a..419cf4a 100644 struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns, struct user_namespace *user_ns, struct fs_struct *new_fs) { -@@ -2901,8 +2921,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) +@@ -2902,8 +2922,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) } EXPORT_SYMBOL(mount_subtree); @@ -104484,7 +104764,7 @@ index 783004a..419cf4a 100644 { int ret; char *kernel_type; -@@ -3008,6 +3028,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, +@@ -3009,6 +3029,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, if (error) goto out2; @@ -104496,7 +104776,7 @@ index 783004a..419cf4a 100644 get_fs_root(current->fs, &root); old_mp = lock_mount(&old); error = PTR_ERR(old_mp); -@@ -3330,7 +3355,7 @@ static int mntns_install(struct nsproxy *nsproxy, struct ns_common *ns) +@@ -3331,7 +3356,7 @@ static int mntns_install(struct nsproxy *nsproxy, struct ns_common *ns) !ns_capable(current_user_ns(), CAP_SYS_ADMIN)) return -EPERM; @@ -104567,7 +104847,7 @@ index 5fe1cec..d0f4ac0 100644 #if IS_ENABLED(CONFIG_NFS_V4) extern int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt); diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c -index 7c9fbf5..8c165b9 100644 +index aaa2e8d..deb6e76 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -19,10 +19,12 @@ @@ -104597,7 +104877,7 @@ index 7c9fbf5..8c165b9 100644 struct inode *inode; __be32 res; -@@ -269,7 +272,7 @@ static u32 do_callback_layoutrecall(struct nfs_client *clp, +@@ -270,7 +273,7 @@ static u32 do_callback_layoutrecall(struct nfs_client *clp, } @@ -104606,7 +104886,7 @@ index 7c9fbf5..8c165b9 100644 void *dummy, struct cb_process_state *cps) { u32 res; -@@ -296,9 +299,10 @@ static void pnfs_recall_all_layouts(struct nfs_client *clp) +@@ -297,9 +300,10 @@ static void pnfs_recall_all_layouts(struct nfs_client *clp) do_callback_layoutrecall(clp, &args); } @@ -104618,7 +104898,7 @@ index 7c9fbf5..8c165b9 100644 int i; __be32 res = 0; struct nfs_client *clp = cps->clp; -@@ -443,10 +447,12 @@ out: +@@ -444,10 +448,12 @@ out: return status; } @@ -104633,7 +104913,7 @@ index 7c9fbf5..8c165b9 100644 struct nfs4_slot_table *tbl; struct nfs4_slot *slot; struct nfs_client *clp; -@@ -548,9 +554,10 @@ validate_bitmap_values(unsigned long mask) +@@ -549,9 +555,10 @@ validate_bitmap_values(unsigned long mask) return (mask & ~RCA4_TYPE_MASK_ALL) == 0; } @@ -104645,7 +104925,7 @@ index 7c9fbf5..8c165b9 100644 __be32 status; fmode_t flags = 0; -@@ -583,9 +590,10 @@ out: +@@ -584,9 +591,10 @@ out: } /* Reduce the fore channel's max_slots to the target value */ @@ -104658,7 +104938,7 @@ index 7c9fbf5..8c165b9 100644 __be32 status; diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c -index 976c906..16b86ac 100644 +index d81f96a..e1d0f2f 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c @@ -53,7 +53,7 @@ struct callback_op { @@ -104685,7 +104965,7 @@ index 976c906..16b86ac 100644 { return xdr_ressize_check(rqstp, p); } -@@ -193,8 +193,9 @@ static __be32 decode_op_hdr(struct xdr_stream *xdr, unsigned int *op) +@@ -199,8 +199,9 @@ static __be32 decode_op_hdr(struct xdr_stream *xdr, unsigned int *op) return 0; } @@ -104696,7 +104976,7 @@ index 976c906..16b86ac 100644 __be32 status; status = decode_fh(xdr, &args->fh); -@@ -206,8 +207,9 @@ out: +@@ -212,8 +213,9 @@ out: return status; } @@ -104707,7 +104987,7 @@ index 976c906..16b86ac 100644 __be32 *p; __be32 status; -@@ -230,8 +232,9 @@ out: +@@ -241,8 +243,9 @@ static __be32 decode_layout_stateid(struct xdr_stream *xdr, nfs4_stateid *statei static __be32 decode_layoutrecall_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104718,7 +104998,7 @@ index 976c906..16b86ac 100644 __be32 *p; __be32 status = 0; uint32_t iomode; -@@ -290,8 +293,9 @@ out: +@@ -301,8 +304,9 @@ out: static __be32 decode_devicenotify_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104729,7 +105009,7 @@ index 976c906..16b86ac 100644 __be32 *p; __be32 status = 0; u32 tmp; -@@ -431,8 +435,9 @@ out: +@@ -442,8 +446,9 @@ out: static __be32 decode_cb_sequence_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104740,7 +105020,7 @@ index 976c906..16b86ac 100644 __be32 *p; int i; __be32 status; -@@ -493,8 +498,9 @@ out_free: +@@ -504,8 +509,9 @@ out_free: static __be32 decode_recallany_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104751,7 +105031,7 @@ index 976c906..16b86ac 100644 uint32_t bitmap[2]; __be32 *p, status; -@@ -512,8 +518,9 @@ static __be32 decode_recallany_args(struct svc_rqst *rqstp, +@@ -523,8 +529,9 @@ static __be32 decode_recallany_args(struct svc_rqst *rqstp, static __be32 decode_recallslot_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104762,7 +105042,7 @@ index 976c906..16b86ac 100644 __be32 *p; p = read_buf(xdr, 4); -@@ -648,8 +655,9 @@ static __be32 encode_op_hdr(struct xdr_stream *xdr, uint32_t op, __be32 res) +@@ -659,8 +666,9 @@ static __be32 encode_op_hdr(struct xdr_stream *xdr, uint32_t op, __be32 res) return 0; } @@ -104773,7 +105053,7 @@ index 976c906..16b86ac 100644 __be32 *savep = NULL; __be32 status = res->status; -@@ -691,8 +699,9 @@ static __be32 encode_sessionid(struct xdr_stream *xdr, +@@ -702,8 +710,9 @@ static __be32 encode_sessionid(struct xdr_stream *xdr, static __be32 encode_cb_sequence_res(struct svc_rqst *rqstp, struct xdr_stream *xdr, @@ -104784,7 +105064,7 @@ index 976c906..16b86ac 100644 __be32 *p; __be32 status = res->csr_status; -@@ -952,43 +961,41 @@ static struct callback_op callback_ops[] = { +@@ -963,43 +972,41 @@ static struct callback_op callback_ops[] = { .res_maxsize = CB_OP_HDR_RES_MAXSZ, }, [OP_CB_GETATTR] = { @@ -104844,7 +105124,7 @@ index 976c906..16b86ac 100644 .res_maxsize = CB_OP_RECALLSLOT_RES_MAXSZ, }, #endif /* CONFIG_NFS_V4_1 */ -@@ -1000,13 +1007,13 @@ static struct callback_op callback_ops[] = { +@@ -1011,13 +1018,13 @@ static struct callback_op callback_ops[] = { static struct svc_procedure nfs4_callback_procedures1[] = { [CB_NULL] = { .pc_func = nfs4_callback_null, @@ -104862,10 +105142,10 @@ index 976c906..16b86ac 100644 .pc_ressize = 256, .pc_xdrressize = NFS4_CALLBACK_BUFSIZE, diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c -index a7dd1fe..9d5f829 100644 +index 19d93d0..e1164ca 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c -@@ -681,8 +681,9 @@ out: +@@ -699,8 +699,9 @@ out: * We only need to convert from xdr once so future lookups are much simpler */ static @@ -104876,20 +105156,20 @@ index a7dd1fe..9d5f829 100644 struct inode *inode = file_inode(desc->file); int ret; -@@ -715,7 +716,7 @@ static - struct page *get_cache_page(nfs_readdir_descriptor_t *desc) - { - return read_cache_page(file_inode(desc->file)->i_mapping, +@@ -735,7 +736,7 @@ struct page *get_cache_page(nfs_readdir_descriptor_t *desc) + + for (;;) { + page = read_cache_page(file_inode(desc->file)->i_mapping, - desc->page_index, (filler_t *)nfs_readdir_filler, desc); + desc->page_index, nfs_readdir_filler, desc); - } - - /* + if (IS_ERR(page) || grab_page(page)) + break; + put_page(page); diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c -index 738c84a..fd9100f 100644 +index dda689d..747eaf2 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c -@@ -1318,16 +1318,16 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat +@@ -1319,16 +1319,16 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat return 0; } @@ -104910,10 +105190,10 @@ index 738c84a..fd9100f 100644 EXPORT_SYMBOL_GPL(nfs_inc_attr_generation_counter); diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h -index f1d1d2c..d4a961d 100644 +index 5154fa6..1e29054 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h -@@ -608,9 +608,10 @@ unsigned long nfs_block_size(unsigned long bsize, unsigned char *nrbitsp) +@@ -609,9 +609,10 @@ unsigned long nfs_block_size(unsigned long bsize, unsigned char *nrbitsp) static inline void nfs_super_set_maxbytes(struct super_block *sb, __u64 maxfilesize) { @@ -105819,10 +106099,10 @@ index 267126d..19c97b8 100644 .p_replen = ACL3_setaclres_sz, .p_timer = 0, diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c -index 0ca482a..5df90f3 100644 +index 6dc6f2a..d541eb1c 100644 --- a/fs/nfs/nfs42xdr.c +++ b/fs/nfs/nfs42xdr.c -@@ -165,10 +165,12 @@ static void encode_clone(struct xdr_stream *xdr, +@@ -205,10 +205,12 @@ static void encode_clone(struct xdr_stream *xdr, /* * Encode ALLOCATE request */ @@ -105837,7 +106117,22 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -184,10 +186,12 @@ static void nfs4_xdr_enc_allocate(struct rpc_rqst *req, +@@ -224,10 +226,12 @@ static void nfs4_xdr_enc_allocate(struct rpc_rqst *req, + /* + * Encode COPY request + */ +-static void nfs4_xdr_enc_copy(struct rpc_rqst *req, ++static void nfs4_xdr_enc_copy(void *_req, + struct xdr_stream *xdr, +- struct nfs42_copy_args *args) ++ void *_args) + { ++ struct rpc_rqst *req = _req; ++ struct nfs42_copy_args *args = _args; + struct compound_hdr hdr = { + .minorversion = nfs4_xdr_minorversion(&args->seq_args), + }; +@@ -244,10 +248,12 @@ static void nfs4_xdr_enc_copy(struct rpc_rqst *req, /* * Encode DEALLOCATE request */ @@ -105852,7 +106147,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -203,10 +207,12 @@ static void nfs4_xdr_enc_deallocate(struct rpc_rqst *req, +@@ -263,10 +269,12 @@ static void nfs4_xdr_enc_deallocate(struct rpc_rqst *req, /* * Encode SEEK request */ @@ -105867,7 +106162,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -221,10 +227,12 @@ static void nfs4_xdr_enc_seek(struct rpc_rqst *req, +@@ -281,10 +289,12 @@ static void nfs4_xdr_enc_seek(struct rpc_rqst *req, /* * Encode LAYOUTSTATS request */ @@ -105882,7 +106177,7 @@ index 0ca482a..5df90f3 100644 int i; struct compound_hdr hdr = { -@@ -243,10 +251,12 @@ static void nfs4_xdr_enc_layoutstats(struct rpc_rqst *req, +@@ -303,10 +313,12 @@ static void nfs4_xdr_enc_layoutstats(struct rpc_rqst *req, /* * Encode CLONE request */ @@ -105897,7 +106192,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -306,10 +316,12 @@ static int decode_clone(struct xdr_stream *xdr) +@@ -422,10 +434,12 @@ static int decode_clone(struct xdr_stream *xdr) /* * Decode ALLOCATE request */ @@ -105912,7 +106207,22 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr; int status; -@@ -333,10 +345,12 @@ out: +@@ -449,10 +463,12 @@ out: + /* + * Decode COPY response + */ +-static int nfs4_xdr_dec_copy(struct rpc_rqst *rqstp, ++static int nfs4_xdr_dec_copy(void *_rqstp, + struct xdr_stream *xdr, +- struct nfs42_copy_res *res) ++ void *_res) + { ++ struct rpc_rqst *rqstp = _rqstp; ++ struct nfs42_copy_res *res = _res; + struct compound_hdr hdr; + int status; + +@@ -479,10 +495,12 @@ out: /* * Decode DEALLOCATE request */ @@ -105927,7 +106237,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr; int status; -@@ -360,10 +374,12 @@ out: +@@ -506,10 +524,12 @@ out: /* * Decode SEEK request */ @@ -105942,7 +106252,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr; int status; -@@ -384,10 +400,12 @@ out: +@@ -530,10 +550,12 @@ out: /* * Decode LAYOUTSTATS request */ @@ -105957,7 +106267,7 @@ index 0ca482a..5df90f3 100644 struct compound_hdr hdr; int status, i; -@@ -414,10 +432,12 @@ out: +@@ -560,10 +582,12 @@ out: /* * Decode CLONE request */ @@ -105973,7 +106283,7 @@ index 0ca482a..5df90f3 100644 int status; diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c -index 88474a4..55ee771 100644 +index 661e753..fb6944d 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -2076,9 +2076,10 @@ static u32 nfs4_xdr_minorversion(const struct nfs4_sequence_args *args) @@ -106672,7 +106982,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -6067,10 +6122,11 @@ static int decode_free_stateid(struct xdr_stream *xdr, +@@ -6091,10 +6146,11 @@ static int decode_free_stateid(struct xdr_stream *xdr, /* * Decode OPEN_DOWNGRADE response */ @@ -106686,7 +106996,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6094,9 +6150,10 @@ out: +@@ -6118,9 +6174,10 @@ out: /* * Decode ACCESS response */ @@ -106699,7 +107009,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6120,9 +6177,10 @@ out: +@@ -6144,9 +6201,10 @@ out: /* * Decode LOOKUP response */ @@ -106712,7 +107022,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6149,10 +6207,11 @@ out: +@@ -6173,10 +6231,11 @@ out: /* * Decode LOOKUP_ROOT response */ @@ -106726,7 +107036,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6176,9 +6235,10 @@ out: +@@ -6200,9 +6259,10 @@ out: /* * Decode REMOVE response */ @@ -106739,7 +107049,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6199,9 +6259,10 @@ out: +@@ -6223,9 +6283,10 @@ out: /* * Decode RENAME response */ @@ -106752,7 +107062,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6228,9 +6289,10 @@ out: +@@ -6252,9 +6313,10 @@ out: /* * Decode LINK response */ @@ -106765,7 +107075,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6267,9 +6329,10 @@ out: +@@ -6291,9 +6353,10 @@ out: /* * Decode CREATE response */ @@ -106778,7 +107088,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6296,8 +6359,8 @@ out: +@@ -6320,8 +6383,8 @@ out: /* * Decode SYMLINK response */ @@ -106789,7 +107099,7 @@ index 88474a4..55ee771 100644 { return nfs4_xdr_dec_create(rqstp, xdr, res); } -@@ -6305,9 +6368,10 @@ static int nfs4_xdr_dec_symlink(struct rpc_rqst *rqstp, struct xdr_stream *xdr, +@@ -6329,9 +6392,10 @@ static int nfs4_xdr_dec_symlink(struct rpc_rqst *rqstp, struct xdr_stream *xdr, /* * Decode GETATTR response */ @@ -106802,7 +107112,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6328,9 +6392,10 @@ out: +@@ -6352,9 +6416,10 @@ out: /* * Encode an SETACL request */ @@ -106815,7 +107125,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; -@@ -6346,9 +6411,10 @@ static void nfs4_xdr_enc_setacl(struct rpc_rqst *req, struct xdr_stream *xdr, +@@ -6370,9 +6435,10 @@ static void nfs4_xdr_enc_setacl(struct rpc_rqst *req, struct xdr_stream *xdr, * Decode SETACL response */ static int @@ -106828,7 +107138,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6370,9 +6436,10 @@ out: +@@ -6394,9 +6460,10 @@ out: * Decode GETACL response */ static int @@ -106841,7 +107151,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6398,9 +6465,10 @@ out: +@@ -6422,9 +6489,10 @@ out: /* * Decode CLOSE response */ @@ -106854,7 +107164,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6430,9 +6498,10 @@ out: +@@ -6454,9 +6522,10 @@ out: /* * Decode OPEN response */ @@ -106867,7 +107177,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6461,9 +6530,9 @@ out: +@@ -6485,9 +6554,9 @@ out: /* * Decode OPEN_CONFIRM response */ @@ -106879,7 +107189,7 @@ index 88474a4..55ee771 100644 { struct compound_hdr hdr; int status; -@@ -6482,10 +6551,11 @@ out: +@@ -6506,10 +6575,11 @@ out: /* * Decode OPEN response */ @@ -106893,7 +107203,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6511,10 +6581,11 @@ out: +@@ -6535,10 +6605,11 @@ out: /* * Decode SETATTR response */ @@ -106907,7 +107217,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6538,9 +6609,10 @@ out: +@@ -6562,9 +6633,10 @@ out: /* * Decode LOCK response */ @@ -106920,7 +107230,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6561,9 +6633,10 @@ out: +@@ -6585,9 +6657,10 @@ out: /* * Decode LOCKT response */ @@ -106933,7 +107243,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6584,9 +6657,10 @@ out: +@@ -6608,9 +6681,10 @@ out: /* * Decode LOCKU response */ @@ -106946,7 +107256,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6604,7 +6678,7 @@ out: +@@ -6628,7 +6702,7 @@ out: return status; } @@ -106955,7 +107265,7 @@ index 88474a4..55ee771 100644 struct xdr_stream *xdr, void *dummy) { struct compound_hdr hdr; -@@ -6619,10 +6693,11 @@ static int nfs4_xdr_dec_release_lockowner(struct rpc_rqst *rqstp, +@@ -6643,10 +6717,11 @@ static int nfs4_xdr_dec_release_lockowner(struct rpc_rqst *rqstp, /* * Decode READLINK response */ @@ -106969,7 +107279,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6643,9 +6718,10 @@ out: +@@ -6667,9 +6742,10 @@ out: /* * Decode READDIR response */ @@ -106982,7 +107292,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6666,9 +6742,10 @@ out: +@@ -6690,9 +6766,10 @@ out: /* * Decode Read response */ @@ -106995,7 +107305,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6692,9 +6769,10 @@ out: +@@ -6716,9 +6793,10 @@ out: /* * Decode WRITE response */ @@ -107008,7 +107318,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6722,9 +6800,10 @@ out: +@@ -6746,9 +6824,10 @@ out: /* * Decode COMMIT response */ @@ -107021,7 +107331,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6746,9 +6825,10 @@ out: +@@ -6770,9 +6849,10 @@ out: /* * Decode FSINFO response */ @@ -107034,7 +107344,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6765,9 +6845,10 @@ static int nfs4_xdr_dec_fsinfo(struct rpc_rqst *req, struct xdr_stream *xdr, +@@ -6789,9 +6869,10 @@ static int nfs4_xdr_dec_fsinfo(struct rpc_rqst *req, struct xdr_stream *xdr, /* * Decode PATHCONF response */ @@ -107047,7 +107357,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6784,9 +6865,10 @@ static int nfs4_xdr_dec_pathconf(struct rpc_rqst *req, struct xdr_stream *xdr, +@@ -6808,9 +6889,10 @@ static int nfs4_xdr_dec_pathconf(struct rpc_rqst *req, struct xdr_stream *xdr, /* * Decode STATFS response */ @@ -107060,7 +107370,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6803,10 +6885,11 @@ static int nfs4_xdr_dec_statfs(struct rpc_rqst *req, struct xdr_stream *xdr, +@@ -6827,10 +6909,11 @@ static int nfs4_xdr_dec_statfs(struct rpc_rqst *req, struct xdr_stream *xdr, /* * Decode GETATTR_BITMAP response */ @@ -107074,7 +107384,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6827,7 +6910,7 @@ out: +@@ -6851,7 +6934,7 @@ out: /* * Decode RENEW response */ @@ -107083,7 +107393,7 @@ index 88474a4..55ee771 100644 void *__unused) { struct compound_hdr hdr; -@@ -6842,9 +6925,9 @@ static int nfs4_xdr_dec_renew(struct rpc_rqst *rqstp, struct xdr_stream *xdr, +@@ -6866,9 +6949,9 @@ static int nfs4_xdr_dec_renew(struct rpc_rqst *rqstp, struct xdr_stream *xdr, /* * Decode SETCLIENTID response */ @@ -107095,7 +107405,7 @@ index 88474a4..55ee771 100644 { struct compound_hdr hdr; int status; -@@ -6858,8 +6941,9 @@ static int nfs4_xdr_dec_setclientid(struct rpc_rqst *req, +@@ -6882,8 +6965,9 @@ static int nfs4_xdr_dec_setclientid(struct rpc_rqst *req, /* * Decode SETCLIENTID_CONFIRM response */ @@ -107107,7 +107417,7 @@ index 88474a4..55ee771 100644 { struct compound_hdr hdr; int status; -@@ -6873,10 +6957,11 @@ static int nfs4_xdr_dec_setclientid_confirm(struct rpc_rqst *req, +@@ -6897,10 +6981,11 @@ static int nfs4_xdr_dec_setclientid_confirm(struct rpc_rqst *req, /* * Decode DELEGRETURN response */ @@ -107121,7 +107431,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6900,10 +6985,11 @@ out: +@@ -6924,10 +7009,11 @@ out: /* * Decode FS_LOCATIONS response */ @@ -107135,7 +107445,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6943,10 +7029,11 @@ out: +@@ -6967,10 +7053,11 @@ out: /* * Decode SECINFO response */ @@ -107149,7 +107459,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6967,10 +7054,11 @@ out: +@@ -6991,10 +7078,11 @@ out: /* * Decode FSID_PRESENT response */ @@ -107163,7 +107473,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -6996,7 +7084,7 @@ out: +@@ -7020,7 +7108,7 @@ out: /* * Decode BIND_CONN_TO_SESSION response */ @@ -107172,7 +107482,7 @@ index 88474a4..55ee771 100644 struct xdr_stream *xdr, void *res) { -@@ -7012,7 +7100,7 @@ static int nfs4_xdr_dec_bind_conn_to_session(struct rpc_rqst *rqstp, +@@ -7036,7 +7124,7 @@ static int nfs4_xdr_dec_bind_conn_to_session(struct rpc_rqst *rqstp, /* * Decode EXCHANGE_ID response */ @@ -107181,7 +107491,7 @@ index 88474a4..55ee771 100644 struct xdr_stream *xdr, void *res) { -@@ -7028,9 +7116,9 @@ static int nfs4_xdr_dec_exchange_id(struct rpc_rqst *rqstp, +@@ -7052,9 +7140,9 @@ static int nfs4_xdr_dec_exchange_id(struct rpc_rqst *rqstp, /* * Decode CREATE_SESSION response */ @@ -107193,7 +107503,7 @@ index 88474a4..55ee771 100644 { struct compound_hdr hdr; int status; -@@ -7044,7 +7132,7 @@ static int nfs4_xdr_dec_create_session(struct rpc_rqst *rqstp, +@@ -7068,7 +7156,7 @@ static int nfs4_xdr_dec_create_session(struct rpc_rqst *rqstp, /* * Decode DESTROY_SESSION response */ @@ -107202,7 +107512,7 @@ index 88474a4..55ee771 100644 struct xdr_stream *xdr, void *res) { -@@ -7060,7 +7148,7 @@ static int nfs4_xdr_dec_destroy_session(struct rpc_rqst *rqstp, +@@ -7084,7 +7172,7 @@ static int nfs4_xdr_dec_destroy_session(struct rpc_rqst *rqstp, /* * Decode DESTROY_CLIENTID response */ @@ -107211,7 +107521,7 @@ index 88474a4..55ee771 100644 struct xdr_stream *xdr, void *res) { -@@ -7076,9 +7164,9 @@ static int nfs4_xdr_dec_destroy_clientid(struct rpc_rqst *rqstp, +@@ -7100,9 +7188,9 @@ static int nfs4_xdr_dec_destroy_clientid(struct rpc_rqst *rqstp, /* * Decode SEQUENCE response */ @@ -107223,7 +107533,7 @@ index 88474a4..55ee771 100644 { struct compound_hdr hdr; int status; -@@ -7092,10 +7180,11 @@ static int nfs4_xdr_dec_sequence(struct rpc_rqst *rqstp, +@@ -7116,10 +7204,11 @@ static int nfs4_xdr_dec_sequence(struct rpc_rqst *rqstp, /* * Decode GET_LEASE_TIME response */ @@ -107237,7 +107547,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7112,10 +7201,11 @@ static int nfs4_xdr_dec_get_lease_time(struct rpc_rqst *rqstp, +@@ -7136,10 +7225,11 @@ static int nfs4_xdr_dec_get_lease_time(struct rpc_rqst *rqstp, /* * Decode RECLAIM_COMPLETE response */ @@ -107251,7 +107561,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7130,10 +7220,11 @@ static int nfs4_xdr_dec_reclaim_complete(struct rpc_rqst *rqstp, +@@ -7154,10 +7244,11 @@ static int nfs4_xdr_dec_reclaim_complete(struct rpc_rqst *rqstp, /* * Decode GETDEVINFO response */ @@ -107265,7 +107575,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7151,10 +7242,11 @@ out: +@@ -7175,10 +7266,11 @@ out: /* * Decode LAYOUTGET response */ @@ -107279,7 +107589,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7175,10 +7267,11 @@ out: +@@ -7199,10 +7291,11 @@ out: /* * Decode LAYOUTRETURN response */ @@ -107293,7 +107603,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7199,10 +7292,11 @@ out: +@@ -7223,10 +7316,11 @@ out: /* * Decode LAYOUTCOMMIT response */ @@ -107307,7 +107617,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7226,10 +7320,11 @@ out: +@@ -7250,10 +7344,11 @@ out: /* * Decode SECINFO_NO_NAME response */ @@ -107321,7 +107631,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7250,10 +7345,11 @@ out: +@@ -7274,10 +7369,11 @@ out: /* * Decode TEST_STATEID response */ @@ -107335,7 +107645,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7271,10 +7367,11 @@ out: +@@ -7295,10 +7391,11 @@ out: /* * Decode FREE_STATEID response */ @@ -107349,7 +107659,7 @@ index 88474a4..55ee771 100644 struct compound_hdr hdr; int status; -@@ -7439,8 +7536,8 @@ nfs4_stat_to_errno(int stat) +@@ -7463,8 +7560,8 @@ nfs4_stat_to_errno(int stat) #define PROC(proc, argtype, restype) \ [NFSPROC4_CLNT_##proc] = { \ .p_proc = NFSPROC4_COMPOUND, \ @@ -107755,7 +108065,7 @@ index 0c89034..36a8d76 100644 sizeof(struct nfsd3_##rest##res), \ 0, \ diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c -index 51c3b06..aa8fcebc 100644 +index d818e4f..bb15590 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -40,9 +40,10 @@ nfsd3_proc_null(struct svc_rqst *rqstp, void *argp, void *resp) @@ -108329,7 +108639,7 @@ index 51c3b06..aa8fcebc 100644 .pc_ressize = sizeof(struct nfsd3_commitres), .pc_cachetype = RC_NOCACHE, diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c -index 2246454..b866de8 100644 +index dba2ff8..9ac9eba 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -273,8 +273,10 @@ void fill_post_wcc(struct svc_fh *fhp) @@ -109678,7 +109988,7 @@ index de1ff1d..bd4c347 100644 .pc_ressize = sizeof(struct nfsd4_compoundres), .pc_release = nfsd4_release_compoundargs, diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c -index 9e04e49..1e7e2d3 100644 +index 70d0b9b..351c298 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -2362,8 +2362,9 @@ static bool client_has_state(struct nfs4_client *clp) @@ -109791,7 +110101,7 @@ index 9e04e49..1e7e2d3 100644 struct nfs4_client *conf, *unconf; struct nfs4_client *old = NULL; nfs4_verifier confirm = setclientid_confirm->sc_confirm; -@@ -4446,8 +4456,9 @@ void nfsd4_cleanup_open_state(struct nfsd4_compound_state *cstate, +@@ -4443,8 +4453,9 @@ void nfsd4_cleanup_open_state(struct nfsd4_compound_state *cstate, __be32 nfsd4_renew(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109802,7 +110112,7 @@ index 9e04e49..1e7e2d3 100644 struct nfs4_client *clp; __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); -@@ -4903,8 +4914,9 @@ out: +@@ -4894,8 +4905,9 @@ out: */ __be32 nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109813,7 +110123,7 @@ index 9e04e49..1e7e2d3 100644 struct nfsd4_test_stateid_id *stateid; struct nfs4_client *cl = cstate->session->se_client; -@@ -4917,8 +4929,9 @@ nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, +@@ -4908,8 +4920,9 @@ nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 nfsd4_free_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109824,7 +110134,7 @@ index 9e04e49..1e7e2d3 100644 stateid_t *stateid = &free_stateid->fr_stateid; struct nfs4_stid *s; struct nfs4_delegation *dp; -@@ -5056,8 +5069,9 @@ static __be32 nfs4_preprocess_confirmed_seqid_op(struct nfsd4_compound_state *cs +@@ -5047,8 +5060,9 @@ static __be32 nfs4_preprocess_confirmed_seqid_op(struct nfsd4_compound_state *cs __be32 nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109835,7 +110145,7 @@ index 9e04e49..1e7e2d3 100644 __be32 status; struct nfs4_openowner *oo; struct nfs4_ol_stateid *stp; -@@ -5125,8 +5139,9 @@ static inline void nfs4_stateid_downgrade(struct nfs4_ol_stateid *stp, u32 to_ac +@@ -5116,8 +5130,9 @@ static inline void nfs4_stateid_downgrade(struct nfs4_ol_stateid *stp, u32 to_ac __be32 nfsd4_open_downgrade(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109846,7 +110156,7 @@ index 9e04e49..1e7e2d3 100644 __be32 status; struct nfs4_ol_stateid *stp; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); -@@ -5194,8 +5209,9 @@ static void nfsd4_close_open_stateid(struct nfs4_ol_stateid *s) +@@ -5185,8 +5200,9 @@ static void nfsd4_close_open_stateid(struct nfs4_ol_stateid *s) */ __be32 nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109857,7 +110167,7 @@ index 9e04e49..1e7e2d3 100644 __be32 status; struct nfs4_ol_stateid *stp; struct net *net = SVC_NET(rqstp); -@@ -5224,8 +5240,9 @@ out: +@@ -5215,8 +5231,9 @@ out: __be32 nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109868,7 +110178,7 @@ index 9e04e49..1e7e2d3 100644 struct nfs4_delegation *dp; stateid_t *stateid = &dr->dr_stateid; struct nfs4_stid *s; -@@ -5559,8 +5576,9 @@ out: +@@ -5550,8 +5567,9 @@ out: */ __be32 nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109879,7 +110189,7 @@ index 9e04e49..1e7e2d3 100644 struct nfs4_openowner *open_sop = NULL; struct nfs4_lockowner *lock_sop = NULL; struct nfs4_ol_stateid *lock_stp = NULL; -@@ -5763,8 +5781,9 @@ static __be32 nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct +@@ -5754,8 +5772,9 @@ static __be32 nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct */ __be32 nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109890,7 +110200,7 @@ index 9e04e49..1e7e2d3 100644 struct file_lock *file_lock = NULL; struct nfs4_lockowner *lo = NULL; __be32 status; -@@ -5836,8 +5855,9 @@ out: +@@ -5827,8 +5846,9 @@ out: __be32 nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109901,7 +110211,7 @@ index 9e04e49..1e7e2d3 100644 struct nfs4_ol_stateid *stp; struct file *filp = NULL; struct file_lock *file_lock = NULL; -@@ -5943,8 +5963,9 @@ check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) +@@ -5934,8 +5954,9 @@ check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) __be32 nfsd4_release_lockowner(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, @@ -109912,7 +110222,7 @@ index 9e04e49..1e7e2d3 100644 clientid_t *clid = &rlockowner->rl_clientid; struct nfs4_stateowner *sop; struct nfs4_lockowner *lo = NULL; -@@ -6888,26 +6909,34 @@ clear_current_stateid(struct nfsd4_compound_state *cstate) +@@ -6879,26 +6900,34 @@ clear_current_stateid(struct nfsd4_compound_state *cstate) * functions to set current state id */ void @@ -109951,7 +110261,7 @@ index 9e04e49..1e7e2d3 100644 put_stateid(cstate, &lock->lk_resp_stateid); } -@@ -6916,49 +6945,65 @@ nfsd4_set_lockstateid(struct nfsd4_compound_state *cstate, struct nfsd4_lock *lo +@@ -6907,49 +6936,65 @@ nfsd4_set_lockstateid(struct nfsd4_compound_state *cstate, struct nfsd4_lock *lo */ void @@ -112011,7 +112321,7 @@ index 79d964a..bbf050b 100644 return 1; } diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c -index d40010e..0a2bdf7 100644 +index 6fbd81e..3c57f7b 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -870,7 +870,7 @@ __be32 nfsd_readv(struct file *file, loff_t offset, struct kvec *vec, int vlen, @@ -112023,16 +112333,16 @@ index d40010e..0a2bdf7 100644 set_fs(oldfs); return nfsd_finish_read(file, count, host_err); } -@@ -957,7 +957,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, +@@ -960,7 +960,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, /* Write the data. */ oldfs = get_fs(); set_fs(KERNEL_DS); -- host_err = vfs_writev(file, (struct iovec __user *)vec, vlen, &pos, 0); -+ host_err = vfs_writev(file, (struct iovec __force_user *)vec, vlen, &pos, 0); +- host_err = vfs_writev(file, (struct iovec __user *)vec, vlen, &pos, flags); ++ host_err = vfs_writev(file, (struct iovec __force_user *)vec, vlen, &pos, flags); set_fs(oldfs); if (host_err < 0) goto out_nfserr; -@@ -1478,7 +1478,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp) +@@ -1474,7 +1474,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp) */ oldfs = get_fs(); set_fs(KERNEL_DS); @@ -112955,7 +113265,7 @@ index d7cae33..2d29660 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 081d3d6..c1b8284a 100644 +index 93ae3cd..6cee098 100644 --- a/fs/open.c +++ b/fs/open.c @@ -32,6 +32,8 @@ @@ -112967,7 +113277,7 @@ index 081d3d6..c1b8284a 100644 #include "internal.h" int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, -@@ -105,6 +107,8 @@ long vfs_truncate(struct path *path, loff_t length) +@@ -105,6 +107,8 @@ long vfs_truncate(const struct path *path, loff_t length) error = locks_verify_truncate(inode, NULL, length); if (!error) error = security_path_truncate(path); @@ -113032,7 +113342,7 @@ index 081d3d6..c1b8284a 100644 error = 0; dput_and_out: path_put(&path); -@@ -511,6 +535,16 @@ static int chmod_common(struct path *path, umode_t mode) +@@ -511,6 +535,16 @@ static int chmod_common(const struct path *path, umode_t mode) return error; retry_deleg: inode_lock(inode); @@ -113049,7 +113359,7 @@ index 081d3d6..c1b8284a 100644 error = security_path_chmod(path, mode); if (error) goto out_unlock; -@@ -576,6 +610,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group) +@@ -576,6 +610,9 @@ static int chown_common(const struct path *path, uid_t user, gid_t group) uid = make_kuid(current_user_ns(), user); gid = make_kgid(current_user_ns(), group); @@ -113068,7 +113378,7 @@ index 081d3d6..c1b8284a 100644 } putname(tmp); diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c -index cc514da..2895466 100644 +index 80aa6f1..bf87501 100644 --- a/fs/overlayfs/copy_up.c +++ b/fs/overlayfs/copy_up.c @@ -185,7 +185,7 @@ static char *ovl_read_symlink(struct dentry *realdentry) @@ -113081,10 +113391,10 @@ index cc514da..2895466 100644 if (res < 0) { free_page((unsigned long) buf); diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c -index d46fa60..e9a726d 100644 +index d1cdc60..38f2608 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c -@@ -373,6 +373,9 @@ struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags) +@@ -360,6 +360,9 @@ struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags) if (d_is_dir(dentry)) return d_backing_inode(dentry); @@ -113095,10 +113405,10 @@ index d46fa60..e9a726d 100644 if (ovl_open_need_copy_up(file_flags, type, realpath.dentry)) { err = ovl_want_write(dentry); diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index 7952a50f..631ff67 100644 +index 9a7693d..ca30875 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c -@@ -194,7 +194,7 @@ void ovl_path_lower(struct dentry *dentry, struct path *path) +@@ -196,7 +196,7 @@ void ovl_path_lower(struct dentry *dentry, struct path *path) { struct ovl_entry *oe = dentry->d_fsdata; @@ -113107,7 +113417,7 @@ index 7952a50f..631ff67 100644 } int ovl_want_write(struct dentry *dentry) -@@ -942,8 +942,8 @@ static unsigned int ovl_split_lowerdirs(char *str) +@@ -952,8 +952,8 @@ static unsigned int ovl_split_lowerdirs(char *str) static int ovl_fill_super(struct super_block *sb, void *data, int silent) { @@ -113367,7 +113677,7 @@ index 0d3f516..91735ad 100644 if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) { diff --git a/fs/posix_acl.c b/fs/posix_acl.c -index e11ea5f..20e2d4d 100644 +index edc452c..4ed2cc0 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c @@ -20,6 +20,7 @@ @@ -113376,9 +113686,9 @@ index e11ea5f..20e2d4d 100644 #include <linux/user_namespace.h> +#include <linux/grsecurity.h> - struct posix_acl **acl_by_type(struct inode *inode, int type) + static struct posix_acl **acl_by_type(struct inode *inode, int type) { -@@ -277,7 +278,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p) +@@ -311,7 +312,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p) } } if (mode_p) @@ -113387,7 +113697,7 @@ index e11ea5f..20e2d4d 100644 return not_equiv; } EXPORT_SYMBOL(posix_acl_equiv_mode); -@@ -427,7 +428,7 @@ static int posix_acl_create_masq(struct posix_acl *acl, umode_t *mode_p) +@@ -461,7 +462,7 @@ static int posix_acl_create_masq(struct posix_acl *acl, umode_t *mode_p) mode &= (group_obj->e_perm << 3) | ~S_IRWXG; } @@ -113396,7 +113706,7 @@ index e11ea5f..20e2d4d 100644 return not_equiv; } -@@ -485,6 +486,8 @@ __posix_acl_create(struct posix_acl **acl, gfp_t gfp, umode_t *mode_p) +@@ -519,6 +520,8 @@ __posix_acl_create(struct posix_acl **acl, gfp_t gfp, umode_t *mode_p) struct posix_acl *clone = posix_acl_clone(*acl, gfp); int err = -ENOMEM; if (clone) { @@ -113405,7 +113715,7 @@ index e11ea5f..20e2d4d 100644 err = posix_acl_create_masq(clone, mode_p); if (err < 0) { posix_acl_release(clone); -@@ -657,11 +660,12 @@ struct posix_acl * +@@ -691,11 +694,12 @@ struct posix_acl * posix_acl_from_xattr(struct user_namespace *user_ns, const void *value, size_t size) { @@ -113420,7 +113730,7 @@ index e11ea5f..20e2d4d 100644 if (!value) return NULL; -@@ -687,12 +691,18 @@ posix_acl_from_xattr(struct user_namespace *user_ns, +@@ -721,12 +725,18 @@ posix_acl_from_xattr(struct user_namespace *user_ns, switch(acl_e->e_tag) { case ACL_USER_OBJ: @@ -113439,7 +113749,7 @@ index e11ea5f..20e2d4d 100644 acl_e->e_uid = make_kuid(user_ns, le32_to_cpu(entry->e_id)); -@@ -700,6 +710,7 @@ posix_acl_from_xattr(struct user_namespace *user_ns, +@@ -734,6 +744,7 @@ posix_acl_from_xattr(struct user_namespace *user_ns, goto fail; break; case ACL_GROUP: @@ -113483,7 +113793,7 @@ index 1ade120..a86f1a2 100644 help Various /proc files exist to monitor process memory utilization: diff --git a/fs/proc/array.c b/fs/proc/array.c -index b6c00ce..ab37ad1 100644 +index 88c7de1..3e4b510 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -60,6 +60,7 @@ @@ -113494,7 +113804,7 @@ index b6c00ce..ab37ad1 100644 #include <linux/proc_fs.h> #include <linux/ioport.h> #include <linux/uaccess.h> -@@ -351,6 +352,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) +@@ -369,6 +370,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) cpumask_pr_args(&task->cpus_allowed)); } @@ -113516,7 +113826,7 @@ index b6c00ce..ab37ad1 100644 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { -@@ -369,9 +385,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, +@@ -387,9 +403,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); @@ -113541,7 +113851,7 @@ index b6c00ce..ab37ad1 100644 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task, int whole) { -@@ -393,6 +424,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -411,6 +442,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, char tcomm[sizeof(task->comm)]; unsigned long flags; @@ -113555,7 +113865,7 @@ index b6c00ce..ab37ad1 100644 state = *get_task_state(task); vsize = eip = esp = 0; permitted = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT); -@@ -463,6 +501,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -481,6 +519,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, gtime = task_gtime(task); } @@ -113575,7 +113885,7 @@ index b6c00ce..ab37ad1 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); -@@ -494,9 +545,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -512,9 +563,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); @@ -113591,7 +113901,7 @@ index b6c00ce..ab37ad1 100644 seq_put_decimal_ull(m, ' ', esp); seq_put_decimal_ull(m, ' ', eip); /* The signal information here is obsolete. -@@ -530,7 +587,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -548,7 +605,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)); @@ -113604,7 +113914,7 @@ index b6c00ce..ab37ad1 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); -@@ -568,8 +629,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, +@@ -586,8 +647,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; @@ -113621,7 +113931,7 @@ index b6c00ce..ab37ad1 100644 if (mm) { size = task_statm(mm, &shared, &text, &data, &resident); mmput(mm); -@@ -592,6 +660,21 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, +@@ -610,6 +678,21 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, return 0; } @@ -113644,7 +113954,7 @@ index b6c00ce..ab37ad1 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 0d163a8..8af6140 100644 +index a11eb71..d48ca0e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -113,6 +113,14 @@ struct pid_entry { @@ -113997,7 +114307,7 @@ index 0d163a8..8af6140 100644 rcu_read_unlock(); } else { inode->i_uid = GLOBAL_ROOT_UID; -@@ -2369,6 +2507,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, +@@ -2374,6 +2512,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, if (!task) goto out_no_task; @@ -114007,7 +114317,7 @@ index 0d163a8..8af6140 100644 /* * Yes, it does not scale. And it should not. Don't add * new entries into /proc/<tgid>/ without very good reasons. -@@ -2399,6 +2540,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx, +@@ -2404,6 +2545,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx, if (!task) return -ENOENT; @@ -114017,7 +114327,7 @@ index 0d163a8..8af6140 100644 if (!dir_emit_dots(file, ctx)) goto out; -@@ -2811,7 +2955,9 @@ static const struct inode_operations proc_task_inode_operations; +@@ -2816,7 +2960,9 @@ static const struct inode_operations proc_task_inode_operations; static const struct pid_entry tgid_base_stuff[] = { DIR("task", S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations), DIR("fd", S_IRUSR|S_IXUSR, proc_fd_inode_operations, proc_fd_operations), @@ -114027,7 +114337,7 @@ index 0d163a8..8af6140 100644 DIR("fdinfo", S_IRUSR|S_IXUSR, proc_fdinfo_inode_operations, proc_fdinfo_operations), DIR("ns", S_IRUSR|S_IXUGO, proc_ns_dir_inode_operations, proc_ns_dir_operations), #ifdef CONFIG_NET -@@ -2829,7 +2975,7 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2834,7 +2980,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), @@ -114036,7 +114346,7 @@ index 0d163a8..8af6140 100644 ONE("syscall", S_IRUSR, proc_pid_syscall), #endif REG("cmdline", S_IRUGO, proc_pid_cmdline_ops), -@@ -2854,10 +3000,10 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2859,10 +3005,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 @@ -114049,7 +114359,7 @@ index 0d163a8..8af6140 100644 ONE("stack", S_IRUSR, proc_pid_stack), #endif #ifdef CONFIG_SCHED_INFO -@@ -2891,6 +3037,9 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2896,6 +3042,9 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_HARDWALL ONE("hardwall", S_IRUGO, proc_pid_hardwall), #endif @@ -114059,7 +114369,7 @@ index 0d163a8..8af6140 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), -@@ -3024,7 +3173,14 @@ static int proc_pid_instantiate(struct inode *dir, +@@ -3029,7 +3178,14 @@ static int proc_pid_instantiate(struct inode *dir, if (!inode) goto out; @@ -114074,7 +114384,7 @@ index 0d163a8..8af6140 100644 inode->i_op = &proc_tgid_base_inode_operations; inode->i_fop = &proc_tgid_base_operations; inode->i_flags|=S_IMMUTABLE; -@@ -3062,7 +3218,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign +@@ -3067,7 +3223,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign if (!task) goto out; @@ -114086,16 +114396,16 @@ index 0d163a8..8af6140 100644 put_task_struct(task); out: return ERR_PTR(result); -@@ -3176,7 +3336,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), +@@ -3221,7 +3381,7 @@ static const struct pid_entry tid_base_stuff[] = { + NOD("comm", S_IFREG|S_IRUGO|S_IWUSR, + &proc_tid_comm_inode_operations, + &proc_pid_set_comm_operations, {}), -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP) ONE("syscall", S_IRUSR, proc_pid_syscall), #endif REG("cmdline", S_IRUGO, proc_pid_cmdline_ops), -@@ -3203,10 +3363,10 @@ static const struct pid_entry tid_base_stuff[] = { +@@ -3248,10 +3408,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 @@ -114141,7 +114451,7 @@ index 50493ed..248166b 100644 } fs_initcall(proc_devices_init); diff --git a/fs/proc/fd.c b/fs/proc/fd.c -index 56afa5e..cb7934e 100644 +index 01df23c..9b6c8f9 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c @@ -27,7 +27,8 @@ static int seq_show(struct seq_file *m, void *v) @@ -114175,7 +114485,7 @@ index 56afa5e..cb7934e 100644 return rv; diff --git a/fs/proc/generic.c b/fs/proc/generic.c -index ff3ffc7..1aec0a3 100644 +index c633476..881fce8 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -22,6 +22,7 @@ @@ -114220,7 +114530,7 @@ index ff3ffc7..1aec0a3 100644 * These are the generic /proc directory operations. They * use the in-memory "struct proc_dir_entry" tree to parse @@ -321,6 +341,12 @@ static const struct file_operations proc_dir_operations = { - .iterate = proc_readdir, + .iterate_shared = proc_readdir, }; +static const struct file_operations proc_dir_restricted_operations = { @@ -114523,7 +114833,7 @@ index f8595e8..e0d13cbd 100644 seq_putc(m, '\n'); diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c -index 350984a..a78a18c 100644 +index c8bbc68..d0f82d5 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -23,9 +23,27 @@ @@ -114598,7 +114908,7 @@ index 350984a..a78a18c 100644 .exit = proc_net_ns_exit, }; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index fe5b6e6..cd2913c 100644 +index 5e57c3e..1aea40d 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -11,13 +11,21 @@ @@ -114700,17 +115010,15 @@ index fe5b6e6..cd2913c 100644 /* careful: calling conventions are nasty here */ res = count; error = table->proc_handler(table, write, buf, &res, ppos); -@@ -635,6 +672,9 @@ static bool proc_sys_fill_cache(struct file *file, +@@ -639,6 +676,7 @@ static bool proc_sys_fill_cache(struct file *file, return false; - } else { - d_set_d_op(child, &proc_sys_dentry_operations); -+ -+ gr_handle_proc_create(child, inode); -+ - d_add(child, inode); } - } else { -@@ -678,6 +718,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table, + d_set_d_op(child, &proc_sys_dentry_operations); ++ gr_handle_proc_create(child, inode); + d_add(child, inode); + } + } +@@ -679,6 +717,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table, if ((*pos)++ < ctx->pos) return true; @@ -114720,7 +115028,7 @@ index fe5b6e6..cd2913c 100644 if (unlikely(S_ISLNK(table->mode))) res = proc_sys_link_fill_cache(file, ctx, head, table); else -@@ -771,6 +814,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct +@@ -772,6 +813,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct if (IS_ERR(head)) return PTR_ERR(head); @@ -114730,7 +115038,7 @@ index fe5b6e6..cd2913c 100644 generic_fillattr(inode, stat); if (table) stat->mode = (stat->mode & S_IFMT) | table->mode; -@@ -793,13 +839,13 @@ static const struct file_operations proc_sys_dir_file_operations = { +@@ -794,13 +838,13 @@ static const struct file_operations proc_sys_dir_file_operations = { .llseek = generic_file_llseek, }; @@ -114746,7 +115054,7 @@ index fe5b6e6..cd2913c 100644 .lookup = proc_sys_lookup, .permission = proc_sys_permission, .setattr = proc_sys_setattr, -@@ -876,7 +922,7 @@ static struct ctl_dir *find_subdir(struct ctl_dir *dir, +@@ -877,7 +921,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) { @@ -114755,7 +115063,7 @@ index fe5b6e6..cd2913c 100644 struct ctl_dir *new; struct ctl_node *node; char *new_name; -@@ -888,7 +934,7 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, +@@ -889,7 +933,7 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, return NULL; node = (struct ctl_node *)(new + 1); @@ -114764,7 +115072,7 @@ index fe5b6e6..cd2913c 100644 new_name = (char *)(table + 2); memcpy(new_name, name, namelen); new_name[namelen] = '\0'; -@@ -1057,7 +1103,8 @@ static int sysctl_check_table(const char *path, struct ctl_table *table) +@@ -1058,7 +1102,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) { @@ -114774,7 +115082,7 @@ index fe5b6e6..cd2913c 100644 struct ctl_table_header *links; struct ctl_node *node; char *link_name; -@@ -1080,7 +1127,7 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table +@@ -1081,7 +1126,7 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table return NULL; node = (struct ctl_node *)(links + 1); @@ -114783,7 +115091,7 @@ index fe5b6e6..cd2913c 100644 link_name = (char *)&link_table[nr_entries + 1]; for (link = link_table, entry = table; entry->procname; link++, entry++) { -@@ -1328,8 +1375,8 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1329,8 +1374,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) { @@ -114794,7 +115102,7 @@ index fe5b6e6..cd2913c 100644 int nr_files = 0; int nr_dirs = 0; int err = -ENOMEM; -@@ -1341,10 +1388,9 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1342,10 +1387,9 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, nr_files++; } @@ -114806,7 +115114,7 @@ index fe5b6e6..cd2913c 100644 files = kzalloc(sizeof(struct ctl_table) * (nr_files + 1), GFP_KERNEL); if (!files) -@@ -1362,7 +1408,7 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1363,7 +1407,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; @@ -114816,7 +115124,7 @@ index fe5b6e6..cd2913c 100644 kfree(ctl_table_arg); goto out; diff --git a/fs/proc/root.c b/fs/proc/root.c -index ec649c9..55e45e9 100644 +index 0670278..e3899d0 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -194,7 +194,15 @@ void __init proc_root_init(void) @@ -114953,7 +115261,7 @@ index 510413eb..34d9a8c 100644 seq_printf(p, "softirq %llu", (unsigned long long)sum_softirq); diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 5415835..0095e58 100644 +index 4648c7f..9f5a541 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -15,12 +15,19 @@ @@ -115149,7 +115457,7 @@ index 5415835..0095e58 100644 mss.resident >> 10, (unsigned long)(mss.pss >> (10 + PSS_SHIFT)), mss.shared_clean >> 10, -@@ -1426,7 +1477,7 @@ static int pagemap_open(struct inode *inode, struct file *file) +@@ -1433,7 +1484,7 @@ static int pagemap_open(struct inode *inode, struct file *file) { struct mm_struct *mm; @@ -115158,7 +115466,7 @@ index 5415835..0095e58 100644 if (IS_ERR(mm)) return PTR_ERR(mm); file->private_data = mm; -@@ -1629,6 +1680,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) +@@ -1636,6 +1687,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) char buffer[64]; int nid; @@ -115172,7 +115480,7 @@ index 5415835..0095e58 100644 if (!mm) return 0; -@@ -1643,11 +1701,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) +@@ -1650,11 +1708,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) mpol_to_str(buffer, sizeof(buffer), proc_priv->task_mempolicy); } @@ -115230,7 +115538,7 @@ index faacb0c..b185575 100644 int err = PTR_ERR(priv->mm); diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c -index 8afe10c..61d505b 100644 +index 8ab782d..ef5bcbd 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count, @@ -115300,7 +115608,7 @@ index f23b5c4..da5d2f3 100644 if (sbi->s_bytesex == BYTESEX_LE) return le32_to_cpu((__force __le32)n); diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c -index d07a2f9..380906a 100644 +index 8b25267..0706a93 100644 --- a/fs/quota/netlink.c +++ b/fs/quota/netlink.c @@ -42,7 +42,7 @@ static struct genl_family quota_genl_family = { @@ -115322,7 +115630,7 @@ index d07a2f9..380906a 100644 if (!msg_head) { printk(KERN_ERR diff --git a/fs/read_write.c b/fs/read_write.c -index cf377cf..86fd2b6 100644 +index 933b53a..94e4df4 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -23,7 +23,8 @@ @@ -115335,7 +115643,7 @@ index cf377cf..86fd2b6 100644 typedef ssize_t (*iter_fn_t)(struct kiocb *, struct iov_iter *); const struct file_operations generic_ro_fops = { -@@ -545,7 +546,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t +@@ -526,7 +527,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t old_fs = get_fs(); set_fs(get_ds()); @@ -115344,7 +115652,7 @@ index cf377cf..86fd2b6 100644 if (count > MAX_RW_COUNT) count = MAX_RW_COUNT; ret = __vfs_write(file, p, count, pos); -@@ -714,7 +715,7 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter, +@@ -700,7 +701,7 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter, /* Do it by hand, with file-ops */ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter, @@ -115353,7 +115661,7 @@ index cf377cf..86fd2b6 100644 { ssize_t ret = 0; -@@ -725,7 +726,10 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter, +@@ -711,7 +712,10 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter, struct iovec iovec = iov_iter_iovec(iter); ssize_t nr; @@ -115365,7 +115673,7 @@ index cf377cf..86fd2b6 100644 if (nr < 0) { if (!ret) -@@ -829,7 +833,8 @@ static ssize_t do_readv_writev(int type, struct file *file, +@@ -815,7 +819,8 @@ static ssize_t do_readv_writev(int type, struct file *file, struct iovec *iov = iovstack; struct iov_iter iter; ssize_t ret; @@ -115375,7 +115683,7 @@ index cf377cf..86fd2b6 100644 iter_fn_t iter_fn; ret = import_iovec(type, uvector, nr_segs, -@@ -845,10 +850,12 @@ static ssize_t do_readv_writev(int type, struct file *file, +@@ -831,10 +836,12 @@ static ssize_t do_readv_writev(int type, struct file *file, goto out; if (type == READ) { @@ -115390,7 +115698,7 @@ index cf377cf..86fd2b6 100644 iter_fn = file->f_op->write_iter; file_start_write(file); } -@@ -856,7 +863,7 @@ static ssize_t do_readv_writev(int type, struct file *file, +@@ -842,7 +849,7 @@ static ssize_t do_readv_writev(int type, struct file *file, if (iter_fn) ret = do_iter_readv_writev(file, &iter, pos, iter_fn, flags); else @@ -115399,7 +115707,7 @@ index cf377cf..86fd2b6 100644 if (type != READ) file_end_write(file); -@@ -1054,7 +1061,8 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, +@@ -1040,7 +1047,8 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, struct iovec *iov = iovstack; struct iov_iter iter; ssize_t ret; @@ -115409,7 +115717,7 @@ index cf377cf..86fd2b6 100644 iter_fn_t iter_fn; ret = compat_import_iovec(type, uvector, nr_segs, -@@ -1070,10 +1078,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, +@@ -1056,10 +1064,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, goto out; if (type == READ) { @@ -115424,7 +115732,7 @@ index cf377cf..86fd2b6 100644 iter_fn = file->f_op->write_iter; file_start_write(file); } -@@ -1081,7 +1091,7 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, +@@ -1067,7 +1077,7 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, if (iter_fn) ret = do_iter_readv_writev(file, &iter, pos, iter_fn, flags); else @@ -115434,7 +115742,7 @@ index cf377cf..86fd2b6 100644 if (type != READ) file_end_write(file); diff --git a/fs/readdir.c b/fs/readdir.c -index e69ef3b..ffb5456 100644 +index 9d0212c..da1afd1 100644 --- a/fs/readdir.c +++ b/fs/readdir.c @@ -18,6 +18,7 @@ @@ -115445,7 +115753,7 @@ index e69ef3b..ffb5456 100644 #include <asm/uaccess.h> -@@ -71,6 +72,7 @@ struct old_linux_dirent { +@@ -84,6 +85,7 @@ struct old_linux_dirent { struct readdir_callback { struct dir_context ctx; struct old_linux_dirent __user * dirent; @@ -115453,7 +115761,7 @@ index e69ef3b..ffb5456 100644 int result; }; -@@ -89,6 +91,10 @@ static int fillonedir(struct dir_context *ctx, const char *name, int namlen, +@@ -102,6 +104,10 @@ static int fillonedir(struct dir_context *ctx, const char *name, int namlen, buf->result = -EOVERFLOW; return -EOVERFLOW; } @@ -115464,7 +115772,7 @@ index e69ef3b..ffb5456 100644 buf->result++; dirent = buf->dirent; if (!access_ok(VERIFY_WRITE, dirent, -@@ -120,6 +126,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd, +@@ -133,6 +139,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd, if (!f.file) return -EBADF; @@ -115472,7 +115780,7 @@ index e69ef3b..ffb5456 100644 error = iterate_dir(f.file, &buf.ctx); if (buf.result) error = buf.result; -@@ -145,6 +152,7 @@ struct getdents_callback { +@@ -158,6 +165,7 @@ struct getdents_callback { struct dir_context ctx; struct linux_dirent __user * current_dir; struct linux_dirent __user * previous; @@ -115480,7 +115788,7 @@ index e69ef3b..ffb5456 100644 int count; int error; }; -@@ -167,6 +175,10 @@ static int filldir(struct dir_context *ctx, const char *name, int namlen, +@@ -180,6 +188,10 @@ static int filldir(struct dir_context *ctx, const char *name, int namlen, buf->error = -EOVERFLOW; return -EOVERFLOW; } @@ -115490,8 +115798,8 @@ index e69ef3b..ffb5456 100644 + dirent = buf->previous; if (dirent) { - if (__put_user(offset, &dirent->d_off)) -@@ -212,6 +224,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd, + if (signal_pending(current)) +@@ -227,6 +239,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd, if (!f.file) return -EBADF; @@ -115499,7 +115807,7 @@ index e69ef3b..ffb5456 100644 error = iterate_dir(f.file, &buf.ctx); if (error >= 0) error = buf.error; -@@ -230,6 +243,7 @@ struct getdents_callback64 { +@@ -245,6 +258,7 @@ struct getdents_callback64 { struct dir_context ctx; struct linux_dirent64 __user * current_dir; struct linux_dirent64 __user * previous; @@ -115507,7 +115815,7 @@ index e69ef3b..ffb5456 100644 int count; int error; }; -@@ -246,6 +260,10 @@ static int filldir64(struct dir_context *ctx, const char *name, int namlen, +@@ -261,6 +275,10 @@ static int filldir64(struct dir_context *ctx, const char *name, int namlen, buf->error = -EINVAL; /* only used if we fail.. */ if (reclen > buf->count) return -EINVAL; @@ -115517,8 +115825,8 @@ index e69ef3b..ffb5456 100644 + dirent = buf->previous; if (dirent) { - if (__put_user(offset, &dirent->d_off)) -@@ -293,13 +311,13 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd, + if (signal_pending(current)) +@@ -310,13 +328,13 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd, if (!f.file) return -EBADF; @@ -115617,10 +115925,10 @@ index 2adcde1..7d27bc8 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 b8f2d1e..5922f16 100644 +index c72c16c..9b21de1 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c -@@ -1872,6 +1872,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) +@@ -1877,6 +1877,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) sbi->s_mount_opt |= (1 << REISERFS_SMALLTAIL); sbi->s_mount_opt |= (1 << REISERFS_ERROR_RO); sbi->s_mount_opt |= (1 << REISERFS_BARRIER_FLUSH); @@ -115632,7 +115940,7 @@ index b8f2d1e..5922f16 100644 sbi->s_alloc_options.preallocmin = 0; /* Preallocate by 16 blocks (17-1) at once */ diff --git a/fs/select.c b/fs/select.c -index 8692939..44f4aa3 100644 +index 8ed9da5..4ee3bb4 100644 --- a/fs/select.c +++ b/fs/select.c @@ -20,6 +20,7 @@ @@ -115643,7 +115951,7 @@ index 8692939..44f4aa3 100644 #include <linux/personality.h> /* for STICKY_TIMEOUTS */ #include <linux/file.h> #include <linux/fdtable.h> -@@ -717,7 +718,7 @@ SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp, +@@ -723,7 +724,7 @@ SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp, #ifdef __ARCH_WANT_SYS_OLD_SELECT struct sel_arg_struct { @@ -115652,7 +115960,7 @@ index 8692939..44f4aa3 100644 fd_set __user *inp, *outp, *exp; struct timeval __user *tvp; }; -@@ -880,6 +881,7 @@ int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds, +@@ -886,6 +887,7 @@ int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds, struct poll_list *walk = head; unsigned long todo = nfds; @@ -115933,7 +116241,7 @@ index dd9bf7e..3d55c3e 100644 pipe_unlock(ipipe); diff --git a/fs/squashfs/xattr.c b/fs/squashfs/xattr.c -index 1e9de96..a77cc8c 100644 +index 1548b37..0624869 100644 --- a/fs/squashfs/xattr.c +++ b/fs/squashfs/xattr.c @@ -46,8 +46,8 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer, @@ -116014,7 +116322,7 @@ index bc045c7..68725c1 100644 generic_fillattr(inode, stat); return 0; diff --git a/fs/super.c b/fs/super.c -index 74914b1..c570339 100644 +index d78b984..2d01260 100644 --- a/fs/super.c +++ b/fs/super.c @@ -348,7 +348,8 @@ EXPORT_SYMBOL(deactivate_super); @@ -116306,7 +116614,7 @@ index 8d974c4..b82f6ec 100644 { if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c -index 66cdb44..2eb05e1 100644 +index 2d97952..115b9d9 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -432,7 +432,7 @@ static int userfaultfd_release(struct inode *inode, struct file *file) @@ -116316,8 +116624,8 @@ index 66cdb44..2eb05e1 100644 - ACCESS_ONCE(ctx->released) = true; + ACCESS_ONCE_RW(ctx->released) = true; - /* - * Flush page faults out of all CPUs. NOTE: all page faults + if (!mmget_not_zero(mm)) + goto wakeup; diff --git a/fs/utimes.c b/fs/utimes.c index 85c40f4..52fcd23 100644 --- a/fs/utimes.c @@ -116344,7 +116652,7 @@ index 85c40f4..52fcd23 100644 error = notify_change(path->dentry, &newattrs, &delegated_inode); inode_unlock(inode); diff --git a/fs/xattr.c b/fs/xattr.c -index 4861322..7266aed 100644 +index 4beafc4..02b5e0d 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -208,6 +208,27 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, @@ -116363,7 +116671,7 @@ index 4861322..7266aed 100644 + return error; + + if (inode->i_op->getxattr) -+ error = inode->i_op->getxattr(dentry, XATTR_NAME_USER_PAX_FLAGS, value, size); ++ error = inode->i_op->getxattr(dentry, inode, XATTR_NAME_USER_PAX_FLAGS, value, size); + else + error = -EOPNOTSUPP; + @@ -116465,7 +116773,7 @@ index 4861322..7266aed 100644 } fdput(f); diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c -index ce41d7f..0372726 100644 +index 932381c..a316c7b 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -557,7 +557,7 @@ xfs_bmap_validate_ret( @@ -116500,7 +116808,7 @@ index 097bf77..ffe3cb3 100644 out_free_map: if (mapp != &map) diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c -index 93b3ab0..3a7a8bb 100644 +index f44f799..22e0c0f 100644 --- a/fs/xfs/xfs_dir2_readdir.c +++ b/fs/xfs/xfs_dir2_readdir.c @@ -140,7 +140,12 @@ xfs_dir2_sf_getdents( @@ -116517,159 +116825,8 @@ index 93b3ab0..3a7a8bb 100644 xfs_dir3_get_dtype(dp->i_mount, filetype))) return 0; sfep = dp->d_ops->sf_nextentry(sfp, sfep); -diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c -index bf2d607..57fcd59 100644 ---- a/fs/xfs/xfs_icache.c -+++ b/fs/xfs/xfs_icache.c -@@ -94,13 +94,6 @@ xfs_inode_free_callback( - struct inode *inode = container_of(head, struct inode, i_rcu); - struct xfs_inode *ip = XFS_I(inode); - -- kmem_zone_free(xfs_inode_zone, ip); --} -- --void --xfs_inode_free( -- struct xfs_inode *ip) --{ - switch (VFS_I(ip)->i_mode & S_IFMT) { - case S_IFREG: - case S_IFDIR: -@@ -118,6 +111,25 @@ xfs_inode_free( - ip->i_itemp = NULL; - } - -+ kmem_zone_free(xfs_inode_zone, ip); -+} -+ -+static void -+__xfs_inode_free( -+ struct xfs_inode *ip) -+{ -+ /* asserts to verify all state is correct here */ -+ ASSERT(atomic_read(&ip->i_pincount) == 0); -+ ASSERT(!xfs_isiflocked(ip)); -+ XFS_STATS_DEC(ip->i_mount, vn_active); -+ -+ call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback); -+} -+ -+void -+xfs_inode_free( -+ struct xfs_inode *ip) -+{ - /* - * Because we use RCU freeing we need to ensure the inode always - * appears to be reclaimed with an invalid inode number when in the -@@ -129,12 +141,7 @@ xfs_inode_free( - ip->i_ino = 0; - spin_unlock(&ip->i_flags_lock); - -- /* asserts to verify all state is correct here */ -- ASSERT(atomic_read(&ip->i_pincount) == 0); -- ASSERT(!xfs_isiflocked(ip)); -- XFS_STATS_DEC(ip->i_mount, vn_active); -- -- call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback); -+ __xfs_inode_free(ip); - } - - /* -@@ -772,8 +779,7 @@ __xfs_inode_set_reclaim_tag( - if (!pag->pag_ici_reclaimable) { - /* propagate the reclaim tag up into the perag radix tree */ - spin_lock(&ip->i_mount->m_perag_lock); -- radix_tree_tag_set(&ip->i_mount->m_perag_tree, -- XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), -+ radix_tree_tag_set(&ip->i_mount->m_perag_tree, pag->pag_agno, - XFS_ICI_RECLAIM_TAG); - spin_unlock(&ip->i_mount->m_perag_lock); - -@@ -817,8 +823,7 @@ __xfs_inode_clear_reclaim( - if (!pag->pag_ici_reclaimable) { - /* clear the reclaim tag from the perag radix tree */ - spin_lock(&ip->i_mount->m_perag_lock); -- radix_tree_tag_clear(&ip->i_mount->m_perag_tree, -- XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), -+ radix_tree_tag_clear(&ip->i_mount->m_perag_tree, pag->pag_agno, - XFS_ICI_RECLAIM_TAG); - spin_unlock(&ip->i_mount->m_perag_lock); - trace_xfs_perag_clear_reclaim(ip->i_mount, pag->pag_agno, -@@ -929,6 +934,7 @@ xfs_reclaim_inode( - int sync_mode) - { - struct xfs_buf *bp = NULL; -+ xfs_ino_t ino = ip->i_ino; /* for radix_tree_delete */ - int error; - - restart: -@@ -993,6 +999,22 @@ restart: - - xfs_iflock(ip); - reclaim: -+ /* -+ * Because we use RCU freeing we need to ensure the inode always appears -+ * to be reclaimed with an invalid inode number when in the free state. -+ * We do this as early as possible under the ILOCK and flush lock so -+ * that xfs_iflush_cluster() can be guaranteed to detect races with us -+ * here. By doing this, we guarantee that once xfs_iflush_cluster has -+ * locked both the XFS_ILOCK and the flush lock that it will see either -+ * a valid, flushable inode that will serialise correctly against the -+ * locks below, or it will see a clean (and invalid) inode that it can -+ * skip. -+ */ -+ spin_lock(&ip->i_flags_lock); -+ ip->i_flags = XFS_IRECLAIM; -+ ip->i_ino = 0; -+ spin_unlock(&ip->i_flags_lock); -+ - xfs_ifunlock(ip); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - -@@ -1006,7 +1028,7 @@ reclaim: - */ - spin_lock(&pag->pag_ici_lock); - if (!radix_tree_delete(&pag->pag_ici_root, -- XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) -+ XFS_INO_TO_AGINO(ip->i_mount, ino))) - ASSERT(0); - __xfs_inode_clear_reclaim(pag, ip); - spin_unlock(&pag->pag_ici_lock); -@@ -1023,7 +1045,7 @@ reclaim: - xfs_qm_dqdetach(ip); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - -- xfs_inode_free(ip); -+ __xfs_inode_free(ip); - return error; - - out_ifunlock: -diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c -index 3cbc903..e3b2798 100644 ---- a/fs/xfs/xfs_inode.c -+++ b/fs/xfs/xfs_inode.c -@@ -3239,6 +3239,19 @@ xfs_iflush_cluster( - continue; - } - -+ -+ /* -+ * Check the inode number again, just to be certain we are not -+ * racing with freeing in xfs_reclaim_inode(). See the comments -+ * in that function for more information as to why the initial -+ * check is not sufficient. -+ */ -+ if (!iq->i_ino) { -+ xfs_ifunlock(iq); -+ xfs_iunlock(iq, XFS_ILOCK_SHARED); -+ continue; -+ } -+ - /* - * arriving here means that this inode can be flushed. First - * re-check that it's dirty before flushing. diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c -index bcb6c19..7acb0cb 100644 +index 63a6ff2..51ebbf5 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -121,7 +121,7 @@ xfs_find_handle( @@ -116681,7 +116838,7 @@ index bcb6c19..7acb0cb 100644 copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32))) goto out_put; -@@ -1592,6 +1592,12 @@ xfs_ioc_swapext( +@@ -1581,6 +1581,12 @@ xfs_ioc_swapext( goto out_put_tmp_file; } @@ -117989,10 +118146,10 @@ index 0000000..e136e5f +endif diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c new file mode 100644 -index 0000000..3c66319 +index 0000000..a006030 --- /dev/null +++ b/grsecurity/gracl.c -@@ -0,0 +1,2757 @@ +@@ -0,0 +1,2773 @@ +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/sched.h> @@ -120443,16 +120600,32 @@ index 0000000..3c66319 + case PTRACE_POKETEXT: + case PTRACE_POKEDATA: + case PTRACE_POKEUSR: -+#if !defined(CONFIG_PPC32) && !defined(CONFIG_PPC64) && !defined(CONFIG_PARISC) && !defined(CONFIG_ALPHA) && !defined(CONFIG_IA64) ++#if !defined(CONFIG_PPC32) && !defined(CONFIG_PPC64) && !defined(CONFIG_PARISC) && !defined(CONFIG_ALPHA) && !defined(CONFIG_IA64) && !defined(CONFIG_ARM64) + case PTRACE_SETREGS: + case PTRACE_SETFPREGS: +#endif ++#ifdef CONFIG_COMPAT ++#ifdef CONFIG_ARM64 ++ case COMPAT_PTRACE_SETREGS: ++ case COMPAT_PTRACE_SETVFPREGS: ++#ifdef CONFIG_HAVE_HW_BREAKPOINT ++ case COMPAT_PTRACE_SETHBPREGS: ++#endif ++#endif ++#endif +#ifdef CONFIG_X86 + case PTRACE_SETFPXREGS: +#endif +#ifdef CONFIG_ALTIVEC + case PTRACE_SETVRREGS: +#endif ++#ifdef CONFIG_ARM ++ case PTRACE_SET_SYSCALL: ++ case PTRACE_SETVFPREGS: ++#ifdef CONFIG_HAVE_HW_BREAKPOINT ++ case PTRACE_SETHBPREGS: ++#endif ++#endif + return 1; + default: + return 0; @@ -121694,7 +121867,7 @@ index 0000000..fce7f71 +} diff --git a/grsecurity/gracl_ip.c b/grsecurity/gracl_ip.c new file mode 100644 -index 0000000..950647c +index 0000000..5da5304 --- /dev/null +++ b/grsecurity/gracl_ip.c @@ -0,0 +1,387 @@ @@ -121769,7 +121942,7 @@ index 0000000..950647c + "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", "alg", -+ "nfc", "vsock", "kcm" ++ "nfc", "vsock", "kcm", "qipcrtr" + }; + +const char * @@ -128483,7 +128656,7 @@ index 9ceb03b..62b0b8f 100644 #define local_add_unless(l, _a, u) atomic_long_add_unless((&(l)->a), (_a), (u)) #define local_inc_not_zero(l) atomic_long_inc_not_zero(&(l)->a) diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h -index 725612b..9cc513a 100644 +index 725612b..8458d85 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -1,14 +1,19 @@ @@ -128522,6 +128695,14 @@ index 725612b..9cc513a 100644 /* * The "pud_xxx()" functions here are trivial for a folded two-level * setup: the pmd is never bad, and a pmd always exists (as it's folded +@@ -33,6 +33,7 @@ static inline void pud_clear(pud_t *pud) { } + #define pmd_ERROR(pmd) (pud_ERROR((pmd).pud)) + + #define pud_populate(mm, pmd, pte) do { } while (0) ++#define pud_populate_kernel(mm, pmd, pte) do { } while (0) + + /* + * (pmds are folded into puds so this doesn't get actually called, diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h index 810431d..0ec4804f 100644 --- a/include/asm-generic/pgtable-nopud.h @@ -128565,7 +128746,7 @@ 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 9401f48..7e86f97 100644 +index d4458b6..34e3f46 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h @@ -757,6 +757,22 @@ static inline int pmd_protnone(pmd_t pmd) @@ -128629,10 +128810,10 @@ index 1bfa602..aab89b1 100644 + #endif /* __ASM_GENERIC_UACCESS_H */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h -index 339125b..903c9bf 100644 +index 081d0f2..0cd1488 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h -@@ -256,6 +256,7 @@ +@@ -258,6 +258,7 @@ VMLINUX_SYMBOL(__start_rodata) = .; \ *(.rodata) *(.rodata.*) \ *(.data..ro_after_init) /* Read only after init */ \ @@ -128640,7 +128821,7 @@ index 339125b..903c9bf 100644 *(__vermagic) /* Kernel version magic */ \ . = ALIGN(8); \ VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \ -@@ -522,6 +523,7 @@ +@@ -524,6 +525,7 @@ KERNEL_CTORS() \ MCOUNT_REC() \ *(.init.rodata) \ @@ -128648,16 +128829,16 @@ index 339125b..903c9bf 100644 FTRACE_EVENTS() \ TRACE_SYSCALLS() \ KPROBE_BLACKLIST() \ -@@ -544,6 +546,8 @@ +@@ -547,6 +549,8 @@ #define EXIT_DATA \ *(.exit.data) \ + *(.exit.rodata) \ + *(.exit.rodata.*) \ + *(.fini_array) \ + *(.dtors) \ MEM_DISCARD(exit.data) \ - MEM_DISCARD(exit.rodata) - -@@ -760,17 +764,18 @@ +@@ -766,17 +770,18 @@ * section in the linker script will go there too. @phdr should have * a leading colon. * @@ -128680,7 +128861,7 @@ index 339125b..903c9bf 100644 /** * PERCPU_SECTION - define output section for percpu area, simple version -@@ -832,12 +837,14 @@ +@@ -838,12 +843,14 @@ #define INIT_DATA_SECTION(initsetup_align) \ .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { \ @@ -128750,7 +128931,7 @@ index ede6b97..1f5b11f 100644 int xts_crypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes, diff --git a/include/drm/drmP.h b/include/drm/drmP.h -index 3c8422c..251247f 100644 +index 84f1a8e..5ce8d8e 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -59,6 +59,7 @@ @@ -128788,7 +128969,7 @@ index 3c8422c..251247f 100644 /** * Creates a driver or general drm_ioctl_desc array entry for the given -@@ -656,7 +659,8 @@ struct drm_driver { +@@ -665,7 +668,8 @@ struct drm_driver { /* List of devices hanging off this driver with stealth attach. */ struct list_head legacy_dev_list; @@ -128798,7 +128979,7 @@ index 3c8422c..251247f 100644 enum drm_minor_type { DRM_MINOR_LEGACY, -@@ -674,7 +678,8 @@ struct drm_info_list { +@@ -683,7 +687,8 @@ struct drm_info_list { int (*show)(struct seq_file*, void*); /** show callback */ u32 driver_features; /**< Required driver features for this entry */ void *data; @@ -128808,7 +128989,7 @@ index 3c8422c..251247f 100644 /** * debugfs node structure. This structure represents a debugfs file. -@@ -763,7 +768,7 @@ struct drm_device { +@@ -772,7 +777,7 @@ struct drm_device { /** \name Usage Counters */ /*@{ */ @@ -128831,7 +129012,7 @@ index fc65118..7d80068 100644 bool drm_mm_clean(struct drm_mm *mm); diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h -index b61c2d4..7b8686d 100644 +index d4619dc..22e8e77 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_helper_vtables.h @@ -638,7 +638,7 @@ struct drm_encoder_helper_funcs { @@ -128852,7 +129033,7 @@ index b61c2d4..7b8686d 100644 /** * drm_connector_helper_add - sets the helper vtable for a connector diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h -index 9094599..19d0c344 100644 +index 33466bf..3c53007 100644 --- a/include/drm/i915_pciids.h +++ b/include/drm/i915_pciids.h @@ -37,7 +37,7 @@ @@ -128905,7 +129086,7 @@ index 49a8284..9643967 100644 extern void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev); diff --git a/include/keys/asymmetric-subtype.h b/include/keys/asymmetric-subtype.h -index 4915d40..8b913c0 100644 +index 2480469..afcbfd4 100644 --- a/include/keys/asymmetric-subtype.h +++ b/include/keys/asymmetric-subtype.h @@ -37,7 +37,7 @@ struct asymmetric_key_subtype { @@ -128979,7 +129160,7 @@ index c1da539..1dcec55 100644 struct atmphy_ops { int (*start)(struct atm_dev *dev); diff --git a/include/linux/atomic.h b/include/linux/atomic.h -index 506c353..10739bd 100644 +index e451534..8686854 100644 --- a/include/linux/atomic.h +++ b/include/linux/atomic.h @@ -91,6 +91,13 @@ @@ -129093,7 +129274,7 @@ index d04aa58..3de0da8 100644 (val << factor)) >> weight : \ (val << factor); \ diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h -index 576e463..28fd926 100644 +index 314b3ca..81ca9c4 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h @@ -44,7 +44,7 @@ struct linux_binprm { @@ -129105,7 +129286,7 @@ index 576e463..28fd926 100644 #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0 #define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT) -@@ -77,8 +77,10 @@ struct linux_binfmt { +@@ -78,8 +78,10 @@ struct linux_binfmt { int (*load_binary)(struct linux_binprm *); int (*load_shlib)(struct file *); int (*core_dump)(struct coredump_params *cprm); @@ -129131,7 +129312,7 @@ index e9b0b9a..4fc3241 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 defeaac..856d23d 100644 +index 299e76b..ef972c1 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -75,7 +75,7 @@ static inline int get_count_order(unsigned int count) @@ -129266,10 +129447,10 @@ index c02e669..439bd4b 100644 } diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h -index 669e419..3cacec8 100644 +index 3d9cf32..04b0e9a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h -@@ -1669,7 +1669,7 @@ struct block_device_operations { +@@ -1683,7 +1683,7 @@ struct block_device_operations { void (*swap_slot_free_notify) (struct block_device *, unsigned long); struct module *owner; const struct pr_ops *pr_ops; @@ -129279,7 +129460,7 @@ index 669e419..3cacec8 100644 extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int, unsigned long); diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h -index afc1343..9735539 100644 +index 0f3172b..e26530f 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h @@ -25,7 +25,7 @@ struct blk_trace { @@ -129396,10 +129577,10 @@ index fccf7f4..1d5925e 100644 extern int cleancache_register_ops(const 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 da95258..2d00aec 100644 +index fb39d5a..a158876 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h -@@ -215,6 +215,7 @@ struct clk_ops { +@@ -216,6 +216,7 @@ struct clk_ops { void (*init)(struct clk_hw *hw); int (*debug_init)(struct clk_hw *hw, struct dentry *dentry); }; @@ -129459,7 +129640,7 @@ index f964ef7..0679632 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 3d5202e..d1f59fe 100644 +index e294939..1ac746f 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -116,9 +116,9 @@ @@ -129475,7 +129656,7 @@ index 3d5202e..d1f59fe 100644 #define __maybe_unused __attribute__((unused)) #define __always_unused __attribute__((unused)) -@@ -184,9 +184,41 @@ +@@ -185,9 +185,41 @@ # define __compiletime_warning(message) __attribute__((warning(message))) # define __compiletime_error(message) __attribute__((error(message))) #endif /* __CHECKER__ */ @@ -129518,7 +129699,7 @@ index 3d5202e..d1f59fe 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 b5ff988..c71686f 100644 +index 793c082..0e408e3 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -5,11 +5,14 @@ @@ -129742,7 +129923,7 @@ index b5ff988..c71686f 100644 }) /** -@@ -421,6 +437,42 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -425,6 +441,42 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s # define __attribute_const__ /* unimplemented */ #endif @@ -129785,7 +129966,7 @@ index b5ff988..c71686f 100644 /* * Tell gcc if a function is cold. The compiler will assume any path * directly leading to the call is unlikely. -@@ -430,6 +482,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -434,6 +486,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s #define __cold #endif @@ -129808,7 +129989,7 @@ index b5ff988..c71686f 100644 /* Simple shorthand for a section definition */ #ifndef __section # define __section(S) __attribute__ ((__section__(#S))) -@@ -452,6 +520,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -456,6 +524,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 @@ -129817,7 +129998,7 @@ index b5ff988..c71686f 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)) -@@ -531,8 +601,9 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -535,8 +605,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; \ @@ -129842,10 +130023,10 @@ index d9d6a9d..489772c 100644 #define CONFIGFS_ATTR(_pfx, _name) \ static struct configfs_attribute _pfx##attr_##_name = { \ diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h -index 718e872..e16712a 100644 +index 4e81e08..0caf1e8 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h -@@ -201,10 +201,11 @@ __ATTR(_name, 0644, show_##_name, store_##_name) +@@ -214,10 +214,11 @@ __ATTR(_name, 0644, show_##_name, store_##_name) struct global_attr { struct attribute attr; ssize_t (*show)(struct kobject *kobj, @@ -129859,7 +130040,7 @@ index 718e872..e16712a 100644 #define define_one_global_ro(_name) \ static struct global_attr _name = \ -@@ -275,7 +276,7 @@ struct cpufreq_driver { +@@ -290,7 +291,7 @@ struct cpufreq_driver { /* platform specific boost support code */ bool boost_enabled; int (*set_boost)(int state); @@ -129892,7 +130073,7 @@ index 07b83d3..3373ad6 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 40cee6b..daa215f 100644 +index e828cf6..e4b1663 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -131,17 +131,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) @@ -129993,7 +130174,7 @@ index 257db64..a73cf86 100644 #define current_cred_xxx(xxx) \ ({ \ diff --git a/include/linux/crypto.h b/include/linux/crypto.h -index 99c9489..55a6de8 100644 +index 6e28c89..584d25a 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -510,7 +510,7 @@ struct cipher_tfm { @@ -130028,21 +130209,21 @@ index 653589e..4ef254a 100644 return c | 0x20; } diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index ad5d582..a794cac 100644 +index f53fa05..06f42e5 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h -@@ -123,6 +123,9 @@ struct dentry { - unsigned long d_time; /* used by d_revalidate */ - void *d_fsdata; /* fs-specific data */ - +@@ -102,6 +102,9 @@ struct dentry { + struct list_head d_lru; /* LRU list */ + wait_queue_head_t *d_wait; /* in-lookup ones only */ + }; +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME + atomic_t chroot_refcnt; /* tracks use of directory in chroot */ +#endif - struct list_head d_lru; /* LRU list */ struct list_head d_child; /* child of parent list */ struct list_head d_subdirs; /* our children */ -@@ -133,7 +136,7 @@ struct dentry { - struct hlist_node d_alias; /* inode alias list */ + /* +@@ -112,7 +115,7 @@ struct dentry { + struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */ struct rcu_head d_rcu; } d_u; -}; @@ -130050,7 +130231,7 @@ index ad5d582..a794cac 100644 /* * dentry->d_lock spinlock nesting subclasses: -@@ -296,7 +299,7 @@ extern struct dentry *__d_lookup_rcu(const struct dentry *parent, +@@ -280,7 +283,7 @@ extern struct dentry *__d_lookup_rcu(const struct dentry *parent, static inline unsigned d_count(const struct dentry *dentry) { @@ -130059,7 +130240,7 @@ index ad5d582..a794cac 100644 } /* -@@ -325,7 +328,7 @@ extern char *dentry_path(struct dentry *, char *, int); +@@ -309,7 +312,7 @@ extern char *dentry_path(struct dentry *, char *, int); static inline struct dentry *dget_dlock(struct dentry *dentry) { if (dentry) @@ -130082,10 +130263,10 @@ index 7925bf0..d5143d2 100644 #define large_malloc(a) vmalloc(a) diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h -index 6fa02a2..aac3093 100644 +index 2de4e2e..510a09b8 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h -@@ -117,7 +117,7 @@ struct devfreq_governor { +@@ -124,7 +124,7 @@ struct devfreq_governor { int (*get_target_freq)(struct devfreq *this, unsigned long *freq); int (*event_handler)(struct devfreq *devfreq, unsigned int event, void *data); @@ -130095,7 +130276,7 @@ index 6fa02a2..aac3093 100644 /** * struct devfreq - Device devfreq structure diff --git a/include/linux/device.h b/include/linux/device.h -index 002c597..b8d6f1a 100644 +index 38f0281..72e7b70 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -346,7 +346,7 @@ struct subsys_interface { @@ -130131,7 +130312,7 @@ index 002c597..b8d6f1a 100644 ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr, char *buf); diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h -index 9ea9aba..16b56d0 100644 +index 71c1b21..529a781 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -68,7 +68,7 @@ struct dma_map_ops { @@ -130144,10 +130325,10 @@ index 9ea9aba..16b56d0 100644 extern struct dma_map_ops dma_noop_ops; diff --git a/include/linux/efi.h b/include/linux/efi.h -index 1626474..5a604e6 100644 +index f196dd0..bbcc416 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -1123,6 +1123,7 @@ struct efivar_operations { +@@ -1184,6 +1184,7 @@ struct efivar_operations { efi_set_variable_t *set_variable_nonblocking; efi_query_variable_store_t *query_variable_store; }; @@ -130176,12 +130357,12 @@ index 20fa8d8..3d0dd18 100644 #endif diff --git a/include/linux/err.h b/include/linux/err.h -index 56762ab..bc4a3e3 100644 +index 1e35588..ce9721b 100644 --- a/include/linux/err.h +++ b/include/linux/err.h @@ -20,12 +20,12 @@ - #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) + #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) -static inline void * __must_check ERR_PTR(long error) +static inline void * __must_check __intentional_overflow(-1) ERR_PTR(long error) @@ -130194,6 +130375,16 @@ index 56762ab..bc4a3e3 100644 { return (long) ptr; } +diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h +index 9ded8c6..e11a245 100644 +--- a/include/linux/ethtool.h ++++ b/include/linux/ethtool.h +@@ -373,4 +373,5 @@ struct ethtool_ops { + int (*set_link_ksettings)(struct net_device *, + const struct ethtool_link_ksettings *); + }; ++typedef struct ethtool_ops __no_const ethtool_ops_no_const; + #endif /* _LINUX_ETHTOOL_H */ diff --git a/include/linux/extcon.h b/include/linux/extcon.h index 7abf674..c0a73a0 100644 --- a/include/linux/extcon.h @@ -130208,7 +130399,7 @@ index 7abf674..c0a73a0 100644 /** diff --git a/include/linux/fb.h b/include/linux/fb.h -index dfe8835..4e9e29a 100644 +index a964d07..09bf71f 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -320,7 +320,8 @@ struct fb_ops { @@ -130248,10 +130439,10 @@ index d4b7683..9feb066 100644 int fw_iso_context_queue(struct fw_iso_context *ctx, struct fw_iso_packet *packet, diff --git a/include/linux/fs.h b/include/linux/fs.h -index 70e61b5..8eeec57 100644 +index dd28814..4d460a5 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -330,7 +330,7 @@ struct kiocb { +@@ -331,7 +331,7 @@ struct kiocb { void (*ki_complete)(struct kiocb *iocb, long ret, long ret2); void *private; int ki_flags; @@ -130260,7 +130451,7 @@ index 70e61b5..8eeec57 100644 static inline bool is_sync_kiocb(struct kiocb *kiocb) { -@@ -444,7 +444,7 @@ struct address_space { +@@ -445,7 +445,7 @@ struct address_space { spinlock_t private_lock; /* for use by the address_space */ struct list_head private_list; /* ditto */ void *private_data; /* ditto */ @@ -130269,7 +130460,7 @@ index 70e61b5..8eeec57 100644 /* * On most architectures that alignment is already the case; but * must be enforced here for CRIS, to let the least significant bit -@@ -487,7 +487,7 @@ struct block_device { +@@ -488,7 +488,7 @@ struct block_device { int bd_fsfreeze_count; /* Mutex for freeze */ struct mutex bd_fsfreeze_mutex; @@ -130278,7 +130469,7 @@ index 70e61b5..8eeec57 100644 /* * Radix-tree tags, for tagging dirty and writeback pages within the pagecache -@@ -686,7 +686,7 @@ struct inode { +@@ -700,7 +700,7 @@ struct inode { #endif void *i_private; /* fs or device private pointer */ @@ -130287,7 +130478,7 @@ index 70e61b5..8eeec57 100644 static inline int inode_unhashed(struct inode *inode) { -@@ -906,7 +906,7 @@ struct file { +@@ -935,7 +935,7 @@ struct file { struct list_head f_tfile_llink; #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping; @@ -130296,7 +130487,7 @@ index 70e61b5..8eeec57 100644 struct file_handle { __u32 handle_bytes; -@@ -1041,7 +1041,7 @@ struct file_lock { +@@ -1070,7 +1070,7 @@ struct file_lock { int state; /* state of grant or error if -ve */ } afs; } fl_u; @@ -130305,7 +130496,7 @@ index 70e61b5..8eeec57 100644 struct file_lock_context { spinlock_t flc_lock; -@@ -1419,7 +1419,7 @@ struct super_block { +@@ -1448,7 +1448,7 @@ struct super_block { /* s_inode_list_lock protects s_inodes */ spinlock_t s_inode_list_lock ____cacheline_aligned_in_smp; struct list_head s_inodes; /* all inodes */ @@ -130314,7 +130505,7 @@ index 70e61b5..8eeec57 100644 extern struct timespec current_fs_time(struct super_block *sb); -@@ -1676,7 +1676,8 @@ struct file_operations { +@@ -1706,7 +1706,8 @@ struct file_operations { u64); ssize_t (*dedupe_file_range)(struct file *, u64, u64, struct file *, u64); @@ -130324,7 +130515,7 @@ index 70e61b5..8eeec57 100644 struct inode_operations { struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); -@@ -2400,7 +2401,7 @@ extern int register_chrdev_region(dev_t, unsigned, const char *); +@@ -2426,7 +2427,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); @@ -130333,7 +130524,7 @@ index 70e61b5..8eeec57 100644 unsigned int count, const char *name); extern void unregister_chrdev_region(dev_t, unsigned); extern void chrdev_show(struct seq_file *,off_t); -@@ -3107,4 +3108,14 @@ static inline bool dir_relax(struct inode *inode) +@@ -3174,4 +3175,14 @@ static inline bool dir_relax_shared(struct inode *inode) extern bool path_noexec(const struct path *path); extern void inode_nohighmem(struct inode *inode); @@ -130369,7 +130560,7 @@ index 0efc3e6..fd23610 100644 extern struct kmem_cache *fs_cachep; diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h -index 604e152..5954d0d 100644 +index 13ba552..c4db760 100644 --- a/include/linux/fscache-cache.h +++ b/include/linux/fscache-cache.h @@ -117,7 +117,7 @@ struct fscache_operation { @@ -130428,10 +130619,10 @@ index 0141f25..eb29c30 100644 /* diff --git a/include/linux/genhd.h b/include/linux/genhd.h -index 5c70676..0109dd5 100644 +index 359a8e4..84aab2b 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h -@@ -208,7 +208,7 @@ struct gendisk { +@@ -209,7 +209,7 @@ struct gendisk { struct kobject *slave_dir; struct timer_rand_state *random; @@ -130440,7 +130631,7 @@ index 5c70676..0109dd5 100644 struct disk_events *ev; #ifdef CONFIG_BLK_DEV_INTEGRITY struct kobject integrity_kobj; -@@ -450,7 +450,7 @@ extern void disk_flush_events(struct gendisk *disk, unsigned int mask); +@@ -433,7 +433,7 @@ extern void disk_flush_events(struct gendisk *disk, unsigned int mask); extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask); /* drivers/char/random.c */ @@ -130463,10 +130654,10 @@ index 667c311..abac2a7 100644 }; diff --git a/include/linux/genl_magic_struct.h b/include/linux/genl_magic_struct.h -index eecd19b..391d1957 100644 +index 6270a56..ddda3ac 100644 --- a/include/linux/genl_magic_struct.h +++ b/include/linux/genl_magic_struct.h -@@ -76,8 +76,8 @@ extern void CONCAT_(GENL_MAGIC_FAMILY, _genl_unregister)(void); +@@ -81,8 +81,8 @@ static inline int nla_put_u64_0pad(struct sk_buff *skb, int attrtype, u64 value) __field(attr_nr, attr_flag, name, NLA_U32, __u32, \ nla_get_u32, nla_put_u32, false) #define __s32_field(attr_nr, attr_flag, name) \ @@ -130476,7 +130667,7 @@ index eecd19b..391d1957 100644 + nla_get_s32, nla_put_s32, true) #define __u64_field(attr_nr, attr_flag, name) \ __field(attr_nr, attr_flag, name, NLA_U64, __u64, \ - nla_get_u64, nla_put_u64, false) + nla_get_u64, nla_put_u64_0pad, false) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 570383a..8fb6742b 100644 --- a/include/linux/gfp.h @@ -131878,7 +132069,7 @@ index bb3f329..9daed55 100644 unsigned start1, unsigned end1, unsigned start2, unsigned end2) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h -index 7d953c2..f511887 100644 +index c26d463..de111ba 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -314,7 +314,7 @@ struct hstate { @@ -131891,7 +132082,7 @@ index 7d953c2..f511887 100644 char name[HSTATE_NAME_LEN]; }; diff --git a/include/linux/hugetlb_cgroup.h b/include/linux/hugetlb_cgroup.h -index 24154c2..43ac947 100644 +index 063962f..d34f2da 100644 --- a/include/linux/hugetlb_cgroup.h +++ b/include/linux/hugetlb_cgroup.h @@ -26,6 +26,13 @@ struct hugetlb_cgroup; @@ -131944,7 +132135,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 200cf13b..2a82cb4 100644 +index 96a25ae..f6a1b09 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -412,6 +412,7 @@ struct i2c_algorithm { @@ -132004,7 +132195,7 @@ index aedb254..71b67e5 100644 /* * Used for initialization calls.. diff --git a/include/linux/init_task.h b/include/linux/init_task.h -index f2cb8d4..2f0363e 100644 +index f8834f8..eb807a2 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -159,6 +159,12 @@ extern struct task_group root_task_group; @@ -132053,23 +132244,23 @@ index 9fcabeb..8f78b99 100644 extern void __raise_softirq_irqoff(unsigned int nr); diff --git a/include/linux/iommu.h b/include/linux/iommu.h -index ef7a6ec..2b963bb 100644 +index 664683a..469d610 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -199,7 +199,7 @@ struct iommu_ops { + int (*of_xlate)(struct device *dev, struct of_phandle_args *args); unsigned long pgsize_bitmap; - void *priv; -}; +} __do_const; #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */ diff --git a/include/linux/ioport.h b/include/linux/ioport.h -index 0b65543..c396f13 100644 +index 6230064..1ccafa4 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h -@@ -186,7 +186,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); +@@ -190,7 +190,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size); resource_size_t resource_alignment(struct resource *res); @@ -132107,7 +132298,7 @@ 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 c4de623..8f0044f 100644 +index 4d758a7..f6ce482 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -399,7 +399,10 @@ struct irq_chip { @@ -132135,7 +132326,7 @@ index c78a892..124e0b7 100644 #endif /* __IRQCHIP_MMP_H */ diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h -index dcca77c..8503b4f 100644 +index b51beeb..72974cf 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h @@ -62,7 +62,7 @@ struct irq_desc { @@ -132148,7 +132339,7 @@ index dcca77c..8503b4f 100644 raw_spinlock_t lock; struct cpumask *percpu_enabled; diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h -index 2aed043..30ad77f 100644 +index f1f36e0..faa10c13 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -38,6 +38,9 @@ struct device_node; @@ -132162,10 +132353,10 @@ index 2aed043..30ad77f 100644 /* Number of irqs reserved for a legacy isa controller */ diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h -index fd1083c..be9252b 100644 +index efb232c..1d53bef 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h -@@ -672,7 +672,7 @@ struct transaction_s +@@ -680,7 +680,7 @@ struct transaction_s /* * How many handles used this transaction? [t_handle_lock] */ @@ -132301,19 +132492,19 @@ index 6883e19..d2c7746 100644 static inline void print_ip_sym(unsigned long ip) { diff --git a/include/linux/key-type.h b/include/linux/key-type.h -index 7463355..30de32e 100644 +index eaee981..d1d24c3 100644 --- a/include/linux/key-type.h +++ b/include/linux/key-type.h -@@ -46,7 +46,7 @@ struct key_preparsed_payload { +@@ -45,7 +45,7 @@ struct key_preparsed_payload { + size_t datalen; /* Raw datalen */ size_t quotalen; /* Quota length for proposed payload */ time_t expiry; /* Expiry time of key */ - bool trusted; /* True if key is trusted */ -}; +} __randomize_layout; typedef int (*request_key_actor_t)(struct key_construction *key, const char *op, void *aux); -@@ -151,7 +151,7 @@ struct key_type { +@@ -150,7 +150,7 @@ struct key_type { /* internal fields */ struct list_head link; /* link in types list */ struct lock_class_key lock_class; /* key->sem lock class */ @@ -132455,10 +132646,10 @@ index e15828f..531fd0a 100644 if (atomic_sub_and_test((int) count, &kref->refcount)) { release(kref); diff --git a/include/linux/libata.h b/include/linux/libata.h -index 2c4ebef..f452c4d 100644 +index d15c19e..499c820 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h -@@ -994,7 +994,7 @@ struct ata_port_operations { +@@ -1004,7 +1004,7 @@ struct ata_port_operations { * fields must be pointers. */ const struct ata_port_operations *inherits; @@ -132468,7 +132659,7 @@ index 2c4ebef..f452c4d 100644 struct ata_port_info { unsigned long flags; diff --git a/include/linux/linkage.h b/include/linux/linkage.h -index a6a42dd..e270819 100644 +index a6a42dd..9787403 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h @@ -5,6 +5,7 @@ @@ -132487,7 +132678,7 @@ index a6a42dd..e270819 100644 #define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE) /* -@@ -79,11 +81,29 @@ +@@ -79,17 +81,40 @@ #define ALIGN_STR __ALIGN_STR #ifndef ENTRY @@ -132500,6 +132691,21 @@ index a6a42dd..e270819 100644 + +#define ENTRY(name) __ENTRY(name,) + + #endif ++ + #endif /* LINKER_SCRIPT */ + + #ifndef WEAK +-#define WEAK(name) \ +- .weak name ASM_NL \ ++#define __WEAK(name, rap_hash) \ ++ .weak name ASM_NL \ ++ rap_hash \ + name: ++ ++#define WEAK(name) __WEAK(name, ) ++#endif ++ +#ifdef CONFIG_PAX_RAP +#if BITS_PER_LONG == 64 +#define __ASM_RAP_HASH(hash) .quad 0, hash ASM_NL @@ -132507,17 +132713,15 @@ index a6a42dd..e270819 100644 +#define __ASM_RAP_HASH(hash) .long 0, 0, 0, hash ASM_NL +#else +#error incompatible BITS_PER_LONG - #endif ++#endif +#define RAP_ENTRY(name) __ENTRY(name, __ASM_RAP_HASH(__rap_hash_##name)) ++#define RAP_WEAK(name) __WEAK(name, __ASM_RAP_HASH(__rap_hash_##name)) +#else +#define RAP_ENTRY(name) ENTRY(name) -+#endif -+ -+#endif -+ - #endif /* LINKER_SCRIPT */ ++#define RAP_WEAK(name) WEAK(name) + #endif - #ifndef WEAK + #ifndef END diff --git a/include/linux/list.h b/include/linux/list.h index 5356f4d..c99970b 100644 --- a/include/linux/list.h @@ -132689,7 +132893,7 @@ index b10b122..d37b3de 100644 #endif /* __LINUX_LOCKREF_H */ diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h -index cdee11c..bc64d98 100644 +index 7ae3976..a7d21bb 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1831,7 +1831,7 @@ struct security_hook_heads { @@ -132760,10 +132964,10 @@ index 6e8b5b2..8e8a37d 100644 u32 remainder; return div_u64_rem(dividend, divisor, &remainder); diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h -index 1191d79..0c73b8a 100644 +index 56e6069..d75f0be 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h -@@ -254,7 +254,7 @@ struct mem_cgroup { +@@ -262,7 +262,7 @@ struct mem_cgroup { int last_scanned_node; #if MAX_NUMNODES > 1 nodemask_t scan_nodes; @@ -132786,7 +132990,7 @@ index 093607f..9717227 100644 register_memory_notifier(&fn##_mem_nb); \ }) diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h -index 2696c1f..9320d41 100644 +index 4429d25..ae5ab54 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h @@ -91,6 +91,10 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol) @@ -132800,7 +133004,7 @@ index 2696c1f..9320d41 100644 static inline void mpol_get(struct mempolicy *pol) { -@@ -229,6 +233,9 @@ static inline void mpol_free_shared_policy(struct shared_policy *p) +@@ -235,6 +239,9 @@ mpol_shared_policy_lookup(struct shared_policy *sp, unsigned long idx) } #define vma_policy(vma) NULL @@ -132811,10 +133015,10 @@ index 2696c1f..9320d41 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 02f7f31..efa7da3c 100644 +index ece042d..d7834bf 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -103,6 +103,7 @@ extern int mmap_rnd_compat_bits __read_mostly; +@@ -107,6 +107,7 @@ extern int mmap_rnd_compat_bits __read_mostly; #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN) extern int sysctl_max_map_count; @@ -132822,7 +133026,7 @@ index 02f7f31..efa7da3c 100644 extern unsigned long sysctl_user_reserve_kbytes; extern unsigned long sysctl_admin_reserve_kbytes; -@@ -178,6 +179,11 @@ extern unsigned int kobjsize(const void *objp); +@@ -182,6 +183,11 @@ extern unsigned int kobjsize(const void *objp); #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 */ @@ -132834,7 +133038,7 @@ index 02f7f31..efa7da3c 100644 #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */ #define VM_ARCH_2 0x02000000 #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */ -@@ -329,8 +335,8 @@ struct vm_operations_struct { +@@ -339,8 +345,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 */ @@ -132845,7 +133049,7 @@ index 02f7f31..efa7da3c 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 -@@ -368,6 +374,7 @@ struct vm_operations_struct { +@@ -378,6 +384,7 @@ struct vm_operations_struct { struct page *(*find_special_page)(struct vm_area_struct *vma, unsigned long addr); }; @@ -132853,7 +133057,7 @@ index 02f7f31..efa7da3c 100644 struct mmu_gather; struct inode; -@@ -1209,8 +1216,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, +@@ -1197,8 +1204,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); @@ -132864,7 +133068,7 @@ index 02f7f31..efa7da3c 100644 static inline void unmap_shared_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen) -@@ -1251,9 +1258,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, +@@ -1239,9 +1246,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, } #endif @@ -132877,7 +133081,7 @@ index 02f7f31..efa7da3c 100644 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, unsigned long nr_pages, -@@ -1343,39 +1350,11 @@ int clear_page_dirty_for_io(struct page *page); +@@ -1331,39 +1338,11 @@ int clear_page_dirty_for_io(struct page *page); int get_cmdline(struct task_struct *task, char *buffer, int buflen); @@ -132917,7 +133121,7 @@ index 02f7f31..efa7da3c 100644 int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t); extern unsigned long move_page_tables(struct vm_area_struct *vma, -@@ -1520,8 +1499,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, +@@ -1508,8 +1487,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, { return 0; } @@ -132933,7 +133137,7 @@ index 02f7f31..efa7da3c 100644 #endif #if defined(__PAGETABLE_PMD_FOLDED) || !defined(CONFIG_MMU) -@@ -1531,6 +1517,12 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, +@@ -1519,6 +1505,12 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, return 0; } @@ -132946,7 +133150,7 @@ index 02f7f31..efa7da3c 100644 static inline void mm_nr_pmds_init(struct mm_struct *mm) {} static inline unsigned long mm_nr_pmds(struct mm_struct *mm) -@@ -1543,6 +1535,7 @@ static inline void mm_dec_nr_pmds(struct mm_struct *mm) {} +@@ -1531,6 +1523,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); @@ -132954,7 +133158,7 @@ index 02f7f31..efa7da3c 100644 static inline void mm_nr_pmds_init(struct mm_struct *mm) { -@@ -1579,11 +1572,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a +@@ -1567,11 +1560,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a NULL: pud_offset(pgd, address); } @@ -132978,7 +133182,7 @@ index 02f7f31..efa7da3c 100644 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ #if USE_SPLIT_PTE_PTLOCKS -@@ -1968,12 +1973,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **, +@@ -1956,12 +1961,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **, bool *need_rmap_locks); extern void exit_mmap(struct mm_struct *); @@ -133002,7 +133206,7 @@ index 02f7f31..efa7da3c 100644 if (rlim < RLIM_INFINITY) { if (((new - start) + (end_data - start_data)) > rlim) return -ENOSPC; -@@ -2008,6 +2024,7 @@ extern unsigned long do_mmap(struct file *file, unsigned long addr, +@@ -1996,6 +2012,7 @@ extern unsigned long do_mmap(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, vm_flags_t vm_flags, unsigned long pgoff, unsigned long *populate); extern int do_munmap(struct mm_struct *, unsigned long, size_t); @@ -133010,7 +133214,7 @@ index 02f7f31..efa7da3c 100644 static inline unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, -@@ -2044,10 +2061,11 @@ struct vm_unmapped_area_info { +@@ -2032,10 +2049,11 @@ struct vm_unmapped_area_info { unsigned long high_limit; unsigned long align_mask; unsigned long align_offset; @@ -133024,7 +133228,7 @@ index 02f7f31..efa7da3c 100644 /* * Search for an unmapped address range. -@@ -2059,7 +2077,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); +@@ -2047,7 +2065,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 @@ -133033,7 +133237,7 @@ index 02f7f31..efa7da3c 100644 { if (info->flags & VM_UNMAPPED_AREA_TOPDOWN) return unmapped_area_topdown(info); -@@ -2119,6 +2137,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add +@@ -2107,6 +2125,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); @@ -133044,7 +133248,7 @@ index 02f7f31..efa7da3c 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) -@@ -2148,10 +2170,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, +@@ -2136,10 +2158,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, } #ifdef CONFIG_MMU @@ -133057,7 +133261,7 @@ index 02f7f31..efa7da3c 100644 { return __pgprot(0); } -@@ -2334,7 +2356,7 @@ extern int get_hwpoison_page(struct page *page); +@@ -2322,7 +2344,7 @@ extern int get_hwpoison_page(struct page *page); extern int sysctl_memory_failure_early_kill; extern int sysctl_memory_failure_recovery; extern void shake_page(struct page *p, int access); @@ -133066,7 +133270,7 @@ index 02f7f31..efa7da3c 100644 extern int soft_offline_page(struct page *page, int flags); -@@ -2419,5 +2441,11 @@ void __init setup_nr_node_ids(void); +@@ -2410,5 +2432,11 @@ void __init setup_nr_node_ids(void); static inline void setup_nr_node_ids(void) {} #endif @@ -133079,10 +133283,10 @@ index 02f7f31..efa7da3c 100644 #endif /* __KERNEL__ */ #endif /* _LINUX_MM_H */ diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index c2d75b4..f12e13a 100644 +index ca3e517..0f6eebf 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -352,7 +352,9 @@ struct vm_area_struct { +@@ -357,7 +357,9 @@ struct vm_area_struct { struct mempolicy *vm_policy; /* NUMA policy for the VMA */ #endif struct vm_userfaultfd_ctx vm_userfaultfd_ctx; @@ -133093,9 +133297,9 @@ index c2d75b4..f12e13a 100644 struct core_thread { struct task_struct *task; -@@ -509,7 +511,25 @@ struct mm_struct { - #ifdef CONFIG_HUGETLB_PAGE - atomic_long_t hugetlb_usage; +@@ -517,7 +519,25 @@ struct mm_struct { + #ifdef CONFIG_MMU + struct work_struct async_put_work; #endif -}; + @@ -133143,10 +133347,10 @@ index 3ba327a..85cd5ce 100644 } diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h -index c60df92..76f3303 100644 +index 02069c2..4fa3080 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h -@@ -526,7 +526,7 @@ struct zone { +@@ -519,7 +519,7 @@ struct zone { ZONE_PADDING(_pad3_) /* Zone statistics */ @@ -133178,7 +133382,7 @@ index 6e4c645..3633f7b 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 2bb0c30..dc42cbc 100644 +index 3daf2b3..aba2d33 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -19,9 +19,11 @@ @@ -133245,7 +133449,7 @@ index 2bb0c30..dc42cbc 100644 #endif }; -@@ -341,7 +345,7 @@ struct module { +@@ -350,7 +354,7 @@ struct module { /* Sysfs stuff. */ struct module_kobject mkobj; @@ -133254,7 +133458,7 @@ index 2bb0c30..dc42cbc 100644 const char *version; const char *srcversion; struct kobject *holders_dir; -@@ -449,6 +453,10 @@ struct module { +@@ -458,6 +462,10 @@ struct module { unsigned int num_trace_events; struct trace_enum_map **trace_enums; unsigned int num_trace_enums; @@ -133265,7 +133469,7 @@ index 2bb0c30..dc42cbc 100644 #endif #ifdef CONFIG_FTRACE_MCOUNT_RECORD unsigned int num_ftrace_callsites; -@@ -476,7 +484,8 @@ struct module { +@@ -489,7 +497,8 @@ struct module { ctor_fn_t *ctors; unsigned int num_ctors; #endif @@ -133275,7 +133479,7 @@ index 2bb0c30..dc42cbc 100644 #ifndef MODULE_ARCH_INIT #define MODULE_ARCH_INIT {} #endif -@@ -497,18 +506,38 @@ bool is_module_address(unsigned long addr); +@@ -510,18 +519,38 @@ bool is_module_address(unsigned long addr); bool is_module_percpu_address(unsigned long addr); bool is_module_text_address(unsigned long addr); @@ -133443,7 +133647,7 @@ index f3f302f..a001305 100644 /* Helper routines for sys_msgsnd and sys_msgrcv */ extern long do_msgsnd(int msqid, long mtype, void __user *mtext, diff --git a/include/linux/net.h b/include/linux/net.h -index 9d90efe6..55eeb64 100644 +index 25aa03b..9817031 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -195,7 +195,7 @@ struct net_proto_family { @@ -133456,10 +133660,10 @@ index 9d90efe6..55eeb64 100644 struct iovec; struct kvec; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 78181a8..9e0ef8f 100644 +index da4b33b..0ae34af 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1293,6 +1293,7 @@ struct net_device_ops { +@@ -1290,6 +1290,7 @@ struct net_device_ops { void (*ndo_set_rx_headroom)(struct net_device *dev, int needed_headroom); }; @@ -133467,7 +133671,7 @@ index 78181a8..9e0ef8f 100644 /** * enum net_device_priv_flags - &struct net_device priv_flags -@@ -1623,7 +1624,7 @@ struct net_device { +@@ -1617,7 +1618,7 @@ struct net_device { unsigned long base_addr; int irq; @@ -133476,7 +133680,7 @@ index 78181a8..9e0ef8f 100644 /* * Some hardware also needs these fields (state,dev_list, -@@ -1662,9 +1663,9 @@ struct net_device { +@@ -1657,9 +1658,9 @@ struct net_device { struct net_device_stats stats; @@ -133489,8 +133693,8 @@ index 78181a8..9e0ef8f 100644 #ifdef CONFIG_WIRELESS_EXT const struct iw_handler_def *wireless_handlers; -@@ -4156,7 +4157,7 @@ static inline void netif_keep_dst(struct net_device *dev) - dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM); +@@ -4152,7 +4153,7 @@ static inline bool netif_reduces_vlan_mtu(struct net_device *dev) + return dev->priv_flags & IFF_MACSEC; } -extern struct pernet_operations __net_initdata loopback_net_ops; @@ -133512,7 +133716,7 @@ index 9230f9a..065b8f8 100644 /* Function to register/unregister hook points. */ int nf_register_net_hook(struct net *net, const struct nf_hook_ops *ops); diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h -index f48b8a6..8971034 100644 +index 83b9a2e..5266f3b 100644 --- a/include/linux/netfilter/ipset/ip_set.h +++ b/include/linux/netfilter/ipset/ip_set.h @@ -104,8 +104,8 @@ struct ip_set_ext { @@ -133556,7 +133760,7 @@ index f48b8a6..8971034 100644 } static inline void -@@ -384,9 +384,9 @@ ip_set_init_counter(struct ip_set_counter *counter, +@@ -387,9 +387,9 @@ ip_set_init_counter(struct ip_set_counter *counter, const struct ip_set_ext *ext) { if (ext->bytes != ULLONG_MAX) @@ -133694,7 +133898,7 @@ index b2a0f15..4d7da32 100644 /** create a directory */ struct dentry *oprofilefs_mkdir(struct dentry *parent, char const *name); diff --git a/include/linux/padata.h b/include/linux/padata.h -index 4386946..f50c615 100644 +index 113ee62..70198a7 100644 --- a/include/linux/padata.h +++ b/include/linux/padata.h @@ -129,7 +129,7 @@ struct parallel_data { @@ -133707,7 +133911,7 @@ index 4386946..f50c615 100644 spinlock_t lock ____cacheline_aligned; unsigned int processed; diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h -index 7e1ab15..9b26fd4 100644 +index 9735410..701e42e 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -215,7 +215,7 @@ static inline struct page *page_cache_alloc_readahead(struct address_space *x) @@ -133764,7 +133968,7 @@ index 8c78950..0d74ed9 100644 /** * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot diff --git a/include/linux/percpu.h b/include/linux/percpu.h -index 4bc6daf..6edaab0 100644 +index 56939d3..7fb18e3 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h @@ -28,7 +28,7 @@ @@ -133777,10 +133981,10 @@ index 4bc6daf..6edaab0 100644 /* diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h -index f291275..6936e70 100644 +index 1a827ce..864eb06 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h -@@ -477,8 +477,8 @@ struct perf_event { +@@ -557,8 +557,8 @@ struct perf_event { enum perf_event_active_state state; unsigned int attach_state; @@ -133791,7 +133995,7 @@ index f291275..6936e70 100644 /* * These are the total time in nanoseconds that the event -@@ -529,8 +529,8 @@ struct perf_event { +@@ -609,8 +609,8 @@ struct perf_event { * These accumulate total time (in nanoseconds) that children * events have been enabled and running, respectively. */ @@ -133802,7 +134006,7 @@ index f291275..6936e70 100644 /* * Protect attach/detach and child_list: -@@ -954,7 +954,7 @@ static inline void perf_event_task_sched_out(struct task_struct *prev, +@@ -1054,7 +1054,7 @@ static inline void perf_event_task_sched_out(struct task_struct *prev, static inline u64 __perf_event_count(struct perf_event *event) { @@ -133811,7 +134015,7 @@ index f291275..6936e70 100644 } extern void perf_event_mmap(struct vm_area_struct *vma); -@@ -987,7 +987,7 @@ static inline int perf_callchain_store(struct perf_callchain_entry *entry, u64 i +@@ -1105,7 +1105,7 @@ static inline int perf_callchain_store(struct perf_callchain_entry_ctx *ctx, u64 } } @@ -133820,9 +134024,9 @@ index f291275..6936e70 100644 extern int sysctl_perf_event_mlock; extern int sysctl_perf_event_sample_rate; extern int sysctl_perf_cpu_time_max_percent; -@@ -1002,19 +1002,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write, - loff_t *ppos); - +@@ -1122,19 +1122,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write, + int perf_event_max_stack_handler(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos); +static inline bool perf_paranoid_any(void) +{ @@ -133848,7 +134052,7 @@ index f291275..6936e70 100644 } extern void perf_event_init(void); -@@ -1171,7 +1176,7 @@ struct perf_pmu_events_attr { +@@ -1324,7 +1329,7 @@ struct perf_pmu_events_attr { struct device_attribute attr; u64 id; const char *event_str; @@ -133905,7 +134109,7 @@ index 24f5470..deb6089 100644 unsigned int w_counter; struct page *tmp_page; diff --git a/include/linux/pm.h b/include/linux/pm.h -index 6a5d654..1051ebc 100644 +index 06eb353..dbf4a34 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -631,6 +631,7 @@ struct dev_pm_domain { @@ -133917,12 +134121,12 @@ index 6a5d654..1051ebc 100644 /* * 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 49cd889..70d53da5 100644 +index 39285c7..d8c3f16 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h -@@ -37,7 +37,7 @@ struct gpd_dev_ops { - int (*save_state)(struct device *dev); - int (*restore_state)(struct device *dev); +@@ -35,7 +35,7 @@ struct gpd_dev_ops { + int (*start)(struct device *dev); + int (*stop)(struct device *dev); bool (*active_wakeup)(struct device *dev); -}; +} __no_const; @@ -133930,10 +134134,10 @@ index 49cd889..70d53da5 100644 struct genpd_power_state { s64 power_off_latency_ns; diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h -index 7af093d..122df16 100644 +index 2e14d26..aed7c63 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h -@@ -111,7 +111,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev) +@@ -116,7 +116,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev) static inline void pm_runtime_mark_last_busy(struct device *dev) { @@ -133943,7 +134147,7 @@ index 7af093d..122df16 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 5df733b..d55f252 100644 +index 2588ca6..b705409 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) @@ -134069,7 +134273,7 @@ index 75e4e30..fcfde15 100644 #define preempt_set_need_resched() \ do { \ diff --git a/include/linux/printk.h b/include/linux/printk.h -index 9ccbdf2..9987ac2 100644 +index f4da695..cce5e7c 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -43,7 +43,7 @@ static inline const char *printk_skip_level(const char *buffer) @@ -134081,15 +134285,16 @@ index 9ccbdf2..9987ac2 100644 #define console_loglevel (console_printk[0]) #define default_message_loglevel (console_printk[1]) -@@ -123,6 +123,7 @@ void early_printk(const char *s, ...) { } - #endif +@@ -136,6 +136,8 @@ static inline void printk_nmi_flush(void) { } + static inline void printk_nmi_flush_on_panic(void) { } + #endif /* PRINTK_NMI */ - typedef __printf(1, 0) int (*printk_func_t)(const char *fmt, va_list args); +extern int kptr_restrict; - ++ #ifdef CONFIG_PRINTK asmlinkage __printf(5, 0) -@@ -158,7 +159,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, + int vprintk_emit(int facility, int level, +@@ -170,7 +172,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, extern int printk_delay_msec; extern int dmesg_restrict; @@ -134169,10 +134374,10 @@ index de0e771..9e746e9 100644 extern const struct proc_ns_operations netns_operations; extern const struct proc_ns_operations utsns_operations; diff --git a/include/linux/psci.h b/include/linux/psci.h -index 393efe2..340fc1d 100644 +index bdea1cb..a094b75 100644 --- a/include/linux/psci.h +++ b/include/linux/psci.h -@@ -35,7 +35,7 @@ struct psci_operations { +@@ -33,7 +33,7 @@ struct psci_operations { int (*affinity_info)(unsigned long target_affinity, unsigned long lowest_affinity_level); int (*migrate_info_type)(void); @@ -134195,7 +134400,7 @@ index 9dfb6bc..0aa55da 100644 extern bool qid_valid(struct kqid qid); diff --git a/include/linux/random.h b/include/linux/random.h -index 9c29122..f94151b 100644 +index e47e533..1399797 100644 --- a/include/linux/random.h +++ b/include/linux/random.h @@ -18,9 +18,19 @@ struct random_ready_callback { @@ -134220,7 +134425,7 @@ index 9c29122..f94151b 100644 extern void get_random_bytes(void *buf, int nbytes); extern int add_random_ready_callback(struct random_ready_callback *rdy); -@@ -53,6 +63,11 @@ void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); +@@ -52,6 +62,11 @@ void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); #define prandom_init_once(pcpu_state) \ DO_ONCE(prandom_seed_full_state, (pcpu_state)) @@ -134232,7 +134437,7 @@ index 9c29122..f94151b 100644 /** * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro) * @ep_ro: right open interval endpoint -@@ -65,7 +80,7 @@ void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); +@@ -64,7 +79,7 @@ void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); * * Returns: pseudo-random number in interval [0, ep_ro) */ @@ -134257,7 +134462,7 @@ index 14d7b83..a1edf56 100644 diff --git a/include/linux/rculist.h b/include/linux/rculist.h -index 17d4f84..878f3cf 100644 +index 8beb98d..c515d45 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -59,6 +59,9 @@ void __list_add_rcu(struct list_head *new, @@ -134305,10 +134510,10 @@ index 17d4f84..878f3cf 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 2657aff..f1259b4 100644 +index 5f1533e..8b6075e 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h -@@ -863,6 +863,7 @@ static inline void rcu_preempt_sleep_check(void) +@@ -848,6 +848,7 @@ static inline void rcu_preempt_sleep_check(void) * read-side critical sections may be preempted and they may also block, but * only when acquiring spinlocks that are subject to priority inheritance. */ @@ -134316,7 +134521,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_lock(void) { __rcu_read_lock(); -@@ -917,6 +918,7 @@ static inline void rcu_read_lock(void) +@@ -902,6 +903,7 @@ static inline void rcu_read_lock(void) * * See rcu_read_lock() for more information. */ @@ -134324,7 +134529,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_unlock(void) { RCU_LOCKDEP_WARN(!rcu_is_watching(), -@@ -943,6 +945,7 @@ static inline void rcu_read_unlock(void) +@@ -928,6 +930,7 @@ static inline void rcu_read_unlock(void) * rcu_read_unlock_bh() from one task if the matching rcu_read_lock_bh() * was invoked from some other task. */ @@ -134332,7 +134537,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_lock_bh(void) { local_bh_disable(); -@@ -957,6 +960,7 @@ static inline void rcu_read_lock_bh(void) +@@ -942,6 +945,7 @@ static inline void rcu_read_lock_bh(void) * * See rcu_read_lock_bh() for more information. */ @@ -134340,7 +134545,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_unlock_bh(void) { RCU_LOCKDEP_WARN(!rcu_is_watching(), -@@ -979,6 +983,7 @@ static inline void rcu_read_unlock_bh(void) +@@ -964,6 +968,7 @@ static inline void rcu_read_unlock_bh(void) * rcu_read_unlock_sched() from process context if the matching * rcu_read_lock_sched() was invoked from an NMI handler. */ @@ -134348,7 +134553,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_lock_sched(void) { preempt_disable(); -@@ -989,6 +994,7 @@ static inline void rcu_read_lock_sched(void) +@@ -974,6 +979,7 @@ static inline void rcu_read_lock_sched(void) } /* Used by lockdep and tracing: cannot be traced, cannot call lockdep. */ @@ -134356,7 +134561,7 @@ index 2657aff..f1259b4 100644 static inline notrace void rcu_read_lock_sched_notrace(void) { preempt_disable_notrace(); -@@ -1000,6 +1006,7 @@ static inline notrace void rcu_read_lock_sched_notrace(void) +@@ -985,6 +991,7 @@ static inline notrace void rcu_read_lock_sched_notrace(void) * * See rcu_read_lock_sched for more information. */ @@ -134364,7 +134569,7 @@ index 2657aff..f1259b4 100644 static inline void rcu_read_unlock_sched(void) { RCU_LOCKDEP_WARN(!rcu_is_watching(), -@@ -1010,6 +1017,7 @@ static inline void rcu_read_unlock_sched(void) +@@ -995,6 +1002,7 @@ static inline void rcu_read_unlock_sched(void) } /* Used by lockdep and tracing: cannot be traced, cannot call lockdep. */ @@ -134452,7 +134657,7 @@ index aa23238..f6f8109 100644 #define RIO_RESOURCE_MEM 0x00000100 #define RIO_RESOURCE_DOORBELL 0x00000200 diff --git a/include/linux/rmap.h b/include/linux/rmap.h -index 49eb4f8..95a4b70 100644 +index 2b0fad8..eb42a74 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -139,8 +139,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) @@ -134467,7 +134672,7 @@ index 49eb4f8..95a4b70 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 556ec1e..38c19c9 100644 +index cb3c8fe..85365ba 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -1,6 +1,7 @@ @@ -134499,7 +134704,7 @@ index 556ec1e..38c19c9 100644 /* diff --git a/include/linux/sched.h b/include/linux/sched.h -index 52c4847..e87db2a 100644 +index 253538f..d34b811 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -7,7 +7,7 @@ @@ -134511,7 +134716,7 @@ index 52c4847..e87db2a 100644 }; #include <asm/param.h> /* for HZ */ -@@ -135,6 +135,7 @@ struct perf_event_context; +@@ -134,6 +134,7 @@ struct perf_event_context; struct blk_plug; struct filename; struct nameidata; @@ -134519,7 +134724,7 @@ index 52c4847..e87db2a 100644 #define VMACACHE_BITS 2 #define VMACACHE_SIZE (1U << VMACACHE_BITS) -@@ -441,6 +442,18 @@ struct nsproxy; +@@ -451,6 +452,18 @@ struct nsproxy; struct user_namespace; #ifdef CONFIG_MMU @@ -134538,7 +134743,7 @@ index 52c4847..e87db2a 100644 extern void arch_pick_mmap_layout(struct mm_struct *mm); extern unsigned long arch_get_unmapped_area(struct file *, unsigned long, unsigned long, -@@ -777,6 +790,17 @@ struct signal_struct { +@@ -789,6 +802,17 @@ struct signal_struct { #ifdef CONFIG_TASKSTATS struct taskstats *stats; #endif @@ -134556,7 +134761,7 @@ index 52c4847..e87db2a 100644 #ifdef CONFIG_AUDIT unsigned audit_tty; struct tty_audit_buf *tty_audit_buf; -@@ -790,7 +814,7 @@ struct signal_struct { +@@ -806,7 +830,7 @@ struct signal_struct { struct mutex cred_guard_mutex; /* guard against foreign influences on * credential calculations * (notably. ptrace) */ @@ -134565,7 +134770,7 @@ index 52c4847..e87db2a 100644 /* * Bits in flags field of signal_struct. -@@ -845,6 +869,14 @@ struct user_struct { +@@ -861,6 +885,14 @@ struct user_struct { struct key *session_keyring; /* UID's default session keyring */ #endif @@ -134580,7 +134785,7 @@ index 52c4847..e87db2a 100644 /* Hash table maintenance information */ struct hlist_node uidhash_node; kuid_t uid; -@@ -852,7 +884,7 @@ struct user_struct { +@@ -868,7 +900,7 @@ struct user_struct { #if defined(CONFIG_PERF_EVENTS) || defined(CONFIG_BPF_SYSCALL) atomic_long_t locked_vm; #endif @@ -134589,7 +134794,7 @@ index 52c4847..e87db2a 100644 extern int uids_sysfs_init(void); -@@ -1394,6 +1426,9 @@ struct tlbflush_unmap_batch { +@@ -1458,6 +1490,9 @@ struct tlbflush_unmap_batch { struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; @@ -134599,7 +134804,7 @@ index 52c4847..e87db2a 100644 atomic_t usage; unsigned int flags; /* per process flags, defined below */ unsigned int ptrace; -@@ -1529,8 +1564,8 @@ struct task_struct { +@@ -1594,8 +1629,8 @@ struct task_struct { struct list_head thread_node; struct completion *vfork_done; /* for vfork() */ @@ -134610,7 +134815,7 @@ index 52c4847..e87db2a 100644 cputime_t utime, stime, utimescaled, stimescaled; cputime_t gtime; -@@ -1560,11 +1595,6 @@ struct task_struct { +@@ -1625,11 +1660,6 @@ struct task_struct { struct task_cputime cputime_expires; struct list_head cpu_timers[3]; @@ -134622,7 +134827,7 @@ index 52c4847..e87db2a 100644 char comm[TASK_COMM_LEN]; /* executable name excluding path - access with [gs]et_task_comm (which lock it with task_lock()) -@@ -1580,6 +1610,8 @@ struct task_struct { +@@ -1645,6 +1675,8 @@ struct task_struct { /* hung task detection */ unsigned long last_switch_count; #endif @@ -134631,7 +134836,7 @@ index 52c4847..e87db2a 100644 /* filesystem information */ struct fs_struct *fs; /* open file information */ -@@ -1657,6 +1689,10 @@ struct task_struct { +@@ -1723,6 +1755,10 @@ struct task_struct { unsigned int in_ubsan; #endif @@ -134642,7 +134847,7 @@ index 52c4847..e87db2a 100644 /* journalling filesystem info */ void *journal_info; -@@ -1695,6 +1731,10 @@ struct task_struct { +@@ -1761,6 +1797,10 @@ struct task_struct { /* cg_list protected by css_set_lock and tsk->alloc_lock */ struct list_head cg_list; #endif @@ -134653,7 +134858,7 @@ index 52c4847..e87db2a 100644 #ifdef CONFIG_FUTEX struct robust_list_head __user *robust_list; #ifdef CONFIG_COMPAT -@@ -1810,7 +1850,7 @@ struct task_struct { +@@ -1876,7 +1916,7 @@ struct task_struct { * Number of functions that haven't been traced * because of depth overrun. */ @@ -134662,7 +134867,7 @@ index 52c4847..e87db2a 100644 /* Pause for the tracing */ atomic_t tracing_graph_pause; #endif -@@ -1852,22 +1892,89 @@ struct task_struct { +@@ -1918,22 +1958,89 @@ struct task_struct { #ifdef CONFIG_MMU struct task_struct *oom_reaper_list; #endif @@ -134762,7 +134967,7 @@ index 52c4847..e87db2a 100644 /* Future-safe accessor for struct task_struct's cpus_allowed. */ #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) -@@ -1949,7 +2056,7 @@ struct pid_namespace; +@@ -2020,7 +2127,7 @@ struct pid_namespace; pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns); @@ -134771,7 +134976,7 @@ index 52c4847..e87db2a 100644 { return tsk->pid; } -@@ -2311,6 +2418,48 @@ extern u64 sched_clock_cpu(int cpu); +@@ -2384,6 +2491,48 @@ extern u64 sched_clock_cpu(int cpu); extern void sched_clock_init(void); @@ -134820,7 +135025,7 @@ index 52c4847..e87db2a 100644 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK static inline void sched_clock_tick(void) { -@@ -2436,7 +2585,9 @@ extern void set_curr_task(int cpu, struct task_struct *p); +@@ -2539,7 +2688,9 @@ extern void set_curr_task(int cpu, struct task_struct *p); void yield(void); union thread_union { @@ -134830,7 +135035,7 @@ index 52c4847..e87db2a 100644 unsigned long stack[THREAD_SIZE/sizeof(long)]; }; -@@ -2469,6 +2620,7 @@ extern struct pid_namespace init_pid_ns; +@@ -2572,6 +2723,7 @@ extern struct pid_namespace init_pid_ns; */ extern struct task_struct *find_task_by_vpid(pid_t nr); @@ -134838,7 +135043,7 @@ index 52c4847..e87db2a 100644 extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns); -@@ -2500,7 +2652,7 @@ extern void proc_caches_init(void); +@@ -2603,7 +2755,7 @@ extern void proc_caches_init(void); extern void flush_signals(struct task_struct *); extern void ignore_signals(struct task_struct *); extern void flush_signal_handlers(struct task_struct *, int force_default); @@ -134847,7 +135052,7 @@ index 52c4847..e87db2a 100644 static inline int kernel_dequeue_signal(siginfo_t *info) { -@@ -2654,7 +2806,7 @@ extern void __cleanup_sighand(struct sighand_struct *); +@@ -2795,7 +2947,7 @@ extern void __cleanup_sighand(struct sighand_struct *); extern void exit_itimers(struct signal_struct *); extern void flush_itimer_signals(void); @@ -134856,7 +135061,7 @@ index 52c4847..e87db2a 100644 extern int do_execve(struct filename *, const char __user * const __user *, -@@ -2769,11 +2921,13 @@ static inline int thread_group_empty(struct task_struct *p) +@@ -2910,11 +3062,13 @@ static inline int thread_group_empty(struct task_struct *p) * It must not be nested with write_lock_irq(&tasklist_lock), * neither inside nor outside. */ @@ -134870,7 +135075,7 @@ index 52c4847..e87db2a 100644 static inline void task_unlock(struct task_struct *p) { spin_unlock(&p->alloc_lock); -@@ -2859,9 +3013,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) +@@ -3000,9 +3154,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) @@ -134882,6 +135087,15 @@ index 52c4847..e87db2a 100644 return (obj >= stack) && (obj < (stack + THREAD_SIZE)); } +@@ -3379,7 +3533,7 @@ static inline unsigned long rlimit_max(unsigned int limit) + struct update_util_data { + void (*func)(struct update_util_data *data, + u64 time, unsigned long util, unsigned long max); +-}; ++} __no_const; + + void cpufreq_add_update_util_hook(int cpu, struct update_util_data *data, + void (*func)(struct update_util_data *data, u64 time, diff --git a/include/linux/scif.h b/include/linux/scif.h index 49a35d6..c6209dd 100644 --- a/include/linux/scif.h @@ -134896,7 +135110,7 @@ index 49a35d6..c6209dd 100644 #define SCIF_OPEN_FAILED ((scif_epd_t)-1) #define SCIF_REGISTER_FAILED ((off_t)-1) diff --git a/include/linux/security.h b/include/linux/security.h -index 157f0cb..93989df 100644 +index 14df373..4bc1552 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -30,6 +30,7 @@ @@ -134994,10 +135208,10 @@ index f3d45dd..4539816 100644 int single_release(struct inode *, struct file *); void *__seq_open_private(struct file *, const struct seq_operations *, int); diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h -index e058210..386666a 100644 +index ead9765..2379f94 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h -@@ -440,42 +440,49 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) +@@ -443,42 +443,49 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) * Acts like a normal spin_lock/unlock. * Don't need preempt_disable() because that is in the spin_lock already. */ @@ -135047,7 +135261,7 @@ index e058210..386666a 100644 static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) { unsigned long flags; -@@ -488,6 +495,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) +@@ -491,6 +498,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) #define write_seqlock_irqsave(lock, flags) \ do { flags = __write_seqlock_irqsave(lock); } while (0) @@ -135055,7 +135269,7 @@ index e058210..386666a 100644 static inline void write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) { -@@ -500,11 +508,13 @@ write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) +@@ -503,11 +511,13 @@ write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) * but doesn't update the sequence number. Acts like a normal spin_lock/unlock. * Don't need preempt_disable() because that is in the spin_lock already. */ @@ -135087,7 +135301,7 @@ index 04e8818..af85805 100644 /* shm_mode upper byte flags */ #define SHM_DEST 01000 /* segment will be destroyed on last detach */ diff --git a/include/linux/signal.h b/include/linux/signal.h -index d80259a..41a639a 100644 +index b63f63e..fe39718 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -303,7 +303,7 @@ static inline void allow_signal(int sig) @@ -135100,7 +135314,7 @@ index d80259a..41a639a 100644 static inline void disallow_signal(int sig) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 794b924..3b11d45 100644 +index f39b371..6f5db9d 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -889,7 +889,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, @@ -135112,7 +135326,7 @@ index 794b924..3b11d45 100644 gfp_t priority) { return __alloc_skb(size, priority, 0, NUMA_NO_NODE); -@@ -2188,7 +2188,7 @@ static inline unsigned char *skb_checksum_start(const struct sk_buff *skb) +@@ -2198,7 +2198,7 @@ static inline unsigned char *skb_checksum_start(const struct sk_buff *skb) return skb->head + skb->csum_start; } @@ -135121,7 +135335,7 @@ index 794b924..3b11d45 100644 { return skb_transport_header(skb) - skb->data; } -@@ -2203,7 +2203,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb) +@@ -2213,7 +2213,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb) return skb->inner_transport_header - skb->inner_network_header; } @@ -135130,7 +135344,7 @@ index 794b924..3b11d45 100644 { return skb_network_header(skb) - skb->data; } -@@ -2263,7 +2263,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) +@@ -2273,7 +2273,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 @@ -135139,7 +135353,7 @@ index 794b924..3b11d45 100644 #endif int ___pskb_trim(struct sk_buff *skb, unsigned int len); -@@ -2956,9 +2956,9 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, +@@ -2966,9 +2966,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); @@ -135151,7 +135365,7 @@ index 794b924..3b11d45 100644 struct msghdr *msg, int size) { return skb_copy_datagram_iter(from, offset, &msg->msg_iter, size); -@@ -3487,6 +3487,9 @@ static inline void nf_reset(struct sk_buff *skb) +@@ -3504,6 +3504,9 @@ static inline void nf_reset(struct sk_buff *skb) nf_bridge_put(skb->nf_bridge); skb->nf_bridge = NULL; #endif @@ -135162,7 +135376,7 @@ index 794b924..3b11d45 100644 static inline void nf_reset_trace(struct sk_buff *skb) diff --git a/include/linux/slab.h b/include/linux/slab.h -index 508bd82..37e5199 100644 +index aeb3e6d..c8e3382b 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -15,14 +15,29 @@ @@ -135245,18 +135459,18 @@ index 508bd82..37e5199 100644 } #endif /* !CONFIG_SLOB */ --void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment; -+void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment __alloc_size(1) __size_overflow(1); - void *kmem_cache_alloc(struct kmem_cache *, gfp_t flags) __assume_slab_alignment; +-void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment __malloc; ++void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment __malloc __alloc_size(1) __size_overflow(1); + void *kmem_cache_alloc(struct kmem_cache *, gfp_t flags) __assume_slab_alignment __malloc; void kmem_cache_free(struct kmem_cache *, void *); @@ -339,10 +363,10 @@ static __always_inline void kfree_bulk(size_t size, void **p) } #ifdef CONFIG_NUMA --void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignment; -+void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignment __alloc_size(1) __size_overflow(1); - void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node) __assume_slab_alignment; +-void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignment __malloc; ++void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignment __malloc __alloc_size(1) __size_overflow(1); + void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node) __assume_slab_alignment __malloc; #else -static __always_inline void *__kmalloc_node(size_t size, gfp_t flags, int node) +static __always_inline void * __alloc_size(1) __size_overflow(1) __kmalloc_node(size_t size, gfp_t flags, int node) @@ -135264,7 +135478,7 @@ index 508bd82..37e5199 100644 return __kmalloc(size, flags); } diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h -index 9edbbf3..c03134d 100644 +index 8694f7a..5358aef 100644 --- a/include/linux/slab_def.h +++ b/include/linux/slab_def.h @@ -40,7 +40,7 @@ struct kmem_cache { @@ -135296,7 +135510,7 @@ index 9edbbf3..c03134d 100644 atomic_t store_user_clean; #endif diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h -index 665cd0c..d5dccd7 100644 +index d1faa01..3776344 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h @@ -74,7 +74,7 @@ struct kmem_cache { @@ -135455,7 +135669,7 @@ index dc8eb63..b4b9482 100644 rcu_lock_release(&(sp)->dep_map); __srcu_read_unlock(sp, idx); diff --git a/include/linux/string.h b/include/linux/string.h -index d3993a7..19af70c 100644 +index 26b6f6a..ba9f0b4 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -18,51 +18,51 @@ extern void *memdup_user_nul(const void __user *, size_t); @@ -135587,11 +135801,11 @@ index d3993a7..19af70c 100644 extern void kfree_const(const void *x); --extern char *kstrdup(const char *s, gfp_t gfp); +-extern char *kstrdup(const char *s, gfp_t gfp) __malloc; -extern const char *kstrdup_const(const char *s, gfp_t gfp); -extern char *kstrndup(const char *s, size_t len, gfp_t gfp); -extern void *kmemdup(const void *src, size_t len, gfp_t gfp); -+extern char *kstrdup(const char *s, gfp_t gfp) __nocapture(1); ++extern char *kstrdup(const char *s, gfp_t gfp) __malloc __nocapture(1); +extern const char *kstrdup_const(const char *s, gfp_t gfp) __nocapture(1); +extern char *kstrndup(const char *s, size_t len, gfp_t gfp) __nocapture(1); +extern void *kmemdup(const void *src, size_t len, gfp_t gfp) __nocapture(1); @@ -135652,7 +135866,7 @@ index 5c9c6cd..f16c5c9 100644 #endif /* _LINUX_SUNRPC_ADDR_H */ diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h -index 14d70f5..88ae065 100644 +index b6810c9..478f297 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h @@ -103,7 +103,7 @@ struct rpc_procinfo { @@ -135678,7 +135892,7 @@ index 7ca44fb..368f7cf 100644 /* * Mode for mapping cpus to pools. diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h -index 3081339..22da86c 100644 +index d6917b8..e05ca83 100644 --- a/include/linux/sunrpc/svc_rdma.h +++ b/include/linux/sunrpc/svc_rdma.h @@ -54,15 +54,15 @@ extern unsigned int svcrdma_max_requests; @@ -135707,10 +135921,10 @@ index 3081339..22da86c 100644 /* * Contexts are built when an RDMA request is created and are a diff --git a/include/linux/sunrpc/svcauth.h b/include/linux/sunrpc/svcauth.h -index c00f53a..8802c3b 100644 +index 91d5a5d..d2949b2 100644 --- a/include/linux/sunrpc/svcauth.h +++ b/include/linux/sunrpc/svcauth.h -@@ -127,7 +127,7 @@ struct auth_ops { +@@ -128,7 +128,7 @@ struct auth_ops { int (*release)(struct svc_rqst *rq); void (*domain_release)(struct auth_domain *); int (*set_client)(struct svc_rqst *rq); @@ -135774,7 +135988,7 @@ index 017fced..d4a9fc9 100644 extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h -index d795472..721a240 100644 +index d022390..80f9811 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -102,7 +102,14 @@ union bpf_attr; @@ -136057,7 +136271,7 @@ index b4c2a48..0a13f65 100644 #endif /* _LINUX_THREAD_INFO_H */ diff --git a/include/linux/tty.h b/include/linux/tty.h -index a344420..c3868f9 100644 +index 40144f3..610732a 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -225,7 +225,7 @@ struct tty_port { @@ -136068,8 +136282,8 @@ index a344420..c3868f9 100644 + atomic_t count; /* Usage count */ wait_queue_head_t open_wait; /* Open waiters */ wait_queue_head_t delta_msr_wait; /* Modem status change */ - unsigned long flags; /* TTY flags ASY_*/ -@@ -313,7 +313,7 @@ struct tty_struct { + unsigned long flags; /* User TTY flags ASYNC_ */ +@@ -326,7 +326,7 @@ struct tty_struct { /* If the tty has a pending do_SAK, queue it here - akpm */ struct work_struct SAK_work; struct tty_port *port; @@ -136078,7 +136292,7 @@ index a344420..c3868f9 100644 /* Each of a tty's open files has private_data pointing to tty_file_private */ struct tty_file_private { -@@ -561,7 +561,7 @@ extern int tty_port_open(struct tty_port *port, +@@ -646,7 +646,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) { @@ -136123,10 +136337,10 @@ index 3971cf0..7704c48 100644 struct tty_ldisc { diff --git a/include/linux/types.h b/include/linux/types.h -index 70dd3df..7950943 100644 +index baf7183..161f20f 100644 --- a/include/linux/types.h +++ b/include/linux/types.h -@@ -160,8 +160,10 @@ typedef unsigned __bitwise__ oom_flags_t; +@@ -159,8 +159,10 @@ typedef unsigned __bitwise__ fmode_t; #ifdef CONFIG_PHYS_ADDR_T_64BIT typedef u64 phys_addr_t; @@ -136137,7 +136351,7 @@ index 70dd3df..7950943 100644 #endif typedef phys_addr_t resource_size_t; -@@ -176,10 +178,26 @@ typedef struct { +@@ -175,10 +177,26 @@ typedef struct { int counter; } atomic_t; @@ -136257,7 +136471,7 @@ index 33383ca..44211d6 100644 static __always_inline void put_unaligned_le16(u16 val, void *p) diff --git a/include/linux/usb.h b/include/linux/usb.h -index 818bf70..3925f6b 100644 +index eba1f10..94c966f 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -370,7 +370,7 @@ struct usb_bus { @@ -136421,10 +136635,10 @@ index b39a5f3..3f5115a 100644 #endif #endif /* _LINUX_VGA_SWITCHEROO_H_ */ diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h -index d1f1d33..10415f2 100644 +index 3d9d786..56059bf 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h -@@ -17,6 +17,14 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ +@@ -19,6 +19,14 @@ struct notifier_block; /* in notifier.h */ #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */ #define VM_NO_GUARD 0x00000040 /* don't add guard page */ #define VM_KASAN 0x00000080 /* has allocated kasan shadow memory */ @@ -136439,7 +136653,7 @@ index d1f1d33..10415f2 100644 /* bits [20..32] reserved for arch specific ioremap internals */ /* -@@ -66,6 +74,7 @@ static inline void vmalloc_init(void) +@@ -68,6 +76,7 @@ static inline void vmalloc_init(void) #endif extern void *vmalloc(unsigned long size); @@ -136447,7 +136661,7 @@ index d1f1d33..10415f2 100644 extern void *vzalloc(unsigned long size); extern void *vmalloc_user(unsigned long size); extern void *vmalloc_node(unsigned long size, int node); -@@ -85,6 +94,10 @@ extern void *vmap(struct page **pages, unsigned int count, +@@ -87,6 +96,10 @@ extern void *vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot); extern void vunmap(const void *addr); @@ -136458,7 +136672,7 @@ index d1f1d33..10415f2 100644 extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, void *kaddr, unsigned long size); -@@ -149,7 +162,7 @@ extern void free_vm_area(struct vm_struct *area); +@@ -151,7 +164,7 @@ extern void free_vm_area(struct vm_struct *area); /* for /dev/kmem */ extern long vread(char *buf, char *addr, unsigned long count); @@ -136468,7 +136682,7 @@ index d1f1d33..10415f2 100644 /* * Internals. Dont't use.. diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h -index 73fae8c..61f415d 100644 +index d2da8e0..cc37233 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -108,18 +108,18 @@ static inline void vm_events_fold_cpu(int cpu) @@ -136517,7 +136731,7 @@ index 73fae8c..61f415d 100644 #ifdef CONFIG_SMP int cpu; -@@ -213,14 +213,14 @@ static inline void __mod_zone_page_state(struct zone *zone, +@@ -215,14 +215,14 @@ static inline void __mod_zone_page_state(struct zone *zone, static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) { @@ -136552,19 +136766,19 @@ index d0b5ca5..c13529b 100644 spin_unlock(&inode->i_lock); } diff --git a/include/linux/xattr.h b/include/linux/xattr.h -index 4457541..cb0d355 100644 +index 94079ba..ae4c218 100644 --- a/include/linux/xattr.h +++ b/include/linux/xattr.h -@@ -34,7 +34,7 @@ struct xattr_handler { +@@ -35,7 +35,7 @@ struct xattr_handler { int (*set)(const struct xattr_handler *, struct dentry *dentry, - const char *name, const void *buffer, size_t size, - int flags); + struct inode *inode, const char *name, const void *buffer, + size_t size, int flags); -}; +} __do_const; const char *xattr_full_name(const struct xattr_handler *, const char *); -@@ -45,6 +45,9 @@ struct xattr { +@@ -46,6 +46,9 @@ struct xattr { }; ssize_t xattr_getsecurity(struct inode *, const char *, void *, size_t); @@ -136596,7 +136810,7 @@ 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 76056ab..b3a839b 100644 +index 25a3190..bafa7eb 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h @@ -74,7 +74,7 @@ struct v4l2_file_operations { @@ -136609,7 +136823,7 @@ index 76056ab..b3a839b 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 9c58157..d86ebf5 100644 +index d5d45a8..2b5f3f5 100644 --- a/include/media/v4l2-device.h +++ b/include/media/v4l2-device.h @@ -93,7 +93,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4 @@ -136661,10 +136875,10 @@ index 5ee3c68..54f883a 100644 struct l2cap_conn { struct hci_conn *hcon; diff --git a/include/net/bonding.h b/include/net/bonding.h -index 791800d..db75e5f 100644 +index 6360c25..6eb51ef 100644 --- a/include/net/bonding.h +++ b/include/net/bonding.h -@@ -702,7 +702,7 @@ extern struct rtnl_link_ops bond_link_ops; +@@ -707,7 +707,7 @@ extern struct rtnl_link_ops bond_link_ops; static inline void bond_tx_drop(struct net_device *dev, struct sk_buff *skb) { @@ -136859,10 +137073,10 @@ index 235c781..160d4a3 100644 struct rcu_head rcu; struct inet_peer *gc_next; diff --git a/include/net/ip.h b/include/net/ip.h -index fad74d3..bb36af9 100644 +index 08f36cd..226b9d4 100644 --- a/include/net/ip.h +++ b/include/net/ip.h -@@ -326,7 +326,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb) +@@ -325,7 +325,7 @@ static inline unsigned int ip_skb_dst_mtu(struct sock *sk, return min(skb_dst(skb)->dev->mtu, IP_MAX_MTU); } @@ -136885,7 +137099,7 @@ index 4079fc1..cb82cad 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 a6cc576..d1a5fcb 100644 +index cd6018a..996671f 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h @@ -543,7 +543,7 @@ struct ip_vs_conn { @@ -136906,7 +137120,7 @@ index a6cc576..d1a5fcb 100644 atomic_t weight; /* server weight */ atomic_t refcnt; /* reference counter */ -@@ -924,11 +924,11 @@ struct netns_ipvs { +@@ -931,11 +931,11 @@ struct netns_ipvs { /* ip_vs_lblc */ int sysctl_lblc_expiration; struct ctl_table_header *lblc_ctl_header; @@ -136921,10 +137135,10 @@ index a6cc576..d1a5fcb 100644 struct list_head est_list; /* estimator list */ spinlock_t est_lock; diff --git a/include/net/ipv6.h b/include/net/ipv6.h -index 1be050a..472c511 100644 +index 11a0452..782492b 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h -@@ -775,7 +775,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, +@@ -780,7 +780,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, * to minimize possbility that any useful information to an * attacker is leaked. Only lower 20 bits are relevant. */ @@ -137087,10 +137301,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 e385eb3..28bc730 100644 +index be30b05..952803b 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -1539,7 +1539,7 @@ enum ieee80211_key_flags { +@@ -1555,7 +1555,7 @@ enum ieee80211_key_flags { * @iv_len: The IV length for this key type */ struct ieee80211_key_conf { @@ -137099,7 +137313,7 @@ index e385eb3..28bc730 100644 u32 cipher; u8 icv_len; u8 iv_len; -@@ -5276,7 +5276,7 @@ struct ieee80211_tx_rate_control { +@@ -5348,7 +5348,7 @@ struct ieee80211_tx_rate_control { struct sk_buff *skb; struct ieee80211_tx_rate reported_rate; bool rts, short_preamble; @@ -137108,7 +137322,7 @@ index e385eb3..28bc730 100644 u32 rate_idx_mask; u8 *rate_idx_mcs_mask; bool bss; -@@ -5313,7 +5313,7 @@ struct rate_control_ops { +@@ -5385,7 +5385,7 @@ struct rate_control_ops { void (*remove_sta_debugfs)(void *priv, void *priv_sta); u32 (*get_expected_throughput)(void *priv_sta); @@ -137116,7 +137330,7 @@ index e385eb3..28bc730 100644 +} __do_const; static inline int rate_supported(struct ieee80211_sta *sta, - enum ieee80211_band band, + enum nl80211_band band, diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 8b68384..48fe40e 100644 --- a/include/net/neighbour.h @@ -137224,10 +137438,10 @@ index 4089abc..bf8084a 100644 #endif /* __NET_NET_NAMESPACE_H */ diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h -index fde4068..d11e09b 100644 +index b6083c3..3fecf3b 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h -@@ -286,7 +286,7 @@ static inline bool nf_is_loopback_packet(const struct sk_buff *skb) +@@ -294,7 +294,7 @@ static inline unsigned long nf_ct_expires(const struct nf_conn *ct) struct kernel_param; @@ -137235,12 +137449,12 @@ index fde4068..d11e09b 100644 +int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp); extern unsigned int nf_conntrack_htable_size; extern unsigned int nf_conntrack_max; - extern unsigned int nf_conntrack_hash_rnd; + diff --git a/include/net/netlink.h b/include/net/netlink.h -index 0e31727..2f2b511 100644 +index 254a0fc..040f766 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h -@@ -521,7 +521,7 @@ static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) +@@ -532,7 +532,7 @@ static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) { if (mark) { WARN_ON((unsigned char *) mark < skb->data); @@ -137250,7 +137464,7 @@ index 0e31727..2f2b511 100644 } diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h -index 723b61c..4386367 100644 +index 38b1a80..c2d91f1 100644 --- a/include/net/netns/conntrack.h +++ b/include/net/netns/conntrack.h @@ -14,10 +14,10 @@ struct nf_conntrack_ecache; @@ -137276,7 +137490,7 @@ index 723b61c..4386367 100644 }; diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h -index a69cde3..ba46ea3 100644 +index d061ffe..cc6cdb96 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h @@ -119,7 +119,7 @@ struct netns_ipv4 { @@ -137288,9 +137502,9 @@ index a69cde3..ba46ea3 100644 #ifdef CONFIG_SYSCTL unsigned long *sysctl_local_reserved_ports; -@@ -133,6 +133,6 @@ struct netns_ipv4 { - struct fib_rules_ops *mr_rules_ops; - #endif +@@ -136,6 +136,6 @@ struct netns_ipv4 { + #ifdef CONFIG_IP_ROUTE_MULTIPATH + int sysctl_fib_multipath_use_neigh; #endif - atomic_t rt_genid; + atomic_unchecked_t rt_genid; @@ -137338,7 +137552,7 @@ index 4cd90d6..4947311 100644 struct pingfakehdr { diff --git a/include/net/protocol.h b/include/net/protocol.h -index da689f5..3b3d55b 100644 +index bf36ca3..c29da79 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h @@ -49,7 +49,7 @@ struct net_protocol { @@ -137360,13 +137574,13 @@ index da689f5..3b3d55b 100644 #define INET6_PROTO_NOPOLICY 0x1 #define INET6_PROTO_FINAL 0x2 diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h -index 2f87c1b..5a03287 100644 +index 006a7b8..739ab6b 100644 --- a/include/net/rtnetlink.h +++ b/include/net/rtnetlink.h -@@ -95,7 +95,7 @@ struct rtnl_link_ops { +@@ -102,7 +102,7 @@ struct rtnl_link_ops { + int (*fill_linkxstats)(struct sk_buff *skb, const struct net_device *dev, - const struct net_device *slave_dev); - struct net *(*get_link_net)(const struct net_device *dev); + int *prividx); -}; +} __do_const; @@ -137410,10 +137624,10 @@ index efc0174..cb23681 100644 /* Get the size of a DATA chunk payload. */ diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h -index 5a404c3..942221e 100644 +index 16b013a..1e3367e 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h -@@ -512,7 +512,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; @@ -137423,7 +137637,7 @@ index 5a404c3..942221e 100644 /* Structure to track chunk fragments that have been acked, but peer diff --git a/include/net/snmp.h b/include/net/snmp.h -index 35512ac..edbd85b 100644 +index c9228ad..5543dfb 100644 --- a/include/net/snmp.h +++ b/include/net/snmp.h @@ -67,7 +67,7 @@ struct icmp_mib { @@ -137456,8 +137670,8 @@ index 35512ac..edbd85b 100644 }; -@@ -130,7 +130,7 @@ struct linux_xfrm_mib { - this_cpu_inc(mib->mibs[field]) +@@ -127,7 +127,7 @@ struct linux_xfrm_mib { + __this_cpu_inc(mib->mibs[field]) #define SNMP_INC_STATS_ATOMIC_LONG(mib, field) \ - atomic_long_inc(&mib->mibs[field]) @@ -137466,7 +137680,7 @@ index 35512ac..edbd85b 100644 #define SNMP_INC_STATS(mib, field) \ this_cpu_inc(mib->mibs[field]) diff --git a/include/net/sock.h b/include/net/sock.h -index 121ffc1..0c44dfd 100644 +index ff5be7e..598bf64 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -188,7 +188,7 @@ struct sock_common { @@ -137487,7 +137701,7 @@ index 121ffc1..0c44dfd 100644 int sk_rcvbuf; struct sk_filter __rcu *sk_filter; -@@ -1041,7 +1041,7 @@ struct proto { +@@ -1069,7 +1069,7 @@ struct proto { atomic_t socks; #endif int (*diag_destroy)(struct sock *sk, int err); @@ -137496,7 +137710,7 @@ index 121ffc1..0c44dfd 100644 int proto_register(struct proto *prot, int alloc_slab); void proto_unregister(struct proto *prot); -@@ -1128,7 +1128,7 @@ static inline long sk_prot_mem_limits(const struct sock *sk, int index) +@@ -1156,7 +1156,7 @@ static inline long sk_prot_mem_limits(const struct sock *sk, int index) return sk->sk_prot->sysctl_mem[index]; } @@ -137505,7 +137719,7 @@ index 121ffc1..0c44dfd 100644 sk_memory_allocated(const struct sock *sk) { return atomic_long_read(sk->sk_prot->memory_allocated); -@@ -1687,7 +1687,7 @@ static inline bool sk_check_csum_caps(struct sock *sk) +@@ -1759,7 +1759,7 @@ static inline bool sk_check_csum_caps(struct sock *sk) } static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, @@ -137514,7 +137728,7 @@ index 121ffc1..0c44dfd 100644 int copy, int offset) { if (skb->ip_summed == CHECKSUM_NONE) { -@@ -1932,7 +1932,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) +@@ -2013,7 +2013,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) } } @@ -137523,7 +137737,7 @@ index 121ffc1..0c44dfd 100644 bool force_schedule); /** -@@ -2008,7 +2008,7 @@ struct sock_skb_cb { +@@ -2089,14 +2089,14 @@ struct sock_skb_cb { static inline void sock_skb_set_dropcount(const struct sock *sk, struct sk_buff *skb) { @@ -137531,12 +137745,20 @@ index 121ffc1..0c44dfd 100644 + SOCK_SKB_CB(skb)->dropcount = atomic_read_unchecked(&sk->sk_drops); } + static inline void sk_drops_add(struct sock *sk, const struct sk_buff *skb) + { + int segs = max_t(u16, 1, skb_shinfo(skb)->gso_segs); + +- atomic_add(segs, &sk->sk_drops); ++ atomic_add_unchecked(segs, &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 6db1022..7138bec 100644 +index 0bcc70f..5c46882 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h -@@ -539,7 +539,7 @@ void tcp_retransmit_timer(struct sock *sk); +@@ -543,7 +543,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); @@ -137545,7 +137767,7 @@ index 6db1022..7138bec 100644 void tcp_send_probe0(struct sock *); void tcp_send_partial(struct sock *); -@@ -728,8 +728,8 @@ static inline u32 tcp_skb_timestamp(const struct sk_buff *skb) +@@ -732,8 +732,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 { @@ -137556,20 +137778,29 @@ index 6db1022..7138bec 100644 union { /* Note : tcp_tw_isn is used in input path only * (isn chosen by tcp_timewait_state_process()) -@@ -757,7 +757,7 @@ struct tcp_skb_cb { - - __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */ - /* 1 byte hole */ +@@ -763,7 +763,7 @@ struct tcp_skb_cb { + __u8 txstamp_ack:1, /* Record TX timestamp for ack? */ + eor:1, /* Is skb MSG_EOR marked? */ + unused:6; - __u32 ack_seq; /* Sequence number ACK'd */ + __u32 ack_seq __intentional_overflow(-1); /* Sequence number ACK'd */ union { - struct inet_skb_parm h4; - #if IS_ENABLED(CONFIG_IPV6) + struct { + /* There is space for up to 20 bytes */ +@@ -1869,7 +1869,7 @@ static inline void tcp_segs_in(struct tcp_sock *tp, const struct sk_buff *skb) + */ + static inline void tcp_listendrop(const struct sock *sk) + { +- atomic_inc(&((struct sock *)sk)->sk_drops); ++ atomic_inc_unchecked(&((struct sock *)sk)->sk_drops); + __NET_INC_STATS(sock_net(sk), LINUX_MIB_LISTENDROPS); + } + diff --git a/include/net/xfrm.h b/include/net/xfrm.h -index d6f6e50..6fea29e 100644 +index adfebd6..5084f8e 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h -@@ -284,7 +284,6 @@ struct xfrm_dst; +@@ -280,7 +280,6 @@ struct xfrm_dst; struct xfrm_policy_afinfo { unsigned short family; struct dst_ops *dst_ops; @@ -137577,7 +137808,7 @@ index d6f6e50..6fea29e 100644 struct dst_entry *(*dst_lookup)(struct net *net, int tos, int oif, const xfrm_address_t *saddr, -@@ -303,7 +302,7 @@ struct xfrm_policy_afinfo { +@@ -299,7 +298,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); @@ -137586,7 +137817,7 @@ index d6f6e50..6fea29e 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 { +@@ -338,7 +337,7 @@ struct xfrm_state_afinfo { int (*transport_finish)(struct sk_buff *skb, int async); void (*local_error)(struct sk_buff *skb, u32 mtu); @@ -137595,7 +137826,7 @@ index d6f6e50..6fea29e 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 { +@@ -433,7 +432,7 @@ struct xfrm_mode { struct module *owner; unsigned int encap; int flags; @@ -137604,7 +137835,7 @@ index d6f6e50..6fea29e 100644 /* Flags for xfrm_mode. */ enum { -@@ -532,7 +531,7 @@ struct xfrm_policy { +@@ -528,7 +527,7 @@ struct xfrm_policy { struct timer_list timer; struct flow_cache_object flo; @@ -137613,7 +137844,7 @@ index d6f6e50..6fea29e 100644 u32 priority; u32 index; struct xfrm_mark mark; -@@ -603,7 +602,7 @@ struct xfrm_mgr { +@@ -599,7 +598,7 @@ struct xfrm_mgr { int num_bundles, const struct xfrm_kmaddress *k); bool (*is_alive)(const struct km_event *c); @@ -137622,7 +137853,7 @@ index d6f6e50..6fea29e 100644 int xfrm_register_km(struct xfrm_mgr *km); int xfrm_unregister_km(struct xfrm_mgr *km); -@@ -1172,6 +1171,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk) +@@ -1168,6 +1167,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk) } void xfrm_garbage_collect(struct net *net); @@ -137630,7 +137861,7 @@ index d6f6e50..6fea29e 100644 #else -@@ -1210,6 +1210,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, +@@ -1206,6 +1206,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, static inline void xfrm_garbage_collect(struct net *net) { } @@ -137666,6 +137897,19 @@ index 92a7d85..1779570 100644 u8 info_length, const void *private_data, u8 private_data_len); +diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h +index 7e440d4..2fc0a83 100644 +--- a/include/rdma/ib_verbs.h ++++ b/include/rdma/ib_verbs.h +@@ -1187,7 +1187,7 @@ struct ib_sge { + + struct ib_cqe { + void (*done)(struct ib_cq *cq, struct ib_wc *wc); +-}; ++} __no_const; + + struct ib_send_wr { + struct ib_send_wr *next; diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 93d14da..734b3d8 100644 --- a/include/scsi/libfc.h @@ -137688,10 +137932,10 @@ index 93d14da..734b3d8 100644 u8 qfull; enum fc_lport_state state; diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h -index a505079..bf8ba88 100644 +index a6c346d..3b33417 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h -@@ -188,9 +188,9 @@ struct scsi_device { +@@ -194,9 +194,9 @@ struct scsi_device { unsigned int max_device_blocked; /* what device_blocked counts down from */ #define SCSI_DEFAULT_DEVICE_BLOCKED 3 @@ -137814,7 +138058,7 @@ index feb58d4..9ce81c1 100644 int in_kernel, int size_aligned); int snd_seq_dump_var_event(const struct snd_seq_event *event, diff --git a/include/sound/soc.h b/include/sound/soc.h -index 02b4a21..36efb0e 100644 +index fd7b58a..fd40a10 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -920,7 +920,7 @@ struct snd_soc_codec_driver { @@ -138067,7 +138311,7 @@ index 4cb2835..cfbc4e2 100644 __u16 len; /* Length of the following data */ diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h -index 71e1d0e..6cc9caf 100644 +index cb4a72f..3f0f045 100644 --- a/include/uapi/linux/elf.h +++ b/include/uapi/linux/elf.h @@ -37,6 +37,17 @@ typedef __s64 Elf64_Sxword; @@ -138117,7 +138361,7 @@ index 71e1d0e..6cc9caf 100644 typedef struct elf32_phdr{ Elf32_Word p_type; Elf32_Off p_offset; -@@ -332,6 +358,8 @@ typedef struct elf64_shdr { +@@ -334,6 +360,8 @@ typedef struct elf64_shdr { #define EI_OSABI 7 #define EI_PAD 8 @@ -138229,7 +138473,7 @@ index 30f5362..8ed8ac9 100644 void *pmi_pal; u8 *vbe_state_orig; /* diff --git a/init/Kconfig b/init/Kconfig -index 0dfd09d..177e567 100644 +index c02d897..e960810 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -286,7 +286,8 @@ config FHANDLE @@ -138250,7 +138494,7 @@ index 0dfd09d..177e567 100644 help This option provides tracing for the TREE_RCU and PREEMPT_RCU implementations, permitting Makefile to -@@ -1133,6 +1135,7 @@ endif # CGROUPS +@@ -1155,6 +1157,7 @@ endif # CGROUPS config CHECKPOINT_RESTORE bool "Checkpoint/restore support" if EXPERT select PROC_CHILDREN @@ -138258,15 +138502,16 @@ index 0dfd09d..177e567 100644 default n help Enables additional kernel features in a sake of checkpoint/restore. -@@ -1423,6 +1426,7 @@ config KALLSYMS_ALL - - config KALLSYMS_ABSOLUTE_PERCPU - bool -+ depends on KALLSYMS - default X86_64 && SMP - - config KALLSYMS_BASE_RELATIVE -@@ -1699,7 +1703,7 @@ config SLUB_DEBUG +@@ -1627,7 +1630,7 @@ config ADVISE_SYSCALLS + config USERFAULTFD + bool "Enable userfaultfd() system call" + select ANON_INODES +- depends on MMU ++ depends on MMU && !GRKERNSEC + help + Enable the userfaultfd() system call that allows to intercept and + handle page faults in userland. +@@ -1740,7 +1743,7 @@ config SLUB_DEBUG config COMPAT_BRK bool "Disable heap randomization" @@ -138609,10 +138854,21 @@ index b32ad7d..05f6420 100644 next_state = Reset; return 0; diff --git a/init/main.c b/init/main.c -index b3c6e36..71ab08e 100644 +index eae02aa..38ba7994 100644 --- a/init/main.c +++ b/init/main.c -@@ -94,6 +94,8 @@ extern void init_IRQ(void); +@@ -11,6 +11,10 @@ + + #define DEBUG /* Enable initcall_debug */ + ++#ifdef CONFIG_GRKERNSEC_HIDESYM ++#define __INCLUDED_BY_HIDESYM 1 ++#endif ++ + #include <linux/types.h> + #include <linux/module.h> + #include <linux/proc_fs.h> +@@ -94,6 +98,8 @@ extern void init_IRQ(void); extern void fork_init(void); extern void radix_tree_init(void); @@ -138621,7 +138877,7 @@ index b3c6e36..71ab08e 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 -@@ -155,6 +157,48 @@ static int __init set_reset_devices(char *str) +@@ -155,6 +161,48 @@ static int __init set_reset_devices(char *str) __setup("reset_devices", set_reset_devices); @@ -138670,16 +138926,7 @@ index b3c6e36..71ab08e 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; -@@ -708,7 +752,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn) - struct blacklist_entry *entry; - char *fn_name; - -- fn_name = kasprintf(GFP_KERNEL, "%pf", fn); -+ fn_name = kasprintf(GFP_KERNEL, "%pX", fn); - if (!fn_name) - return false; - -@@ -759,7 +803,7 @@ int __init_or_module do_one_initcall(initcall_t fn) +@@ -761,7 +809,7 @@ int __init_or_module do_one_initcall(initcall_t fn) { int count = preempt_count(); int ret; @@ -138688,7 +138935,7 @@ index b3c6e36..71ab08e 100644 if (initcall_blacklisted(fn)) return -EPERM; -@@ -769,18 +813,17 @@ int __init_or_module do_one_initcall(initcall_t fn) +@@ -771,18 +819,17 @@ int __init_or_module do_one_initcall(initcall_t fn) else ret = fn(); @@ -138711,7 +138958,7 @@ index b3c6e36..71ab08e 100644 return ret; } -@@ -885,8 +928,8 @@ static int run_init_process(const char *init_filename) +@@ -887,8 +934,8 @@ static int run_init_process(const char *init_filename) { argv_init[0] = init_filename; return do_execve(getname_kernel(init_filename), @@ -138722,7 +138969,7 @@ index b3c6e36..71ab08e 100644 } static int try_to_run_init_process(const char *init_filename) -@@ -903,6 +946,10 @@ static int try_to_run_init_process(const char *init_filename) +@@ -905,6 +952,10 @@ static int try_to_run_init_process(const char *init_filename) return ret; } @@ -138733,7 +138980,7 @@ index b3c6e36..71ab08e 100644 static noinline void __init kernel_init_freeable(void); #ifdef CONFIG_DEBUG_RODATA -@@ -951,6 +998,11 @@ static int __ref kernel_init(void *unused) +@@ -953,6 +1004,11 @@ static int __ref kernel_init(void *unused) ramdisk_execute_command, ret); } @@ -138745,7 +138992,7 @@ index b3c6e36..71ab08e 100644 /* * We try each of these until one succeeds. * -@@ -1008,7 +1060,7 @@ static noinline void __init kernel_init_freeable(void) +@@ -1010,7 +1066,7 @@ static noinline void __init kernel_init_freeable(void) do_basic_setup(); /* Open the /dev/console on the rootfs, this should never fail */ @@ -138754,7 +139001,7 @@ index b3c6e36..71ab08e 100644 pr_err("Warning: unable to open an initial console.\n"); (void) sys_dup(0); -@@ -1021,11 +1073,13 @@ static noinline void __init kernel_init_freeable(void) +@@ -1023,11 +1079,13 @@ static noinline void __init kernel_init_freeable(void) if (!ramdisk_execute_command) ramdisk_execute_command = "/init"; @@ -138961,7 +139208,7 @@ index b3757ea..387f432 100644 /* diff --git a/ipc/shm.c b/ipc/shm.c -index 331fc1b..ee0e110 100644 +index 1328251..3e9e243 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -72,9 +72,17 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp); @@ -139032,7 +139279,7 @@ index 331fc1b..ee0e110 100644 size = i_size_read(d_inode(path.dentry)); ipc_unlock_object(&shp->shm_perm); rcu_read_unlock(); -@@ -1365,7 +1394,8 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr) +@@ -1370,7 +1399,8 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr) static int sysvipc_shm_proc_show(struct seq_file *s, void *it) { struct user_namespace *user_ns = seq_user_ns(s); @@ -139067,10 +139314,10 @@ index 798cad1..d6ffc17 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 678c3f0..188341c 100644 +index 8d528f9..ec997a7 100644 --- a/kernel/audit.c +++ b/kernel/audit.c -@@ -123,7 +123,7 @@ u32 audit_sig_sid = 0; +@@ -122,7 +122,7 @@ u32 audit_sig_sid = 0; 3) suppressed due to audit_rate_limit 4) suppressed due to audit_backlog_limit */ @@ -139079,7 +139326,7 @@ index 678c3f0..188341c 100644 /* The netlink socket. */ static struct sock *audit_sock; -@@ -257,7 +257,7 @@ void audit_log_lost(const char *message) +@@ -256,7 +256,7 @@ void audit_log_lost(const char *message) unsigned long now; int print; @@ -139088,7 +139335,7 @@ index 678c3f0..188341c 100644 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit); -@@ -274,7 +274,7 @@ void audit_log_lost(const char *message) +@@ -273,7 +273,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", @@ -139097,7 +139344,7 @@ index 678c3f0..188341c 100644 audit_rate_limit, audit_backlog_limit); audit_panic(message); -@@ -856,7 +856,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -854,7 +854,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; @@ -139106,7 +139353,7 @@ index 678c3f0..188341c 100644 s.backlog = skb_queue_len(&audit_skb_queue); s.feature_bitmap = AUDIT_FEATURE_BITMAP_ALL; s.backlog_wait_time = audit_backlog_wait_time_master; -@@ -1173,7 +1173,7 @@ static void __net_exit audit_net_exit(struct net *net) +@@ -1171,7 +1171,7 @@ static void __net_exit audit_net_exit(struct net *net) netlink_kernel_release(sock); } @@ -139116,10 +139363,10 @@ index 678c3f0..188341c 100644 .exit = audit_net_exit, .id = &audit_net_id, diff --git a/kernel/auditsc.c b/kernel/auditsc.c -index 7d0e3cf..023002c 100644 +index 2672d10..63bd1ca 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c -@@ -1024,7 +1024,7 @@ static int audit_log_single_execve_arg(struct audit_context *context, +@@ -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. */ @@ -139128,7 +139375,7 @@ index 7d0e3cf..023002c 100644 send_sig(SIGKILL, current, 0); return -1; } -@@ -1955,7 +1955,7 @@ int auditsc_get_stamp(struct audit_context *ctx, +@@ -1954,7 +1954,7 @@ int auditsc_get_stamp(struct audit_context *ctx, } /* global counter which is incremented every time something logs in */ @@ -139137,7 +139384,7 @@ index 7d0e3cf..023002c 100644 static int audit_set_loginuid_perm(kuid_t loginuid) { -@@ -2022,7 +2022,7 @@ int audit_set_loginuid(kuid_t loginuid) +@@ -2026,7 +2026,7 @@ int audit_set_loginuid(kuid_t loginuid) /* are we setting or clearing? */ if (uid_valid(loginuid)) @@ -139147,11 +139394,11 @@ index 7d0e3cf..023002c 100644 task->sessionid = sessionid; task->loginuid = loginuid; diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c -index be0abf6..28fce60 100644 +index b94a365..c7f20a7 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c -@@ -139,6 +139,8 @@ void __bpf_prog_free(struct bpf_prog *fp) - EXPORT_SYMBOL_GPL(__bpf_prog_free); +@@ -208,6 +208,8 @@ struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, + } #ifdef CONFIG_BPF_JIT +extern long __rap_hash___bpf_prog_run; @@ -139159,7 +139406,7 @@ index be0abf6..28fce60 100644 struct bpf_binary_header * bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr, unsigned int alignment, -@@ -152,27 +154,45 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr, +@@ -221,27 +223,45 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr, * random section of illegal instructions. */ size = round_up(proglen + sizeof(*hdr) + 128, PAGE_SIZE); @@ -139182,7 +139429,7 @@ index be0abf6..28fce60 100644 + hole -= 8; +#endif + - start = (prandom_u32() % hole) & ~(alignment - 1); + start = (get_random_int() % hole) & ~(alignment - 1); +#ifdef CONFIG_PAX_RAP + start += 8; @@ -139205,9 +139452,9 @@ index be0abf6..28fce60 100644 - module_memfree(hdr); + module_memfree_exec(hdr); } - #endif /* CONFIG_BPF_JIT */ -@@ -193,7 +213,7 @@ EXPORT_SYMBOL_GPL(__bpf_call_base); + int bpf_jit_harden __read_mostly; +@@ -465,7 +485,7 @@ EXPORT_SYMBOL_GPL(__bpf_call_base); * * Decode and execute eBPF instructions. */ @@ -139216,17 +139463,17 @@ index be0abf6..28fce60 100644 { u64 stack[MAX_BPF_STACK / sizeof(u64)]; u64 regs[MAX_BPF_REG], tmp; -@@ -698,7 +718,7 @@ static int bpf_check_tail_call(const struct bpf_prog *fp) +@@ -971,7 +991,7 @@ static int bpf_check_tail_call(const struct bpf_prog *fp) */ - int bpf_prog_select_runtime(struct bpf_prog *fp) + struct bpf_prog *bpf_prog_select_runtime(struct bpf_prog *fp, int *err) { - fp->bpf_func = (void *) __bpf_prog_run; + fp->bpf_func = __bpf_prog_run; - bpf_int_jit_compile(fp); - bpf_prog_lock_ro(fp); + /* eBPF JITs can rewrite the program in case constant + * blinding is active. However, in case of error during diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c -index cf5e9f7..81ece72 100644 +index 46ecce4..46c1a1a 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -805,8 +805,16 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz @@ -139346,10 +139593,10 @@ index 45432b5..7d860f7 100644 +} +EXPORT_SYMBOL(capable_wrt_inode_uidgid_nolog); diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 86cb5c6..2b03272 100644 +index 75c0ff0..bf4be97 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -3628,7 +3628,7 @@ static int cgroup_add_file(struct cgroup_subsys_state *css, struct cgroup *cgrp, +@@ -3634,7 +3634,7 @@ static int cgroup_add_file(struct cgroup_subsys_state *css, struct cgroup *cgrp, key = &cft->lockdep_key; #endif kn = __kernfs_create_file(cgrp->kn, cgroup_file_name(cgrp, cft, name), @@ -139358,7 +139605,7 @@ index 86cb5c6..2b03272 100644 NULL, key); if (IS_ERR(kn)) return PTR_ERR(kn); -@@ -3732,11 +3732,14 @@ static void cgroup_exit_cftypes(struct cftype *cfts) +@@ -3738,11 +3738,14 @@ static void cgroup_exit_cftypes(struct cftype *cfts) /* free copy for custom atomic_write_len, see init_cftypes() */ if (cft->max_write_len && cft->max_write_len != PAGE_SIZE) kfree(cft->kf_ops); @@ -139376,7 +139623,7 @@ index 86cb5c6..2b03272 100644 } } -@@ -3767,8 +3770,10 @@ static int cgroup_init_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) +@@ -3773,8 +3776,10 @@ static int cgroup_init_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) kf_ops->atomic_write_len = cft->max_write_len; } @@ -139389,7 +139636,7 @@ index 86cb5c6..2b03272 100644 } return 0; -@@ -3781,7 +3786,7 @@ static int cgroup_rm_cftypes_locked(struct cftype *cfts) +@@ -3787,7 +3792,7 @@ static int cgroup_rm_cftypes_locked(struct cftype *cfts) if (!cfts || !cfts[0].ss) return -ENOENT; @@ -139398,7 +139645,7 @@ index 86cb5c6..2b03272 100644 cgroup_apply_cftypes(cfts, false); cgroup_exit_cftypes(cfts); return 0; -@@ -3838,7 +3843,7 @@ static int cgroup_add_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) +@@ -3844,7 +3849,7 @@ static int cgroup_add_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) mutex_lock(&cgroup_mutex); @@ -139407,7 +139654,7 @@ index 86cb5c6..2b03272 100644 ret = cgroup_apply_cftypes(cfts, true); if (ret) cgroup_rm_cftypes_locked(cfts); -@@ -3859,8 +3864,10 @@ int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) +@@ -3865,8 +3870,10 @@ int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) { struct cftype *cft; @@ -139419,7 +139666,7 @@ index 86cb5c6..2b03272 100644 return cgroup_add_cftypes(ss, cfts); } -@@ -3876,8 +3883,10 @@ int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) +@@ -3882,8 +3889,10 @@ int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) { struct cftype *cft; @@ -139431,17 +139678,17 @@ index 86cb5c6..2b03272 100644 return cgroup_add_cftypes(ss, cfts); } -@@ -6044,6 +6053,9 @@ static void cgroup_release_agent(struct work_struct *work) +@@ -6048,6 +6057,9 @@ static void cgroup_release_agent(struct work_struct *work) if (!pathbuf || !agentbuf) goto out; + if (agentbuf[0] == '\0') + goto out; + - spin_lock_bh(&css_set_lock); + spin_lock_irq(&css_set_lock); path = cgroup_path_ns_locked(cgrp, pathbuf, PATH_MAX, &init_cgroup_ns); - spin_unlock_bh(&css_set_lock); -@@ -6463,7 +6475,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v) + spin_unlock_irq(&css_set_lock); +@@ -6467,7 +6479,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v) struct task_struct *task; int count = 0; @@ -139859,11 +140106,24 @@ index 2a20c0d..3eb7d03 100644 #ifdef CONFIG_MODULE_UNLOAD { +diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c +index 179ef46..8d030ca 100644 +--- a/kernel/events/callchain.c ++++ b/kernel/events/callchain.c +@@ -241,7 +241,7 @@ int perf_event_max_stack_handler(struct ctl_table *table, int write, + { + int *value = table->data; + int new_value = *value, ret; +- struct ctl_table new_table = *table; ++ ctl_table_no_const new_table = *table; + + new_table.data = &new_value; + ret = proc_dointvec_minmax(&new_table, write, buffer, lenp, ppos); diff --git a/kernel/events/core.c b/kernel/events/core.c -index a69c90c..9344bfe 100644 +index 43d43a2d..45eaa14 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c -@@ -350,8 +350,15 @@ static struct srcu_struct pmus_srcu; +@@ -352,8 +352,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 @@ -139880,7 +140140,7 @@ index a69c90c..9344bfe 100644 /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ -@@ -499,7 +506,7 @@ void perf_sample_event_took(u64 sample_len_ns) +@@ -501,7 +508,7 @@ void perf_sample_event_took(u64 sample_len_ns) } } @@ -139889,7 +140149,7 @@ index a69c90c..9344bfe 100644 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, enum event_type_t event_type); -@@ -965,8 +972,9 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu) +@@ -967,8 +974,9 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu) timer->function = perf_mux_hrtimer_handler; } @@ -139900,7 +140160,7 @@ index a69c90c..9344bfe 100644 struct hrtimer *timer = &cpuctx->hrtimer; struct pmu *pmu = cpuctx->ctx.pmu; unsigned long flags; -@@ -2910,7 +2918,7 @@ void __perf_event_task_sched_in(struct task_struct *prev, +@@ -3044,7 +3052,7 @@ void __perf_event_task_sched_in(struct task_struct *prev, perf_pmu_sched_task(prev, task, true); } @@ -139909,7 +140169,7 @@ index a69c90c..9344bfe 100644 { u64 frequency = event->attr.sample_freq; u64 sec = NSEC_PER_SEC; -@@ -3963,9 +3971,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) +@@ -4090,9 +4098,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) total += perf_event_count(event); *enabled += event->total_time_enabled + @@ -139921,7 +140181,7 @@ index a69c90c..9344bfe 100644 list_for_each_entry(child, &event->child_list, child_list) { (void)perf_event_read(child, false); -@@ -3997,12 +4005,12 @@ static int __perf_read_group_add(struct perf_event *leader, +@@ -4124,12 +4132,12 @@ static int __perf_read_group_add(struct perf_event *leader, */ if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { values[n++] += leader->total_time_enabled + @@ -139936,7 +140196,7 @@ index a69c90c..9344bfe 100644 } /* -@@ -4512,10 +4520,10 @@ void perf_event_update_userpage(struct perf_event *event) +@@ -4652,10 +4660,10 @@ void perf_event_update_userpage(struct perf_event *event) userpg->offset -= local64_read(&event->hw.prev_count); userpg->time_enabled = enabled + @@ -139949,7 +140209,7 @@ index a69c90c..9344bfe 100644 arch_perf_update_userpage(event, userpg, now); -@@ -5190,7 +5198,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, +@@ -5344,7 +5352,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, /* Data. */ sp = perf_user_stack_pointer(regs); @@ -139958,7 +140218,7 @@ index a69c90c..9344bfe 100644 dyn_size = dump_size - rem; perf_output_skip(handle, rem); -@@ -5281,11 +5289,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, +@@ -5435,11 +5443,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 + @@ -139972,7 +140232,7 @@ index a69c90c..9344bfe 100644 } if (read_format & PERF_FORMAT_ID) values[n++] = primary_event_id(event); -@@ -7594,8 +7602,7 @@ perf_event_mux_interval_ms_store(struct device *dev, +@@ -8391,8 +8399,7 @@ perf_event_mux_interval_ms_store(struct device *dev, cpuctx = per_cpu_ptr(pmu->pmu_cpu_context, cpu); cpuctx->hrtimer_interval = ns_to_ktime(NSEC_PER_MSEC * timer); @@ -139982,7 +140242,7 @@ index a69c90c..9344bfe 100644 } put_online_cpus(); mutex_unlock(&mux_interval_mutex); -@@ -7983,7 +7990,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, +@@ -8809,7 +8816,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)); @@ -139991,7 +140251,7 @@ index a69c90c..9344bfe 100644 event->state = PERF_EVENT_STATE_INACTIVE; -@@ -8345,6 +8352,11 @@ SYSCALL_DEFINE5(perf_event_open, +@@ -9200,6 +9207,11 @@ SYSCALL_DEFINE5(perf_event_open, if (flags & ~PERF_FLAG_ALL) return -EINVAL; @@ -140003,7 +140263,7 @@ index a69c90c..9344bfe 100644 err = perf_copy_attr(attr_uptr, &attr); if (err) return err; -@@ -8859,10 +8871,10 @@ static void sync_child_event(struct perf_event *child_event, +@@ -9714,10 +9726,10 @@ static void sync_child_event(struct perf_event *child_event, /* * Add back the child's count to the parent's count: */ @@ -140018,10 +140278,10 @@ index a69c90c..9344bfe 100644 } diff --git a/kernel/events/internal.h b/kernel/events/internal.h -index 4199b6d..a4bfd7e 100644 +index 05f9f6d..d619202 100644 --- a/kernel/events/internal.h +++ b/kernel/events/internal.h -@@ -115,10 +115,10 @@ static inline unsigned long perf_aux_size(struct ring_buffer *rb) +@@ -123,10 +123,10 @@ static inline unsigned long perf_aux_size(struct ring_buffer *rb) return rb->aux_nr_pages << PAGE_SHIFT; } @@ -140034,7 +140294,7 @@ index 4199b6d..a4bfd7e 100644 { \ unsigned long size, written; \ \ -@@ -151,7 +151,7 @@ memcpy_common(void *dst, const void *src, unsigned long n) +@@ -159,7 +159,7 @@ memcpy_common(void *dst, const void *src, unsigned long n) return 0; } @@ -140043,7 +140303,7 @@ index 4199b6d..a4bfd7e 100644 static inline unsigned long memcpy_skip(void *dst, const void *src, unsigned long n) -@@ -159,7 +159,7 @@ memcpy_skip(void *dst, const void *src, unsigned long n) +@@ -167,7 +167,7 @@ memcpy_skip(void *dst, const void *src, unsigned long n) return 0; } @@ -140052,7 +140312,7 @@ index 4199b6d..a4bfd7e 100644 #ifndef arch_perf_out_copy_user #define arch_perf_out_copy_user arch_perf_out_copy_user -@@ -177,7 +177,7 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n) +@@ -185,7 +185,7 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n) } #endif @@ -140062,10 +140322,10 @@ index 4199b6d..a4bfd7e 100644 /* Callchain handling */ extern struct perf_callchain_entry * diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c -index 7edc95e..1313732 100644 +index b7a525a..6fe00ea 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c -@@ -1691,7 +1691,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr) +@@ -1694,7 +1694,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr) { struct page *page; uprobe_opcode_t opcode; @@ -140073,9 +140333,9 @@ index 7edc95e..1313732 100644 + long result; pagefault_disable(); - result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr, + result = __get_user(opcode, (uprobe_opcode_t __user *)vaddr); diff --git a/kernel/exit.c b/kernel/exit.c -index 79c7e38..e8a4ef023 100644 +index 9e6e135..4af378d 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -170,6 +170,10 @@ void release_task(struct task_struct *p) @@ -140247,29 +140507,29 @@ index 79c7e38..e8a4ef023 100644 if (wo->wo_flags & __WNOTHREAD) break; diff --git a/kernel/fork.c b/kernel/fork.c -index d277e83..824b594 100644 +index 4a7ec0c..c49705c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -197,12 +197,55 @@ static void free_thread_info(struct thread_info *ti) - void thread_info_cache_init(void) +@@ -197,12 +197,55 @@ static void free_thread_stack(unsigned long *stack) + void thread_stack_cache_init(void) { - thread_info_cache = kmem_cache_create("thread_info", THREAD_SIZE, + thread_stack_cache = kmem_cache_create("thread_stack", THREAD_SIZE, - THREAD_SIZE, 0, NULL); + THREAD_SIZE, SLAB_USERCOPY, NULL); - BUG_ON(thread_info_cache == NULL); + BUG_ON(thread_stack_cache == NULL); } # endif #endif +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW -+static inline struct thread_info *gr_alloc_thread_info_node(struct task_struct *tsk, ++static inline unsigned long *gr_alloc_thread_stack_node(struct task_struct *tsk, + int node, void **lowmem_stack) +{ + struct page *pages[THREAD_SIZE / PAGE_SIZE]; + void *ret = NULL; + unsigned int i; + -+ *lowmem_stack = alloc_thread_info_node(tsk, node); ++ *lowmem_stack = alloc_thread_stack_node(tsk, node); + if (*lowmem_stack == NULL) + goto out; + @@ -140279,7 +140539,7 @@ index d277e83..824b594 100644 + /* use VM_IOREMAP to gain THREAD_SIZE alignment */ + ret = vmap(pages, THREAD_SIZE / PAGE_SIZE, VM_IOREMAP, PAGE_KERNEL); + if (ret == NULL) { -+ free_thread_info(*lowmem_stack); ++ free_thread_stack(*lowmem_stack); + *lowmem_stack = NULL; + } else + populate_stack(ret); @@ -140288,19 +140548,19 @@ index d277e83..824b594 100644 + return ret; +} + -+static inline void gr_free_thread_info(struct task_struct *tsk, struct thread_info *ti) ++static inline void gr_free_thread_stack(struct task_struct *tsk, unsigned long *stack) +{ + unmap_process_stacks(tsk); +} +#else -+static inline struct thread_info *gr_alloc_thread_info_node(struct task_struct *tsk, ++static inline unsigned long *gr_alloc_thread_stack_node(struct task_struct *tsk, + int node, void **lowmem_stack) +{ -+ return alloc_thread_info_node(tsk, node); ++ return alloc_thread_stack_node(tsk, node); +} -+static inline void gr_free_thread_info(struct task_struct *tsk, struct thread_info *ti) ++static inline void gr_free_thread_stack(struct task_struct *tsk, unsigned long *stack) +{ -+ free_thread_info(ti); ++ free_thread_stack(stack); +} +#endif + @@ -140311,13 +140571,13 @@ index d277e83..824b594 100644 /* SLAB cache for mm_struct structures (tsk->mm) */ static struct kmem_cache *mm_cachep; --static void account_kernel_stack(struct thread_info *ti, int account) -+static void account_kernel_stack(struct task_struct *tsk, struct thread_info *ti, int account) +-static void account_kernel_stack(unsigned long *stack, int account) ++static void account_kernel_stack(struct task_struct *tsk, unsigned long *stack, int account) { +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW + struct zone *zone = page_zone(virt_to_page(tsk->lowmem_stack)); +#else - struct zone *zone = page_zone(virt_to_page(ti)); + struct zone *zone = page_zone(virt_to_page(stack)); +#endif mod_zone_page_state(zone, NR_KERNEL_STACK, account); @@ -140327,9 +140587,9 @@ index d277e83..824b594 100644 { - account_kernel_stack(tsk->stack, -1); + account_kernel_stack(tsk, tsk->stack, -1); - arch_release_thread_info(tsk->stack); -- free_thread_info(tsk->stack); -+ gr_free_thread_info(tsk, tsk->stack); + arch_release_thread_stack(tsk->stack); +- free_thread_stack(tsk->stack); ++ gr_free_thread_stack(tsk, tsk->stack); rt_mutex_debug_task_free(tsk); ftrace_graph_exit_task(tsk); put_seccomp_filter(tsk); @@ -140342,34 +140602,35 @@ index d277e83..824b594 100644 #endif void __init fork_init(void) -@@ -344,6 +391,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -344,6 +391,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) { struct task_struct *tsk; - struct thread_info *ti; + unsigned long *stack; + void *lowmem_stack; - int node = tsk_fork_get_node(orig); int err; -@@ -351,7 +399,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) + if (node == NUMA_NO_NODE) +@@ -352,7 +400,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) if (!tsk) return NULL; -- ti = alloc_thread_info_node(tsk, node); -+ ti = gr_alloc_thread_info_node(tsk, node, &lowmem_stack); - if (!ti) +- stack = alloc_thread_stack_node(tsk, node); ++ stack = gr_alloc_thread_stack_node(tsk, node, &lowmem_stack); + if (!stack) goto free_tsk; -@@ -360,6 +408,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) - goto free_ti; +@@ -361,6 +409,10 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) + goto free_stack; - tsk->stack = ti; + tsk->stack = stack; +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW + tsk->lowmem_stack = lowmem_stack; +#endif ++ #ifdef CONFIG_SECCOMP /* * We must handle setting up seccomp filters once we're under -@@ -376,7 +427,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -377,7 +429,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) set_task_stack_end_magic(tsk); #ifdef CONFIG_CC_STACKPROTECTOR @@ -140378,20 +140639,20 @@ index d277e83..824b594 100644 #endif /* -@@ -391,26 +442,92 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -392,26 +444,92 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) tsk->task_frag.page = NULL; tsk->wake_q.next = NULL; -- account_kernel_stack(ti, 1); -+ account_kernel_stack(tsk, ti, 1); +- account_kernel_stack(stack, 1); ++ account_kernel_stack(tsk, stack, 1); kcov_task_init(tsk); return tsk; - free_ti: -- free_thread_info(ti); -+ gr_free_thread_info(tsk, ti); + free_stack: +- free_thread_stack(stack); ++ gr_free_thread_stack(tsk, stack); free_tsk: free_task_struct(tsk); return NULL; @@ -140474,8 +140735,8 @@ index d277e83..824b594 100644 - unsigned long charge; uprobe_start_dup_mmap(); - down_write(&oldmm->mmap_sem); -@@ -441,52 +558,14 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) + if (down_write_killable(&oldmm->mmap_sem)) { +@@ -445,52 +563,14 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) prev = NULL; for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) { @@ -140532,7 +140793,7 @@ index d277e83..824b594 100644 } /* -@@ -518,6 +597,38 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +@@ -522,6 +602,38 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) if (retval) goto out; } @@ -140571,8 +140832,8 @@ index d277e83..824b594 100644 /* a new mm has just been created */ arch_dup_mmap(oldmm, mm); retval = 0; -@@ -527,14 +638,6 @@ out: - up_write(&oldmm->mmap_sem); +@@ -532,14 +644,6 @@ out: + fail_uprobe_end: uprobe_end_dup_mmap(); return retval; -fail_nomem_anon_vma_fork: @@ -140586,7 +140847,7 @@ index d277e83..824b594 100644 } static inline int mm_alloc_pgd(struct mm_struct *mm) -@@ -809,8 +912,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) +@@ -836,8 +940,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) return ERR_PTR(err); mm = get_task_mm(task); @@ -140597,7 +140858,7 @@ index d277e83..824b594 100644 mmput(mm); mm = ERR_PTR(-EACCES); } -@@ -1011,13 +1114,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) +@@ -1038,13 +1142,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) spin_unlock(&fs->lock); return -EAGAIN; } @@ -140619,7 +140880,7 @@ index d277e83..824b594 100644 return 0; } -@@ -1250,7 +1360,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid) +@@ -1277,7 +1388,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. */ @@ -140628,7 +140889,7 @@ index d277e83..824b594 100644 unsigned long stack_start, unsigned long stack_size, int __user *child_tidptr, -@@ -1321,6 +1431,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, +@@ -1349,6 +1460,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); #endif retval = -EAGAIN; @@ -140638,7 +140899,7 @@ index d277e83..824b594 100644 if (atomic_read(&p->real_cred->user->processes) >= task_rlimit(p, RLIMIT_NPROC)) { if (p->real_cred->user != INIT_USER && -@@ -1579,6 +1692,16 @@ static struct task_struct *copy_process(unsigned long clone_flags, +@@ -1607,6 +1721,16 @@ static struct task_struct *copy_process(unsigned long clone_flags, goto bad_fork_cancel_cgroup; } @@ -140655,7 +140916,7 @@ index d277e83..824b594 100644 if (likely(p->pid)) { ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); -@@ -1668,6 +1791,8 @@ bad_fork_cleanup_count: +@@ -1698,6 +1822,8 @@ bad_fork_cleanup_count: bad_fork_free: free_task(p); fork_out: @@ -140664,15 +140925,15 @@ index d277e83..824b594 100644 return ERR_PTR(retval); } -@@ -1730,6 +1855,7 @@ long _do_fork(unsigned long clone_flags, +@@ -1761,6 +1887,7 @@ long _do_fork(unsigned long clone_flags, p = copy_process(clone_flags, stack_start, stack_size, - child_tidptr, NULL, trace, tls); + child_tidptr, NULL, trace, tls, NUMA_NO_NODE); + add_latent_entropy(); /* * Do this prior waking up the new thread - the thread pointer * might get invalid after that point, if the thread exits quickly. -@@ -1746,6 +1872,8 @@ long _do_fork(unsigned long clone_flags, +@@ -1777,6 +1904,8 @@ long _do_fork(unsigned long clone_flags, if (clone_flags & CLONE_PARENT_SETTID) put_user(nr, parent_tidptr); @@ -140681,7 +140942,7 @@ index d277e83..824b594 100644 if (clone_flags & CLONE_VFORK) { p->vfork_done = &vfork; init_completion(&vfork); -@@ -1882,7 +2010,7 @@ void __init proc_caches_init(void) +@@ -1913,7 +2042,7 @@ void __init proc_caches_init(void) sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK|SLAB_ACCOUNT, NULL); @@ -140690,7 +140951,7 @@ index d277e83..824b594 100644 mmap_init(); nsproxy_cache_init(); } -@@ -1930,7 +2058,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) +@@ -1961,7 +2090,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 */ @@ -140699,7 +140960,7 @@ index d277e83..824b594 100644 return 0; *new_fsp = copy_fs_struct(fs); -@@ -2043,7 +2171,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) +@@ -2074,7 +2203,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) fs = current->fs; spin_lock(&fs->lock); current->fs = new_fs; @@ -140709,7 +140970,7 @@ index d277e83..824b594 100644 new_fs = NULL; else new_fs = fs; -@@ -2107,7 +2236,7 @@ int unshare_files(struct files_struct **displaced) +@@ -2138,7 +2268,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) { @@ -140719,7 +140980,7 @@ index d277e83..824b594 100644 int threads = max_threads; int min = MIN_THREADS; diff --git a/kernel/futex.c b/kernel/futex.c -index 6555d54..4c66189 100644 +index 33664f7..14f5cdc 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -202,7 +202,7 @@ struct futex_pi_state { @@ -140752,15 +141013,6 @@ index 6555d54..4c66189 100644 /* * The futex address must be "naturally" aligned. */ -@@ -734,7 +739,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr, - - static int get_futex_value_locked(u32 *dest, u32 __user *from) - { -- int ret; -+ unsigned long ret; - - pagefault_disable(); - ret = __copy_from_user_inatomic(dest, from, sizeof(u32)); @@ -3249,6 +3254,7 @@ static void __init futex_detect_cmpxchg(void) { #ifndef CONFIG_HAVE_FUTEX_CMPXCHG @@ -140795,7 +141047,7 @@ index 4ae3232..5adee02 100644 { compat_uptr_t base = ptr_to_compat(entry); diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index cc1cc64..e7b7276 100644 +index ef0bc02..2c983f5 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -956,7 +956,7 @@ static int irq_thread(void *data) @@ -141031,10 +141283,10 @@ index 3a47fa9..bcb17e3 100644 /* diff --git a/kernel/kexec.c b/kernel/kexec.c -index ee70aef..55095dd 100644 +index 4384672..505eb0f 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c -@@ -224,7 +224,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry, +@@ -235,7 +235,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry, compat_ulong_t, flags) { struct compat_kexec_segment in; @@ -141045,7 +141297,7 @@ index ee70aef..55095dd 100644 /* Don't allow clients that don't understand the native diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c -index 1391d3e..8681634 100644 +index 56b3ed0..f4ef481 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -850,7 +850,7 @@ int kimage_load_segment(struct kimage *image, @@ -141335,10 +141587,10 @@ index 152da4a..4ab2150 100644 .name = "notes", .mode = S_IRUGO, diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index 78c1c0e..5c173df 100644 +index 81f1a71..af5e34d 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -597,6 +597,10 @@ static int static_obj(void *obj) +@@ -598,6 +598,10 @@ static int static_obj(void *obj) end = (unsigned long) &_end, addr = (unsigned long) obj; @@ -141349,7 +141601,7 @@ index 78c1c0e..5c173df 100644 /* * static variable? */ -@@ -727,6 +731,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) +@@ -728,6 +732,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"); @@ -141357,7 +141609,7 @@ index 78c1c0e..5c173df 100644 printk("the code is fine but needs lockdep annotation.\n"); printk("turning off the locking correctness validator.\n"); dump_stack(); -@@ -3225,7 +3230,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, +@@ -3226,7 +3231,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (!class) return 0; } @@ -141415,87 +141667,8 @@ index a0f61ef..b6aef3c 100644 (void *)class->contending_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contending_point[i], -diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c -index 3ef3736..9c951fa 100644 ---- a/kernel/locking/mutex-debug.c -+++ b/kernel/locking/mutex-debug.c -@@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter) - } - - void debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, -- struct thread_info *ti) -+ struct task_struct *task) - { - SMP_DEBUG_LOCKS_WARN_ON(!spin_is_locked(&lock->wait_lock)); - - /* Mark the current thread as blocked on the lock: */ -- ti->task->blocked_on = waiter; -+ task->blocked_on = waiter; - } - - void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, -- struct thread_info *ti) -+ struct task_struct *task) - { - DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list)); -- DEBUG_LOCKS_WARN_ON(waiter->task != ti->task); -- DEBUG_LOCKS_WARN_ON(ti->task->blocked_on != waiter); -- ti->task->blocked_on = NULL; -+ DEBUG_LOCKS_WARN_ON(waiter->task != task); -+ DEBUG_LOCKS_WARN_ON(task->blocked_on != waiter); -+ task->blocked_on = NULL; - - list_del_init(&waiter->list); - waiter->task = NULL; -diff --git a/kernel/locking/mutex-debug.h b/kernel/locking/mutex-debug.h -index 0799fd3..d06ae3b 100644 ---- a/kernel/locking/mutex-debug.h -+++ b/kernel/locking/mutex-debug.h -@@ -20,9 +20,9 @@ extern void debug_mutex_wake_waiter(struct mutex *lock, - extern void debug_mutex_free_waiter(struct mutex_waiter *waiter); - extern void debug_mutex_add_waiter(struct mutex *lock, - struct mutex_waiter *waiter, -- struct thread_info *ti); -+ struct task_struct *task); - extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, -- struct thread_info *ti); -+ struct task_struct *task); - extern void debug_mutex_unlock(struct mutex *lock); - 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 79d2d76..a70b90d 100644 ---- a/kernel/locking/mutex.c -+++ b/kernel/locking/mutex.c -@@ -537,7 +537,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, - goto skip_wait; - - debug_mutex_lock_common(lock, &waiter); -- debug_mutex_add_waiter(lock, &waiter, task_thread_info(task)); -+ debug_mutex_add_waiter(lock, &waiter, task); - - /* add waiting tasks to the end of the waitqueue (FIFO): */ - list_add_tail(&waiter.list, &lock->wait_list); -@@ -584,7 +584,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, - } - __set_task_state(task, TASK_RUNNING); - -- mutex_remove_waiter(lock, &waiter, current_thread_info()); -+ mutex_remove_waiter(lock, &waiter, task); - /* set it to 0 if there are no waiters left: */ - if (likely(list_empty(&lock->wait_list))) - atomic_set(&lock->count, 0); -@@ -605,7 +605,7 @@ skip_wait: - return 0; - - err: -- mutex_remove_waiter(lock, &waiter, task_thread_info(task)); -+ mutex_remove_waiter(lock, &waiter, task); - spin_unlock_mutex(&lock->wait_lock, flags); - debug_mutex_free_waiter(&waiter); - mutex_release(&lock->dep_map, 1, ip); diff --git a/kernel/module.c b/kernel/module.c -index 041200c..9a19b8c 100644 +index 5f71aa6..cae0865 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -60,6 +60,7 @@ @@ -141834,7 +142007,7 @@ index 041200c..9a19b8c 100644 static void module_enable_nx(const struct module *mod) { } static void module_disable_nx(const struct module *mod) { } #endif -@@ -2025,16 +2093,19 @@ static void free_module(struct module *mod) +@@ -2105,16 +2173,19 @@ static void free_module(struct module *mod) /* This may be empty, but that's OK */ disable_ro_nx(&mod->init_layout); module_arch_freeing_init(mod); @@ -141857,7 +142030,7 @@ index 041200c..9a19b8c 100644 #ifdef CONFIG_MPU update_protections(current->mm); -@@ -2103,9 +2174,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) +@@ -2183,9 +2254,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) int ret = 0; const struct kernel_symbol *ksym; @@ -141889,7 +142062,7 @@ index 041200c..9a19b8c 100644 switch (sym[i].st_shndx) { case SHN_COMMON: /* Ignore common symbols */ -@@ -2130,7 +2223,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) +@@ -2214,7 +2307,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) ksym = resolve_symbol_wait(mod, info, name); /* Ok if resolved. */ if (ksym && !IS_ERR(ksym)) { @@ -141899,7 +142072,7 @@ index 041200c..9a19b8c 100644 break; } -@@ -2149,11 +2244,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) +@@ -2233,11 +2328,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) secbase = (unsigned long)mod_percpu(mod); else secbase = info->sechdrs[sym[i].st_shndx].sh_addr; @@ -141920,7 +142093,7 @@ index 041200c..9a19b8c 100644 return ret; } -@@ -2237,22 +2341,12 @@ static void layout_sections(struct module *mod, struct load_info *info) +@@ -2325,22 +2429,12 @@ static void layout_sections(struct module *mod, struct load_info *info) || s->sh_entsize != ~0UL || strstarts(sname, ".init")) continue; @@ -141947,7 +142120,7 @@ index 041200c..9a19b8c 100644 } pr_debug("Init section allocation order:\n"); -@@ -2266,23 +2360,13 @@ static void layout_sections(struct module *mod, struct load_info *info) +@@ -2354,23 +2448,13 @@ static void layout_sections(struct module *mod, struct load_info *info) || s->sh_entsize != ~0UL || !strstarts(sname, ".init")) continue; @@ -141976,7 +142149,7 @@ index 041200c..9a19b8c 100644 } } -@@ -2460,7 +2544,7 @@ static void layout_symtab(struct module *mod, struct load_info *info) +@@ -2548,7 +2632,7 @@ static void layout_symtab(struct module *mod, struct load_info *info) /* Put symbol section at end of init part of module. */ symsect->sh_flags |= SHF_ALLOC; @@ -141985,7 +142158,7 @@ index 041200c..9a19b8c 100644 info->index.sym) | INIT_OFFSET_MASK; pr_debug("\t%s\n", info->secstrings + symsect->sh_name); -@@ -2478,23 +2562,23 @@ static void layout_symtab(struct module *mod, struct load_info *info) +@@ -2566,23 +2650,23 @@ static void layout_symtab(struct module *mod, struct load_info *info) } /* Append room for core symbols at end of core part. */ @@ -142018,7 +142191,7 @@ index 041200c..9a19b8c 100644 } /* -@@ -2511,7 +2595,9 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) +@@ -2599,7 +2683,9 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) Elf_Shdr *symsec = &info->sechdrs[info->index.sym]; /* Set up to point into init section. */ @@ -142029,7 +142202,7 @@ index 041200c..9a19b8c 100644 mod->kallsyms->symtab = (void *)symsec->sh_addr; mod->kallsyms->num_symtab = symsec->sh_size / sizeof(Elf_Sym); -@@ -2524,8 +2610,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) +@@ -2612,8 +2698,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) = elf_type(&mod->kallsyms->symtab[i], info); /* Now populate the cut down core kallsyms for after init. */ @@ -142039,8 +142212,8 @@ index 041200c..9a19b8c 100644 + mod->core_kallsyms.strtab = s = mod->core_layout.base_rx + info->stroffs; src = mod->kallsyms->symtab; for (ndst = i = 0; i < mod->kallsyms->num_symtab; i++) { - if (i == 0 || -@@ -2538,6 +2624,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) + if (i == 0 || is_livepatch_module(mod) || +@@ -2626,6 +2712,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) } } mod->core_kallsyms.num_symtab = ndst; @@ -142049,7 +142222,7 @@ index 041200c..9a19b8c 100644 } #else static inline void layout_symtab(struct module *mod, struct load_info *info) -@@ -2780,7 +2868,15 @@ static struct module *setup_load_info(struct load_info *info, int flags) +@@ -2888,7 +2976,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) { @@ -142065,7 +142238,7 @@ index 041200c..9a19b8c 100644 return ERR_PTR(-ENOEXEC); } -@@ -2796,8 +2892,16 @@ static struct module *setup_load_info(struct load_info *info, int flags) +@@ -2904,8 +3000,16 @@ 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"); @@ -142082,8 +142255,8 @@ index 041200c..9a19b8c 100644 if (flags & MODULE_INIT_IGNORE_VERMAGIC) modmagic = NULL; -@@ -2822,7 +2926,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) - } +@@ -2934,7 +3038,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) + return err; /* Set up license info based on the info section */ - set_license(mod, get_modinfo(info, "license")); @@ -142091,7 +142264,7 @@ index 041200c..9a19b8c 100644 return 0; } -@@ -2919,7 +3023,7 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -3031,7 +3135,7 @@ static int move_module(struct module *mod, struct load_info *info) void *ptr; /* Do the allocs. */ @@ -142100,7 +142273,7 @@ index 041200c..9a19b8c 100644 /* * The pointer to this block is stored in the module structure * which is inside the block. Just mark it as not being a -@@ -2929,11 +3033,11 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -3041,11 +3145,11 @@ static int move_module(struct module *mod, struct load_info *info) if (!ptr) return -ENOMEM; @@ -142116,7 +142289,7 @@ index 041200c..9a19b8c 100644 /* * The pointer to this block is stored in the module structure * which is inside the block. This block doesn't need to be -@@ -2942,13 +3046,45 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -3054,13 +3158,45 @@ static int move_module(struct module *mod, struct load_info *info) */ kmemleak_ignore(ptr); if (!ptr) { @@ -142166,7 +142339,7 @@ index 041200c..9a19b8c 100644 /* Transfer each section which specifies SHF_ALLOC */ pr_debug("final section addresses:\n"); -@@ -2959,16 +3095,45 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -3071,16 +3207,45 @@ static int move_module(struct module *mod, struct load_info *info) if (!(shdr->sh_flags & SHF_ALLOC)) continue; @@ -142219,7 +142392,7 @@ index 041200c..9a19b8c 100644 pr_debug("\t0x%lx %s\n", (long)shdr->sh_addr, info->secstrings + shdr->sh_name); } -@@ -3025,12 +3190,12 @@ static void flush_module_icache(const struct module *mod) +@@ -3137,12 +3302,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. */ @@ -142238,7 +142411,7 @@ index 041200c..9a19b8c 100644 set_fs(old_fs); } -@@ -3088,8 +3253,10 @@ static void module_deallocate(struct module *mod, struct load_info *info) +@@ -3200,8 +3365,10 @@ static void module_deallocate(struct module *mod, struct load_info *info) { percpu_modfree(mod); module_arch_freeing_init(mod); @@ -142251,7 +142424,7 @@ index 041200c..9a19b8c 100644 } int __weak module_finalize(const Elf_Ehdr *hdr, -@@ -3102,7 +3269,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, +@@ -3214,7 +3381,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. */ @@ -142261,7 +142434,7 @@ index 041200c..9a19b8c 100644 /* Copy relocated percpu area over. */ percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, -@@ -3150,13 +3319,15 @@ static void do_mod_ctors(struct module *mod) +@@ -3262,13 +3431,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; @@ -142279,7 +142452,7 @@ index 041200c..9a19b8c 100644 kfree(m); } -@@ -3176,7 +3347,8 @@ static noinline int do_init_module(struct module *mod) +@@ -3288,7 +3459,8 @@ static noinline int do_init_module(struct module *mod) ret = -ENOMEM; goto fail; } @@ -142289,7 +142462,7 @@ index 041200c..9a19b8c 100644 /* * We want to find out whether @mod uses async during init. Clear -@@ -3235,10 +3407,10 @@ static noinline int do_init_module(struct module *mod) +@@ -3347,10 +3519,10 @@ static noinline int do_init_module(struct module *mod) mod_tree_remove_init(mod); disable_ro_nx(&mod->init_layout); module_arch_freeing_init(mod); @@ -142304,7 +142477,7 @@ index 041200c..9a19b8c 100644 /* * We want to free module_init, but be aware that kallsyms may be * walking this with preempt disabled. In all the failure paths, we -@@ -3438,9 +3610,38 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3550,9 +3722,38 @@ static int load_module(struct load_info *info, const char __user *uargs, if (err) goto free_unload; @@ -142343,7 +142516,7 @@ index 041200c..9a19b8c 100644 /* Fix up syms, so that st_value is a pointer to location. */ err = simplify_symbols(mod, info); if (err < 0) -@@ -3456,13 +3657,6 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3568,13 +3769,6 @@ static int load_module(struct load_info *info, const char __user *uargs, flush_module_icache(mod); @@ -142357,7 +142530,7 @@ index 041200c..9a19b8c 100644 dynamic_debug_setup(info->debug, info->num_debug); /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */ -@@ -3520,11 +3714,10 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3639,11 +3833,10 @@ static int load_module(struct load_info *info, const char __user *uargs, ddebug_cleanup: dynamic_debug_remove(info->debug); synchronize_sched(); @@ -142370,7 +142543,7 @@ index 041200c..9a19b8c 100644 free_unload: module_unload_free(mod); unlink_mod: -@@ -3544,7 +3737,8 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3663,7 +3856,8 @@ static int load_module(struct load_info *info, const char __user *uargs, */ ftrace_release_mod(mod); /* Free lock-classes; relies on the preceding sync_rcu() */ @@ -142380,7 +142553,7 @@ index 041200c..9a19b8c 100644 module_deallocate(mod, info); free_copy: -@@ -3632,10 +3826,16 @@ static const char *get_ksymbol(struct module *mod, +@@ -3751,10 +3945,16 @@ static const char *get_ksymbol(struct module *mod, struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms); /* At worse, next value is at end of module */ @@ -142400,7 +142573,7 @@ index 041200c..9a19b8c 100644 /* Scan for closest preceding symbol, and next symbol. (ELF starts real symbols at 1). */ -@@ -3888,7 +4088,7 @@ static int m_show(struct seq_file *m, void *p) +@@ -4007,7 +4207,7 @@ static int m_show(struct seq_file *m, void *p) return 0; seq_printf(m, "%s %u", @@ -142409,7 +142582,7 @@ index 041200c..9a19b8c 100644 print_unload_info(m, mod); /* Informative for users. */ -@@ -3897,7 +4097,7 @@ static int m_show(struct seq_file *m, void *p) +@@ -4016,7 +4216,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. */ @@ -142418,7 +142591,7 @@ index 041200c..9a19b8c 100644 /* Taints info */ if (mod->taints) -@@ -3933,7 +4133,17 @@ static const struct file_operations proc_modules_operations = { +@@ -4052,7 +4252,17 @@ static const struct file_operations proc_modules_operations = { static int __init proc_modules_init(void) { @@ -142436,7 +142609,7 @@ index 041200c..9a19b8c 100644 return 0; } module_init(proc_modules_init); -@@ -3994,7 +4204,8 @@ struct module *__module_address(unsigned long addr) +@@ -4113,7 +4323,8 @@ struct module *__module_address(unsigned long addr) { struct module *mod; @@ -142446,7 +142619,7 @@ index 041200c..9a19b8c 100644 return NULL; module_assert_mutex_or_preempt(); -@@ -4037,11 +4248,21 @@ bool is_module_text_address(unsigned long addr) +@@ -4156,11 +4367,21 @@ bool is_module_text_address(unsigned long addr) */ struct module *__module_text_address(unsigned long addr) { @@ -142528,7 +142701,7 @@ index fd2c9ac..6263e05 100644 return -ENOENT; } diff --git a/kernel/padata.c b/kernel/padata.c -index b38bea9..91acfbe 100644 +index 9932788..7052e20 100644 --- a/kernel/padata.c +++ b/kernel/padata.c @@ -54,7 +54,7 @@ static int padata_cpu_hash(struct parallel_data *pd) @@ -142550,7 +142723,7 @@ index b38bea9..91acfbe 100644 atomic_set(&pd->refcnt, 0); pd->pinst = pinst; diff --git a/kernel/panic.c b/kernel/panic.c -index 535c965..6d159a4 100644 +index 8aa7449..9818394 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -56,7 +56,7 @@ EXPORT_SYMBOL(panic_blink); @@ -142562,7 +142735,7 @@ index 535c965..6d159a4 100644 { while (1) cpu_relax(); -@@ -483,11 +483,11 @@ void __warn(const char *file, int line, void *caller, unsigned taint, +@@ -487,11 +487,11 @@ void __warn(const char *file, int line, void *caller, unsigned taint, pr_warn("------------[ cut here ]------------\n"); if (file) @@ -142576,7 +142749,7 @@ index 535c965..6d159a4 100644 raw_smp_processor_id(), current->pid, caller); if (args) -@@ -518,7 +518,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, +@@ -522,7 +522,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, } #ifdef WANT_WARN_ON_SLOWPATH @@ -142585,7 +142758,7 @@ index 535c965..6d159a4 100644 { struct warn_args args; -@@ -530,7 +530,7 @@ void warn_slowpath_fmt(const char *file, int line, const char *fmt, ...) +@@ -534,7 +534,7 @@ void warn_slowpath_fmt(const char *file, int line, const char *fmt, ...) } EXPORT_SYMBOL(warn_slowpath_fmt); @@ -142594,7 +142767,7 @@ index 535c965..6d159a4 100644 unsigned taint, const char *fmt, ...) { struct warn_args args; -@@ -542,7 +542,7 @@ void warn_slowpath_fmt_taint(const char *file, int line, +@@ -546,7 +546,7 @@ void warn_slowpath_fmt_taint(const char *file, int line, } EXPORT_SYMBOL(warn_slowpath_fmt_taint); @@ -142603,7 +142776,7 @@ index 535c965..6d159a4 100644 { __warn(file, line, __builtin_return_address(0), TAINT_WARN, NULL, NULL); } -@@ -557,7 +557,8 @@ EXPORT_SYMBOL(warn_slowpath_null); +@@ -561,7 +561,8 @@ EXPORT_SYMBOL(warn_slowpath_null); */ __visible void __stack_chk_fail(void) { @@ -142614,7 +142787,7 @@ index 535c965..6d159a4 100644 } EXPORT_SYMBOL(__stack_chk_fail); diff --git a/kernel/pid.c b/kernel/pid.c -index 4d73a83..9df1950 100644 +index f66162f..e950a59 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -33,6 +33,7 @@ @@ -142715,7 +142888,7 @@ index 68d3ebc..82bb833 100644 select LZO_COMPRESS select LZO_DECOMPRESS diff --git a/kernel/power/process.c b/kernel/power/process.c -index df058be..42000ad 100644 +index 0c2ee97..63229a6 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -34,6 +34,7 @@ static int try_to_freeze_tasks(bool user_only) @@ -142758,10 +142931,10 @@ index df058be..42000ad 100644 if (pm_wakeup_pending()) { diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index bfbf284..d3f02ee 100644 +index 60cdf63..eab5721 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c -@@ -483,7 +483,7 @@ static int log_store(int facility, int level, +@@ -484,7 +484,7 @@ static int log_store(int facility, int level, return msg->text_len; } @@ -142770,7 +142943,7 @@ index bfbf284..d3f02ee 100644 static int syslog_action_restricted(int type) { -@@ -506,6 +506,11 @@ int check_syslog_permissions(int type, int source) +@@ -507,6 +507,11 @@ int check_syslog_permissions(int type, int source) if (source == SYSLOG_FROM_PROC && type != SYSLOG_ACTION_OPEN) goto ok; @@ -142993,13 +143166,13 @@ index d49bfa1..5eb9a32 100644 } diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c -index 250ea67..0ad5f45 100644 +index 084a28a..667eda7 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -132,12 +132,12 @@ static struct rcu_torture rcu_tortures[10 * RCU_TORTURE_PIPE_LEN]; static DEFINE_SPINLOCK(rcu_torture_lock); - static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) = { 0 }; - static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) = { 0 }; + static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count); + static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch); -static atomic_t rcu_torture_wcount[RCU_TORTURE_PIPE_LEN + 1]; -static atomic_t n_rcu_torture_alloc; -static atomic_t n_rcu_torture_alloc_fail; @@ -143074,7 +143247,7 @@ index 250ea67..0ad5f45 100644 old_rp->rtort_pipe_count++; switch (synctype[torture_random(&rand) % nsynctypes]) { case RTWS_DEF_FREE: -@@ -1127,7 +1127,7 @@ static void rcu_torture_timer(unsigned long unused) +@@ -1116,7 +1116,7 @@ static void rcu_torture_timer(unsigned long unused) return; } if (p->rtort_mbtest == 0) @@ -143083,7 +143256,7 @@ index 250ea67..0ad5f45 100644 spin_lock(&rand_lock); cur_ops->read_delay(&rand); n_rcu_torture_timers++; -@@ -1203,7 +1203,7 @@ rcu_torture_reader(void *arg) +@@ -1192,7 +1192,7 @@ rcu_torture_reader(void *arg) continue; } if (p->rtort_mbtest == 0) @@ -143092,7 +143265,7 @@ index 250ea67..0ad5f45 100644 cur_ops->read_delay(&rand); preempt_disable(); pipe_count = p->rtort_pipe_count; -@@ -1271,11 +1271,11 @@ rcu_torture_stats_print(void) +@@ -1260,11 +1260,11 @@ rcu_torture_stats_print(void) rcu_torture_current, rcu_torture_current_version, list_empty(&rcu_torture_freelist), @@ -143108,7 +143281,7 @@ index 250ea67..0ad5f45 100644 n_rcu_torture_boost_ktrerror, n_rcu_torture_boost_rterror); pr_cont("rtbf: %ld rtb: %ld nt: %ld ", -@@ -1287,17 +1287,17 @@ rcu_torture_stats_print(void) +@@ -1276,17 +1276,17 @@ rcu_torture_stats_print(void) n_barrier_successes, n_barrier_attempts, n_rcu_torture_barrier_error); @@ -143129,7 +143302,7 @@ index 250ea67..0ad5f45 100644 WARN_ON_ONCE(1); } pr_cont("Reader Pipe: "); -@@ -1314,7 +1314,7 @@ rcu_torture_stats_print(void) +@@ -1303,7 +1303,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++) { @@ -143138,7 +143311,7 @@ index 250ea67..0ad5f45 100644 } pr_cont("\n"); -@@ -1669,7 +1669,7 @@ rcu_torture_cleanup(void) +@@ -1660,7 +1660,7 @@ rcu_torture_cleanup(void) rcu_torture_stats_print(); /* -After- the stats thread is stopped! */ @@ -143147,7 +143320,7 @@ index 250ea67..0ad5f45 100644 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE"); else if (torture_onoff_failures()) rcu_torture_print_module_parms(cur_ops, -@@ -1794,18 +1794,18 @@ rcu_torture_init(void) +@@ -1785,18 +1785,18 @@ rcu_torture_init(void) rcu_torture_current = NULL; rcu_torture_current_version = 0; @@ -143195,10 +143368,10 @@ index 944b1b4..45d1d75 100644 __rcu_process_callbacks(&rcu_sched_ctrlblk); __rcu_process_callbacks(&rcu_bh_ctrlblk); diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index 9a535a8..7784424 100644 +index c7f1bc4..51dfeb4 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c -@@ -323,7 +323,7 @@ static void rcu_momentary_dyntick_idle(void) +@@ -325,7 +325,7 @@ static void rcu_momentary_dyntick_idle(void) */ rdtp = this_cpu_ptr(&rcu_dynticks); smp_mb__before_atomic(); /* Earlier stuff before QS. */ @@ -143207,7 +143380,7 @@ index 9a535a8..7784424 100644 smp_mb__after_atomic(); /* Later stuff after QS. */ break; } -@@ -649,10 +649,10 @@ static void rcu_eqs_enter_common(long long oldval, bool user) +@@ -690,10 +690,10 @@ 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. */ @@ -143220,7 +143393,7 @@ index 9a535a8..7784424 100644 rcu_dynticks_task_enter(); /* -@@ -785,11 +785,11 @@ static void rcu_eqs_exit_common(long long oldval, int user) +@@ -826,11 +826,11 @@ static void rcu_eqs_exit_common(long long oldval, int user) rcu_dynticks_task_exit(); smp_mb__before_atomic(); /* Force ordering w/previous sojourn. */ @@ -143234,7 +143407,7 @@ index 9a535a8..7784424 100644 rcu_cleanup_after_idle(); trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting); if (IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && -@@ -935,12 +935,12 @@ void rcu_nmi_enter(void) +@@ -976,12 +976,12 @@ void rcu_nmi_enter(void) * to be in the outermost NMI handler that interrupted an RCU-idle * period (observation due to Andy Lutomirski). */ @@ -143250,7 +143423,7 @@ index 9a535a8..7784424 100644 incby = 1; } rdtp->dynticks_nmi_nesting += incby; -@@ -965,7 +965,7 @@ void rcu_nmi_exit(void) +@@ -1006,7 +1006,7 @@ void rcu_nmi_exit(void) * to us!) */ WARN_ON_ONCE(rdtp->dynticks_nmi_nesting <= 0); @@ -143259,7 +143432,7 @@ index 9a535a8..7784424 100644 /* * If the nesting level is not 1, the CPU wasn't RCU-idle, so -@@ -980,9 +980,9 @@ void rcu_nmi_exit(void) +@@ -1021,9 +1021,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. */ @@ -143271,7 +143444,7 @@ index 9a535a8..7784424 100644 } /** -@@ -995,7 +995,7 @@ void rcu_nmi_exit(void) +@@ -1036,7 +1036,7 @@ void rcu_nmi_exit(void) */ bool notrace __rcu_is_watching(void) { @@ -143280,7 +143453,7 @@ index 9a535a8..7784424 100644 } /** -@@ -1078,7 +1078,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) +@@ -1119,7 +1119,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) { @@ -143289,7 +143462,7 @@ index 9a535a8..7784424 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")); -@@ -1103,7 +1103,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, +@@ -1144,7 +1144,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, int *rcrmp; unsigned int snap; @@ -143298,7 +143471,7 @@ index 9a535a8..7784424 100644 snap = (unsigned int)rdp->dynticks_snap; /* -@@ -2920,7 +2920,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) +@@ -3004,7 +3004,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) /* * Do RCU core processing for the current CPU. */ @@ -143307,17 +143480,16 @@ index 9a535a8..7784424 100644 { struct rcu_state *rsp; -@@ -3566,7 +3566,7 @@ static void rcu_report_exp_rdp(struct rcu_state *rsp, struct rcu_data *rdp, +@@ -3651,14 +3651,14 @@ static void rcu_report_exp_rdp(struct rcu_state *rsp, struct rcu_data *rdp, + } + /* Common code for synchronize_{rcu,sched}_expedited() work-done checking. */ - static bool sync_exp_work_done(struct rcu_state *rsp, struct rcu_node *rnp, - struct rcu_data *rdp, -- atomic_long_t *stat, unsigned long s) -+ atomic_long_unchecked_t *stat, unsigned long s) +-static bool sync_exp_work_done(struct rcu_state *rsp, atomic_long_t *stat, ++static bool sync_exp_work_done(struct rcu_state *rsp, atomic_long_unchecked_t *stat, + unsigned long s) { if (rcu_exp_gp_seq_done(rsp, s)) { - if (rnp) -@@ -3575,7 +3575,7 @@ static bool sync_exp_work_done(struct rcu_state *rsp, struct rcu_node *rnp, - mutex_unlock(&rdp->exp_funnel_mutex); + trace_rcu_exp_grace_period(rsp->name, s, TPS("done")); /* Ensure test happens before caller kfree(). */ smp_mb__before_atomic(); /* ^^^ */ - atomic_long_inc(stat); @@ -143325,7 +143497,7 @@ index 9a535a8..7784424 100644 return true; } return false; -@@ -3695,7 +3695,7 @@ static void sync_rcu_exp_select_cpus(struct rcu_state *rsp, +@@ -3789,7 +3789,7 @@ static void sync_rcu_exp_select_cpus(struct rcu_state *rsp, struct rcu_dynticks *rdtp = &per_cpu(rcu_dynticks, cpu); if (raw_smp_processor_id() == cpu || @@ -143334,7 +143506,7 @@ index 9a535a8..7784424 100644 mask_ofl_test |= rdp->grpmask; } mask_ofl_ipi = rnp->expmask & ~mask_ofl_test; -@@ -4159,7 +4159,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) +@@ -4284,7 +4284,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); @@ -143342,8 +143514,8 @@ index 9a535a8..7784424 100644 + WARN_ON_ONCE(atomic_read_unchecked(&rdp->dynticks->dynticks) != 1); rdp->cpu = cpu; rdp->rsp = rsp; - mutex_init(&rdp->exp_funnel_mutex); -@@ -4190,8 +4190,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp) + rcu_boot_init_nocb_percpu_data(rdp); +@@ -4314,8 +4314,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); @@ -143355,10 +143527,10 @@ index 9a535a8..7784424 100644 /* diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h -index df668c0..8e90779 100644 +index e3959f5..1966837 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h -@@ -115,11 +115,11 @@ struct rcu_dynticks { +@@ -111,11 +111,11 @@ struct rcu_dynticks { long long dynticks_nesting; /* Track irq/process nesting level. */ /* Process level is worth LLONG_MAX/2. */ int dynticks_nmi_nesting; /* Track NMI nesting level. */ @@ -143372,24 +143544,22 @@ index df668c0..8e90779 100644 /* "Idle" excludes userspace execution. */ unsigned long dynticks_idle_jiffies; /* End of last non-NMI non-idle period. */ -@@ -388,10 +388,10 @@ struct rcu_data { +@@ -385,9 +385,9 @@ struct rcu_data { + #ifdef CONFIG_RCU_FAST_NO_HZ struct rcu_head oom_head; #endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */ - struct mutex exp_funnel_mutex; -- atomic_long_t expedited_workdone0; /* # done by others #0. */ -- atomic_long_t expedited_workdone1; /* # done by others #1. */ -- atomic_long_t expedited_workdone2; /* # done by others #2. */ -- atomic_long_t expedited_workdone3; /* # done by others #3. */ -+ atomic_long_unchecked_t expedited_workdone0; /* # done by others #0. */ -+ atomic_long_unchecked_t expedited_workdone1; /* # done by others #1. */ -+ atomic_long_unchecked_t expedited_workdone2; /* # done by others #2. */ -+ atomic_long_unchecked_t expedited_workdone3; /* # done by others #3. */ +- atomic_long_t exp_workdone1; /* # done by others #1. */ +- atomic_long_t exp_workdone2; /* # done by others #2. */ +- atomic_long_t exp_workdone3; /* # done by others #3. */ ++ atomic_long_unchecked_t exp_workdone1; /* # done by others #1. */ ++ atomic_long_unchecked_t exp_workdone2; /* # done by others #2. */ ++ atomic_long_unchecked_t exp_workdone3; /* # done by others #3. */ /* 7) Callback offloading. */ #ifdef CONFIG_RCU_NOCB_CPU -@@ -506,8 +506,8 @@ struct rcu_state { - /* End of fields guarded by barrier_mutex. */ - +@@ -504,8 +504,8 @@ struct rcu_state { + struct mutex exp_mutex; /* Serialize expedited GP. */ + struct mutex exp_wake_mutex; /* Serialize wakeup. */ unsigned long expedited_sequence; /* Take a ticket. */ - atomic_long_t expedited_normal; /* # fallbacks to normal. */ - atomic_t expedited_need_qs; /* # CPUs left to check in. */ @@ -143399,10 +143569,10 @@ index df668c0..8e90779 100644 int ncpus_snap; /* # CPUs seen last time. */ diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h -index efdf7b6..bec5637 100644 +index ff1cd4e..7b55890 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h -@@ -1268,7 +1268,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) +@@ -1263,7 +1263,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) free_cpumask_var(cm); } @@ -143411,7 +143581,7 @@ index efdf7b6..bec5637 100644 .store = &rcu_cpu_kthread_task, .thread_should_run = rcu_cpu_kthread_should_run, .thread_fn = rcu_cpu_kthread, -@@ -1737,7 +1737,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) +@@ -1732,7 +1732,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) "o."[!!(rdp->grpmask & rdp->mynode->qsmaskinit)], "N."[!!(rdp->grpmask & rdp->mynode->qsmaskinitnext)], ticks_value, ticks_title, @@ -143420,7 +143590,7 @@ index efdf7b6..bec5637 100644 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu), READ_ONCE(rsp->n_force_qs) - rsp->n_force_qs_gpstart, -@@ -2271,8 +2271,8 @@ static int rcu_nocb_kthread(void *arg) +@@ -2266,8 +2266,8 @@ static int rcu_nocb_kthread(void *arg) } trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1); smp_mb__before_atomic(); /* _add after CB invocation. */ @@ -143431,7 +143601,7 @@ index efdf7b6..bec5637 100644 rdp->n_nocbs_invoked += c; } return 0; -@@ -2627,9 +2627,9 @@ static void rcu_sysidle_enter(int irq) +@@ -2622,9 +2622,9 @@ static void rcu_sysidle_enter(int irq) j = jiffies; WRITE_ONCE(rdtp->dynticks_idle_jiffies, j); smp_mb__before_atomic(); @@ -143443,7 +143613,7 @@ index efdf7b6..bec5637 100644 } /* -@@ -2700,9 +2700,9 @@ static void rcu_sysidle_exit(int irq) +@@ -2695,9 +2695,9 @@ static void rcu_sysidle_exit(int irq) /* Record end of idle period. */ smp_mb__before_atomic(); @@ -143455,7 +143625,7 @@ index efdf7b6..bec5637 100644 /* * If we are the timekeeping CPU, we are permitted to be non-idle -@@ -2748,7 +2748,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle, +@@ -2743,7 +2743,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. */ @@ -143465,7 +143635,7 @@ index efdf7b6..bec5637 100644 *isidle = false; /* We are not idle! */ return; diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c -index 1088e64..d3b77f7 100644 +index 86782f9a..2e8c0a3 100644 --- a/kernel/rcu/tree_trace.c +++ b/kernel/rcu/tree_trace.c @@ -124,7 +124,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) @@ -143477,21 +143647,19 @@ index 1088e64..d3b77f7 100644 rdp->dynticks->dynticks_nesting, rdp->dynticks->dynticks_nmi_nesting, rdp->dynticks_fqs); -@@ -189,15 +189,15 @@ static int show_rcuexp(struct seq_file *m, void *v) +@@ -189,14 +189,14 @@ static int show_rcuexp(struct seq_file *m, void *v) for_each_possible_cpu(cpu) { rdp = per_cpu_ptr(rsp->rda, cpu); -- s0 += atomic_long_read(&rdp->expedited_workdone0); -- s1 += atomic_long_read(&rdp->expedited_workdone1); -- s2 += atomic_long_read(&rdp->expedited_workdone2); -- s3 += atomic_long_read(&rdp->expedited_workdone3); -+ s0 += atomic_long_read_unchecked(&rdp->expedited_workdone0); -+ s1 += atomic_long_read_unchecked(&rdp->expedited_workdone1); -+ s2 += atomic_long_read_unchecked(&rdp->expedited_workdone2); -+ s3 += atomic_long_read_unchecked(&rdp->expedited_workdone3); - } - seq_printf(m, "s=%lu wd0=%lu wd1=%lu wd2=%lu wd3=%lu n=%lu enq=%d sc=%lu\n", - rsp->expedited_sequence, s0, s1, s2, s3, +- s1 += atomic_long_read(&rdp->exp_workdone1); +- s2 += atomic_long_read(&rdp->exp_workdone2); +- s3 += atomic_long_read(&rdp->exp_workdone3); ++ s1 += atomic_long_read_unchecked(&rdp->exp_workdone1); ++ s2 += atomic_long_read_unchecked(&rdp->exp_workdone2); ++ s3 += atomic_long_read_unchecked(&rdp->exp_workdone3); + } + seq_printf(m, "s=%lu wd1=%lu wd2=%lu wd3=%lu n=%lu enq=%d sc=%lu\n", + rsp->expedited_sequence, s1, s2, s3, - atomic_long_read(&rsp->expedited_normal), - atomic_read(&rsp->expedited_need_qs), + atomic_long_read_unchecked(&rsp->expedited_normal), @@ -143565,10 +143733,10 @@ index a5d966c..9c2d28b 100644 #ifdef CONFIG_RT_GROUP_SCHED /* diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 11546a6..ba4d0d1 100644 +index 97ee9ac..f8349adf 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2148,7 +2148,7 @@ void set_numabalancing_state(bool enabled) +@@ -2236,7 +2236,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) { @@ -143577,7 +143745,7 @@ index 11546a6..ba4d0d1 100644 int err; int state = static_branch_likely(&sched_numa_balancing); -@@ -2211,7 +2211,7 @@ __setup("schedstats=", setup_schedstats); +@@ -2311,7 +2311,7 @@ static void __init init_schedstats(void) int sysctl_schedstats(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -143586,7 +143754,7 @@ index 11546a6..ba4d0d1 100644 int err; int state = static_branch_likely(&sched_schedstats); -@@ -2650,7 +2650,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) +@@ -2754,7 +2754,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) /* rq->lock is NOT held, but preemption is disabled */ static void __balance_callback(struct rq *rq) { @@ -143595,7 +143763,7 @@ index 11546a6..ba4d0d1 100644 void (*func)(struct rq *rq); unsigned long flags; -@@ -2658,7 +2658,7 @@ static void __balance_callback(struct rq *rq) +@@ -2762,7 +2762,7 @@ static void __balance_callback(struct rq *rq) head = rq->balance_callback; rq->balance_callback = NULL; while (head) { @@ -143604,18 +143772,7 @@ index 11546a6..ba4d0d1 100644 next = head->next; head->next = NULL; head = next; -@@ -2732,8 +2732,9 @@ context_switch(struct rq *rq, struct task_struct *prev, - next->active_mm = oldmm; - atomic_inc(&oldmm->mm_count); - enter_lazy_tlb(oldmm, next); -- } else -+ } else { - switch_mm(oldmm, mm, next); -+ } - - if (!prev->mm) { - prev->active_mm = NULL; -@@ -3552,6 +3553,8 @@ int can_nice(const struct task_struct *p, const int nice) +@@ -3708,6 +3708,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); @@ -143624,7 +143781,7 @@ index 11546a6..ba4d0d1 100644 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || capable(CAP_SYS_NICE)); } -@@ -3578,7 +3581,8 @@ SYSCALL_DEFINE1(nice, int, increment) +@@ -3734,7 +3736,8 @@ SYSCALL_DEFINE1(nice, int, increment) nice = task_nice(current) + increment; nice = clamp_val(nice, MIN_NICE, MAX_NICE); @@ -143634,7 +143791,7 @@ index 11546a6..ba4d0d1 100644 return -EPERM; retval = security_task_setnice(current, nice); -@@ -3888,6 +3892,7 @@ recheck: +@@ -4044,6 +4047,7 @@ recheck: if (policy != p->policy && !rlim_rtprio) return -EPERM; @@ -143642,7 +143799,7 @@ index 11546a6..ba4d0d1 100644 /* can't increase priority */ if (attr->sched_priority > p->rt_priority && attr->sched_priority > rlim_rtprio) -@@ -7419,7 +7424,7 @@ void __might_sleep(const char *file, int line, int preempt_offset) +@@ -7529,7 +7533,7 @@ void __might_sleep(const char *file, int line, int preempt_offset) */ WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change, "do not call blocking ops when !TASK_RUNNING; " @@ -143652,7 +143809,7 @@ index 11546a6..ba4d0d1 100644 (void *)current->task_state_change, (void *)current->task_state_change); diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index 686ec8a..8fc3873 100644 +index fcb7f02..fac974c 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -219,8 +219,8 @@ static inline bool need_pull_dl_task(struct rq *rq, struct task_struct *prev) @@ -143667,7 +143824,7 @@ index 686ec8a..8fc3873 100644 static void push_dl_tasks(struct rq *); static void pull_dl_task(struct rq *); diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c -index 4fbc3bd..6d8ac0d 100644 +index 0368c39..e4d8777 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -193,7 +193,7 @@ late_initcall(sched_init_debug); @@ -143788,7 +143945,7 @@ index 4fbc3bd..6d8ac0d 100644 } #endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SMP */ -@@ -808,7 +817,11 @@ static int __init init_sched_debug_procfs(void) +@@ -801,7 +810,11 @@ static int __init init_sched_debug_procfs(void) { struct proc_dir_entry *pe; @@ -143801,10 +143958,10 @@ index 4fbc3bd..6d8ac0d 100644 return -ENOMEM; return 0; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index eeaf920..9f33e68 100644 +index c8c5d2d..7f7e131 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -8078,7 +8078,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { } +@@ -8239,7 +8239,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). */ @@ -143814,7 +143971,7 @@ index eeaf920..9f33e68 100644 struct rq *this_rq = this_rq(); enum cpu_idle_type idle = this_rq->idle_balance ? diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index ec4f538d..e3de404 100644 +index d5690b7..40d1c85 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -362,8 +362,8 @@ static inline int has_pushable_tasks(struct rq *rq) @@ -143829,10 +143986,10 @@ index ec4f538d..e3de404 100644 static void push_rt_tasks(struct rq *); static void pull_rt_task(struct rq *); diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index ec2e8d2..68a780e 100644 +index 898c0d2..c9e3f5b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -632,7 +632,10 @@ struct rq { +@@ -641,7 +641,10 @@ struct rq { unsigned long cpu_capacity; unsigned long cpu_capacity_orig; @@ -143844,7 +144001,7 @@ index ec2e8d2..68a780e 100644 unsigned char idle_balance; /* For active balancing */ -@@ -778,7 +781,7 @@ extern int migrate_swap(struct task_struct *, struct task_struct *); +@@ -787,7 +790,7 @@ extern int migrate_swap(struct task_struct *, struct task_struct *); static inline void queue_balance_callback(struct rq *rq, @@ -143853,7 +144010,7 @@ index ec2e8d2..68a780e 100644 void (*func)(struct rq *rq)) { lockdep_assert_held(&rq->lock); -@@ -786,7 +789,7 @@ queue_balance_callback(struct rq *rq, +@@ -795,7 +798,7 @@ queue_balance_callback(struct rq *rq, if (unlikely(head->next)) return; @@ -143862,7 +144019,7 @@ index ec2e8d2..68a780e 100644 head->next = rq->balance_callback; rq->balance_callback = head; } -@@ -1240,7 +1243,7 @@ struct sched_class { +@@ -1249,7 +1252,7 @@ struct sched_class { #ifdef CONFIG_FAIR_GROUP_SCHED void (*task_move_group) (struct task_struct *p); #endif @@ -143871,7 +144028,7 @@ index ec2e8d2..68a780e 100644 static inline void put_prev_task(struct rq *rq, struct task_struct *prev) { -@@ -1310,7 +1313,7 @@ extern struct dl_bandwidth def_dl_bandwidth; +@@ -1319,7 +1322,7 @@ extern struct dl_bandwidth def_dl_bandwidth; extern void init_dl_bandwidth(struct dl_bandwidth *dl_b, u64 period, u64 runtime); extern void init_dl_task_timer(struct sched_dl_entity *dl_se); @@ -143879,9 +144036,9 @@ index ec2e8d2..68a780e 100644 +unsigned long __attribute_const__ to_ratio(u64 period, u64 runtime); extern void init_entity_runnable_average(struct sched_entity *se); - + extern void post_init_entity_util_avg(struct sched_entity *se); diff --git a/kernel/signal.c b/kernel/signal.c -index aa9bf00..ec5101c 100644 +index 96e9bc4..499443d 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -53,12 +53,12 @@ static struct kmem_cache *sigqueue_cachep; @@ -144064,7 +144221,7 @@ index aa9bf00..ec5101c 100644 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) { error = check_kill_permission(sig, info, p); /* -@@ -3197,8 +3232,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, +@@ -3200,8 +3235,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, } seg = get_fs(); set_fs(KERNEL_DS); @@ -144075,7 +144232,7 @@ index aa9bf00..ec5101c 100644 compat_user_stack_pointer()); set_fs(seg); if (ret >= 0 && uoss_ptr) { -@@ -3482,7 +3517,7 @@ SYSCALL_DEFINE1(ssetmask, int, newmask) +@@ -3485,7 +3520,7 @@ SYSCALL_DEFINE1(ssetmask, int, newmask) SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) { struct k_sigaction new_sa, old_sa; @@ -144084,7 +144241,7 @@ index aa9bf00..ec5101c 100644 new_sa.sa.sa_handler = handler; new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK; -@@ -3490,7 +3525,7 @@ SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) +@@ -3493,7 +3528,7 @@ SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) ret = do_sigaction(sig, &new_sa, &old_sa); @@ -144218,7 +144375,7 @@ index a467e6c..7743481 100644 .thread_should_run = cpu_stop_should_run, .thread_fn = cpu_stopper_thread, diff --git a/kernel/sys.c b/kernel/sys.c -index cf8ba54..196a680 100644 +index 89d5be4..441bef3 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) @@ -144420,7 +144577,7 @@ index 2c5e3a8..301fb1a 100644 return -ENOSYS; } diff --git a/kernel/sysctl.c b/kernel/sysctl.c -index 725587f..c7834cc 100644 +index 87b2fc3..da4c155 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -95,7 +95,6 @@ @@ -144465,9 +144622,9 @@ index 725587f..c7834cc 100644 -static int ten_thousand = 10000; +static int ten_thousand __read_only = 10000; #endif - - /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */ -@@ -182,10 +183,8 @@ static int proc_taint(struct ctl_table *table, int write, + #ifdef CONFIG_PERF_EVENTS + static int six_hundred_forty_kb = 640 * 1024; +@@ -185,10 +186,8 @@ static int proc_taint(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); #endif @@ -144479,7 +144636,7 @@ index 725587f..c7834cc 100644 static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); -@@ -216,6 +215,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, +@@ -219,6 +218,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, #endif @@ -144488,7 +144645,7 @@ index 725587f..c7834cc 100644 static struct ctl_table kern_table[]; static struct ctl_table vm_table[]; static struct ctl_table fs_table[]; -@@ -230,6 +231,20 @@ extern struct ctl_table epoll_table[]; +@@ -233,6 +234,20 @@ extern struct ctl_table epoll_table[]; int sysctl_legacy_va_layout; #endif @@ -144509,7 +144666,7 @@ index 725587f..c7834cc 100644 /* The default sysctl tables: */ static struct ctl_table sysctl_base_table[] = { -@@ -278,6 +293,22 @@ static int max_extfrag_threshold = 1000; +@@ -281,6 +296,22 @@ static int max_extfrag_threshold = 1000; #endif static struct ctl_table kern_table[] = { @@ -144532,7 +144689,7 @@ index 725587f..c7834cc 100644 { .procname = "sched_child_runs_first", .data = &sysctl_sched_child_runs_first, -@@ -641,7 +672,7 @@ static struct ctl_table kern_table[] = { +@@ -644,7 +675,7 @@ static struct ctl_table kern_table[] = { .maxlen = sizeof(int), .mode = 0644, /* only handle a transition from default "0" to "1" */ @@ -144541,7 +144698,7 @@ index 725587f..c7834cc 100644 .extra1 = &one, .extra2 = &one, }, -@@ -652,7 +683,7 @@ static struct ctl_table kern_table[] = { +@@ -655,7 +686,7 @@ static struct ctl_table kern_table[] = { .data = &modprobe_path, .maxlen = KMOD_PATH_LEN, .mode = 0644, @@ -144550,7 +144707,7 @@ index 725587f..c7834cc 100644 }, { .procname = "modules_disabled", -@@ -660,7 +691,7 @@ static struct ctl_table kern_table[] = { +@@ -663,7 +694,7 @@ static struct ctl_table kern_table[] = { .maxlen = sizeof(int), .mode = 0644, /* only handle a transition from default "0" to "1" */ @@ -144559,7 +144716,7 @@ index 725587f..c7834cc 100644 .extra1 = &one, .extra2 = &one, }, -@@ -815,20 +846,24 @@ static struct ctl_table kern_table[] = { +@@ -818,20 +849,24 @@ static struct ctl_table kern_table[] = { .data = &dmesg_restrict, .maxlen = sizeof(int), .mode = 0644, @@ -144587,7 +144744,7 @@ index 725587f..c7834cc 100644 { .procname = "ngroups_max", .data = &ngroups_max, -@@ -993,6 +1028,17 @@ static struct ctl_table kern_table[] = { +@@ -996,6 +1031,17 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = proc_dointvec, }, @@ -144605,7 +144762,7 @@ index 725587f..c7834cc 100644 #endif #if defined(CONFIG_MMU) { -@@ -1115,10 +1161,17 @@ static struct ctl_table kern_table[] = { +@@ -1118,10 +1164,17 @@ static struct ctl_table kern_table[] = { */ { .procname = "perf_event_paranoid", @@ -144626,7 +144783,7 @@ index 725587f..c7834cc 100644 }, { .procname = "perf_event_mlock_kb", -@@ -1430,6 +1483,13 @@ static struct ctl_table vm_table[] = { +@@ -1451,6 +1504,13 @@ static struct ctl_table vm_table[] = { .proc_handler = proc_dointvec_minmax, .extra1 = &zero, }, @@ -144640,7 +144797,7 @@ index 725587f..c7834cc 100644 #else { .procname = "nr_trim_pages", -@@ -1942,6 +2002,16 @@ int proc_dostring(struct ctl_table *table, int write, +@@ -1970,6 +2030,16 @@ int proc_dostring(struct ctl_table *table, int write, (char __user *)buffer, lenp, ppos); } @@ -144657,7 +144814,7 @@ index 725587f..c7834cc 100644 static size_t proc_skip_spaces(char **buf) { size_t ret; -@@ -2047,6 +2117,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, +@@ -2075,6 +2145,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, len = strlen(tmp); if (len > *size) len = *size; @@ -144666,7 +144823,7 @@ index 725587f..c7834cc 100644 if (copy_to_user(*buf, tmp, len)) return -EFAULT; *size -= len; -@@ -2217,6 +2289,44 @@ int proc_dointvec(struct ctl_table *table, int write, +@@ -2245,6 +2317,44 @@ int proc_dointvec(struct ctl_table *table, int write, NULL,NULL); } @@ -144711,7 +144868,7 @@ index 725587f..c7834cc 100644 /* * Taint values can only be increased * This means we can safely use a temporary. -@@ -2224,7 +2334,7 @@ int proc_dointvec(struct ctl_table *table, int write, +@@ -2252,7 +2362,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) { @@ -144720,7 +144877,7 @@ index 725587f..c7834cc 100644 unsigned long tmptaint = get_taint(); int err; -@@ -2252,16 +2362,14 @@ static int proc_taint(struct ctl_table *table, int write, +@@ -2280,16 +2390,14 @@ static int proc_taint(struct ctl_table *table, int write, return err; } @@ -144739,7 +144896,7 @@ index 725587f..c7834cc 100644 struct do_proc_dointvec_minmax_conv_param { int *min; -@@ -2292,6 +2400,32 @@ static int do_proc_dointvec_minmax_conv(bool *negp, unsigned long *lvalp, +@@ -2320,6 +2428,32 @@ static int do_proc_dointvec_minmax_conv(bool *negp, unsigned long *lvalp, return 0; } @@ -144772,7 +144929,7 @@ index 725587f..c7834cc 100644 /** * proc_dointvec_minmax - read a vector of integers with min/max values * @table: the sysctl table -@@ -2319,6 +2453,17 @@ int proc_dointvec_minmax(struct ctl_table *table, int write, +@@ -2347,6 +2481,17 @@ int proc_dointvec_minmax(struct ctl_table *table, int write, do_proc_dointvec_minmax_conv, ¶m); } @@ -144790,7 +144947,7 @@ index 725587f..c7834cc 100644 static void validate_coredump_safety(void) { #ifdef CONFIG_COREDUMP -@@ -2806,6 +2951,12 @@ int proc_dostring(struct ctl_table *table, int write, +@@ -2834,6 +2979,12 @@ int proc_dostring(struct ctl_table *table, int write, return -ENOSYS; } @@ -144803,7 +144960,7 @@ index 725587f..c7834cc 100644 int proc_dointvec(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { -@@ -2862,5 +3013,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); +@@ -2890,5 +3041,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); EXPORT_SYMBOL(proc_dointvec_userhz_jiffies); EXPORT_SYMBOL(proc_dointvec_ms_jiffies); EXPORT_SYMBOL(proc_dostring); @@ -144811,7 +144968,7 @@ index 725587f..c7834cc 100644 EXPORT_SYMBOL(proc_doulongvec_minmax); EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax); diff --git a/kernel/taskstats.c b/kernel/taskstats.c -index 21f82c2..c1984e5 100644 +index b3f05ee..b1b5044 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c @@ -28,9 +28,12 @@ @@ -144827,7 +144984,7 @@ index 21f82c2..c1984e5 100644 /* * Maximum length of a cpumask that can be specified in * the TASKSTATS_CMD_ATTR_REGISTER/DEREGISTER_CPUMASK attribute -@@ -567,6 +570,9 @@ err: +@@ -540,6 +543,9 @@ err: static int taskstats_user_cmd(struct sk_buff *skb, struct genl_info *info) { @@ -144900,10 +145057,10 @@ index 9cff0ab..0e69c94 100644 struct posix_clock_desc cd; int err; diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c -index 1cafba8..eccbd51 100644 +index 39008d7..0a60468 100644 --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c -@@ -1467,14 +1467,14 @@ struct k_clock clock_posix_cpu = { +@@ -1468,14 +1468,14 @@ struct k_clock clock_posix_cpu = { static __init int init_posix_cpu_timers(void) { @@ -145088,10 +145245,10 @@ index f2826c3..7e6663a 100644 } diff --git a/kernel/time/time.c b/kernel/time/time.c -index be115b0..5d134df 100644 +index 667b933..1668952 100644 --- a/kernel/time/time.c +++ b/kernel/time/time.c -@@ -177,6 +177,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz) +@@ -177,6 +177,11 @@ int do_sys_settimeofday64(const struct timespec64 *tv, const struct timezone *tz if (tz->tz_minuteswest > 15*60 || tz->tz_minuteswest < -15*60) return -EINVAL; @@ -145125,10 +145282,10 @@ index 479d25c..7c25647 100644 write_seqcount_begin(&tk_core.seq); diff --git a/kernel/time/timer.c b/kernel/time/timer.c -index 73164c3..094396f 100644 +index 3a95f97..133d37b 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1429,7 +1429,7 @@ void update_process_times(int user_tick) +@@ -1414,7 +1414,7 @@ void update_process_times(int user_tick) /* * This function runs timers and the timer-tq in bottom half context. */ @@ -145259,7 +145416,7 @@ index 1adecb4..b4fb631 100644 return -ENOMEM; return 0; diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig -index e45db6b..6527679 100644 +index fafeaf8..498f575 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -107,6 +107,7 @@ config TRACING @@ -145311,7 +145468,7 @@ index e45db6b..6527679 100644 help This allows the user to add tracing events on top of userspace diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c -index f94e7a2..75c8035 100644 +index 9aef865..ea3f274 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -328,7 +328,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer, @@ -145342,7 +145499,7 @@ index f94e7a2..75c8035 100644 ret = -EIO; diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c -index b1870fb..02fbaa7 100644 +index 900dbb1..8a36307 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -120,8 +120,9 @@ static void ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip, @@ -145357,7 +145514,7 @@ index b1870fb..02fbaa7 100644 #endif /* -@@ -2467,13 +2468,18 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) +@@ -2479,13 +2480,18 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) if (unlikely(ftrace_disabled)) return 0; @@ -145378,7 +145535,7 @@ index b1870fb..02fbaa7 100644 } /* -@@ -4825,8 +4831,10 @@ static int ftrace_process_locs(struct module *mod, +@@ -4849,8 +4855,10 @@ static int ftrace_process_locs(struct module *mod, if (!count) return 0; @@ -145389,7 +145546,7 @@ index b1870fb..02fbaa7 100644 start_pg = ftrace_allocate_pages(count); if (!start_pg) -@@ -5242,7 +5250,8 @@ static void ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip, +@@ -5266,7 +5274,8 @@ static void ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip, __ftrace_ops_list_func(ip, parent_ip, NULL, regs); } #else @@ -145399,7 +145556,7 @@ index b1870fb..02fbaa7 100644 { __ftrace_ops_list_func(ip, parent_ip, NULL, NULL); } -@@ -5703,8 +5712,12 @@ int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace) +@@ -5727,8 +5736,12 @@ int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace) } /* The callbacks that hook a function */ @@ -145414,7 +145571,7 @@ index b1870fb..02fbaa7 100644 trace_func_graph_ent_t ftrace_graph_entry = ftrace_graph_entry_stub; static trace_func_graph_ent_t __ftrace_graph_entry = ftrace_graph_entry_stub; -@@ -5738,7 +5751,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list) +@@ -5761,7 +5774,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); @@ -145423,7 +145580,7 @@ index b1870fb..02fbaa7 100644 t->curr_ret_stack = -1; /* Make sure the tasks see the -1 first: */ smp_wmb(); -@@ -5933,7 +5946,7 @@ void unregister_ftrace_graph(void) +@@ -5956,7 +5969,7 @@ void unregister_ftrace_graph(void) goto out; ftrace_graph_active--; @@ -145432,7 +145589,7 @@ index b1870fb..02fbaa7 100644 ftrace_graph_entry = ftrace_graph_entry_stub; __ftrace_graph_entry = ftrace_graph_entry_stub; ftrace_shutdown(&graph_ops, FTRACE_STOP_FUNC_RET); -@@ -5961,7 +5974,7 @@ static void +@@ -5984,7 +5997,7 @@ static void graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack) { atomic_set(&t->tracing_graph_pause, 0); @@ -145785,10 +145942,10 @@ index 9c14373..5ddd763 100644 *data_page = bpage; diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index a2f0b9f..95f8a8b 100644 +index 8a4bd6b..3b741d7 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -3552,7 +3552,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) +@@ -3649,7 +3649,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) return 0; } @@ -145798,10 +145955,10 @@ index a2f0b9f..95f8a8b 100644 /* do nothing if flag is already set */ if (!!(tr->trace_flags & mask) == !!enabled) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index 3fff4ad..95c8932 100644 +index 5167c36..34bbcb3 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h -@@ -1395,7 +1395,7 @@ void trace_printk_control(bool enabled); +@@ -1579,7 +1579,7 @@ void trace_printk_control(bool enabled); void trace_printk_init_buffers(void); void trace_printk_start_comm(void); int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); @@ -145831,10 +145988,10 @@ index 0f06532..247c8e7 100644 + return atomic64_inc_return_unchecked(&trace_counter); } diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index 6f96586..bcd069a 100644 +index 3d41558..5ae0a82 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c -@@ -2362,7 +2362,6 @@ __trace_early_add_new_event(struct trace_event_call *call, +@@ -2437,7 +2437,6 @@ __trace_early_add_new_event(struct trace_event_call *call, return 0; } @@ -145842,6 +145999,21 @@ index 6f96586..bcd069a 100644 static void __add_event_to_tracers(struct trace_event_call *call); /* Add an additional event_call dynamically */ +diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c +index 0c05b8a..f1dcbf3 100644 +--- a/kernel/trace/trace_events_hist.c ++++ b/kernel/trace/trace_events_hist.c +@@ -1078,8 +1078,8 @@ static void hist_trigger_show(struct seq_file *m, + } + + seq_printf(m, "\nTotals:\n Hits: %llu\n Entries: %u\n Dropped: %llu\n", +- (u64)atomic64_read(&hist_data->map->hits), +- n_entries, (u64)atomic64_read(&hist_data->map->drops)); ++ (u64)atomic64_read_unchecked(&hist_data->map->hits), ++ n_entries, (u64)atomic64_read_unchecked(&hist_data->map->drops)); + } + + static int hist_show(struct seq_file *m, void *v) diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 3a0244f..3383aff 100644 --- a/kernel/trace/trace_functions_graph.c @@ -145956,10 +146128,10 @@ index 2a1abba..2a81a78 100644 /* Can't do this from NMI context (can cause deadlocks) */ diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c -index e78f364..ae5a282 100644 +index b2b6efc..52e0a3d 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c -@@ -604,6 +604,8 @@ static int perf_sysenter_enable(struct trace_event_call *call) +@@ -605,6 +605,8 @@ static int perf_sysenter_enable(struct trace_event_call *call) int num; num = ((struct syscall_metadata *)call->data)->syscall_nr; @@ -145968,7 +146140,7 @@ index e78f364..ae5a282 100644 mutex_lock(&syscall_trace_lock); if (!sys_perf_refcount_enter) -@@ -624,6 +626,8 @@ static void perf_sysenter_disable(struct trace_event_call *call) +@@ -625,6 +627,8 @@ static void perf_sysenter_disable(struct trace_event_call *call) int num; num = ((struct syscall_metadata *)call->data)->syscall_nr; @@ -145977,7 +146149,7 @@ index e78f364..ae5a282 100644 mutex_lock(&syscall_trace_lock); sys_perf_refcount_enter--; -@@ -676,6 +680,8 @@ static int perf_sysexit_enable(struct trace_event_call *call) +@@ -677,6 +681,8 @@ static int perf_sysexit_enable(struct trace_event_call *call) int num; num = ((struct syscall_metadata *)call->data)->syscall_nr; @@ -145986,7 +146158,7 @@ index e78f364..ae5a282 100644 mutex_lock(&syscall_trace_lock); if (!sys_perf_refcount_exit) -@@ -696,6 +702,8 @@ static void perf_sysexit_disable(struct trace_event_call *call) +@@ -697,6 +703,8 @@ static void perf_sysexit_disable(struct trace_event_call *call) int num; num = ((struct syscall_metadata *)call->data)->syscall_nr; @@ -145995,6 +146167,182 @@ index e78f364..ae5a282 100644 mutex_lock(&syscall_trace_lock); sys_perf_refcount_exit--; +diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c +index 0a689bb..e96cd14 100644 +--- a/kernel/trace/tracing_map.c ++++ b/kernel/trace/tracing_map.c +@@ -349,7 +349,7 @@ static struct tracing_map_elt *get_free_elt(struct tracing_map *map) + struct tracing_map_elt *elt = NULL; + int idx; + +- idx = atomic_inc_return(&map->next_elt); ++ idx = atomic_inc_return_unchecked(&map->next_elt); + if (idx < map->max_elts) { + elt = *(TRACING_MAP_ELT(map->elts, idx)); + if (map->ops && map->ops->elt_init) +@@ -425,7 +425,7 @@ __tracing_map_insert(struct tracing_map *map, void *key, bool lookup_only) + + if (test_key && test_key == key_hash && entry->val && + keys_match(key, entry->val->key, map->key_size)) { +- atomic64_inc(&map->hits); ++ atomic64_inc_unchecked(&map->hits); + return entry->val; + } + +@@ -438,14 +438,14 @@ __tracing_map_insert(struct tracing_map *map, void *key, bool lookup_only) + + elt = get_free_elt(map); + if (!elt) { +- atomic64_inc(&map->drops); ++ atomic64_inc_unchecked(&map->drops); + entry->key = 0; + break; + } + + memcpy(elt->key, key, map->key_size); + entry->val = elt; +- atomic64_inc(&map->hits); ++ atomic64_inc_unchecked(&map->hits); + + return entry->val; + } +@@ -557,9 +557,9 @@ void tracing_map_clear(struct tracing_map *map) + { + unsigned int i; + +- atomic_set(&map->next_elt, -1); +- atomic64_set(&map->hits, 0); +- atomic64_set(&map->drops, 0); ++ atomic_set_unchecked(&map->next_elt, -1); ++ atomic64_set_unchecked(&map->hits, 0); ++ atomic64_set_unchecked(&map->drops, 0); + + tracing_map_array_clear(map->map); + +@@ -641,7 +641,7 @@ struct tracing_map *tracing_map_create(unsigned int map_bits, + + map->map_bits = map_bits; + map->max_elts = (1 << map_bits); +- atomic_set(&map->next_elt, -1); ++ atomic_set_unchecked(&map->next_elt, -1); + + map->map_size = (1 << (map_bits + 1)); + map->ops = ops; +@@ -700,9 +700,10 @@ int tracing_map_init(struct tracing_map *map) + return err; + } + +-static int cmp_entries_dup(const struct tracing_map_sort_entry **a, +- const struct tracing_map_sort_entry **b) ++static int cmp_entries_dup(const void *_a, const void *_b) + { ++ const struct tracing_map_sort_entry **a = (const struct tracing_map_sort_entry **)_a; ++ const struct tracing_map_sort_entry **b = (const struct tracing_map_sort_entry **)_b; + int ret = 0; + + if (memcmp((*a)->key, (*b)->key, (*a)->elt->map->key_size)) +@@ -711,9 +712,10 @@ static int cmp_entries_dup(const struct tracing_map_sort_entry **a, + return ret; + } + +-static int cmp_entries_sum(const struct tracing_map_sort_entry **a, +- const struct tracing_map_sort_entry **b) ++static int cmp_entries_sum(const void *_a, const void *_b) + { ++ const struct tracing_map_sort_entry **a = (const struct tracing_map_sort_entry **)_a; ++ const struct tracing_map_sort_entry **b = (const struct tracing_map_sort_entry **)_b; + const struct tracing_map_elt *elt_a, *elt_b; + struct tracing_map_sort_key *sort_key; + struct tracing_map_field *field; +@@ -739,9 +741,10 @@ static int cmp_entries_sum(const struct tracing_map_sort_entry **a, + return ret; + } + +-static int cmp_entries_key(const struct tracing_map_sort_entry **a, +- const struct tracing_map_sort_entry **b) ++static int cmp_entries_key(const void *_a, const void *_b) + { ++ const struct tracing_map_sort_entry **a = (const struct tracing_map_sort_entry **)_a; ++ const struct tracing_map_sort_entry **b = (const struct tracing_map_sort_entry **)_b; + const struct tracing_map_elt *elt_a, *elt_b; + struct tracing_map_sort_key *sort_key; + struct tracing_map_field *field; +@@ -874,8 +877,7 @@ static int merge_dups(struct tracing_map_sort_entry **sort_entries, + if (n_entries < 2) + return total_dups; + +- sort(sort_entries, n_entries, sizeof(struct tracing_map_sort_entry *), +- (int (*)(const void *, const void *))cmp_entries_dup, NULL); ++ sort(sort_entries, n_entries, sizeof(struct tracing_map_sort_entry *), cmp_entries_dup, NULL); + + key = sort_entries[0]->key; + for (i = 1; i < n_entries; i++) { +@@ -923,10 +925,8 @@ static void sort_secondary(struct tracing_map *map, + struct tracing_map_sort_key *primary_key, + struct tracing_map_sort_key *secondary_key) + { +- int (*primary_fn)(const struct tracing_map_sort_entry **, +- const struct tracing_map_sort_entry **); +- int (*secondary_fn)(const struct tracing_map_sort_entry **, +- const struct tracing_map_sort_entry **); ++ int (*primary_fn)(const void*, const void*); ++ int (*secondary_fn)(const void*, const void*); + unsigned i, start = 0, n_sub = 1; + + if (is_key(map, primary_key->field_idx)) +@@ -958,7 +958,7 @@ static void sort_secondary(struct tracing_map *map, + set_sort_key(map, secondary_key); + sort(&entries[start], n_sub, + sizeof(struct tracing_map_sort_entry *), +- (int (*)(const void *, const void *))secondary_fn, NULL); ++ secondary_fn, NULL); + set_sort_key(map, primary_key); + + start = i + 1; +@@ -995,8 +995,7 @@ int tracing_map_sort_entries(struct tracing_map *map, + unsigned int n_sort_keys, + struct tracing_map_sort_entry ***sort_entries) + { +- int (*cmp_entries_fn)(const struct tracing_map_sort_entry **, +- const struct tracing_map_sort_entry **); ++ int (*cmp_entries_fn)(const void*, const void*); + struct tracing_map_sort_entry *sort_entry, **entries; + int i, n_entries, ret; + +@@ -1042,8 +1041,7 @@ int tracing_map_sort_entries(struct tracing_map *map, + + set_sort_key(map, &sort_keys[0]); + +- sort(entries, n_entries, sizeof(struct tracing_map_sort_entry *), +- (int (*)(const void *, const void *))cmp_entries_fn, NULL); ++ sort(entries, n_entries, sizeof(struct tracing_map_sort_entry *), cmp_entries_fn, NULL); + + if (n_sort_keys > 1) + sort_secondary(map, +diff --git a/kernel/trace/tracing_map.h b/kernel/trace/tracing_map.h +index 618838f..3dc1b9b 100644 +--- a/kernel/trace/tracing_map.h ++++ b/kernel/trace/tracing_map.h +@@ -181,7 +181,7 @@ struct tracing_map { + unsigned int map_bits; + unsigned int map_size; + unsigned int max_elts; +- atomic_t next_elt; ++ atomic_unchecked_t next_elt; + struct tracing_map_array *elts; + struct tracing_map_array *map; + const struct tracing_map_ops *ops; +@@ -191,8 +191,8 @@ struct tracing_map { + int key_idx[TRACING_MAP_KEYS_MAX]; + unsigned int n_keys; + struct tracing_map_sort_key sort_key; +- atomic64_t hits; +- atomic64_t drops; ++ atomic64_unchecked_t hits; ++ atomic64_unchecked_t drops; + }; + + /** diff --git a/kernel/user.c b/kernel/user.c index b069ccb..c59fe26 100644 --- a/kernel/user.c @@ -146071,10 +146419,10 @@ index 9acb29f..6fe517c 100644 .thread_should_run = watchdog_should_run, .thread_fn = watchdog, diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 5f5068e..64dcad7 100644 +index 97e7b79..37552c71 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -1948,9 +1948,8 @@ static void pool_mayday_timeout(unsigned long __pool) +@@ -1922,9 +1922,8 @@ static void pool_mayday_timeout(unsigned long __pool) * multiple times. Does GFP_KERNEL allocations. Called only from * manager. */ @@ -146085,7 +146433,7 @@ index 5f5068e..64dcad7 100644 { restart: spin_unlock_irq(&pool->lock); -@@ -2040,9 +2039,8 @@ static bool manage_workers(struct worker *worker) +@@ -2014,9 +2013,8 @@ static bool manage_workers(struct worker *worker) * CONTEXT: * spin_lock_irq(pool->lock) which is released and regrabbed. */ @@ -146096,7 +146444,7 @@ index 5f5068e..64dcad7 100644 { struct pool_workqueue *pwq = get_work_pwq(work); struct worker_pool *pool = worker->pool; -@@ -4599,7 +4597,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4573,7 +4571,7 @@ static void rebind_workers(struct worker_pool *pool) WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND)); worker_flags |= WORKER_REBOUND; worker_flags &= ~WORKER_UNBOUND; @@ -146106,7 +146454,7 @@ index 5f5068e..64dcad7 100644 spin_unlock_irq(&pool->lock); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index 1e9a607..c0eb5e0 100644 +index b9cfdbf..f47bcb2 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -243,6 +243,7 @@ config PAGE_OWNER @@ -146117,15 +146465,15 @@ index 1e9a607..c0eb5e0 100644 select STACKTRACE select PAGE_EXTENSION help -@@ -257,6 +258,7 @@ config PAGE_OWNER - +@@ -258,6 +259,7 @@ config PAGE_OWNER config DEBUG_FS bool "Debug Filesystem" + select SRCU + depends on !GRKERNSEC_KMEM help debugfs is a virtual file system that kernel developers use to put debugging files into. Enable this option to be able to read and -@@ -510,6 +512,7 @@ config DEBUG_KMEMLEAK +@@ -511,6 +513,7 @@ config DEBUG_KMEMLEAK bool "Kernel memory leak detector" depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK select DEBUG_FS @@ -146133,7 +146481,7 @@ index 1e9a607..c0eb5e0 100644 select STACKTRACE if STACKTRACE_SUPPORT select KALLSYMS select CRC32 -@@ -707,6 +710,7 @@ config KCOV +@@ -708,6 +711,7 @@ config KCOV bool "Code coverage for fuzzing" depends on ARCH_HAS_KCOV select DEBUG_FS @@ -146141,7 +146489,7 @@ index 1e9a607..c0eb5e0 100644 help KCOV exposes kernel code coverage information in a form suitable for coverage-guided fuzzing (randomized testing). -@@ -997,7 +1001,7 @@ config DEBUG_MUTEXES +@@ -998,7 +1002,7 @@ config DEBUG_MUTEXES config DEBUG_WW_MUTEX_SLOWPATH bool "Wait/wound mutex debugging: Slowpath testing" @@ -146150,7 +146498,7 @@ index 1e9a607..c0eb5e0 100644 select DEBUG_LOCK_ALLOC select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -1014,7 +1018,7 @@ config DEBUG_WW_MUTEX_SLOWPATH +@@ -1015,7 +1019,7 @@ config DEBUG_WW_MUTEX_SLOWPATH config DEBUG_LOCK_ALLOC bool "Lock debugging: detect incorrect freeing of live locks" @@ -146159,7 +146507,7 @@ index 1e9a607..c0eb5e0 100644 select DEBUG_SPINLOCK select DEBUG_MUTEXES select LOCKDEP -@@ -1028,7 +1032,7 @@ config DEBUG_LOCK_ALLOC +@@ -1029,7 +1033,7 @@ config DEBUG_LOCK_ALLOC config PROVE_LOCKING bool "Lock debugging: prove locking correctness" @@ -146168,7 +146516,7 @@ index 1e9a607..c0eb5e0 100644 select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -1079,7 +1083,7 @@ config LOCKDEP +@@ -1080,7 +1084,7 @@ config LOCKDEP config LOCK_STAT bool "Lock usage statistics" @@ -146177,7 +146525,7 @@ index 1e9a607..c0eb5e0 100644 select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -1492,6 +1496,7 @@ config NOTIFIER_ERROR_INJECTION +@@ -1526,6 +1530,7 @@ config NOTIFIER_ERROR_INJECTION tristate "Notifier error injection" depends on DEBUG_KERNEL select DEBUG_FS @@ -146185,7 +146533,7 @@ index 1e9a607..c0eb5e0 100644 help This option provides the ability to inject artificial errors to specified notifier chain callbacks. It is useful to test the error -@@ -1637,6 +1642,7 @@ config FAIL_MMC_REQUEST +@@ -1671,6 +1676,7 @@ config FAIL_MMC_REQUEST config FAIL_FUTEX bool "Fault-injection capability for futexes" select DEBUG_FS @@ -146193,7 +146541,7 @@ index 1e9a607..c0eb5e0 100644 depends on FAULT_INJECTION && FUTEX help Provide fault-injection capability for futexes. -@@ -1661,6 +1667,7 @@ config LATENCYTOP +@@ -1695,6 +1701,7 @@ config LATENCYTOP depends on DEBUG_KERNEL depends on STACKTRACE_SUPPORT depends on PROC_FS @@ -146201,7 +146549,7 @@ index 1e9a607..c0eb5e0 100644 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC select KALLSYMS select KALLSYMS_ALL -@@ -1677,7 +1684,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS +@@ -1711,7 +1718,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 @@ -146210,7 +146558,7 @@ index 1e9a607..c0eb5e0 100644 help Enabling this option turns a certain set of sanity checks for user copy operations into compile time failures. -@@ -1819,7 +1826,7 @@ endmenu # runtime tests +@@ -1867,7 +1874,7 @@ endmenu # runtime tests config PROVIDE_OHCI1394_DMA_INIT bool "Remote debugging over FireWire early on boot" @@ -146220,10 +146568,10 @@ index 1e9a607..c0eb5e0 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 7bd6fd4..643d6f9 100644 +index ff6a7a6..c952cc6 100644 --- a/lib/Makefile +++ b/lib/Makefile -@@ -80,7 +80,7 @@ obj-$(CONFIG_BTREE) += btree.o +@@ -82,7 +82,7 @@ obj-$(CONFIG_BTREE) += btree.o obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o @@ -146286,10 +146634,10 @@ index bc3656e..470f3ab 100644 file = NULL; line = 0; diff --git a/lib/debugobjects.c b/lib/debugobjects.c -index 519b5a1..4e58003 100644 +index a8e1260..cf8f2be 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c -@@ -289,7 +289,7 @@ static void debug_object_is_on_stack(void *addr, int onstack) +@@ -288,7 +288,7 @@ static void debug_object_is_on_stack(void *addr, int onstack) if (limit > 4) return; @@ -146833,7 +147181,7 @@ index 5a92189..d77978d 100644 } spin_unlock(&lockref->lock); diff --git a/lib/nlattr.c b/lib/nlattr.c -index f5907d2..36072be 100644 +index fce1e9a..d44559b 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -278,6 +278,8 @@ int nla_memcpy(void *dest, const struct nlattr *src, int count) @@ -146859,17 +147207,17 @@ index 27fe749..2c0e855 100644 static DECLARE_WAIT_QUEUE_HEAD(percpu_ref_switch_waitq); diff --git a/lib/radix-tree.c b/lib/radix-tree.c -index 1624c41..1a43c06 100644 +index 8b7d845..d6f36af 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c -@@ -68,7 +68,7 @@ struct radix_tree_preload { +@@ -64,7 +64,7 @@ struct radix_tree_preload { /* nodes->private_data points to next preallocated node */ struct radix_tree_node *nodes; }; -static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, }; +static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads); - static inline void *ptr_to_indirect(void *ptr) + static inline void *node_to_entry(void *ptr) { diff --git a/lib/random32.c b/lib/random32.c index 510d1ce..722d2b6 100644 @@ -146900,10 +147248,10 @@ index 1356454..70ce6c6 100644 void rb_insert_color(struct rb_node *node, struct rb_root *root) diff --git a/lib/rhashtable.c b/lib/rhashtable.c -index cc80870..6378152 100644 +index 5d845ff..c91f0af 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c -@@ -555,8 +555,8 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_exit); +@@ -557,8 +557,8 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_exit); * will rewind back to the beginning and you may use it immediately * by calling rhashtable_walk_next. */ @@ -146913,7 +147261,7 @@ index cc80870..6378152 100644 { struct rhashtable *ht = iter->ht; -@@ -640,8 +640,8 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_next); +@@ -642,8 +642,8 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_next); * * Finish a hash table walk. */ @@ -146958,10 +147306,10 @@ index 1feed6a..4ede1e9 100644 #endif } diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c -index 3384032..e4389a1 100644 +index 33f655e..8ca4054 100644 --- a/lib/strncpy_from_user.c +++ b/lib/strncpy_from_user.c -@@ -22,7 +22,7 @@ +@@ -23,7 +23,7 @@ */ static inline long do_strncpy_from_user(char *dst, const char __user *src, long count, unsigned long max) { @@ -147011,7 +147359,7 @@ index 4f5b1dd..7cab418 100644 +} +EXPORT_SYMBOL(copy_to_user_overflow); diff --git a/lib/vsprintf.c b/lib/vsprintf.c -index ccb664b..be065a5 100644 +index 0967771..aaabd5d 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -16,6 +16,9 @@ @@ -147024,7 +147372,7 @@ index ccb664b..be065a5 100644 #include <stdarg.h> #include <linux/clk.h> #include <linux/clk-provider.h> -@@ -679,7 +682,7 @@ char *symbol_string(char *buf, char *end, void *ptr, +@@ -680,7 +683,7 @@ char *symbol_string(char *buf, char *end, void *ptr, #ifdef CONFIG_KALLSYMS if (*fmt == 'B') sprint_backtrace(sym, value); @@ -147033,7 +147381,7 @@ index ccb664b..be065a5 100644 sprint_symbol(sym, value); else sprint_symbol_no_offset(sym, value); -@@ -1475,7 +1478,11 @@ char *flags_string(char *buf, char *end, void *flags_ptr, const char *fmt) +@@ -1470,7 +1473,11 @@ char *flags_string(char *buf, char *end, void *flags_ptr, const char *fmt) return format_flags(buf, end, flags, names); } @@ -147046,7 +147394,7 @@ index ccb664b..be065a5 100644 /* * Show a '%p' thing. A kernel extension is that the '%p' is followed -@@ -1486,8 +1493,10 @@ int kptr_restrict __read_mostly; +@@ -1481,8 +1488,10 @@ int kptr_restrict __read_mostly; * * - 'F' For symbolic function descriptor pointers with offset * - 'f' For simple symbolic function names without offset @@ -147057,7 +147405,7 @@ index ccb664b..be065a5 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] -@@ -1583,12 +1592,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1578,12 +1587,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, if (!ptr && *fmt != 'K') { /* @@ -147072,7 +147420,7 @@ index ccb664b..be065a5 100644 } switch (*fmt) { -@@ -1598,6 +1607,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1593,6 +1602,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, /* Fallthrough */ case 'S': case 's': @@ -147087,7 +147435,7 @@ index ccb664b..be065a5 100644 case 'B': return symbol_string(buf, end, ptr, spec, fmt); case 'R': -@@ -1662,6 +1679,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1657,6 +1674,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, va_end(va); return buf; } @@ -147096,7 +147444,7 @@ index ccb664b..be065a5 100644 case 'K': switch (kptr_restrict) { case 0: -@@ -1691,6 +1710,9 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1686,6 +1705,9 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, */ cred = current_cred(); if (!has_capability_noaudit(current, CAP_SYSLOG) || @@ -147106,7 +147454,7 @@ index ccb664b..be065a5 100644 !uid_eq(cred->euid, cred->uid) || !gid_eq(cred->egid, cred->gid)) ptr = NULL; -@@ -1724,6 +1746,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1719,6 +1741,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, case 'G': return flags_string(buf, end, ptr, fmt); } @@ -147129,7 +147477,7 @@ index ccb664b..be065a5 100644 spec.flags |= SMALL; if (spec.field_width == -1) { spec.field_width = default_width; -@@ -2424,11 +2462,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) +@@ -2419,11 +2457,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)); \ @@ -147144,7 +147492,7 @@ index ccb664b..be065a5 100644 } \ args += sizeof(type); \ value; \ -@@ -2491,7 +2529,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) +@@ -2486,7 +2524,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; @@ -147161,10 +147509,10 @@ index 0000000..7cd6065 @@ -0,0 +1 @@ +-grsec diff --git a/mm/Kconfig b/mm/Kconfig -index 989f8f3..3f7e8cc 100644 +index 3e2daef..1ed2829 100644 --- a/mm/Kconfig +++ b/mm/Kconfig -@@ -323,10 +323,11 @@ config KSM +@@ -334,10 +334,11 @@ config KSM root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set). config DEFAULT_MMAP_MIN_ADDR @@ -147179,7 +147527,7 @@ index 989f8f3..3f7e8cc 100644 This is the portion of low virtual memory which should be protected from userspace allocation. Keeping a user from writing to low pages can help reduce the impact of kernel NULL pointer bugs. -@@ -358,8 +359,9 @@ config MEMORY_FAILURE +@@ -369,8 +370,9 @@ config MEMORY_FAILURE config HWPOISON_INJECT tristate "HWPoison pages injector" @@ -147190,7 +147538,7 @@ index 989f8f3..3f7e8cc 100644 config NOMMU_INITIAL_TRIM_EXCESS int "Turn on mmap() excess space trimming before booting" -@@ -520,6 +522,7 @@ config MEM_SOFT_DIRTY +@@ -532,6 +534,7 @@ config MEM_SOFT_DIRTY bool "Track memory changes" depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS select PROC_PAGE_MONITOR @@ -147198,7 +147546,7 @@ index 989f8f3..3f7e8cc 100644 help This option enables memory changes tracking by introducing a soft-dirty bit on pte-s. This bit it set when someone writes -@@ -594,6 +597,7 @@ config ZSMALLOC_STAT +@@ -616,6 +619,7 @@ config ZSMALLOC_STAT bool "Export zsmalloc statistics" depends on ZSMALLOC select DEBUG_FS @@ -147219,7 +147567,7 @@ index 22f4cd9..402f316 100644 depends on !KMEMCHECK select PAGE_EXTENSION diff --git a/mm/backing-dev.c b/mm/backing-dev.c -index 0c6317b..24c13bd 100644 +index ed173b8..df5f896 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -12,7 +12,7 @@ @@ -147241,10 +147589,10 @@ index 0c6317b..24c13bd 100644 bdi_destroy(bdi); return err; diff --git a/mm/fadvise.c b/mm/fadvise.c -index b8024fa..132d187 100644 +index 6c707bf..c8d0529 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c -@@ -154,7 +154,7 @@ out: +@@ -165,7 +165,7 @@ out: #ifdef __ARCH_WANT_SYS_FADVISE64 @@ -147254,10 +147602,10 @@ index b8024fa..132d187 100644 return sys_fadvise64_64(fd, offset, len, advice); } diff --git a/mm/filemap.c b/mm/filemap.c -index f2479af..13e3c295 100644 +index 20f3b1f..10fc7ab 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2244,7 +2244,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) +@@ -2241,7 +2241,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) @@ -147266,7 +147614,7 @@ index f2479af..13e3c295 100644 file_accessed(file); vma->vm_ops = &generic_file_vm_ops; return 0; -@@ -2287,7 +2287,7 @@ static struct page *wait_on_page_read(struct page *page) +@@ -2284,7 +2284,7 @@ static struct page *wait_on_page_read(struct page *page) static struct page *do_read_cache_page(struct address_space *mapping, pgoff_t index, @@ -147275,7 +147623,7 @@ index f2479af..13e3c295 100644 void *data, gfp_t gfp) { -@@ -2394,7 +2394,7 @@ out: +@@ -2391,7 +2391,7 @@ out: */ struct page *read_cache_page(struct address_space *mapping, pgoff_t index, @@ -147284,7 +147632,7 @@ index f2479af..13e3c295 100644 void *data) { return do_read_cache_page(mapping, index, filler, data, mapping_gfp_mask(mapping)); -@@ -2416,7 +2416,7 @@ struct page *read_cache_page_gfp(struct address_space *mapping, +@@ -2413,7 +2413,7 @@ struct page *read_cache_page_gfp(struct address_space *mapping, pgoff_t index, gfp_t gfp) { @@ -147293,7 +147641,7 @@ index f2479af..13e3c295 100644 return do_read_cache_page(mapping, index, filler, NULL, gfp); } -@@ -2446,6 +2446,7 @@ inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from) +@@ -2443,6 +2443,7 @@ inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from) pos = iocb->ki_pos; if (limit != RLIM_INFINITY) { @@ -147353,10 +147701,10 @@ index c057784..aafea3a 100644 } EXPORT_SYMBOL(__get_user_pages); diff --git a/mm/highmem.c b/mm/highmem.c -index 123bcd3..c2c85db 100644 +index 50b4ca6..cf64608 100644 --- a/mm/highmem.c +++ b/mm/highmem.c -@@ -195,8 +195,9 @@ static void flush_all_zero_pkmaps(void) +@@ -191,8 +191,9 @@ static void flush_all_zero_pkmaps(void) * So no dangers, even with speculative execution. */ page = pte_page(pkmap_page_table[i]); @@ -147367,7 +147715,7 @@ index 123bcd3..c2c85db 100644 set_page_address(page, NULL); need_flush = 1; } -@@ -259,8 +260,11 @@ start: +@@ -255,8 +256,11 @@ start: } } vaddr = PKMAP_ADDR(last_pkmap_nr); @@ -147380,10 +147728,10 @@ index 123bcd3..c2c85db 100644 pkmap_count[last_pkmap_nr] = 1; set_page_address(page, (void *)vaddr); diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index 19d0d08..9a1ad47 100644 +index addfe4ac..bc76631 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c -@@ -38,7 +38,60 @@ int hugepages_treat_as_movable; +@@ -38,7 +38,72 @@ int hugepages_treat_as_movable; int hugetlb_max_hstate __read_mostly; unsigned int default_hstate_idx; @@ -147418,6 +147766,12 @@ index 19d0d08..9a1ad47 100644 + [1] = CFTYPE_INIT(1), +# endif +# if HUGE_MAX_HSTATE > 2 ++ [2] = CFTYPE_INIT(2), ++# endif ++# if HUGE_MAX_HSTATE > 3 ++ [3] = CFTYPE_INIT(3), ++# endif ++# if HUGE_MAX_HSTATE > 4 +# error PaX: add more initializers... +# endif + @@ -147436,6 +147790,12 @@ index 19d0d08..9a1ad47 100644 + HSTATE_INIT(1), +# endif +# if HUGE_MAX_HSTATE > 2 ++ HSTATE_INIT(2), ++# endif ++# if HUGE_MAX_HSTATE > 3 ++ HSTATE_INIT(3), ++# endif ++# if HUGE_MAX_HSTATE > 4 +# error PaX: add more initializers... +# endif + @@ -147445,7 +147805,7 @@ index 19d0d08..9a1ad47 100644 /* * Minimum page order among possible hugepage sizes, set to a proper value * at boot time. -@@ -2745,6 +2798,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, +@@ -2800,6 +2865,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) { @@ -147453,7 +147813,7 @@ index 19d0d08..9a1ad47 100644 struct hstate *h = &default_hstate; unsigned long tmp = h->max_huge_pages; int ret; -@@ -2752,9 +2806,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, +@@ -2807,9 +2873,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, if (!hugepages_supported()) return -EOPNOTSUPP; @@ -147467,7 +147827,7 @@ index 19d0d08..9a1ad47 100644 if (ret) goto out; -@@ -2789,6 +2844,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, +@@ -2844,6 +2911,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, struct hstate *h = &default_hstate; unsigned long tmp; int ret; @@ -147475,7 +147835,7 @@ index 19d0d08..9a1ad47 100644 if (!hugepages_supported()) return -EOPNOTSUPP; -@@ -2798,9 +2854,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, +@@ -2853,9 +2921,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, if (write && hstate_is_gigantic(h)) return -EINVAL; @@ -147489,7 +147849,7 @@ index 19d0d08..9a1ad47 100644 if (ret) goto out; -@@ -3306,6 +3363,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3361,6 +3430,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, i_mmap_unlock_write(mapping); } @@ -147517,7 +147877,7 @@ index 19d0d08..9a1ad47 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 -@@ -3419,6 +3497,11 @@ retry_avoidcopy: +@@ -3474,6 +3564,11 @@ retry_avoidcopy: make_huge_pte(vma, new_page, 1)); page_remove_rmap(old_page, true); hugepage_add_new_anon_rmap(new_page, vma, address); @@ -147529,7 +147889,7 @@ index 19d0d08..9a1ad47 100644 /* Make the old page be freed below */ new_page = old_page; } -@@ -3592,6 +3675,10 @@ retry: +@@ -3647,6 +3742,10 @@ retry: && (vma->vm_flags & VM_SHARED))); set_huge_pte_at(mm, address, ptep, new_pte); @@ -147540,7 +147900,7 @@ index 19d0d08..9a1ad47 100644 hugetlb_count_add(pages_per_huge_page(h), mm); if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { /* Optimization, do the COW without a second fault */ -@@ -3660,6 +3747,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3715,6 +3814,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, struct address_space *mapping; int need_wait_lock = 0; @@ -147551,7 +147911,7 @@ index 19d0d08..9a1ad47 100644 address &= huge_page_mask(h); ptep = huge_pte_offset(mm, address); -@@ -3677,6 +3768,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3732,6 +3835,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, return VM_FAULT_OOM; } @@ -147579,7 +147939,7 @@ index 19d0d08..9a1ad47 100644 idx = vma_hugecache_offset(h, vma, address); diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c -index d8fb10d..1c74822 100644 +index eec1150..af03e3e 100644 --- a/mm/hugetlb_cgroup.c +++ b/mm/hugetlb_cgroup.c @@ -27,7 +27,6 @@ struct hugetlb_cgroup { @@ -147590,7 +147950,7 @@ index d8fb10d..1c74822 100644 #define MEMFILE_IDX(val) (((val) >> 16) & 0xffff) #define MEMFILE_ATTR(val) ((val) & 0xffff) -@@ -238,14 +237,7 @@ void hugetlb_cgroup_uncharge_cgroup(int idx, unsigned long nr_pages, +@@ -254,14 +253,7 @@ void hugetlb_cgroup_uncharge_cgroup(int idx, unsigned long nr_pages, return; } @@ -147606,7 +147966,7 @@ index d8fb10d..1c74822 100644 struct cftype *cft) { struct page_counter *counter; -@@ -269,7 +261,7 @@ static u64 hugetlb_cgroup_read_u64(struct cgroup_subsys_state *css, +@@ -285,7 +277,7 @@ static u64 hugetlb_cgroup_read_u64(struct cgroup_subsys_state *css, static DEFINE_MUTEX(hugetlb_limit_mutex); @@ -147615,7 +147975,7 @@ index d8fb10d..1c74822 100644 char *buf, size_t nbytes, loff_t off) { int ret, idx; -@@ -299,7 +291,7 @@ static ssize_t hugetlb_cgroup_write(struct kernfs_open_file *of, +@@ -316,7 +308,7 @@ static ssize_t hugetlb_cgroup_write(struct kernfs_open_file *of, return ret ?: nbytes; } @@ -147624,7 +147984,7 @@ index d8fb10d..1c74822 100644 char *buf, size_t nbytes, loff_t off) { int ret = 0; -@@ -335,46 +327,26 @@ static char *mem_fmt(char *buf, int size, unsigned long hsize) +@@ -352,46 +344,26 @@ static char *mem_fmt(char *buf, int size, unsigned long hsize) static void __init __hugetlb_cgroup_file_init(int idx) { @@ -147685,10 +148045,10 @@ index d8fb10d..1c74822 100644 void __init hugetlb_cgroup_file_init(void) diff --git a/mm/internal.h b/mm/internal.h -index b79abb6..8b28234 100644 +index 2524ec8..635a56b 100644 --- a/mm/internal.h +++ b/mm/internal.h -@@ -147,6 +147,7 @@ static inline struct page *pageblock_pfn_to_page(unsigned long start_pfn, +@@ -149,6 +149,7 @@ static inline struct page *pageblock_pfn_to_page(unsigned long start_pfn, extern int __isolate_free_page(struct page *page, unsigned int order); extern void __free_pages_bootmem(struct page *page, unsigned long pfn, unsigned int order); @@ -147696,7 +148056,7 @@ index b79abb6..8b28234 100644 extern void prep_compound_page(struct page *page, unsigned int order); extern int user_min_free_kbytes; -@@ -247,7 +248,7 @@ static inline bool is_exec_mapping(vm_flags_t flags) +@@ -250,7 +251,7 @@ static inline bool is_exec_mapping(vm_flags_t flags) */ static inline bool is_stack_mapping(vm_flags_t flags) { @@ -147706,10 +148066,10 @@ index b79abb6..8b28234 100644 /* diff --git a/mm/kmemleak.c b/mm/kmemleak.c -index e642992..b6128bc 100644 +index 04320d3..9646dbb 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c -@@ -365,7 +365,7 @@ static void print_unreferenced(struct seq_file *seq, +@@ -367,7 +367,7 @@ static void print_unreferenced(struct seq_file *seq, for (i = 0; i < object->trace_len; i++) { void *ptr = (void *)object->trace[i]; @@ -147718,7 +148078,7 @@ index e642992..b6128bc 100644 } } -@@ -1955,7 +1955,7 @@ static int __init kmemleak_late_init(void) +@@ -1957,7 +1957,7 @@ static int __init kmemleak_late_init(void) return -ENOMEM; } @@ -147728,7 +148088,7 @@ index e642992..b6128bc 100644 if (!dentry) pr_warn("Failed to create the debugfs kmemleak file\n"); diff --git a/mm/maccess.c b/mm/maccess.c -index d159b1c..7655796 100644 +index 78f9274..5d8c2e02 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -28,12 +28,12 @@ long __probe_kernel_read(void *dst, const void *src, size_t size) @@ -147763,7 +148123,7 @@ index d159b1c..7655796 100644 return ret ? -EFAULT : 0; } diff --git a/mm/madvise.c b/mm/madvise.c -index 07427d3..05f1d57 100644 +index 93fb63e..0aa6448 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -56,6 +56,10 @@ static long madvise_behavior(struct vm_area_struct *vma, @@ -147837,7 +148197,7 @@ index 07427d3..05f1d57 100644 if (end == start) return error; diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index a2e79b8..66b4b808 100644 +index 5339c89..19e7895 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -723,7 +723,7 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page) @@ -147849,7 +148209,7 @@ index a2e79b8..66b4b808 100644 #endif } } -@@ -1352,7 +1352,7 @@ static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg) +@@ -1375,7 +1375,7 @@ static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg) * numainfo_events > 0 means there was at least NUMAINFO_EVENTS_TARGET * pagein/pageout changes since the last update. */ @@ -147858,7 +148218,7 @@ index a2e79b8..66b4b808 100644 return; if (atomic_inc_return(&memcg->numainfo_updating) > 1) return; -@@ -1366,7 +1366,7 @@ static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg) +@@ -1389,7 +1389,7 @@ static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg) node_clear(nid, memcg->scan_nodes); } @@ -147868,7 +148228,7 @@ index a2e79b8..66b4b808 100644 } diff --git a/mm/memory-failure.c b/mm/memory-failure.c -index ca5acee..bee974a 100644 +index 2fcca6b..e30621e 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -64,7 +64,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; @@ -147881,7 +148241,7 @@ index ca5acee..bee974a 100644 #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE) @@ -188,7 +188,7 @@ static int kill_proc(struct task_struct *t, unsigned long addr, int trapno, - pfn, t->comm, t->pid); + pfn, t->comm, t->pid); si.si_signo = SIGBUS; si.si_errno = 0; - si.si_addr = (void *)addr; @@ -147889,7 +148249,7 @@ index ca5acee..bee974a 100644 #ifdef __ARCH_SI_TRAPNO si.si_trapno = trapno; #endif -@@ -779,7 +779,7 @@ static struct page_state { +@@ -781,7 +781,7 @@ static struct page_state { unsigned long res; enum mf_action_page_type type; int (*action)(struct page *p, unsigned long pfn); @@ -147899,10 +148259,10 @@ index ca5acee..bee974a 100644 /* * free pages are specially detected outside this table: diff --git a/mm/memory.c b/mm/memory.c -index 07493e3..052aa0f 100644 +index 9e04681..30759a2 100644 --- a/mm/memory.c +++ b/mm/memory.c -@@ -417,6 +417,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, +@@ -418,6 +418,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, free_pte_range(tlb, pmd, addr); } while (pmd++, addr = next, addr != end); @@ -147910,7 +148270,7 @@ index 07493e3..052aa0f 100644 start &= PUD_MASK; if (start < floor) return; -@@ -432,6 +433,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, +@@ -433,6 +434,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, pud_clear(pud); pmd_free_tlb(tlb, pmd, start); mm_dec_nr_pmds(tlb->mm); @@ -147918,7 +148278,7 @@ index 07493e3..052aa0f 100644 } static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, -@@ -451,6 +453,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, +@@ -452,6 +454,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, free_pmd_range(tlb, pud, addr, next, floor, ceiling); } while (pud++, addr = next, addr != end); @@ -147926,7 +148286,7 @@ index 07493e3..052aa0f 100644 start &= PGDIR_MASK; if (start < floor) return; -@@ -465,6 +468,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, +@@ -466,6 +469,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, pud = pud_offset(pgd, start); pgd_clear(pgd); pud_free_tlb(tlb, pud, start); @@ -147935,7 +148295,7 @@ index 07493e3..052aa0f 100644 } /* -@@ -683,7 +688,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr, +@@ -684,7 +689,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 */ @@ -147944,7 +148304,7 @@ index 07493e3..052aa0f 100644 vma->vm_file, vma->vm_ops ? vma->vm_ops->fault : NULL, vma->vm_file ? vma->vm_file->f_op->mmap : NULL, -@@ -1481,6 +1486,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, +@@ -1482,6 +1487,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)); @@ -147955,7 +148315,7 @@ index 07493e3..052aa0f 100644 retval = 0; pte_unmap_unlock(pte, ptl); return retval; -@@ -1525,9 +1534,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, +@@ -1526,9 +1535,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)) { @@ -147977,7 +148337,7 @@ index 07493e3..052aa0f 100644 } return insert_page(vma, addr, page, vma->vm_page_prot); } -@@ -1634,6 +1655,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, +@@ -1635,6 +1656,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, pfn_t pfn) { BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); @@ -147985,7 +148345,7 @@ index 07493e3..052aa0f 100644 if (addr < vma->vm_start || addr >= vma->vm_end) return -EFAULT; -@@ -1886,7 +1908,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, +@@ -1888,7 +1910,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, BUG_ON(pud_huge(*pud)); @@ -147996,7 +148356,7 @@ index 07493e3..052aa0f 100644 if (!pmd) return -ENOMEM; do { -@@ -1906,7 +1930,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, +@@ -1908,7 +1932,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, unsigned long next; int err; @@ -148007,7 +148367,7 @@ index 07493e3..052aa0f 100644 if (!pud) return -ENOMEM; do { -@@ -2104,6 +2130,196 @@ static inline int wp_page_reuse(struct mm_struct *mm, +@@ -2106,6 +2132,196 @@ static inline int wp_page_reuse(struct mm_struct *mm, return VM_FAULT_WRITE; } @@ -148204,7 +148564,7 @@ index 07493e3..052aa0f 100644 /* * Handle the case of a page which we actually need to copy to a new page. * -@@ -2158,6 +2374,12 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2160,6 +2376,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))) { @@ -148217,7 +148577,7 @@ index 07493e3..052aa0f 100644 if (old_page) { if (!PageAnon(old_page)) { dec_mm_counter_fast(mm, -@@ -2213,6 +2435,10 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2215,6 +2437,10 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma, page_remove_rmap(old_page, false); } @@ -148228,7 +148588,7 @@ index 07493e3..052aa0f 100644 /* Free the old page.. */ new_page = old_page; page_copied = 1; -@@ -2646,6 +2872,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2645,6 +2871,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, if (mem_cgroup_swap_full(page) || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) try_to_free_swap(page); @@ -148240,7 +148600,7 @@ index 07493e3..052aa0f 100644 unlock_page(page); if (page != swapcache) { /* -@@ -2669,6 +2900,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2668,6 +2899,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); @@ -148252,7 +148612,7 @@ index 07493e3..052aa0f 100644 unlock: pte_unmap_unlock(page_table, ptl); out: -@@ -2688,40 +2924,6 @@ out_release: +@@ -2687,40 +2923,6 @@ out_release: } /* @@ -148293,7 +148653,7 @@ index 07493e3..052aa0f 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. -@@ -2731,25 +2933,22 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2730,25 +2932,22 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned int flags) { struct mem_cgroup *memcg; @@ -148325,7 +148685,7 @@ index 07493e3..052aa0f 100644 if (!pte_none(*page_table)) goto unlock; /* Deliver the page fault to userland, check inside PT lock */ -@@ -2762,6 +2961,8 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2761,6 +2960,8 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, } /* Allocate our own private page. */ @@ -148334,7 +148694,7 @@ index 07493e3..052aa0f 100644 if (unlikely(anon_vma_prepare(vma))) goto oom; page = alloc_zeroed_user_highpage_movable(vma, address); -@@ -2795,6 +2996,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2794,6 +2995,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, VM_UFFD_MISSING); } @@ -148346,7 +148706,7 @@ index 07493e3..052aa0f 100644 inc_mm_counter_fast(mm, MM_ANONPAGES); page_add_new_anon_rmap(page, vma, address, false); mem_cgroup_commit_charge(page, memcg, false, false); -@@ -2804,6 +3010,12 @@ setpte: +@@ -2803,6 +3009,12 @@ setpte: /* No need to invalidate - it was non-present before */ update_mmu_cache(vma, address, page_table); @@ -148359,7 +148719,7 @@ index 07493e3..052aa0f 100644 unlock: pte_unmap_unlock(page_table, ptl); return 0; -@@ -3038,6 +3250,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3039,6 +3251,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); @@ -148390,7 +148750,7 @@ index 07493e3..052aa0f 100644 mem_cgroup_commit_charge(new_page, memcg, false, false); lru_cache_add_active_or_unevictable(new_page, vma); pte_unmap_unlock(pte, ptl); -@@ -3147,6 +3375,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3143,6 +3371,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); @@ -148402,7 +148762,7 @@ index 07493e3..052aa0f 100644 pte_unmap_unlock(pte, ptl); if (set_page_dirty(fault_page)) -@@ -3398,6 +3631,12 @@ static int handle_pte_fault(struct mm_struct *mm, +@@ -3394,6 +3627,12 @@ static int handle_pte_fault(struct mm_struct *mm, if (flags & FAULT_FLAG_WRITE) flush_tlb_fix_spurious_fault(vma, address); } @@ -148415,7 +148775,7 @@ index 07493e3..052aa0f 100644 unlock: pte_unmap_unlock(pte, ptl); return 0; -@@ -3417,6 +3656,10 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3413,6 +3652,10 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, pmd_t *pmd; pte_t *pte; @@ -148426,7 +148786,7 @@ index 07493e3..052aa0f 100644 if (!arch_vma_access_permitted(vma, flags & FAULT_FLAG_WRITE, flags & FAULT_FLAG_INSTRUCTION, flags & FAULT_FLAG_REMOTE)) -@@ -3425,6 +3668,34 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3421,6 +3664,34 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, if (unlikely(is_vm_hugetlb_page(vma))) return hugetlb_fault(mm, vma, address, flags); @@ -148461,7 +148821,7 @@ index 07493e3..052aa0f 100644 pgd = pgd_offset(mm, address); pud = pud_alloc(mm, pgd, address); if (!pud) -@@ -3557,6 +3828,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) +@@ -3553,6 +3824,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) spin_unlock(&mm->page_table_lock); return 0; } @@ -148485,7 +148845,7 @@ index 07493e3..052aa0f 100644 #endif /* __PAGETABLE_PUD_FOLDED */ #ifndef __PAGETABLE_PMD_FOLDED -@@ -3589,6 +3877,32 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) +@@ -3585,6 +3873,32 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) spin_unlock(&mm->page_table_lock); return 0; } @@ -148518,7 +148878,7 @@ index 07493e3..052aa0f 100644 #endif /* __PAGETABLE_PMD_FOLDED */ static int __follow_pte(struct mm_struct *mm, unsigned long address, -@@ -3698,8 +4012,8 @@ out: +@@ -3694,8 +4008,8 @@ out: return ret; } @@ -148529,7 +148889,7 @@ index 07493e3..052aa0f 100644 { resource_size_t phys_addr; unsigned long prot = 0; -@@ -3725,8 +4039,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); +@@ -3721,8 +4035,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. */ @@ -148540,7 +148900,7 @@ index 07493e3..052aa0f 100644 { struct vm_area_struct *vma; void *old_buf = buf; -@@ -3734,7 +4048,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3730,7 +4044,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) { @@ -148549,7 +148909,7 @@ index 07493e3..052aa0f 100644 void *maddr; struct page *page = NULL; -@@ -3795,8 +4109,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3791,8 +4105,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, * * The caller must hold a reference on @mm. */ @@ -148560,7 +148920,7 @@ index 07493e3..052aa0f 100644 { return __access_remote_vm(NULL, mm, addr, buf, len, write); } -@@ -3806,11 +4120,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, +@@ -3802,11 +4116,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 */ @@ -148576,10 +148936,10 @@ index 07493e3..052aa0f 100644 mm = get_task_mm(tsk); if (!mm) diff --git a/mm/mempolicy.c b/mm/mempolicy.c -index 36cc01b..d862cd8 100644 +index 297d685..388696f 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c -@@ -733,6 +733,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, +@@ -730,6 +730,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, unsigned long vmstart; unsigned long vmend; @@ -148590,7 +148950,7 @@ index 36cc01b..d862cd8 100644 vma = find_vma(mm, start); if (!vma || vma->vm_start > start) return -EFAULT; -@@ -776,6 +780,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, +@@ -773,6 +777,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, err = vma_replace_policy(vma, new_pol); if (err) goto out; @@ -148607,7 +148967,7 @@ index 36cc01b..d862cd8 100644 } out: -@@ -1191,6 +1205,17 @@ static long do_mbind(unsigned long start, unsigned long len, +@@ -1188,6 +1202,17 @@ static long do_mbind(unsigned long start, unsigned long len, if (end < start) return -EINVAL; @@ -148625,7 +148985,7 @@ index 36cc01b..d862cd8 100644 if (end == start) return 0; -@@ -1416,8 +1441,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, +@@ -1413,8 +1438,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) && @@ -148635,7 +148995,7 @@ index 36cc01b..d862cd8 100644 rcu_read_unlock(); err = -EPERM; goto out_put; -@@ -1448,6 +1472,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, +@@ -1445,6 +1469,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, goto out; } @@ -148652,10 +149012,10 @@ index 36cc01b..d862cd8 100644 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); diff --git a/mm/migrate.c b/mm/migrate.c -index bdf3410..d7158a8 100644 +index bd3fdc2..92133a0 100644 --- a/mm/migrate.c +++ b/mm/migrate.c -@@ -1526,8 +1526,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, +@@ -1527,8 +1527,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) && @@ -148666,7 +149026,7 @@ index bdf3410..d7158a8 100644 err = -EPERM; goto out; diff --git a/mm/mlock.c b/mm/mlock.c -index 96f0010..21004da 100644 +index ef8dc9f..3f4d230 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -14,6 +14,7 @@ @@ -148712,7 +149072,7 @@ index 96f0010..21004da 100644 newflags |= flags; /* Here we know that vma->vm_start <= nstart < vma->vm_end. */ -@@ -640,6 +650,10 @@ static int do_mlock(unsigned long start, size_t len, vm_flags_t flags) +@@ -641,6 +651,10 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla locked += current->mm->locked_vm; /* check against resource limits */ @@ -148723,7 +149083,7 @@ index 96f0010..21004da 100644 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK)) error = apply_vma_lock_flags(start, len, flags); -@@ -720,6 +734,11 @@ static int apply_mlockall_flags(int flags) +@@ -722,6 +736,11 @@ static int apply_mlockall_flags(int flags) for (vma = current->mm->mmap; vma ; vma = prev->vm_next) { vm_flags_t newflags; @@ -148735,13 +149095,10 @@ index 96f0010..21004da 100644 newflags = vma->vm_flags & VM_LOCKED_CLEAR_MASK; newflags |= to_add; -@@ -749,8 +768,12 @@ SYSCALL_DEFINE1(mlockall, int, flags) - lock_limit >>= PAGE_SHIFT; +@@ -754,6 +773,10 @@ SYSCALL_DEFINE1(mlockall, int, flags) + return -EINTR; ret = -ENOMEM; -- down_write(¤t->mm->mmap_sem); - -+ down_write(¤t->mm->mmap_sem); + if (current->mm->total_vm > (ULONG_MAX >> PAGE_SHIFT)) + gr_learn_resource(current, RLIMIT_MEMLOCK, ULONG_MAX, 1); + else @@ -148763,7 +149120,7 @@ index 5b72266..dc04ce5 100644 .priority = IPC_CALLBACK_PRI, /* use lowest priority */ }; diff --git a/mm/mmap.c b/mm/mmap.c -index bd2e1a53..cbb2d1b 100644 +index de2c176..d5c0b5f 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -43,6 +43,7 @@ @@ -148774,8 +149131,8 @@ index bd2e1a53..cbb2d1b 100644 #include <asm/uaccess.h> #include <asm/cacheflush.h> -@@ -73,6 +74,16 @@ int mmap_rnd_compat_bits __read_mostly = CONFIG_ARCH_MMAP_RND_COMPAT_BITS; - static bool ignore_rlimit_data = true; +@@ -69,6 +70,16 @@ int mmap_rnd_compat_bits __read_mostly = CONFIG_ARCH_MMAP_RND_COMPAT_BITS; + static bool ignore_rlimit_data; core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644); +static inline void verify_mm_writelocked(struct mm_struct *mm) @@ -148791,7 +149148,7 @@ index bd2e1a53..cbb2d1b 100644 static void unmap_region(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev, unsigned long start, unsigned long end); -@@ -92,16 +103,25 @@ static void unmap_region(struct mm_struct *mm, +@@ -88,16 +99,25 @@ static void unmap_region(struct mm_struct *mm, * x: (no) no x: (no) yes x: (no) yes x: (yes) yes * */ @@ -148820,7 +149177,7 @@ index bd2e1a53..cbb2d1b 100644 } EXPORT_SYMBOL(vm_get_page_prot); -@@ -163,6 +183,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +@@ -159,6 +179,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) struct vm_area_struct *next = vma->vm_next; might_sleep(); @@ -148828,7 +149185,7 @@ index bd2e1a53..cbb2d1b 100644 if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) -@@ -176,6 +197,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len); +@@ -172,6 +193,7 @@ static int do_brk(unsigned long addr, unsigned long len); SYSCALL_DEFINE1(brk, unsigned long, brk) { @@ -148836,7 +149193,7 @@ index bd2e1a53..cbb2d1b 100644 unsigned long retval; unsigned long newbrk, oldbrk; struct mm_struct *mm = current->mm; -@@ -206,7 +228,13 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) +@@ -203,7 +225,13 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) * segment grow beyond its set limit the in case where the limit is * not page aligned -Ram Gupta */ @@ -148851,7 +149208,7 @@ index bd2e1a53..cbb2d1b 100644 mm->end_data, mm->start_data)) goto out; -@@ -871,6 +899,12 @@ can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, +@@ -868,6 +896,12 @@ can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx) { @@ -148864,7 +149221,7 @@ index bd2e1a53..cbb2d1b 100644 if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { if (vma->vm_pgoff == vm_pgoff) -@@ -892,6 +926,12 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, +@@ -889,6 +923,12 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx) { @@ -148877,7 +149234,7 @@ index bd2e1a53..cbb2d1b 100644 if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { pgoff_t vm_pglen; -@@ -942,6 +982,13 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, +@@ -939,6 +979,13 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, struct vm_area_struct *area, *next; int err; @@ -148891,7 +149248,7 @@ index bd2e1a53..cbb2d1b 100644 /* * We later require that vma->vm_flags == vm_flags, * so this tests vma->vm_flags & VM_SPECIAL, too. -@@ -957,6 +1004,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, +@@ -954,6 +1001,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, if (next && next->vm_end == end) /* cases 6, 7, 8 */ next = next->vm_next; @@ -148907,7 +149264,7 @@ index bd2e1a53..cbb2d1b 100644 /* * Can it merge with the predecessor? */ -@@ -979,9 +1035,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, +@@ -976,9 +1032,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, /* cases 1, 6 */ err = vma_adjust(prev, prev->vm_start, next->vm_end, prev->vm_pgoff, NULL); @@ -148933,7 +149290,7 @@ index bd2e1a53..cbb2d1b 100644 if (err) return NULL; khugepaged_enter_vma_merge(prev, vm_flags); -@@ -996,12 +1067,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, +@@ -993,12 +1064,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, can_vma_merge_before(next, vm_flags, anon_vma, file, pgoff+pglen, vm_userfaultfd_ctx)) { @@ -148963,7 +149320,7 @@ index bd2e1a53..cbb2d1b 100644 if (err) return NULL; khugepaged_enter_vma_merge(area, vm_flags); -@@ -1131,6 +1217,10 @@ static inline int mlock_future_check(struct mm_struct *mm, +@@ -1128,6 +1214,10 @@ static inline int mlock_future_check(struct mm_struct *mm, locked += mm->locked_vm; lock_limit = rlimit(RLIMIT_MEMLOCK); lock_limit >>= PAGE_SHIFT; @@ -148974,7 +149331,7 @@ index bd2e1a53..cbb2d1b 100644 if (locked > lock_limit && !capable(CAP_IPC_LOCK)) return -EAGAIN; } -@@ -1159,7 +1249,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, +@@ -1156,7 +1246,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, * (the exception is when the underlying filesystem is noexec * mounted, in which case we dont add PROT_EXEC.) */ @@ -148983,7 +149340,7 @@ index bd2e1a53..cbb2d1b 100644 if (!(file && path_noexec(&file->f_path))) prot |= PROT_EXEC; -@@ -1182,7 +1272,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, +@@ -1179,7 +1269,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, /* Obtain the address to map to. we verify (or select) it and ensure * that it represents a valid section of the address space. */ @@ -148992,7 +149349,7 @@ index bd2e1a53..cbb2d1b 100644 if (offset_in_page(addr)) return addr; -@@ -1199,6 +1289,43 @@ unsigned long do_mmap(struct file *file, unsigned long addr, +@@ -1196,6 +1286,43 @@ unsigned long do_mmap(struct file *file, unsigned long addr, vm_flags |= calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; @@ -149036,7 +149393,7 @@ index bd2e1a53..cbb2d1b 100644 if (flags & MAP_LOCKED) if (!can_do_mlock()) return -EPERM; -@@ -1286,6 +1413,9 @@ unsigned long do_mmap(struct file *file, unsigned long addr, +@@ -1283,6 +1410,9 @@ unsigned long do_mmap(struct file *file, unsigned long addr, vm_flags |= VM_NORESERVE; } @@ -149046,7 +149403,7 @@ index bd2e1a53..cbb2d1b 100644 addr = mmap_region(file, addr, len, vm_flags, pgoff); if (!IS_ERR_VALUE(addr) && ((vm_flags & VM_LOCKED) || -@@ -1379,7 +1509,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) +@@ -1376,7 +1506,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) const struct vm_operations_struct *vm_ops = vma->vm_ops; /* If it was private or non-writable, the write bit is already clear */ @@ -149055,7 +149412,7 @@ index bd2e1a53..cbb2d1b 100644 return 0; /* The backer wishes to know when pages are first written to? */ -@@ -1430,7 +1560,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1427,7 +1557,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr, struct rb_node **rb_link, *rb_parent; unsigned long charged = 0; @@ -149078,7 +149435,7 @@ index bd2e1a53..cbb2d1b 100644 if (!may_expand_vm(mm, vm_flags, len >> PAGE_SHIFT)) { unsigned long nr_pages; -@@ -1450,6 +1595,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1447,6 +1592,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, &rb_parent)) { if (do_munmap(mm, addr, len)) return -ENOMEM; @@ -149086,7 +149443,7 @@ index bd2e1a53..cbb2d1b 100644 } /* -@@ -1481,6 +1627,16 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1478,6 +1624,16 @@ unsigned long mmap_region(struct file *file, unsigned long addr, goto unacct_error; } @@ -149103,7 +149460,7 @@ index bd2e1a53..cbb2d1b 100644 vma->vm_mm = mm; vma->vm_start = addr; vma->vm_end = addr + len; -@@ -1511,6 +1667,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1508,6 +1664,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr, if (error) goto unmap_and_free_vma; @@ -149117,7 +149474,7 @@ index bd2e1a53..cbb2d1b 100644 /* Can addr have changed?? * * Answer: Yes, several device drivers can do it in their -@@ -1529,6 +1692,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1526,6 +1689,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr, } vma_link(mm, vma, prev, rb_link, rb_parent); @@ -149130,7 +149487,7 @@ index bd2e1a53..cbb2d1b 100644 /* Once vma denies write, undo our temporary denial count */ if (file) { if (vm_flags & VM_SHARED) -@@ -1541,6 +1710,7 @@ out: +@@ -1538,6 +1707,7 @@ out: perf_event_mmap(vma); vm_stat_account(mm, vm_flags, len >> PAGE_SHIFT); @@ -149138,7 +149495,7 @@ index bd2e1a53..cbb2d1b 100644 if (vm_flags & VM_LOCKED) { if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || vma == get_gate_vma(current->mm))) -@@ -1578,6 +1748,12 @@ allow_write_and_free_vma: +@@ -1575,6 +1745,12 @@ allow_write_and_free_vma: if (vm_flags & VM_DENYWRITE) allow_write_access(file); free_vma: @@ -149151,7 +149508,7 @@ index bd2e1a53..cbb2d1b 100644 kmem_cache_free(vm_area_cachep, vma); unacct_error: if (charged) -@@ -1585,7 +1761,54 @@ unacct_error: +@@ -1582,7 +1758,54 @@ unacct_error: return error; } @@ -149207,7 +149564,7 @@ index bd2e1a53..cbb2d1b 100644 { /* * We implement the search by looking for an rbtree node that -@@ -1633,11 +1856,20 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) +@@ -1630,11 +1853,20 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) } } @@ -149218,18 +149575,18 @@ index bd2e1a53..cbb2d1b 100644 if (gap_start > high_limit) return -ENOMEM; + ++ gap_start += skip_heap_stack_gap(vma->vm_prev, VM_GROWSUP, gap_start, gap_end); ++ gap_end -= skip_heap_stack_gap(vma, VM_GROWSDOWN, gap_start, gap_end); ++ + if (gap_end - gap_start > info->threadstack_offset) + gap_start += info->threadstack_offset; + else + gap_start = gap_end; + -+ gap_start += skip_heap_stack_gap(vma->vm_prev, VM_GROWSUP, gap_start, gap_end); -+ gap_end -= skip_heap_stack_gap(vma, VM_GROWSDOWN, gap_start, gap_end); -+ if (gap_end >= low_limit && gap_end - gap_start >= length) goto found; -@@ -1687,7 +1919,7 @@ found: +@@ -1684,7 +1916,7 @@ found: return gap_start; } @@ -149238,23 +149595,23 @@ index bd2e1a53..cbb2d1b 100644 { struct mm_struct *mm = current->mm; struct vm_area_struct *vma; -@@ -1741,6 +1973,15 @@ check_current: +@@ -1738,6 +1970,15 @@ check_current: gap_end = vma->vm_start; if (gap_end < low_limit) return -ENOMEM; + ++ gap_start += skip_heap_stack_gap(vma->vm_prev, VM_GROWSUP, gap_start, gap_end); ++ gap_end -= skip_heap_stack_gap(vma, VM_GROWSDOWN, gap_start, gap_end); ++ + if (gap_end - gap_start > info->threadstack_offset) + gap_end -= info->threadstack_offset; + else + gap_end = gap_start; + -+ gap_start += skip_heap_stack_gap(vma->vm_prev, VM_GROWSUP, gap_start, gap_end); -+ gap_end -= skip_heap_stack_gap(vma, VM_GROWSDOWN, gap_start, gap_end); -+ if (gap_start <= high_limit && gap_end - gap_start >= length) goto found; -@@ -1804,6 +2045,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1801,6 +2042,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; @@ -149262,7 +149619,7 @@ index bd2e1a53..cbb2d1b 100644 if (len > TASK_SIZE - mmap_min_addr) return -ENOMEM; -@@ -1811,11 +2053,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1808,11 +2050,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, if (flags & MAP_FIXED) return addr; @@ -149279,7 +149636,7 @@ index bd2e1a53..cbb2d1b 100644 return addr; } -@@ -1824,6 +2070,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1821,6 +2067,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; @@ -149287,7 +149644,7 @@ index bd2e1a53..cbb2d1b 100644 return vm_unmapped_area(&info); } #endif -@@ -1842,6 +2089,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1839,6 +2086,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; @@ -149295,7 +149652,7 @@ index bd2e1a53..cbb2d1b 100644 /* requested length too big for entire address space */ if (len > TASK_SIZE - mmap_min_addr) -@@ -1850,12 +2098,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1847,12 +2095,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, if (flags & MAP_FIXED) return addr; @@ -149313,7 +149670,7 @@ index bd2e1a53..cbb2d1b 100644 return addr; } -@@ -1864,6 +2116,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1861,6 +2113,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; @@ -149321,7 +149678,7 @@ index bd2e1a53..cbb2d1b 100644 addr = vm_unmapped_area(&info); /* -@@ -1876,6 +2129,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1873,6 +2126,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; @@ -149334,7 +149691,7 @@ index bd2e1a53..cbb2d1b 100644 info.high_limit = TASK_SIZE; addr = vm_unmapped_area(&info); } -@@ -1975,6 +2234,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, +@@ -1971,6 +2230,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, return vma; } @@ -149363,7 +149720,7 @@ index bd2e1a53..cbb2d1b 100644 /* * Verify that the stack growth is acceptable and * update accounting. This is shared with both the -@@ -1992,8 +2273,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -1988,8 +2269,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns /* Stack limit test */ actual_size = size; @@ -149373,7 +149730,7 @@ index bd2e1a53..cbb2d1b 100644 if (actual_size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur)) return -ENOMEM; -@@ -2004,6 +2284,10 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -2000,6 +2280,10 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns locked = mm->locked_vm + grow; limit = READ_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); limit >>= PAGE_SHIFT; @@ -149384,7 +149741,7 @@ index bd2e1a53..cbb2d1b 100644 if (locked > limit && !capable(CAP_IPC_LOCK)) return -ENOMEM; } -@@ -2029,17 +2313,21 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -2025,17 +2309,21 @@ 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. */ @@ -149408,7 +149765,7 @@ index bd2e1a53..cbb2d1b 100644 else return -ENOMEM; -@@ -2047,15 +2335,24 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) +@@ -2043,15 +2331,24 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) if (unlikely(anon_vma_prepare(vma))) return -ENOMEM; @@ -149435,7 +149792,7 @@ index bd2e1a53..cbb2d1b 100644 unsigned long size, grow; size = address - vma->vm_start; -@@ -2093,6 +2390,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) +@@ -2089,6 +2386,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) } } } @@ -149444,7 +149801,7 @@ index bd2e1a53..cbb2d1b 100644 anon_vma_unlock_write(vma->anon_vma); khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(mm); -@@ -2108,6 +2407,8 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2104,6 +2403,8 @@ int expand_downwards(struct vm_area_struct *vma, { struct mm_struct *mm = vma->vm_mm; int error; @@ -149453,7 +149810,7 @@ index bd2e1a53..cbb2d1b 100644 address &= PAGE_MASK; error = security_mmap_addr(address); -@@ -2118,6 +2419,15 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2114,6 +2415,15 @@ int expand_downwards(struct vm_area_struct *vma, if (unlikely(anon_vma_prepare(vma))) return -ENOMEM; @@ -149469,7 +149826,7 @@ index bd2e1a53..cbb2d1b 100644 /* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the -@@ -2126,9 +2436,17 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2122,9 +2432,17 @@ int expand_downwards(struct vm_area_struct *vma, anon_vma_lock_write(vma->anon_vma); /* Somebody else might have raced and expanded it already */ @@ -149488,7 +149845,7 @@ index bd2e1a53..cbb2d1b 100644 size = vma->vm_end - address; grow = (vma->vm_start - address) >> PAGE_SHIFT; -@@ -2156,13 +2474,27 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2152,13 +2470,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); @@ -149516,7 +149873,7 @@ index bd2e1a53..cbb2d1b 100644 khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(mm); return error; -@@ -2262,6 +2594,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2258,6 +2590,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) do { long nrpages = vma_pages(vma); @@ -149530,7 +149887,7 @@ index bd2e1a53..cbb2d1b 100644 if (vma->vm_flags & VM_ACCOUNT) nr_accounted += nrpages; vm_stat_account(mm, vma->vm_flags, -nrpages); -@@ -2306,6 +2645,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2302,6 +2641,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 { @@ -149547,7 +149904,7 @@ index bd2e1a53..cbb2d1b 100644 vma_rb_erase(vma, &mm->mm_rb); mm->map_count--; tail_vma = vma; -@@ -2333,14 +2682,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2329,14 +2678,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *new; int err; @@ -149581,7 +149938,7 @@ index bd2e1a53..cbb2d1b 100644 /* most fields are the same, copy all, and then fixup */ *new = *vma; -@@ -2353,6 +2721,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2349,6 +2717,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); } @@ -149604,7 +149961,7 @@ index bd2e1a53..cbb2d1b 100644 err = vma_dup_policy(vma, new); if (err) goto out_free_vma; -@@ -2373,6 +2757,38 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2369,6 +2753,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); @@ -149643,7 +150000,7 @@ index bd2e1a53..cbb2d1b 100644 /* Success. */ if (!err) return 0; -@@ -2382,10 +2798,18 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2378,10 +2794,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); @@ -149663,7 +150020,7 @@ index bd2e1a53..cbb2d1b 100644 kmem_cache_free(vm_area_cachep, new); return err; } -@@ -2397,6 +2821,15 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2393,6 +2817,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) { @@ -149679,7 +150036,7 @@ index bd2e1a53..cbb2d1b 100644 if (mm->map_count >= sysctl_max_map_count) return -ENOMEM; -@@ -2408,11 +2841,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2404,11 +2837,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, * work. This now handles partial unmappings. * Jeremy Fitzhardinge <jeremy@goop.org> */ @@ -149710,7 +150067,7 @@ index bd2e1a53..cbb2d1b 100644 if ((offset_in_page(start)) || start > TASK_SIZE || len > TASK_SIZE-start) return -EINVAL; -@@ -2490,6 +2942,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) +@@ -2486,6 +2938,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); @@ -149719,7 +150076,7 @@ index bd2e1a53..cbb2d1b 100644 return 0; } -@@ -2498,6 +2952,12 @@ int vm_munmap(unsigned long start, size_t len) +@@ -2494,6 +2948,12 @@ int vm_munmap(unsigned long start, size_t len) int ret; struct mm_struct *mm = current->mm; @@ -149729,11 +150086,11 @@ index bd2e1a53..cbb2d1b 100644 + return -EINVAL; +#endif + - down_write(&mm->mmap_sem); - ret = do_munmap(mm, start, len); - up_write(&mm->mmap_sem); -@@ -2543,6 +3003,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, - down_write(&mm->mmap_sem); + if (down_write_killable(&mm->mmap_sem)) + return -EINTR; + +@@ -2550,6 +3010,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + vma = find_vma(mm, start); +#ifdef CONFIG_PAX_SEGMEXEC @@ -149744,7 +150101,7 @@ index bd2e1a53..cbb2d1b 100644 if (!vma || !(vma->vm_flags & VM_SHARED)) goto out; -@@ -2603,16 +3068,6 @@ out: +@@ -2610,16 +3075,6 @@ out: return ret; } @@ -149761,7 +150118,7 @@ index bd2e1a53..cbb2d1b 100644 /* * this is really a simplified "do_mmap". it only handles * anonymous maps. eventually we may be able to do some -@@ -2626,6 +3081,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2633,6 +3088,7 @@ static int do_brk(unsigned long addr, unsigned long len) struct rb_node **rb_link, *rb_parent; pgoff_t pgoff = addr >> PAGE_SHIFT; int error; @@ -149769,7 +150126,7 @@ index bd2e1a53..cbb2d1b 100644 len = PAGE_ALIGN(len); if (!len) -@@ -2633,10 +3089,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2640,10 +3096,24 @@ static int do_brk(unsigned long addr, unsigned long len) flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; @@ -149794,7 +150151,7 @@ index bd2e1a53..cbb2d1b 100644 error = mlock_future_check(mm, mm->def_flags, len); if (error) return error; -@@ -2654,16 +3124,17 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2661,16 +3131,17 @@ static int do_brk(unsigned long addr, unsigned long len) &rb_parent)) { if (do_munmap(mm, addr, len)) return -ENOMEM; @@ -149814,7 +150171,7 @@ index bd2e1a53..cbb2d1b 100644 return -ENOMEM; /* Can we just expand an old private anonymous mapping? */ -@@ -2677,7 +3148,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2684,7 +3155,7 @@ static int do_brk(unsigned long addr, unsigned long len) */ vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); if (!vma) { @@ -149823,7 +150180,7 @@ index bd2e1a53..cbb2d1b 100644 return -ENOMEM; } -@@ -2691,11 +3162,12 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2698,11 +3169,12 @@ static int do_brk(unsigned long addr, unsigned long len) vma_link(mm, vma, prev, rb_link, rb_parent); out: perf_event_mmap(vma); @@ -149836,10 +150193,10 @@ index bd2e1a53..cbb2d1b 100644 + mm->locked_vm += charged; vma->vm_flags |= VM_SOFTDIRTY; + track_exec_limit(mm, addr, addr + len, flags); - return addr; + return 0; } -@@ -2757,6 +3229,7 @@ void exit_mmap(struct mm_struct *mm) +@@ -2766,6 +3238,7 @@ void exit_mmap(struct mm_struct *mm) while (vma) { if (vma->vm_flags & VM_ACCOUNT) nr_accounted += vma_pages(vma); @@ -149847,7 +150204,7 @@ index bd2e1a53..cbb2d1b 100644 vma = remove_vma(vma); } vm_unacct_memory(nr_accounted); -@@ -2771,6 +3244,10 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2780,6 +3253,10 @@ 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; @@ -149858,7 +150215,7 @@ index bd2e1a53..cbb2d1b 100644 if (find_vma_links(mm, vma->vm_start, vma->vm_end, &prev, &rb_link, &rb_parent)) return -ENOMEM; -@@ -2778,6 +3255,9 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2787,6 +3264,9 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) security_vm_enough_memory_mm(mm, vma_pages(vma))) return -ENOMEM; @@ -149868,7 +150225,7 @@ index bd2e1a53..cbb2d1b 100644 /* * The vm_pgoff of a purely anonymous vma should be irrelevant * until its first write fault, when page's anon_vma and index -@@ -2795,7 +3275,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2804,7 +3284,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) vma->vm_pgoff = vma->vm_start >> PAGE_SHIFT; } @@ -149890,7 +150247,7 @@ index bd2e1a53..cbb2d1b 100644 return 0; } -@@ -2814,6 +3308,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -2823,6 +3317,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; @@ -149899,7 +150256,7 @@ index bd2e1a53..cbb2d1b 100644 /* * If anonymous vma has not yet been faulted, update new pgoff * to match new location, to increase its chance of merging. -@@ -2880,24 +3376,67 @@ out: +@@ -2889,27 +3385,70 @@ out: return NULL; } @@ -149952,30 +150309,37 @@ index bd2e1a53..cbb2d1b 100644 - if (is_data_mapping(flags) && - mm->data_vm + npages > rlimit(RLIMIT_DATA) >> PAGE_SHIFT) { -- if (ignore_rlimit_data) -- pr_warn_once("%s (%d): VmData %lu exceed data ulimit %lu. Will be forbidden soon.\n", +- /* Workaround for Valgrind */ +- if (rlimit(RLIMIT_DATA) == 0 && +- mm->data_vm + npages <= rlimit_max(RLIMIT_DATA) >> PAGE_SHIFT) +- return true; +- if (!ignore_rlimit_data) { +- pr_warn_once("%s (%d): VmData %lu exceed data ulimit %lu. Update limits or use boot option ignore_rlimit_data.\n", - current->comm, current->pid, - (mm->data_vm + npages) << PAGE_SHIFT, - rlimit(RLIMIT_DATA)); +- return false; + if (is_data_mapping(flags)) { + if ((mm->data_vm + npages) > (ULONG_MAX >> PAGE_SHIFT)) + gr_learn_resource(current, RLIMIT_DATA, ULONG_MAX, 1); - else -- return false; ++ else + gr_learn_resource(current, RLIMIT_DATA, (mm->data_vm + npages) << PAGE_SHIFT, 1); + if (mm->data_vm + npages > rlimit(RLIMIT_DATA) >> PAGE_SHIFT) { -+ if (ignore_rlimit_data) -+ pr_warn_once("%s (%d): VmData %lu exceed data ulimit %lu. Will be forbidden soon.\n", ++ /* Workaround for Valgrind */ ++ if (rlimit(RLIMIT_DATA) == 0 && ++ mm->data_vm + npages <= rlimit_max(RLIMIT_DATA) >> PAGE_SHIFT) ++ return true; ++ if (!ignore_rlimit_data) { ++ pr_warn_once("%s (%d): VmData %lu exceed data ulimit %lu. Update limits or use boot option ignore_rlimit_data.\n", + current->comm, current->pid, + (mm->data_vm + npages) << PAGE_SHIFT, + rlimit(RLIMIT_DATA)); -+ else + return false; -+ } ++ } + } } - return true; -@@ -2905,6 +3444,11 @@ bool may_expand_vm(struct mm_struct *mm, vm_flags_t flags, unsigned long npages) +@@ -2918,6 +3457,11 @@ bool may_expand_vm(struct mm_struct *mm, vm_flags_t flags, unsigned long npages) void vm_stat_account(struct mm_struct *mm, vm_flags_t flags, long npages) { @@ -149987,7 +150351,7 @@ index bd2e1a53..cbb2d1b 100644 mm->total_vm += npages; if (is_exec_mapping(flags)) -@@ -2989,6 +3533,22 @@ static struct vm_area_struct *__install_special_mapping( +@@ -3002,6 +3546,22 @@ static struct vm_area_struct *__install_special_mapping( vma->vm_start = addr; vma->vm_end = addr + len; @@ -150011,7 +150375,7 @@ index bd2e1a53..cbb2d1b 100644 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); diff --git a/mm/mprotect.c b/mm/mprotect.c -index b650c54..a3f3ca4 100644 +index 5019a1e..dc47d47 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -25,10 +25,18 @@ @@ -150202,7 +150566,7 @@ index b650c54..a3f3ca4 100644 if (!arch_validate_prot(prot)) return -EINVAL; -@@ -406,6 +533,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, +@@ -407,6 +534,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, if (start > vma->vm_start) prev = vma; @@ -150214,7 +150578,7 @@ index b650c54..a3f3ca4 100644 for (nstart = start ; ; ) { unsigned long newflags; int pkey = arch_override_mprotect_pkey(vma, prot, -1); -@@ -421,6 +553,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, +@@ -422,6 +554,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, /* newflags >> 4 shift VM_MAY% in place of VM_% */ if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) { @@ -150229,7 +150593,7 @@ index b650c54..a3f3ca4 100644 error = -EACCES; goto out; } -@@ -435,6 +575,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, +@@ -436,6 +576,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, error = mprotect_fixup(vma, &prev, nstart, tmp, newflags); if (error) goto out; @@ -150240,10 +150604,10 @@ index b650c54..a3f3ca4 100644 if (nstart < prev->vm_end) diff --git a/mm/mremap.c b/mm/mremap.c -index 3fa0a467..a4eab87 100644 +index 1f157ad..2a28e4a 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, +@@ -148,6 +148,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd, continue; pte = ptep_get_and_clear(mm, old_addr, old_pte); pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr); @@ -150256,7 +150620,7 @@ index 3fa0a467..a4eab87 100644 pte = move_soft_dirty_pte(pte); set_pte_at(mm, new_addr, new_pte, pte); } -@@ -357,6 +363,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr, +@@ -358,6 +364,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr, if (is_vm_hugetlb_page(vma)) return ERR_PTR(-EINVAL); @@ -150268,7 +150632,7 @@ index 3fa0a467..a4eab87 100644 /* We can't remap across vm area boundaries */ if (old_len > vma->vm_end - addr) return ERR_PTR(-EFAULT); -@@ -404,11 +415,19 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len, +@@ -405,11 +416,19 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len, unsigned long ret = -EINVAL; unsigned long charged = 0; unsigned long map_flags; @@ -150289,7 +150653,7 @@ index 3fa0a467..a4eab87 100644 goto out; /* Ensure the old/new locations do not overlap */ -@@ -481,6 +500,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -482,6 +501,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long ret = -EINVAL; unsigned long charged = 0; bool locked = false; @@ -150297,7 +150661,7 @@ index 3fa0a467..a4eab87 100644 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) return ret; -@@ -502,6 +522,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -503,6 +523,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, if (!new_len) return ret; @@ -150312,10 +150676,10 @@ index 3fa0a467..a4eab87 100644 + old_len > pax_task_size || addr > pax_task_size-old_len) + return ret; + - down_write(¤t->mm->mmap_sem); + if (down_write_killable(¤t->mm->mmap_sem)) + return -EINTR; - if (flags & MREMAP_FIXED) { -@@ -552,6 +583,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -554,6 +585,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, new_addr = addr; } ret = addr; @@ -150323,7 +150687,7 @@ index 3fa0a467..a4eab87 100644 goto out; } } -@@ -575,7 +607,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -577,7 +609,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, goto out; } @@ -150337,7 +150701,7 @@ index 3fa0a467..a4eab87 100644 out: if (offset_in_page(ret)) { diff --git a/mm/nommu.c b/mm/nommu.c -index c8bd59a..82b24ab 100644 +index c2e588802..b5a0b40 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -48,7 +48,6 @@ unsigned long max_mapnr; @@ -150404,10 +150768,10 @@ index c8bd59a..82b24ab 100644 struct mm_struct *mm; diff --git a/mm/page-writeback.c b/mm/page-writeback.c -index e389f0a..2dfc34c 100644 +index e248194..ff005a8 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c -@@ -873,7 +873,7 @@ static long long pos_ratio_polynom(unsigned long setpoint, +@@ -877,7 +877,7 @@ static long long pos_ratio_polynom(unsigned long setpoint, * card's wb_dirty may rush to many times higher than wb_setpoint. * - the wb dirty thresh drops quickly due to change of JBOD workload */ @@ -150417,7 +150781,7 @@ index e389f0a..2dfc34c 100644 struct bdi_writeback *wb = dtc->wb; unsigned long write_bw = wb->avg_write_bandwidth; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 898fe3f..78ad9e4 100644 +index 8b3e134..d47200a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -63,6 +63,7 @@ @@ -150428,7 +150792,7 @@ index 898fe3f..78ad9e4 100644 #include <asm/sections.h> #include <asm/tlbflush.h> -@@ -593,7 +594,7 @@ static inline void clear_page_guard(struct zone *zone, struct page *page, +@@ -688,7 +689,7 @@ static inline void clear_page_guard(struct zone *zone, struct page *page, __mod_zone_freepage_state(zone, (1 << order), migratetype); } #else @@ -150437,18 +150801,18 @@ index 898fe3f..78ad9e4 100644 static inline void set_page_guard(struct zone *zone, struct page *page, unsigned int order, int migratetype) {} static inline void clear_page_guard(struct zone *zone, struct page *page, -@@ -1027,6 +1028,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order) - bool compound = PageCompound(page); - int i, bad = 0; +@@ -991,6 +992,10 @@ static __always_inline bool free_pages_prepare(struct page *page, + { + int bad = 0; +#ifdef CONFIG_PAX_MEMORY_SANITIZE + unsigned long index = 1UL << order; +#endif + VM_BUG_ON_PAGE(PageTail(page), page); - VM_BUG_ON_PAGE(compound && compound_order(page) != order, page); -@@ -1053,6 +1058,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order) + trace_mm_page_free(page, order); +@@ -1033,6 +1038,12 @@ static __always_inline bool free_pages_prepare(struct page *page, debug_check_no_obj_freed(page_address(page), PAGE_SIZE << order); } @@ -150461,7 +150825,7 @@ index 898fe3f..78ad9e4 100644 arch_free_page(page, order); kernel_poison_pages(page, 1 << order, 0); kernel_map_pages(page, 1 << order, 0); -@@ -1076,6 +1087,20 @@ static void __free_pages_ok(struct page *page, unsigned int order) +@@ -1242,6 +1253,20 @@ static void __free_pages_ok(struct page *page, unsigned int order) local_irq_restore(flags); } @@ -150479,10 +150843,10 @@ index 898fe3f..78ad9e4 100644 +EXPORT_SYMBOL(latent_entropy); +#endif + - static void __init __free_pages_boot_core(struct page *page, - unsigned long pfn, unsigned int order) + static void __init __free_pages_boot_core(struct page *page, unsigned int order) { -@@ -1092,6 +1117,21 @@ static void __init __free_pages_boot_core(struct page *page, + unsigned int nr_pages = 1 << order; +@@ -1257,6 +1282,21 @@ static void __init __free_pages_boot_core(struct page *page, unsigned int order) __ClearPageReserved(p); set_page_count(p, 0); @@ -150504,7 +150868,7 @@ index 898fe3f..78ad9e4 100644 page_zone(page)->managed_pages += nr_pages; set_page_refcounted(page); __free_pages(page, order); -@@ -1148,7 +1188,6 @@ static inline bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node, +@@ -1313,7 +1353,6 @@ static inline bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node, } #endif @@ -150512,7 +150876,7 @@ index 898fe3f..78ad9e4 100644 void __init __free_pages_bootmem(struct page *page, unsigned long pfn, unsigned int order) { -@@ -1512,8 +1551,8 @@ static inline int check_new_page(struct page *page) +@@ -1686,8 +1725,8 @@ static inline int check_new_page(struct page *page) static inline bool free_pages_prezeroed(bool poisoned) { @@ -150522,11 +150886,11 @@ index 898fe3f..78ad9e4 100644 + (IS_ENABLED(CONFIG_PAGE_POISONING_ZERO) && page_poisoning_enabled() && poisoned); } - static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags, -@@ -1526,8 +1565,12 @@ static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags, + #ifdef CONFIG_DEBUG_VM +@@ -1732,8 +1771,12 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags + + for (i = 0; i < (1 << order); i++) { struct page *p = page + i; - if (unlikely(check_new_page(p))) - return 1; + +#ifndef CONFIG_PAX_MEMORY_SANITIZE if (poisoned) @@ -150536,7 +150900,7 @@ index 898fe3f..78ad9e4 100644 } set_page_private(page, 0); -@@ -2074,8 +2117,9 @@ static void drain_pages(unsigned int cpu) +@@ -2281,8 +2324,9 @@ static void drain_pages(unsigned int cpu) * The CPU has to be pinned. When zone parameter is non-NULL, spill just * the single zone's pages. */ @@ -150547,7 +150911,7 @@ index 898fe3f..78ad9e4 100644 int cpu = smp_processor_id(); if (zone) -@@ -2135,8 +2179,7 @@ void drain_all_pages(struct zone *zone) +@@ -2342,8 +2386,7 @@ void drain_all_pages(struct zone *zone) else cpumask_clear_cpu(cpu, &cpus_with_pcps); } @@ -150557,16 +150921,16 @@ index 898fe3f..78ad9e4 100644 } #ifdef CONFIG_HIBERNATION -@@ -2400,7 +2443,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone, +@@ -2649,7 +2692,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone, + get_pcppage_migratetype(page)); } - __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order)); - if (atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 && + if (atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 && !test_bit(ZONE_FAIR_DEPLETED, &zone->flags)) set_bit(ZONE_FAIR_DEPLETED, &zone->flags); -@@ -2617,7 +2660,7 @@ static void reset_alloc_batches(struct zone *preferred_zone) +@@ -2892,7 +2935,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) - @@ -150575,7 +150939,7 @@ index 898fe3f..78ad9e4 100644 clear_bit(ZONE_FAIR_DEPLETED, &zone->flags); } while (zone++ != preferred_zone); } -@@ -6371,7 +6414,7 @@ static void __setup_per_zone_wmarks(void) +@@ -6858,7 +6901,7 @@ static void __setup_per_zone_wmarks(void) __mod_zone_page_state(zone, NR_ALLOC_BATCH, high_wmark_pages(zone) - low_wmark_pages(zone) - @@ -150662,7 +151026,7 @@ index 40be3ae..0d20d87 100644 struct page *page; int ret = 0; diff --git a/mm/rmap.c b/mm/rmap.c -index 3ebf9c4..ec385cd 100644 +index 701b93f..8fda494 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -172,6 +172,10 @@ int anon_vma_prepare(struct vm_area_struct *vma) @@ -150766,7 +151130,7 @@ index 3ebf9c4..ec385cd 100644 /* diff --git a/mm/shmem.c b/mm/shmem.c -index 9ca09f5..448e8b3 100644 +index 171dee7..a05d96f 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -33,7 +33,7 @@ @@ -150787,16 +151151,17 @@ index 9ca09f5..448e8b3 100644 /* * shmem_fallocate communicates with shmem_fault or shmem_writepage via -@@ -2667,6 +2667,23 @@ static int shmem_xattr_handler_set(const struct xattr_handler *handler, +@@ -2657,6 +2657,24 @@ static int shmem_xattr_handler_set(const struct xattr_handler *handler, return simple_xattr_set(&info->xattrs, name, value, size, flags); } +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS +static int shmem_user_xattr_handler_set(const struct xattr_handler *handler, -+ struct dentry *dentry, const char *name, -+ const void *value, size_t size, int flags) ++ struct dentry *dentry, struct inode *inode, ++ const char *name, const void *value, ++ size_t size, int flags) +{ -+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry)); ++ struct shmem_inode_info *info = SHMEM_I(inode); + + if (strcmp(name, XATTR_NAME_PAX_FLAGS)) + return -EOPNOTSUPP; @@ -150811,7 +151176,7 @@ index 9ca09f5..448e8b3 100644 static const struct xattr_handler shmem_security_xattr_handler = { .prefix = XATTR_SECURITY_PREFIX, .get = shmem_xattr_handler_get, -@@ -2679,6 +2696,14 @@ static const struct xattr_handler shmem_trusted_xattr_handler = { +@@ -2669,6 +2687,14 @@ static const struct xattr_handler shmem_trusted_xattr_handler = { .set = shmem_xattr_handler_set, }; @@ -150826,7 +151191,7 @@ index 9ca09f5..448e8b3 100644 static const struct xattr_handler *shmem_xattr_handlers[] = { #ifdef CONFIG_TMPFS_POSIX_ACL &posix_acl_access_xattr_handler, -@@ -2686,6 +2711,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { +@@ -2676,6 +2702,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { #endif &shmem_security_xattr_handler, &shmem_trusted_xattr_handler, @@ -150838,7 +151203,7 @@ index 9ca09f5..448e8b3 100644 NULL }; -@@ -3046,8 +3076,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) +@@ -3036,8 +3067,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) int err = -ENOMEM; /* Round up to L1_CACHE_BYTES to resist false sharing */ @@ -150849,7 +151214,7 @@ index 9ca09f5..448e8b3 100644 return -ENOMEM; diff --git a/mm/slab.c b/mm/slab.c -index 17e2848..15840f7 100644 +index cc8bbc1..e42f74a 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -116,6 +116,7 @@ @@ -150860,7 +151225,7 @@ index 17e2848..15840f7 100644 #include <net/sock.h> -@@ -279,10 +280,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) +@@ -284,10 +285,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) if ((x)->max_freeable < i) \ (x)->max_freeable = i; \ } while (0) @@ -150877,7 +151242,7 @@ index 17e2848..15840f7 100644 #else #define STATS_INC_ACTIVE(x) do { } while (0) #define STATS_DEC_ACTIVE(x) do { } while (0) -@@ -299,6 +302,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) +@@ -304,6 +307,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) #define STATS_INC_ALLOCMISS(x) do { } while (0) #define STATS_INC_FREEHIT(x) do { } while (0) #define STATS_INC_FREEMISS(x) do { } while (0) @@ -150886,7 +151251,7 @@ index 17e2848..15840f7 100644 #endif #if DEBUG -@@ -405,7 +410,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct page *page, +@@ -410,7 +415,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct page *page, * reciprocal_divide(offset, cache->reciprocal_buffer_size) */ static inline unsigned int obj_to_index(const struct kmem_cache *cache, @@ -150895,7 +151260,7 @@ index 17e2848..15840f7 100644 { u32 offset = (obj - page->s_mem); return reciprocal_divide(offset, cache->reciprocal_buffer_size); -@@ -1263,7 +1268,7 @@ void __init kmem_cache_init(void) +@@ -1354,7 +1359,7 @@ void __init kmem_cache_init(void) * structures first. Without this, further allocations will bug. */ kmalloc_caches[INDEX_NODE] = create_kmalloc_cache("kmalloc-node", @@ -150904,7 +151269,7 @@ index 17e2848..15840f7 100644 slab_state = PARTIAL_NODE; setup_kmalloc_cache_index_table(); -@@ -1508,7 +1513,7 @@ static void store_stackinfo(struct kmem_cache *cachep, unsigned long *addr, +@@ -1599,7 +1604,7 @@ static void store_stackinfo(struct kmem_cache *cachep, unsigned long *addr, while (!kstack_end(sptr)) { svalue = *sptr++; @@ -150913,7 +151278,7 @@ index 17e2848..15840f7 100644 *addr++ = svalue; size -= sizeof(unsigned long); if (size <= sizeof(unsigned long)) -@@ -1895,7 +1900,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -1986,7 +1991,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, cachep = find_mergeable(size, align, flags, name, ctor); if (cachep) { @@ -150922,7 +151287,7 @@ index 17e2848..15840f7 100644 /* * Adjust the object sizes so that we clear -@@ -2024,6 +2029,8 @@ __kmem_cache_create (struct kmem_cache *cachep, unsigned long flags) +@@ -2115,6 +2120,8 @@ __kmem_cache_create (struct kmem_cache *cachep, unsigned long flags) #endif #endif @@ -150931,8 +151296,8 @@ index 17e2848..15840f7 100644 /* * Check that size is in terms of words. This is needed to avoid * unaligned accesses for some archs when redzoning is used, and makes -@@ -3332,6 +3339,20 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp, - kasan_slab_free(cachep, objp); +@@ -3560,6 +3567,20 @@ void ___cache_free(struct kmem_cache *cachep, void *objp, + struct array_cache *ac = cpu_cache_get(cachep); check_irq_off(); + @@ -150952,7 +151317,7 @@ index 17e2848..15840f7 100644 kmemleak_free_recursive(objp, cachep->flags); objp = cache_free_debugcheck(cachep, objp, caller); -@@ -3511,7 +3532,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller) +@@ -3739,7 +3760,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller) return ret; } @@ -150961,7 +151326,7 @@ index 17e2848..15840f7 100644 { return __do_kmalloc_node(size, flags, node, _RET_IP_); } -@@ -3531,7 +3552,7 @@ EXPORT_SYMBOL(__kmalloc_node_track_caller); +@@ -3759,7 +3780,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 */ @@ -150970,7 +151335,7 @@ index 17e2848..15840f7 100644 unsigned long caller) { struct kmem_cache *cachep; -@@ -3631,6 +3652,7 @@ void kfree(const void *objp) +@@ -3859,6 +3880,7 @@ void kfree(const void *objp) if (unlikely(ZERO_OR_NULL_PTR(objp))) return; @@ -150978,7 +151343,7 @@ index 17e2848..15840f7 100644 local_irq_save(flags); kfree_debugcheck(objp); c = virt_to_cache(objp); -@@ -4049,14 +4071,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) +@@ -4226,14 +4248,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) } /* cpu stats */ { @@ -151005,7 +151370,7 @@ index 17e2848..15840f7 100644 #endif } -@@ -4293,13 +4323,80 @@ static const struct file_operations proc_slabstats_operations = { +@@ -4470,13 +4500,80 @@ static const struct file_operations proc_slabstats_operations = { static int __init slab_proc_init(void) { #ifdef CONFIG_DEBUG_SLAB_LEAK @@ -151088,7 +151453,7 @@ index 17e2848..15840f7 100644 * ksize - get the actual amount of memory allocated for a given object * @objp: Pointer to the object diff --git a/mm/slab.h b/mm/slab.h -index 5969769..6bd0b85 100644 +index dedb1a9..a01088a 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -22,7 +22,7 @@ struct kmem_cache { @@ -151157,7 +151522,7 @@ index 5969769..6bd0b85 100644 if (slab_equal_or_root(cachep, s)) return cachep; diff --git a/mm/slab_common.c b/mm/slab_common.c -index 3239bfd..a466932 100644 +index 82317ab..426f137 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -25,11 +25,35 @@ @@ -151233,8 +151598,8 @@ index 3239bfd..a466932 100644 sysfs_slab_remove(s); #else slab_kmem_cache_release(s); -@@ -717,8 +741,7 @@ void kmem_cache_destroy(struct kmem_cache *s) - +@@ -718,8 +742,7 @@ void kmem_cache_destroy(struct kmem_cache *s) + kasan_cache_destroy(s); mutex_lock(&slab_mutex); - s->refcount--; @@ -151243,7 +151608,7 @@ index 3239bfd..a466932 100644 goto out_unlock; err = shutdown_memcg_caches(s, &release, &need_rcu_barrier); -@@ -784,7 +807,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz +@@ -786,7 +809,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n", name, size, err); @@ -151252,7 +151617,7 @@ index 3239bfd..a466932 100644 } struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, -@@ -797,7 +820,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, +@@ -799,7 +822,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, create_boot_cache(s, name, size, flags); list_add(&s->list, &slab_caches); @@ -151261,7 +151626,7 @@ index 3239bfd..a466932 100644 return s; } -@@ -809,6 +832,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; +@@ -811,6 +834,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; EXPORT_SYMBOL(kmalloc_dma_caches); #endif @@ -151273,7 +151638,7 @@ index 3239bfd..a466932 100644 /* * Conversion table for small slabs sizes / 8 to the index in the * kmalloc array. This is necessary for slabs < 192 since we have non power -@@ -873,6 +901,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) +@@ -875,6 +903,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) return kmalloc_dma_caches[index]; #endif @@ -151287,7 +151652,7 @@ index 3239bfd..a466932 100644 return kmalloc_caches[index]; } -@@ -965,7 +1000,7 @@ void __init create_kmalloc_caches(unsigned long flags) +@@ -967,7 +1002,7 @@ void __init create_kmalloc_caches(unsigned long flags) for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) { if (!kmalloc_caches[i]) @@ -151296,7 +151661,7 @@ index 3239bfd..a466932 100644 /* * Caches that are not of the two-to-the-power-of size. -@@ -973,9 +1008,9 @@ void __init create_kmalloc_caches(unsigned long flags) +@@ -975,9 +1010,9 @@ void __init create_kmalloc_caches(unsigned long flags) * earlier power of two caches */ if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6) @@ -151308,7 +151673,7 @@ index 3239bfd..a466932 100644 } /* Kmalloc array is now usable */ -@@ -996,6 +1031,23 @@ void __init create_kmalloc_caches(unsigned long flags) +@@ -998,6 +1033,23 @@ void __init create_kmalloc_caches(unsigned long flags) } } #endif @@ -151332,7 +151697,7 @@ index 3239bfd..a466932 100644 } #endif /* !CONFIG_SLOB */ -@@ -1011,6 +1063,12 @@ void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) +@@ -1013,6 +1065,12 @@ void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) flags |= __GFP_COMP; page = alloc_kmem_pages(flags, order); @@ -151345,7 +151710,7 @@ index 3239bfd..a466932 100644 ret = page ? page_address(page) : NULL; kmemleak_alloc(ret, size, 1, flags); kasan_kmalloc_large(ret, size, flags); -@@ -1053,6 +1111,9 @@ static void print_slabinfo_header(struct seq_file *m) +@@ -1055,6 +1113,9 @@ static void print_slabinfo_header(struct seq_file *m) #ifdef CONFIG_DEBUG_SLAB seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> <error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>"); seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>"); @@ -151355,7 +151720,7 @@ index 3239bfd..a466932 100644 #endif seq_putc(m, '\n'); } -@@ -1182,7 +1243,7 @@ static int __init slab_proc_init(void) +@@ -1184,7 +1245,7 @@ static int __init slab_proc_init(void) module_init(slab_proc_init); #endif /* CONFIG_SLABINFO */ @@ -151835,7 +152200,7 @@ index 5ec1580..ced45c6 100644 EXPORT_SYMBOL(kmem_cache_free); diff --git a/mm/slub.c b/mm/slub.c -index 4dbb109e..f891e12 100644 +index 825ff45..c1b2ca0 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -34,6 +34,7 @@ @@ -151983,7 +152348,7 @@ index 4dbb109e..f891e12 100644 size_t ksize(const void *object) { size_t size = __ksize(object); -@@ -3651,6 +3739,7 @@ void kfree(const void *x) +@@ -3652,6 +3740,7 @@ void kfree(const void *x) if (unlikely(ZERO_OR_NULL_PTR(x))) return; @@ -151991,7 +152356,7 @@ index 4dbb109e..f891e12 100644 page = virt_to_head_page(x); if (unlikely(!PageSlab(page))) { BUG_ON(!PageCompound(page)); -@@ -3968,7 +4057,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -3969,7 +4058,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, s = find_mergeable(size, align, flags, name, ctor); if (s) { @@ -152000,7 +152365,7 @@ index 4dbb109e..f891e12 100644 /* * Adjust the object sizes so that we clear -@@ -3984,7 +4073,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -3985,7 +4074,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, } if (sysfs_slab_alias(s, name)) { @@ -152009,7 +152374,7 @@ index 4dbb109e..f891e12 100644 s = NULL; } } -@@ -3996,6 +4085,8 @@ int __kmem_cache_create(struct kmem_cache *s, unsigned long flags) +@@ -3997,6 +4086,8 @@ int __kmem_cache_create(struct kmem_cache *s, unsigned long flags) { int err; @@ -152018,7 +152383,7 @@ index 4dbb109e..f891e12 100644 err = kmem_cache_open(s, flags); if (err) return err; -@@ -4101,7 +4192,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, +@@ -4102,7 +4193,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, } #endif @@ -152027,7 +152392,7 @@ index 4dbb109e..f891e12 100644 static int count_inuse(struct page *page) { return page->inuse; -@@ -4382,7 +4473,11 @@ static int list_locations(struct kmem_cache *s, char *buf, +@@ -4383,7 +4474,11 @@ static int list_locations(struct kmem_cache *s, char *buf, len += sprintf(buf + len, "%7ld ", l->count); if (l->addr) @@ -152039,7 +152404,7 @@ index 4dbb109e..f891e12 100644 else len += sprintf(buf + len, "<not-available>"); -@@ -4480,12 +4575,12 @@ static void __init resiliency_test(void) +@@ -4481,12 +4576,12 @@ static void __init resiliency_test(void) validate_slab_cache(kmalloc_caches[9]); } #else @@ -152054,7 +152419,7 @@ index 4dbb109e..f891e12 100644 enum slab_stat_type { SL_ALL, /* All slabs */ SL_PARTIAL, /* Only partially allocated slabs */ -@@ -4722,13 +4817,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf) +@@ -4723,13 +4818,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf) { if (!s->ctor) return 0; @@ -152073,7 +152438,7 @@ index 4dbb109e..f891e12 100644 } SLAB_ATTR_RO(aliases); -@@ -4816,6 +4915,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) +@@ -4817,6 +4916,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) SLAB_ATTR_RO(cache_dma); #endif @@ -152096,7 +152461,7 @@ index 4dbb109e..f891e12 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)); -@@ -4871,7 +4986,7 @@ static ssize_t trace_store(struct kmem_cache *s, const char *buf, +@@ -4872,7 +4987,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. */ @@ -152105,7 +152470,7 @@ index 4dbb109e..f891e12 100644 return -EINVAL; s->flags &= ~SLAB_TRACE; -@@ -4989,7 +5104,7 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf) +@@ -4990,7 +5105,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) { @@ -152114,7 +152479,7 @@ index 4dbb109e..f891e12 100644 return -EINVAL; s->flags &= ~SLAB_FAILSLAB; -@@ -5121,7 +5236,7 @@ STAT_ATTR(CPU_PARTIAL_NODE, cpu_partial_node); +@@ -5122,7 +5237,7 @@ STAT_ATTR(CPU_PARTIAL_NODE, cpu_partial_node); STAT_ATTR(CPU_PARTIAL_DRAIN, cpu_partial_drain); #endif @@ -152123,7 +152488,7 @@ index 4dbb109e..f891e12 100644 &slab_size_attr.attr, &object_size_attr.attr, &objs_per_slab_attr.attr, -@@ -5156,6 +5271,12 @@ static struct attribute *slab_attrs[] = { +@@ -5157,6 +5272,12 @@ static struct attribute *slab_attrs[] = { #ifdef CONFIG_ZONE_DMA &cache_dma_attr.attr, #endif @@ -152136,7 +152501,7 @@ index 4dbb109e..f891e12 100644 #ifdef CONFIG_NUMA &remote_node_defrag_ratio_attr.attr, #endif -@@ -5399,6 +5520,7 @@ static char *create_unique_id(struct kmem_cache *s) +@@ -5400,6 +5521,7 @@ static char *create_unique_id(struct kmem_cache *s) return name; } @@ -152144,7 +152509,7 @@ index 4dbb109e..f891e12 100644 static int sysfs_slab_add(struct kmem_cache *s) { int err; -@@ -5470,6 +5592,7 @@ void sysfs_slab_remove(struct kmem_cache *s) +@@ -5471,6 +5593,7 @@ void sysfs_slab_remove(struct kmem_cache *s) kobject_del(&s->kobj); kobject_put(&s->kobj); } @@ -152152,7 +152517,7 @@ index 4dbb109e..f891e12 100644 /* * Need to buffer aliases during bootup until sysfs becomes -@@ -5483,6 +5606,7 @@ struct saved_alias { +@@ -5484,6 +5607,7 @@ struct saved_alias { static struct saved_alias *alias_list; @@ -152160,7 +152525,7 @@ index 4dbb109e..f891e12 100644 static int sysfs_slab_alias(struct kmem_cache *s, const char *name) { struct saved_alias *al; -@@ -5505,6 +5629,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) +@@ -5506,6 +5630,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) alias_list = al; return 0; } @@ -152204,10 +152569,10 @@ index 5d0cf45..66e4df6 100644 } } diff --git a/mm/swap.c b/mm/swap.c -index 03aacbc..3a5e649 100644 +index 90530ff..9735082 100644 --- a/mm/swap.c +++ b/mm/swap.c -@@ -88,6 +88,13 @@ static void __put_compound_page(struct page *page) +@@ -91,6 +91,13 @@ static void __put_compound_page(struct page *page) if (!PageHuge(page)) __page_cache_release(page); dtor = get_compound_page_dtor(page); @@ -152273,7 +152638,7 @@ index 031713ab..f2c0e55 100644 if (S_ISREG(inode->i_mode)) diff --git a/mm/util.c b/mm/util.c -index 6cc81e7..53a6ff9 100644 +index 917e0e3..6873e84 100644 --- a/mm/util.c +++ b/mm/util.c @@ -239,6 +239,12 @@ int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t) @@ -152289,7 +152654,7 @@ index 6cc81e7..53a6ff9 100644 mm->get_unmapped_area = arch_get_unmapped_area; } #endif -@@ -400,6 +406,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly; +@@ -424,6 +430,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly; int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */ unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */ @@ -152297,7 +152662,7 @@ index 6cc81e7..53a6ff9 100644 int overcommit_ratio_handler(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, -@@ -579,6 +586,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen) +@@ -603,6 +610,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 */ @@ -152308,10 +152673,10 @@ index 6cc81e7..53a6ff9 100644 arg_start = mm->arg_start; arg_end = mm->arg_end; diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index ae7d20b..718df5c 100644 +index e11475c..3650eb9 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -42,20 +42,65 @@ struct vfree_deferred { +@@ -43,20 +43,65 @@ struct vfree_deferred { struct work_struct wq; }; static DEFINE_PER_CPU(struct vfree_deferred, vfree_deferred); @@ -152380,7 +152745,7 @@ index ae7d20b..718df5c 100644 /*** Page table manipulation functions ***/ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) -@@ -63,10 +108,23 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) +@@ -64,10 +109,23 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) pte_t *pte; pte = pte_offset_kernel(pmd, addr); @@ -152406,7 +152771,7 @@ index ae7d20b..718df5c 100644 } static void vunmap_pmd_range(pud_t *pud, unsigned long addr, unsigned long end) -@@ -129,16 +187,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, +@@ -130,16 +188,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, pte = pte_alloc_kernel(pmd, addr); if (!pte) return -ENOMEM; @@ -152438,7 +152803,7 @@ index ae7d20b..718df5c 100644 return 0; } -@@ -148,7 +219,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, +@@ -149,7 +220,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, pmd_t *pmd; unsigned long next; @@ -152447,7 +152812,7 @@ index ae7d20b..718df5c 100644 if (!pmd) return -ENOMEM; do { -@@ -165,7 +236,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, +@@ -166,7 +237,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, pud_t *pud; unsigned long next; @@ -152456,7 +152821,7 @@ index ae7d20b..718df5c 100644 if (!pud) return -ENOMEM; do { -@@ -225,6 +296,12 @@ int is_vmalloc_or_module_addr(const void *x) +@@ -226,6 +297,12 @@ int is_vmalloc_or_module_addr(const void *x) if (addr >= MODULES_VADDR && addr < MODULES_END) return 1; #endif @@ -152469,7 +152834,7 @@ index ae7d20b..718df5c 100644 return is_vmalloc_addr(x); } -@@ -245,8 +322,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) +@@ -246,8 +323,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) if (!pgd_none(*pgd)) { pud_t *pud = pud_offset(pgd, addr); @@ -152484,7 +152849,7 @@ index ae7d20b..718df5c 100644 if (!pmd_none(*pmd)) { pte_t *ptep, pte; -@@ -348,7 +431,7 @@ static void purge_vmap_area_lazy(void); +@@ -350,7 +433,7 @@ static BLOCKING_NOTIFIER_HEAD(vmap_notify_list); * Allocate a region of KVA of the specified size and alignment, within the * vstart and vend. */ @@ -152493,7 +152858,7 @@ index ae7d20b..718df5c 100644 unsigned long align, unsigned long vstart, unsigned long vend, int node, gfp_t gfp_mask) -@@ -1202,13 +1285,27 @@ void __init vmalloc_init(void) +@@ -1228,13 +1311,27 @@ void __init vmalloc_init(void) for_each_possible_cpu(i) { struct vmap_block_queue *vbq; struct vfree_deferred *p; @@ -152522,7 +152887,7 @@ index ae7d20b..718df5c 100644 } /* Import existing vmlist entries. */ -@@ -1333,6 +1430,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, +@@ -1359,6 +1456,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, struct vm_struct *area; BUG_ON(in_interrupt()); @@ -152539,7 +152904,7 @@ index ae7d20b..718df5c 100644 if (flags & VM_IOREMAP) align = 1ul << clamp_t(int, fls_long(size), PAGE_SHIFT, IOREMAP_MAX_ORDER); -@@ -1345,7 +1452,11 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, +@@ -1371,7 +1478,11 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, if (unlikely(!area)) return NULL; @@ -152551,7 +152916,7 @@ index ae7d20b..718df5c 100644 size += PAGE_SIZE; va = alloc_vmap_area(size, align, start, end, node, gfp_mask); -@@ -1527,13 +1638,36 @@ EXPORT_SYMBOL(vfree); +@@ -1553,13 +1664,36 @@ EXPORT_SYMBOL(vfree); */ void vunmap(const void *addr) { @@ -152591,7 +152956,7 @@ index ae7d20b..718df5c 100644 /** * vmap - map an array of pages into virtually contiguous space * @pages: array of page pointers -@@ -1554,6 +1688,11 @@ void *vmap(struct page **pages, unsigned int count, +@@ -1581,6 +1715,11 @@ void *vmap(struct page **pages, unsigned int count, if (count > totalram_pages) return NULL; @@ -152600,10 +152965,10 @@ index ae7d20b..718df5c 100644 + flags |= VM_KERNEXEC; +#endif + - area = get_vm_area_caller((count << PAGE_SHIFT), flags, - __builtin_return_address(0)); + size = (unsigned long)count << PAGE_SHIFT; + area = get_vm_area_caller(size, flags, __builtin_return_address(0)); if (!area) -@@ -1657,6 +1796,14 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, +@@ -1684,6 +1823,14 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, if (!size || (size >> PAGE_SHIFT) > totalram_pages) goto fail; @@ -152618,7 +152983,7 @@ index ae7d20b..718df5c 100644 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED | vm_flags, start, end, node, gfp_mask, caller); if (!area) -@@ -1710,6 +1857,14 @@ static void *__vmalloc_node(unsigned long size, unsigned long align, +@@ -1737,6 +1884,14 @@ static void *__vmalloc_node(unsigned long size, unsigned long align, gfp_mask, prot, 0, node, caller); } @@ -152633,7 +152998,7 @@ index ae7d20b..718df5c 100644 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) { return __vmalloc_node(size, 1, gfp_mask, prot, NUMA_NO_NODE, -@@ -1833,10 +1988,9 @@ EXPORT_SYMBOL(vzalloc_node); +@@ -1860,10 +2015,9 @@ EXPORT_SYMBOL(vzalloc_node); * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -152645,7 +153010,7 @@ index ae7d20b..718df5c 100644 NUMA_NO_NODE, __builtin_return_address(0)); } -@@ -2143,6 +2297,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, +@@ -2170,6 +2324,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, { struct vm_struct *area; @@ -152654,7 +153019,7 @@ index ae7d20b..718df5c 100644 size = PAGE_ALIGN(size); if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr)) -@@ -2512,7 +2668,7 @@ found: +@@ -2539,7 +2695,7 @@ found: /* insert all vm's */ for (area = 0; area < nr_vms; area++) setup_vmalloc_vm(vms[area], vas[area], VM_ALLOC, @@ -152663,7 +153028,7 @@ index ae7d20b..718df5c 100644 kfree(vas); return vms; -@@ -2625,7 +2781,11 @@ static int s_show(struct seq_file *m, void *p) +@@ -2652,7 +2808,11 @@ static int s_show(struct seq_file *m, void *p) v->addr, v->addr + v->size, v->size); if (v->caller) @@ -152676,7 +153041,7 @@ index ae7d20b..718df5c 100644 if (v->nr_pages) seq_printf(m, " pages=%d", v->nr_pages); diff --git a/mm/vmstat.c b/mm/vmstat.c -index 5e43004..823a5d3 100644 +index cb2a67b..d17511a 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -27,6 +27,7 @@ @@ -152734,7 +153099,7 @@ index 5e43004..823a5d3 100644 } } #endif -@@ -1309,10 +1310,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos) +@@ -1287,10 +1288,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos) stat_items_size += sizeof(struct vm_event_state); #endif @@ -152758,7 +153123,16 @@ index 5e43004..823a5d3 100644 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) v[i] = global_page_state(i); v += NR_VM_ZONE_STAT_ITEMS; -@@ -1578,10 +1591,16 @@ static int __init setup_vmstat(void) +@@ -1384,7 +1397,7 @@ int vmstat_refresh(struct ctl_table *table, int write, + if (err) + return err; + for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) { +- val = atomic_long_read(&vm_stat[i]); ++ val = atomic_long_read_unchecked(&vm_stat[i]); + if (val < 0) { + switch (i) { + case NR_ALLOC_BATCH: +@@ -1585,10 +1598,16 @@ static int __init setup_vmstat(void) cpu_notifier_register_done(); #endif #ifdef CONFIG_PROC_FS @@ -152780,10 +153154,10 @@ index 5e43004..823a5d3 100644 return 0; } diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c -index a1e273a..2229e93 100644 +index 82a116b..2d00f22 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c -@@ -491,7 +491,7 @@ out: +@@ -496,7 +496,7 @@ out: return NOTIFY_DONE; } @@ -152792,7 +153166,7 @@ index a1e273a..2229e93 100644 .notifier_call = vlan_device_event, }; -@@ -566,8 +566,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) +@@ -571,8 +571,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) err = -EPERM; if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) break; @@ -152803,10 +153177,10 @@ index a1e273a..2229e93 100644 vn = net_generic(net, vlan_net_id); diff --git a/net/8021q/vlan_netlink.c b/net/8021q/vlan_netlink.c -index c92b52f..006c052 100644 +index 1270207..d165bb5 100644 --- a/net/8021q/vlan_netlink.c +++ b/net/8021q/vlan_netlink.c -@@ -245,7 +245,7 @@ static struct net *vlan_get_link_net(const struct net_device *dev) +@@ -248,7 +248,7 @@ static struct net *vlan_get_link_net(const struct net_device *dev) return dev_net(real_dev); } @@ -152904,7 +153278,7 @@ index 876fbe8..8bbea9f 100644 #undef __HANDLE_ITEM } diff --git a/net/atm/lec.c b/net/atm/lec.c -index cd3b379..977a3c9 100644 +index e574a7e..2f5a14d 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) @@ -153045,10 +153419,10 @@ index 919a5ce..cc6b444 100644 table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL); if (!table) diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c -index cb2d1b9..b0459c4 100644 +index ce2f203..1b01697 100644 --- a/net/batman-adv/bat_iv_ogm.c +++ b/net/batman-adv/bat_iv_ogm.c -@@ -319,7 +319,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) +@@ -354,7 +354,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) /* randomize initial seqno to avoid collision */ get_random_bytes(&random_seqno, sizeof(random_seqno)); @@ -153057,7 +153431,7 @@ index cb2d1b9..b0459c4 100644 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); -@@ -926,9 +926,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) +@@ -953,9 +953,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) batadv_ogm_packet->tvlv_len = htons(tvlv_len); /* change sequence number to network order */ @@ -153069,7 +153443,7 @@ index cb2d1b9..b0459c4 100644 batadv_iv_ogm_slide_own_bcast_window(hard_iface); -@@ -1618,7 +1618,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset, +@@ -1653,7 +1653,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset, return; /* could be changed by schedule_own_packet() */ @@ -153079,7 +153453,7 @@ index cb2d1b9..b0459c4 100644 if (ogm_packet->flags & BATADV_DIRECTLINK) has_directlink_flag = true; diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c -index e6956d0..f59553fa 100644 +index 65536db..eefd4ce 100644 --- a/net/batman-adv/fragmentation.c +++ b/net/batman-adv/fragmentation.c @@ -469,7 +469,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb, @@ -153092,10 +153466,10 @@ index e6956d0..f59553fa 100644 frag_header.no = 0; frag_header.total_size = htons(skb->len); diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c -index b781bf7..46bb680 100644 +index bfac086..9ea5e14 100644 --- a/net/batman-adv/routing.c +++ b/net/batman-adv/routing.c -@@ -690,7 +690,7 @@ batadv_reroute_unicast_packet(struct batadv_priv *bat_priv, +@@ -719,7 +719,7 @@ batadv_reroute_unicast_packet(struct batadv_priv *bat_priv, if (!primary_if) goto out; orig_addr = primary_if->net_dev->dev_addr; @@ -153104,7 +153478,7 @@ index b781bf7..46bb680 100644 } else { orig_node = batadv_transtable_search(bat_priv, NULL, dst_addr, vid); -@@ -765,7 +765,7 @@ static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, +@@ -795,7 +795,7 @@ static bool batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, * value is used later to check if the node which sent (or re-routed * last time) the packet had an updated information or not */ @@ -153114,7 +153488,7 @@ index b781bf7..46bb680 100644 orig_node = batadv_orig_hash_find(bat_priv, unicast_packet->dest); diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c -index 8a136b6..446d0cb 100644 +index 287a387..0c6c917 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c @@ -179,7 +179,7 @@ static void batadv_interface_set_rx_mode(struct net_device *dev) @@ -153135,7 +153509,7 @@ index 8a136b6..446d0cb 100644 bcast_packet->seqno = htonl(seqno); batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay); -@@ -817,8 +817,8 @@ static int batadv_softif_init_late(struct net_device *dev) +@@ -830,8 +830,8 @@ static int batadv_softif_init_late(struct net_device *dev) atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN); atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); @@ -153146,7 +153520,7 @@ index 8a136b6..446d0cb 100644 atomic_set(&bat_priv->tt.local_changes, 0); atomic_set(&bat_priv->tt.ogm_append_cnt, 0); #ifdef CONFIG_BATMAN_ADV_BLA -@@ -831,7 +831,7 @@ static int batadv_softif_init_late(struct net_device *dev) +@@ -844,7 +844,7 @@ static int batadv_softif_init_late(struct net_device *dev) /* randomize initial seqno to avoid collision */ get_random_bytes(&random_seqno, sizeof(random_seqno)); @@ -153155,8 +153529,8 @@ index 8a136b6..446d0cb 100644 bat_priv->primary_if = NULL; bat_priv->num_ifaces = 0; -@@ -1037,7 +1037,7 @@ int batadv_softif_is_valid(const struct net_device *net_dev) - return 0; +@@ -1062,7 +1062,7 @@ bool batadv_softif_is_valid(const struct net_device *net_dev) + return false; } -struct rtnl_link_ops batadv_link_ops __read_mostly = { @@ -153165,10 +153539,10 @@ index 8a136b6..446d0cb 100644 .priv_size = sizeof(struct batadv_priv), .setup = batadv_softif_init_early, diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c -index e7cf513..f4de9cc 100644 +index 414b207..10ab6f7 100644 --- a/net/batman-adv/sysfs.c +++ b/net/batman-adv/sysfs.c -@@ -143,7 +143,7 @@ struct batadv_attribute batadv_attr_##_name = { \ +@@ -145,7 +145,7 @@ struct batadv_attribute batadv_attr_##_name = { \ #define BATADV_ATTR_SIF_STORE_BOOL(_name, _post_func) \ ssize_t batadv_store_##_name(struct kobject *kobj, \ @@ -153177,7 +153551,7 @@ index e7cf513..f4de9cc 100644 size_t count) \ { \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ -@@ -155,7 +155,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ +@@ -157,7 +157,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ #define BATADV_ATTR_SIF_SHOW_BOOL(_name) \ ssize_t batadv_show_##_name(struct kobject *kobj, \ @@ -153186,7 +153560,7 @@ index e7cf513..f4de9cc 100644 { \ struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \ \ -@@ -175,7 +175,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \ +@@ -177,7 +177,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \ #define BATADV_ATTR_SIF_STORE_UINT(_name, _var, _min, _max, _post_func) \ ssize_t batadv_store_##_name(struct kobject *kobj, \ @@ -153195,7 +153569,7 @@ index e7cf513..f4de9cc 100644 size_t count) \ { \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ -@@ -188,7 +188,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ +@@ -190,7 +190,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ #define BATADV_ATTR_SIF_SHOW_UINT(_name, _var) \ ssize_t batadv_show_##_name(struct kobject *kobj, \ @@ -153204,7 +153578,7 @@ index e7cf513..f4de9cc 100644 { \ struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \ \ -@@ -206,7 +206,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \ +@@ -208,7 +208,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \ #define BATADV_ATTR_VLAN_STORE_BOOL(_name, _post_func) \ ssize_t batadv_store_vlan_##_name(struct kobject *kobj, \ @@ -153213,7 +153587,7 @@ index e7cf513..f4de9cc 100644 size_t count) \ { \ struct batadv_priv *bat_priv = batadv_vlan_kobj_to_batpriv(kobj);\ -@@ -222,7 +222,7 @@ ssize_t batadv_store_vlan_##_name(struct kobject *kobj, \ +@@ -224,7 +224,7 @@ ssize_t batadv_store_vlan_##_name(struct kobject *kobj, \ #define BATADV_ATTR_VLAN_SHOW_BOOL(_name) \ ssize_t batadv_show_vlan_##_name(struct kobject *kobj, \ @@ -153222,7 +153596,7 @@ index e7cf513..f4de9cc 100644 { \ struct batadv_priv *bat_priv = batadv_vlan_kobj_to_batpriv(kobj);\ struct batadv_softif_vlan *vlan = batadv_kobj_to_vlan(bat_priv, \ -@@ -244,7 +244,7 @@ ssize_t batadv_show_vlan_##_name(struct kobject *kobj, \ +@@ -246,7 +246,7 @@ ssize_t batadv_show_vlan_##_name(struct kobject *kobj, \ #define BATADV_ATTR_HIF_STORE_UINT(_name, _var, _min, _max, _post_func) \ ssize_t batadv_store_##_name(struct kobject *kobj, \ @@ -153231,7 +153605,7 @@ index e7cf513..f4de9cc 100644 size_t count) \ { \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ -@@ -265,7 +265,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ +@@ -267,7 +267,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ #define BATADV_ATTR_HIF_SHOW_UINT(_name, _var) \ ssize_t batadv_show_##_name(struct kobject *kobj, \ @@ -153240,7 +153614,7 @@ index e7cf513..f4de9cc 100644 { \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ struct batadv_hard_iface *hard_iface; \ -@@ -335,13 +335,13 @@ static int batadv_store_bool_attr(char *buff, size_t count, +@@ -337,13 +337,13 @@ static int batadv_store_bool_attr(char *buff, size_t count, static inline ssize_t __batadv_store_bool_attr(char *buff, size_t count, void (*post_func)(struct net_device *), @@ -153256,7 +153630,7 @@ index e7cf513..f4de9cc 100644 attr_store, &changed); if (post_func && changed) post_func(net_dev); -@@ -391,12 +391,12 @@ static inline ssize_t +@@ -393,12 +393,12 @@ static inline ssize_t __batadv_store_uint_attr(const char *buff, size_t count, int min, int max, void (*post_func)(struct net_device *), @@ -153271,7 +153645,7 @@ index e7cf513..f4de9cc 100644 attr_store); if (post_func && ret) post_func(net_dev); -@@ -405,7 +405,7 @@ __batadv_store_uint_attr(const char *buff, size_t count, +@@ -407,7 +407,7 @@ __batadv_store_uint_attr(const char *buff, size_t count, } static ssize_t batadv_show_bat_algo(struct kobject *kobj, @@ -153280,7 +153654,7 @@ index e7cf513..f4de9cc 100644 { struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); -@@ -419,7 +419,7 @@ static void batadv_post_gw_reselect(struct net_device *net_dev) +@@ -421,7 +421,7 @@ static void batadv_post_gw_reselect(struct net_device *net_dev) batadv_gw_reselect(bat_priv); } @@ -153289,7 +153663,7 @@ index e7cf513..f4de9cc 100644 char *buff) { struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); -@@ -444,7 +444,7 @@ static ssize_t batadv_show_gw_mode(struct kobject *kobj, struct attribute *attr, +@@ -446,7 +446,7 @@ static ssize_t batadv_show_gw_mode(struct kobject *kobj, struct attribute *attr, } static ssize_t batadv_store_gw_mode(struct kobject *kobj, @@ -153298,7 +153672,7 @@ index e7cf513..f4de9cc 100644 size_t count) { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); -@@ -512,7 +512,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj, +@@ -514,7 +514,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj, } static ssize_t batadv_show_gw_bwidth(struct kobject *kobj, @@ -153307,7 +153681,7 @@ index e7cf513..f4de9cc 100644 { struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); u32 down, up; -@@ -525,7 +525,7 @@ static ssize_t batadv_show_gw_bwidth(struct kobject *kobj, +@@ -527,7 +527,7 @@ static ssize_t batadv_show_gw_bwidth(struct kobject *kobj, } static ssize_t batadv_store_gw_bwidth(struct kobject *kobj, @@ -153316,7 +153690,7 @@ index e7cf513..f4de9cc 100644 size_t count) { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); -@@ -546,7 +546,7 @@ static ssize_t batadv_store_gw_bwidth(struct kobject *kobj, +@@ -548,7 +548,7 @@ static ssize_t batadv_store_gw_bwidth(struct kobject *kobj, * error code in case of failure */ static ssize_t batadv_show_isolation_mark(struct kobject *kobj, @@ -153325,7 +153699,7 @@ index e7cf513..f4de9cc 100644 { struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); -@@ -565,7 +565,7 @@ static ssize_t batadv_show_isolation_mark(struct kobject *kobj, +@@ -567,7 +567,7 @@ static ssize_t batadv_show_isolation_mark(struct kobject *kobj, * Return: 'count' on success or a negative error code in case of failure */ static ssize_t batadv_store_isolation_mark(struct kobject *kobj, @@ -153334,7 +153708,7 @@ index e7cf513..f4de9cc 100644 size_t count) { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); -@@ -802,7 +802,7 @@ void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, +@@ -804,7 +804,7 @@ void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, } static ssize_t batadv_show_mesh_iface(struct kobject *kobj, @@ -153343,7 +153717,7 @@ index e7cf513..f4de9cc 100644 { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); struct batadv_hard_iface *hard_iface; -@@ -826,7 +826,7 @@ static ssize_t batadv_show_mesh_iface(struct kobject *kobj, +@@ -828,7 +828,7 @@ static ssize_t batadv_show_mesh_iface(struct kobject *kobj, } static ssize_t batadv_store_mesh_iface(struct kobject *kobj, @@ -153352,7 +153726,7 @@ index e7cf513..f4de9cc 100644 size_t count) { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); -@@ -883,7 +883,7 @@ out: +@@ -886,7 +886,7 @@ out: } static ssize_t batadv_show_iface_status(struct kobject *kobj, @@ -153361,7 +153735,7 @@ index e7cf513..f4de9cc 100644 { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); struct batadv_hard_iface *hard_iface; -@@ -930,7 +930,7 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj, +@@ -933,7 +933,7 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj, * Return: 'count' on success or a negative error code in case of failure */ static ssize_t batadv_store_throughput_override(struct kobject *kobj, @@ -153370,7 +153744,7 @@ index e7cf513..f4de9cc 100644 char *buff, size_t count) { struct net_device *net_dev = batadv_kobj_to_netdev(kobj); -@@ -968,7 +968,7 @@ out: +@@ -971,7 +971,7 @@ out: } static ssize_t batadv_show_throughput_override(struct kobject *kobj, @@ -153396,10 +153770,10 @@ index c76021b..3aef377 100644 }; diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c -index 9b4551a..426c047 100644 +index 57ec87f..92b4b3f 100644 --- a/net/batman-adv/translation-table.c +++ b/net/batman-adv/translation-table.c -@@ -660,7 +660,7 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr, +@@ -662,7 +662,7 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr, batadv_dbg(BATADV_DBG_TT, bat_priv, "Creating new local tt entry: %pM (vid: %d, ttvn: %d)\n", addr, BATADV_PRINT_VID(vid), @@ -153408,7 +153782,7 @@ index 9b4551a..426c047 100644 ether_addr_copy(tt_local->common.addr, addr); /* The local entry has to be marked as NEW to avoid to send it in -@@ -891,7 +891,7 @@ batadv_tt_prepare_tvlv_local_data(struct batadv_priv *bat_priv, +@@ -892,7 +892,7 @@ batadv_tt_prepare_tvlv_local_data(struct batadv_priv *bat_priv, } (*tt_data)->flags = BATADV_NO_FLAGS; @@ -153417,16 +153791,16 @@ index 9b4551a..426c047 100644 (*tt_data)->num_vlan = htons(num_vlan); tt_vlan = (struct batadv_tvlv_tt_vlan_data *)(*tt_data + 1); -@@ -1009,7 +1009,7 @@ int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset) +@@ -1010,7 +1010,7 @@ int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset) seq_printf(seq, "Locally retrieved addresses (from %s) announced via TT (TTVN: %u):\n", - net_dev->name, (u8)atomic_read(&bat_priv->tt.vn)); + net_dev->name, (u8)atomic_read_unchecked(&bat_priv->tt.vn)); - seq_printf(seq, " %-13s %s %-8s %-9s (%-10s)\n", "Client", "VID", - "Flags", "Last seen", "CRC"); + seq_puts(seq, + " Client VID Flags Last seen (CRC )\n"); -@@ -2786,7 +2786,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv, +@@ -2818,7 +2818,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv, spin_lock_bh(&bat_priv->tt.commit_lock); @@ -153435,7 +153809,7 @@ index 9b4551a..426c047 100644 req_ttvn = tt_data->ttvn; orig_node = batadv_orig_hash_find(bat_priv, req_src); -@@ -2825,7 +2825,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv, +@@ -2857,7 +2857,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv, bat_priv->tt.last_changeset_len); spin_unlock_bh(&bat_priv->tt.last_changeset_lock); } else { @@ -153444,7 +153818,7 @@ index 9b4551a..426c047 100644 /* allocate the tvlv, put the tt_data and all the tt_vlan_data * in the initial part -@@ -3344,10 +3344,10 @@ static void batadv_tt_local_commit_changes_nolock(struct batadv_priv *bat_priv) +@@ -3376,10 +3376,10 @@ static void batadv_tt_local_commit_changes_nolock(struct batadv_priv *bat_priv) batadv_tt_local_update_crc(bat_priv); /* Increment the TTVN only once per OGM interval */ @@ -153458,7 +153832,7 @@ index 9b4551a..426c047 100644 /* reset the sending counter */ atomic_set(&bat_priv->tt.ogm_append_cnt, BATADV_TT_OGM_APPEND_MAX); diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h -index 1e47fbe..7b48a58 100644 +index 74d865a..8172fc2 100644 --- a/net/batman-adv/types.h +++ b/net/batman-adv/types.h @@ -83,7 +83,7 @@ enum batadv_dhcp_recipient { @@ -153470,7 +153844,7 @@ index 1e47fbe..7b48a58 100644 }; /** -@@ -630,7 +630,7 @@ enum batadv_counters { +@@ -632,7 +632,7 @@ enum batadv_counters { * @work: work queue callback item for translation table purging */ struct batadv_priv_tt { @@ -153479,7 +153853,7 @@ index 1e47fbe..7b48a58 100644 atomic_t ogm_append_cnt; atomic_t local_changes; struct list_head changes_list; -@@ -906,7 +906,7 @@ struct batadv_priv { +@@ -914,7 +914,7 @@ struct batadv_priv { atomic_t bonding; atomic_t fragmentation; atomic_t packet_size_max; @@ -153488,7 +153862,7 @@ index 1e47fbe..7b48a58 100644 #ifdef CONFIG_BATMAN_ADV_BLA atomic_t bridge_loop_avoidance; #endif -@@ -925,7 +925,7 @@ struct batadv_priv { +@@ -933,7 +933,7 @@ struct batadv_priv { #endif u32 isolation_mark; u32 isolation_mark_mask; @@ -153528,7 +153902,7 @@ index eb4f5f2..2cc4c50 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 e4cae72..95cc097ba 100644 +index 388ee8b..9edb2bc 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, @@ -153623,7 +153997,7 @@ index 8e385a0..a5bdd8e 100644 tty_port_close(&dev->port, tty, filp); } diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c -index 44114a9..376287c 100644 +index 77e7f69..6572d43 100644 --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c @@ -982,13 +982,13 @@ static void __net_exit brnf_exit_net(struct net *net) @@ -153643,10 +154017,10 @@ index 44114a9..376287c 100644 }; diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c -index e9c635e..f55c87be 100644 +index 85e89f6..acba5a9 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c -@@ -1219,7 +1219,7 @@ static struct rtnl_af_ops br_af_ops __read_mostly = { +@@ -1303,7 +1303,7 @@ static struct rtnl_af_ops br_af_ops __read_mostly = { .get_link_af_size = br_get_link_af_size_filtered, }; @@ -153822,7 +154196,7 @@ index 1a19b98..df2b4ec 100644 if (!can_dir) { printk(KERN_INFO "can: failed to create /proc/net/can . " diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c -index dcc18c6..a236374 100644 +index 55d2bfe..aa97f12 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c @@ -5,7 +5,7 @@ @@ -153857,7 +154231,7 @@ index a550289..218652a 100644 switch (ss->ss_family) { diff --git a/net/compat.c b/net/compat.c -index 5cfd26a..3c50cb0 100644 +index 1cd2ec0..2650ce6 100644 --- a/net/compat.c +++ b/net/compat.c @@ -58,7 +58,7 @@ int get_compat_msghdr(struct msghdr *kmsg, @@ -153911,7 +154285,7 @@ index 5cfd26a..3c50cb0 100644 int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int); int fdnum = scm->fp->count; struct file **fp = scm->fp->fp; -@@ -345,7 +345,7 @@ static int do_set_sock_timeout(struct socket *sock, int level, +@@ -358,7 +358,7 @@ static int do_set_sock_timeout(struct socket *sock, int level, return -EFAULT; old_fs = get_fs(); set_fs(KERNEL_DS); @@ -153920,7 +154294,7 @@ index 5cfd26a..3c50cb0 100644 set_fs(old_fs); return err; -@@ -406,7 +406,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname, +@@ -420,7 +420,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); @@ -153929,7 +154303,7 @@ index 5cfd26a..3c50cb0 100644 set_fs(old_fs); if (!err) { -@@ -549,7 +549,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -563,7 +563,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, case MCAST_JOIN_GROUP: case MCAST_LEAVE_GROUP: { @@ -153938,7 +154312,7 @@ index 5cfd26a..3c50cb0 100644 struct group_req __user *kgr = compat_alloc_user_space(sizeof(struct group_req)); u32 interface; -@@ -570,7 +570,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -584,7 +584,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, case MCAST_BLOCK_SOURCE: case MCAST_UNBLOCK_SOURCE: { @@ -153947,7 +154321,7 @@ index 5cfd26a..3c50cb0 100644 struct group_source_req __user *kgsr = compat_alloc_user_space( sizeof(struct group_source_req)); u32 interface; -@@ -591,7 +591,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -605,7 +605,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, } case MCAST_MSFILTER: { @@ -153956,7 +154330,7 @@ index 5cfd26a..3c50cb0 100644 struct group_filter __user *kgf; u32 interface, fmode, numsrc; -@@ -629,7 +629,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname, +@@ -643,7 +643,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 *)) { @@ -153965,7 +154339,7 @@ index 5cfd26a..3c50cb0 100644 struct group_filter __user *kgf; int __user *koptlen; u32 interface, fmode, numsrc; -@@ -773,7 +773,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args) +@@ -787,7 +787,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args) if (call < SYS_SOCKET || call > SYS_SENDMMSG) return -EINVAL; @@ -153975,10 +154349,10 @@ index 5cfd26a..3c50cb0 100644 a0 = a[0]; a1 = a[1]; diff --git a/net/core/datagram.c b/net/core/datagram.c -index fa9dc64..73dd85a 100644 +index b7de71f..808387d 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c -@@ -357,7 +357,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) +@@ -360,7 +360,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) } kfree_skb(skb); @@ -153988,7 +154362,7 @@ index fa9dc64..73dd85a 100644 return err; diff --git a/net/core/dev.c b/net/core/dev.c -index 5c925ac..098bb2d 100644 +index 904ff43..050ec70 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1766,7 +1766,7 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb) @@ -154000,8 +154374,17 @@ index 5c925ac..098bb2d 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -3379,7 +3379,7 @@ recursion_alert: - drop: +@@ -3002,7 +3002,7 @@ static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device + out_kfree_skb: + kfree_skb(skb); + out_null: +- atomic_long_inc(&dev->tx_dropped); ++ atomic_long_inc_unchecked(&dev->tx_dropped); + return NULL; + } + +@@ -3421,7 +3421,7 @@ recursion_alert: + rc = -ENETDOWN; rcu_read_unlock_bh(); - atomic_long_inc(&dev->tx_dropped); @@ -154009,7 +154392,7 @@ index 5c925ac..098bb2d 100644 kfree_skb_list(skb); return rc; out: -@@ -3731,7 +3731,7 @@ drop: +@@ -3774,7 +3774,7 @@ drop: local_irq_restore(flags); @@ -154018,7 +154401,7 @@ index 5c925ac..098bb2d 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -3808,7 +3808,7 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3851,7 +3851,7 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -154027,7 +154410,7 @@ index 5c925ac..098bb2d 100644 { struct softnet_data *sd = this_cpu_ptr(&softnet_data); -@@ -4161,9 +4161,9 @@ ncls: +@@ -4206,9 +4206,9 @@ ncls: } else { drop: if (!deliver_exact) @@ -154039,7 +154422,7 @@ index 5c925ac..098bb2d 100644 kfree_skb(skb); /* Jamal, now you will not able to escape explaining * me how you were going to use this. :-) -@@ -5127,7 +5127,7 @@ out_unlock: +@@ -5175,7 +5175,7 @@ out_unlock: return work; } @@ -154048,7 +154431,7 @@ index 5c925ac..098bb2d 100644 { struct softnet_data *sd = this_cpu_ptr(&softnet_data); unsigned long time_limit = jiffies + 2; -@@ -7317,9 +7317,9 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, +@@ -7390,9 +7390,9 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, } else { netdev_stats_to_stats64(storage, &dev->stats); } @@ -154061,7 +154444,7 @@ index 5c925ac..098bb2d 100644 return storage; } EXPORT_SYMBOL(dev_get_stats); -@@ -7942,7 +7942,7 @@ static void __net_exit netdev_exit(struct net *net) +@@ -8014,7 +8014,7 @@ static void __net_exit netdev_exit(struct net *net) kfree(net->dev_index_head); } @@ -154070,7 +154453,7 @@ index 5c925ac..098bb2d 100644 .init = netdev_init, .exit = netdev_exit, }; -@@ -8042,7 +8042,7 @@ static void __net_exit default_device_exit_batch(struct list_head *net_list) +@@ -8114,7 +8114,7 @@ static void __net_exit default_device_exit_batch(struct list_head *net_list) rtnl_unlock(); } @@ -154099,7 +154482,7 @@ index b94b1d2..da3ed7c 100644 EXPORT_SYMBOL(dev_load); diff --git a/net/core/filter.c b/net/core/filter.c -index ca7f832..1d60a22 100644 +index e759d90..daa69dc 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -590,7 +590,11 @@ do_pass: @@ -154124,7 +154507,7 @@ index ca7f832..1d60a22 100644 masks = kmalloc_array(flen, sizeof(*masks), GFP_KERNEL); if (!masks) -@@ -1068,7 +1072,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog) +@@ -1072,7 +1076,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog) if (!fp) return -ENOMEM; @@ -154174,7 +154557,7 @@ index 3937b1b..b18d1cb 100644 fle->object = flo; else diff --git a/net/core/neighbour.c b/net/core/neighbour.c -index 769cece..425d3bd 100644 +index 510cd62..ec34c6a 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -860,7 +860,7 @@ static void neigh_probe(struct neighbour *neigh) @@ -154231,7 +154614,7 @@ index 769cece..425d3bd 100644 neigh_add_timer(neigh, jiffies + NEIGH_VAR(neigh->parms, RETRANS_TIME)); } -@@ -2186,7 +2186,7 @@ static int neigh_fill_info(struct sk_buff *skb, struct neighbour *neigh, +@@ -2188,7 +2188,7 @@ static int neigh_fill_info(struct sk_buff *skb, struct neighbour *neigh, ci.ndm_refcnt = atomic_read(&neigh->refcnt) - 1; read_unlock_bh(&neigh->lock); @@ -154240,7 +154623,7 @@ index 769cece..425d3bd 100644 nla_put(skb, NDA_CACHEINFO, sizeof(ci), &ci)) goto nla_put_failure; -@@ -2874,7 +2874,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, +@@ -2876,7 +2876,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { int size, ret; @@ -154249,7 +154632,7 @@ index 769cece..425d3bd 100644 tmp.extra1 = &zero; tmp.extra2 = &unres_qlen_max; -@@ -2936,7 +2936,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, +@@ -2938,7 +2938,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -154259,7 +154642,7 @@ index 769cece..425d3bd 100644 tmp.extra1 = &zero; diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c -index 2bf8329..ea323e4 100644 +index 14d0934..f2a895f 100644 --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c @@ -79,7 +79,13 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev) @@ -154277,7 +154660,7 @@ index 2bf8329..ea323e4 100644 "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n", dev->name, stats->rx_bytes, stats->rx_packets, stats->rx_errors, -@@ -166,7 +172,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v) +@@ -167,7 +173,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v) return 0; } @@ -154286,7 +154669,7 @@ index 2bf8329..ea323e4 100644 .start = dev_seq_start, .next = dev_seq_next, .stop = dev_seq_stop, -@@ -196,7 +202,7 @@ static const struct seq_operations softnet_seq_ops = { +@@ -197,7 +203,7 @@ static const struct seq_operations softnet_seq_ops = { static int softnet_seq_open(struct inode *inode, struct file *file) { @@ -154295,7 +154678,7 @@ index 2bf8329..ea323e4 100644 } static const struct file_operations softnet_seq_fops = { -@@ -283,8 +289,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) +@@ -284,8 +290,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) else seq_printf(seq, "%04x", ntohs(pt->type)); @@ -154309,7 +154692,7 @@ index 2bf8329..ea323e4 100644 } return 0; -@@ -347,7 +358,7 @@ static void __net_exit dev_proc_net_exit(struct net *net) +@@ -348,7 +359,7 @@ static void __net_exit dev_proc_net_exit(struct net *net) remove_proc_entry("dev", net->proc_net); } @@ -154318,7 +154701,7 @@ index 2bf8329..ea323e4 100644 .init = dev_proc_net_init, .exit = dev_proc_net_exit, }; -@@ -409,7 +420,7 @@ static void __net_exit dev_mc_net_exit(struct net *net) +@@ -410,7 +421,7 @@ static void __net_exit dev_mc_net_exit(struct net *net) remove_proc_entry("dev_mcast", net->proc_net); } @@ -154328,10 +154711,10 @@ index 2bf8329..ea323e4 100644 .exit = dev_mc_net_exit, }; diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c -index 2b3f76f..66dfd6d 100644 +index 7a0b616..b6f1e17 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c -@@ -289,7 +289,7 @@ static ssize_t carrier_changes_show(struct device *dev, +@@ -290,7 +290,7 @@ static ssize_t carrier_changes_show(struct device *dev, { struct net_device *netdev = to_net_dev(dev); return sprintf(buf, fmt_dec, @@ -154412,10 +154795,10 @@ index 94acfc8..01545c0 100644 iph->ttl = 64; iph->protocol = IPPROTO_UDP; diff --git a/net/core/pktgen.c b/net/core/pktgen.c -index 20999aa..a96919e 100644 +index 8b02df0..796c61a 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c -@@ -3829,7 +3829,7 @@ static int __net_init pg_net_init(struct net *net) +@@ -3828,7 +3828,7 @@ static int __net_init pg_net_init(struct net *net) pn->net = net; INIT_LIST_HEAD(&pn->pktgen_threads); pn->pktgen_exiting = false; @@ -154425,7 +154808,7 @@ index 20999aa..a96919e 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 65763c2..4ee3747 100644 +index d69c464..4d62549 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -61,7 +61,7 @@ struct rtnl_link { @@ -154463,7 +154846,7 @@ index 65763c2..4ee3747 100644 } EXPORT_SYMBOL_GPL(__rtnl_link_unregister); -@@ -1243,7 +1246,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, +@@ -1236,7 +1239,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, @@ -154472,7 +154855,7 @@ index 65763c2..4ee3747 100644 nla_put_u8(skb, IFLA_PROTO_DOWN, dev->proto_down)) goto nla_put_failure; -@@ -3496,7 +3499,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -3685,7 +3688,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) __rtnl_unlock(); rtnl = net->rtnl; { @@ -154534,7 +154917,7 @@ index 2696aef..dbd5807 100644 if (!err) err = put_user(SCM_RIGHTS, &cm->cmsg_type); diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index 59bf4d7..71bbed8 100644 +index eb12d21..3551c47 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1046,7 +1046,8 @@ static void skb_headers_offset_update(struct sk_buff *skb, int off) @@ -154556,7 +154939,7 @@ index 59bf4d7..71bbed8 100644 .update = csum_partial_ext, .combine = csum_block_add_ext, }; -@@ -3396,12 +3397,14 @@ void __init skb_init(void) +@@ -3426,12 +3427,14 @@ void __init skb_init(void) skbuff_head_cache = kmem_cache_create("skbuff_head_cache", sizeof(struct sk_buff), 0, @@ -154574,10 +154957,10 @@ index 59bf4d7..71bbed8 100644 } diff --git a/net/core/sock.c b/net/core/sock.c -index 7e73c26..e02877c 100644 +index 25dab8b..51aa624 100644 --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -412,7 +412,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +@@ -411,13 +411,13 @@ 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) { @@ -154586,8 +154969,6 @@ index 7e73c26..e02877c 100644 trace_sock_rcvqueue_full(sk, skb); return -ENOMEM; } -@@ -422,7 +422,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) - return err; if (!sk_rmem_schedule(sk, skb, skb->truesize)) { - atomic_inc(&sk->sk_drops); @@ -154595,7 +154976,7 @@ index 7e73c26..e02877c 100644 return -ENOBUFS; } -@@ -455,7 +455,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) +@@ -463,7 +463,7 @@ int __sk_receive_skb(struct sock *sk, struct sk_buff *skb, skb->dev = NULL; if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) { @@ -154604,7 +154985,7 @@ index 7e73c26..e02877c 100644 goto discard_and_relse; } if (nested) -@@ -473,7 +473,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) +@@ -481,7 +481,7 @@ int __sk_receive_skb(struct sock *sk, struct sk_buff *skb, mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_); } else if (sk_add_backlog(sk, skb, sk->sk_rcvbuf)) { bh_unlock_sock(sk); @@ -154613,7 +154994,7 @@ index 7e73c26..e02877c 100644 goto discard_and_relse; } -@@ -880,19 +880,6 @@ set_rcvbuf: +@@ -889,19 +889,6 @@ set_rcvbuf: } break; @@ -154633,7 +155014,7 @@ index 7e73c26..e02877c 100644 case SO_ATTACH_REUSEPORT_CBPF: ret = -EINVAL; if (optlen == sizeof(struct sock_fprog)) { -@@ -906,6 +893,20 @@ set_rcvbuf: +@@ -915,6 +902,20 @@ set_rcvbuf: } break; @@ -154654,7 +155035,7 @@ index 7e73c26..e02877c 100644 case SO_ATTACH_REUSEPORT_EBPF: ret = -EINVAL; if (optlen == sizeof(u32)) { -@@ -919,6 +920,8 @@ set_rcvbuf: +@@ -928,6 +929,8 @@ set_rcvbuf: } break; @@ -154663,7 +155044,7 @@ index 7e73c26..e02877c 100644 case SO_DETACH_FILTER: ret = sk_detach_filter(sk); break; -@@ -1028,12 +1031,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1037,12 +1040,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, struct timeval tm; } v; @@ -154679,7 +155060,7 @@ index 7e73c26..e02877c 100644 return -EINVAL; memset(&v, 0, sizeof(v)); -@@ -1171,11 +1174,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1180,11 +1183,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, case SO_PEERNAME: { @@ -154693,7 +155074,7 @@ index 7e73c26..e02877c 100644 return -EINVAL; if (copy_to_user(optval, address, len)) return -EFAULT; -@@ -1263,7 +1266,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1272,7 +1275,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, if (len > lv) len = lv; @@ -154702,7 +155083,16 @@ index 7e73c26..e02877c 100644 return -EFAULT; lenout: if (put_user(len, optlen)) -@@ -1543,7 +1546,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) +@@ -1536,7 +1539,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) + newsk->sk_dst_cache = NULL; + newsk->sk_wmem_queued = 0; + newsk->sk_forward_alloc = 0; +- atomic_set(&newsk->sk_drops, 0); ++ atomic_set_unchecked(&newsk->sk_drops, 0); + newsk->sk_send_head = NULL; + newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK; + +@@ -1565,7 +1568,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) newsk->sk_err = 0; newsk->sk_priority = 0; newsk->sk_incoming_cpu = raw_smp_processor_id(); @@ -154711,7 +155101,7 @@ index 7e73c26..e02877c 100644 /* * Before updating sk_refcnt, we must commit prior changes to memory * (Documentation/RCU/rculist_nulls.txt for details) -@@ -2410,7 +2413,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) +@@ -2494,7 +2497,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) */ smp_wmb(); atomic_set(&sk->sk_refcnt, 1); @@ -154720,7 +155110,7 @@ index 7e73c26..e02877c 100644 } EXPORT_SYMBOL(sock_init_data); -@@ -2539,6 +2542,7 @@ void sock_enable_timestamp(struct sock *sk, int flag) +@@ -2618,6 +2621,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) { @@ -154728,7 +155118,7 @@ index 7e73c26..e02877c 100644 struct sock_exterr_skb *serr; struct sk_buff *skb; int copied, err; -@@ -2560,7 +2564,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, +@@ -2639,7 +2643,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, sock_recv_timestamp(msg, sk, skb); serr = SKB_EXT_ERR(skb); @@ -154738,7 +155128,7 @@ index 7e73c26..e02877c 100644 msg->msg_flags |= MSG_ERRQUEUE; err = copied; -@@ -3012,7 +3017,7 @@ static __net_exit void proto_exit_net(struct net *net) +@@ -3091,7 +3096,7 @@ static __net_exit void proto_exit_net(struct net *net) } @@ -154748,7 +155138,7 @@ index 7e73c26..e02877c 100644 .exit = proto_exit_net, }; diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c -index a996ce8..e0d5d3d 100644 +index 6b10573..af9e62e 100644 --- a/net/core/sock_diag.c +++ b/net/core/sock_diag.c @@ -14,7 +14,7 @@ @@ -154776,7 +155166,16 @@ index a996ce8..e0d5d3d 100644 } } -@@ -192,8 +192,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl) +@@ -67,7 +67,7 @@ int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attrtype) + mem[SK_MEMINFO_WMEM_QUEUED] = sk->sk_wmem_queued; + mem[SK_MEMINFO_OPTMEM] = atomic_read(&sk->sk_omem_alloc); + mem[SK_MEMINFO_BACKLOG] = sk->sk_backlog.len; +- mem[SK_MEMINFO_DROPS] = atomic_read(&sk->sk_drops); ++ mem[SK_MEMINFO_DROPS] = atomic_read_unchecked(&sk->sk_drops); + + return nla_put(skb, attrtype, sizeof(mem), &mem); + } +@@ -193,8 +193,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; @@ -154789,7 +155188,7 @@ index a996ce8..e0d5d3d 100644 mutex_unlock(&sock_diag_table_mutex); return err; -@@ -209,7 +212,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) +@@ -210,7 +213,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) mutex_lock(&sock_diag_table_mutex); BUG_ON(sock_diag_handlers[family] != hnld); @@ -154800,7 +155199,7 @@ index a996ce8..e0d5d3d 100644 } EXPORT_SYMBOL_GPL(sock_diag_unregister); diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c -index a6beb7b..4d833b2 100644 +index 0df2aa6..7db59f7 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, @@ -154839,7 +155238,7 @@ index a6beb7b..4d833b2 100644 { .procname = "bpf_jit_enable", .data = &bpf_jit_enable, -@@ -419,13 +419,12 @@ static struct ctl_table netns_core_table[] = { +@@ -428,13 +428,12 @@ static struct ctl_table netns_core_table[] = { static __net_init int sysctl_core_net_init(struct net *net) { @@ -154855,7 +155254,7 @@ index a6beb7b..4d833b2 100644 if (tbl == NULL) goto err_dup; -@@ -435,17 +434,16 @@ static __net_init int sysctl_core_net_init(struct net *net) +@@ -444,17 +443,16 @@ static __net_init int sysctl_core_net_init(struct net *net) if (net->user_ns != &init_user_ns) { tbl[0].procname = NULL; } @@ -154877,7 +155276,7 @@ index a6beb7b..4d833b2 100644 err_dup: return -ENOMEM; } -@@ -460,7 +458,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net) +@@ -469,7 +467,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net) kfree(tbl); } @@ -154934,10 +155333,10 @@ index 5325b54..a0d4d69 100644 *lenp = len; diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c -index c28c474..dad38e7 100644 +index eff5dfc..966be0a 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c -@@ -980,7 +980,7 @@ static struct packet_type dsa_pack_type __read_mostly = { +@@ -966,7 +966,7 @@ static struct packet_type dsa_pack_type __read_mostly = { .func = dsa_switch_rcv, }; @@ -154946,11 +155345,40 @@ index c28c474..dad38e7 100644 .notifier_call = dsa_slave_netdevice_event, }; +diff --git a/net/dsa/slave.c b/net/dsa/slave.c +index 152436c..d632d9ee 100644 +--- a/net/dsa/slave.c ++++ b/net/dsa/slave.c +@@ -893,7 +893,7 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = { + .get_eee = dsa_slave_get_eee, + }; + +-static struct ethtool_ops dsa_cpu_port_ethtool_ops; ++static ethtool_ops_no_const dsa_cpu_port_ethtool_ops __read_only; + + static const struct net_device_ops dsa_slave_netdev_ops = { + .ndo_open = dsa_slave_open, +@@ -1127,6 +1127,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent, + if (master->ethtool_ops != &dsa_cpu_port_ethtool_ops) { + memcpy(&dst->master_ethtool_ops, master->ethtool_ops, + sizeof(struct ethtool_ops)); ++ pax_open_kernel(); + memcpy(&dsa_cpu_port_ethtool_ops, &dst->master_ethtool_ops, + sizeof(struct ethtool_ops)); + dsa_cpu_port_ethtool_ops.get_sset_count = +@@ -1135,6 +1136,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent, + dsa_cpu_port_get_ethtool_stats; + dsa_cpu_port_ethtool_ops.get_strings = + dsa_cpu_port_get_strings; ++ pax_close_kernel(); + master->ethtool_ops = &dsa_cpu_port_ethtool_ops; + } + eth_hw_addr_inherit(slave_dev, master); diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c -index c7d1adc..e4d688b 100644 +index 16737cd..812d5d5 100644 --- a/net/hsr/hsr_device.c +++ b/net/hsr/hsr_device.c -@@ -232,7 +232,7 @@ static netdev_features_t hsr_fix_features(struct net_device *dev, +@@ -233,7 +233,7 @@ static netdev_features_t hsr_fix_features(struct net_device *dev, } @@ -154960,10 +155388,10 @@ index c7d1adc..e4d688b 100644 struct hsr_priv *hsr = netdev_priv(dev); struct hsr_port *master; diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c -index a2c7e4c..3dc9f67 100644 +index d4d1617..06282b4 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c -@@ -102,7 +102,7 @@ nla_put_failure: +@@ -108,7 +108,7 @@ nla_put_failure: return -EMSGSIZE; } @@ -154973,7 +155401,7 @@ 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 0023c90..5cda011 100644 +index dd085db..0837270 100644 --- a/net/ieee802154/6lowpan/core.c +++ b/net/ieee802154/6lowpan/core.c @@ -182,7 +182,7 @@ static void lowpan_dellink(struct net_device *ldev, struct list_head *head) @@ -154983,7 +155411,7 @@ index 0023c90..5cda011 100644 -static struct rtnl_link_ops lowpan_link_ops __read_mostly = { +static struct rtnl_link_ops lowpan_link_ops = { .kind = "lowpan", - .priv_size = LOWPAN_PRIV_SIZE(sizeof(struct lowpan_dev_info)), + .priv_size = LOWPAN_PRIV_SIZE(sizeof(struct lowpan_802154_dev)), .setup = lowpan_setup, diff --git a/net/ieee802154/6lowpan/reassembly.c b/net/ieee802154/6lowpan/reassembly.c index 30d875d..760f4f1 100644 @@ -155057,10 +155485,10 @@ index c35fdfa..063ef67 100644 return NULL; } diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c -index 7ad0e56..d8028ad 100644 +index d39e9e4..060428e 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1425,7 +1425,7 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len) +@@ -1445,7 +1445,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) @@ -155069,7 +155497,7 @@ index 7ad0e56..d8028ad 100644 #endif return -EINVAL; } -@@ -1634,7 +1634,7 @@ static __net_exit void ipv4_mib_exit_net(struct net *net) +@@ -1655,7 +1655,7 @@ static __net_exit void ipv4_mib_exit_net(struct net *net) free_percpu(net->mib.tcp_statistics); } @@ -155078,7 +155506,7 @@ index 7ad0e56..d8028ad 100644 .init = ipv4_mib_init_net, .exit = ipv4_mib_exit_net, }; -@@ -1675,7 +1675,7 @@ static __net_exit void inet_exit_net(struct net *net) +@@ -1696,7 +1696,7 @@ static __net_exit void inet_exit_net(struct net *net) { } @@ -155088,7 +155516,7 @@ index 7ad0e56..d8028ad 100644 .exit = inet_exit_net, }; diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c -index c34c754..df0b2c8 100644 +index 89a8cac4..7d3fdc5 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -332,7 +332,7 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb) @@ -155201,10 +155629,10 @@ index e333bc8..281d54d 100644 .exit = devinet_exit_net, }; diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c -index 63566ec..82e85abc8 100644 +index ef2ebeb..5e57972 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c -@@ -1139,12 +1139,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, +@@ -1140,12 +1140,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev, RTNH_F_DEAD); #endif @@ -155219,7 +155647,7 @@ index 63566ec..82e85abc8 100644 if (!ifa->ifa_dev->ifa_list) { /* Last address was deleted from this interface. * Disable IP. -@@ -1184,7 +1184,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo +@@ -1185,7 +1185,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev, RTNH_F_DEAD); #endif @@ -155229,10 +155657,10 @@ index 63566ec..82e85abc8 100644 break; case NETDEV_DOWN: diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c -index 2b68418..fb7bee8 100644 +index 539fa26..70f9bd0 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c -@@ -913,7 +913,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh) +@@ -916,7 +916,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); @@ -155242,7 +155670,7 @@ index 2b68418..fb7bee8 100644 return nh->nh_saddr; } diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c -index 6333489..be244b4 100644 +index 38abe70..5e03195 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -1228,7 +1228,7 @@ fail: @@ -155255,11 +155683,11 @@ index 6333489..be244b4 100644 .exit = icmp_sk_exit, }; diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c -index bc5196e..dbe0be2 100644 +index fa8c398..5169c40 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c -@@ -662,8 +662,8 @@ struct sock *inet_csk_clone_lock(const struct sock *sk, - newsk->sk_write_space = sk_stream_write_space; +@@ -665,8 +665,8 @@ struct sock *inet_csk_clone_lock(const struct sock *sk, + sock_reset_flag(newsk, SOCK_RCU_FREE); newsk->sk_mark = inet_rsk(req)->ir_mark; - atomic64_set(&newsk->sk_cookie, @@ -155270,10 +155698,10 @@ index bc5196e..dbe0be2 100644 newicsk->icsk_retransmits = 0; newicsk->icsk_backoff = 0; diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c -index 5fdb02f..dc6f124 100644 +index 25af124..142abbb 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c -@@ -986,7 +986,7 @@ static int inet_diag_rcv_msg_compat(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -1004,7 +1004,7 @@ static int inet_diag_rcv_msg_compat(struct sk_buff *skb, struct nlmsghdr *nlh) return -EINVAL; } { @@ -155282,7 +155710,7 @@ index 5fdb02f..dc6f124 100644 .dump = inet_diag_dump_compat, }; return netlink_dump_start(net->diag_nlsk, skb, nlh, &c); -@@ -1017,7 +1017,7 @@ static int inet_diag_handler_cmd(struct sk_buff *skb, struct nlmsghdr *h) +@@ -1035,7 +1035,7 @@ static int inet_diag_handler_cmd(struct sk_buff *skb, struct nlmsghdr *h) return -EINVAL; } { @@ -155292,7 +155720,7 @@ index 5fdb02f..dc6f124 100644 }; return netlink_dump_start(net->diag_nlsk, skb, h, &c); diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c -index 0d9e9d7..9679cf4 100644 +index 77c20a4..76261b6 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -19,6 +19,7 @@ @@ -155312,7 +155740,7 @@ index 0d9e9d7..9679cf4 100644 /* * Allocate and initialize a new local port bind bucket. * The bindhash mutex for snum's hash chain must be held here. -@@ -665,6 +668,9 @@ ok: +@@ -642,6 +645,9 @@ ok: spin_unlock(&head->lock); if (tw) inet_twsk_deschedule_put(tw); @@ -155323,7 +155751,7 @@ index 0d9e9d7..9679cf4 100644 return 0; } diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c -index c67f9bd..7a108d1 100644 +index 2065816..a85ea16 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c @@ -186,7 +186,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, @@ -155349,7 +155777,7 @@ index 86fa458..5f601b9 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 efbd47d..cb8f074 100644 +index bbe7f72..7a5a57f 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c @@ -282,7 +282,7 @@ static int ip_frag_too_far(struct ipq *qp) @@ -155401,10 +155829,10 @@ index efbd47d..cb8f074 100644 return -ENOMEM; } diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c -index 4cc8421..ba5f709 100644 +index 1d000af..19a5f33 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c -@@ -116,7 +116,7 @@ static bool log_ecn_error = true; +@@ -110,7 +110,7 @@ static bool log_ecn_error = true; module_param(log_ecn_error, bool, 0644); MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); @@ -155413,7 +155841,7 @@ index 4cc8421..ba5f709 100644 static int ipgre_tunnel_init(struct net_device *dev); static int ipgre_net_id __read_mostly; -@@ -1231,7 +1231,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { +@@ -1082,7 +1082,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { [IFLA_GRE_COLLECT_METADATA] = { .type = NLA_FLAG }, }; @@ -155422,7 +155850,7 @@ index 4cc8421..ba5f709 100644 .kind = "gre", .maxtype = IFLA_GRE_MAX, .policy = ipgre_policy, -@@ -1246,7 +1246,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { +@@ -1097,7 +1097,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { .get_link_net = ip_tunnel_get_link_net, }; @@ -155432,7 +155860,7 @@ index 4cc8421..ba5f709 100644 .maxtype = IFLA_GRE_MAX, .policy = ipgre_policy, diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c -index e3d7827..e59d2a7 100644 +index 4b351af..d5db78a 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -148,6 +148,10 @@ @@ -155449,7 +155877,7 @@ index e3d7827..e59d2a7 100644 @@ -223,6 +227,9 @@ static int ip_local_deliver_finish(struct net *net, struct sock *sk, struct sk_b if (!raw) { if (xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { - IP_INC_STATS_BH(net, IPSTATS_MIB_INUNKNOWNPROTOS); + __IP_INC_STATS(net, IPSTATS_MIB_INUNKNOWNPROTOS); +#ifdef CONFIG_GRKERNSEC_BLACKHOLE + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK)) +#endif @@ -155457,10 +155885,10 @@ index e3d7827..e59d2a7 100644 ICMP_PROT_UNREACH, 0); } diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c -index 035ad64..a2f9d47 100644 +index 71a52f4d..2bab905 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c -@@ -1311,7 +1311,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, +@@ -1325,7 +1325,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; @@ -155470,7 +155898,7 @@ index 035ad64..a2f9d47 100644 return -EFAULT; return 0; } -@@ -1447,7 +1448,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, +@@ -1461,7 +1462,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, if (sk->sk_type != SOCK_STREAM) return -ENOPROTOOPT; @@ -155502,10 +155930,10 @@ index a917903..b0bdff6 100644 .maxtype = IFLA_VTI_MAX, .policy = vti_policy, diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c -index 2ed9dd2..0682cfe 100644 +index 1d71c40..3f8a6fa 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c -@@ -332,7 +332,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) +@@ -334,7 +334,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) mm_segment_t oldfs = get_fs(); set_fs(get_ds()); @@ -155514,7 +155942,7 @@ index 2ed9dd2..0682cfe 100644 set_fs(oldfs); return res; } -@@ -343,7 +343,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg) +@@ -345,7 +345,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg) mm_segment_t oldfs = get_fs(); set_fs(get_ds()); @@ -155523,7 +155951,7 @@ index 2ed9dd2..0682cfe 100644 set_fs(oldfs); return res; } -@@ -354,7 +354,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg) +@@ -356,7 +356,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg) mm_segment_t oldfs = get_fs(); set_fs(get_ds()); @@ -155533,7 +155961,7 @@ index 2ed9dd2..0682cfe 100644 return res; } diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index ec51d02..4e90ba9 100644 +index 9783701..1a0fb2e 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c @@ -123,7 +123,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); @@ -155545,7 +155973,7 @@ index ec51d02..4e90ba9 100644 static int ipip_err(struct sk_buff *skb, u32 info) { -@@ -484,7 +484,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { +@@ -483,7 +483,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, }; @@ -155555,10 +155983,10 @@ index ec51d02..4e90ba9 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 85d60c6..a109f11 100644 +index 2033f92..78ffbcc 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c -@@ -897,14 +897,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -788,13 +788,13 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -155569,14 +155997,12 @@ index 85d60c6..a109f11 100644 struct xt_table *t; int ret; -- if (*len != sizeof(struct arpt_getinfo)) { -- duprintf("length %u != %Zu\n", *len, -+ if (len != sizeof(struct arpt_getinfo)) { -+ duprintf("length %u != %Zu\n", len, - sizeof(struct arpt_getinfo)); +- if (*len != sizeof(struct arpt_getinfo)) ++ if (len != sizeof(struct arpt_getinfo)) return -EINVAL; - } -@@ -941,7 +941,7 @@ static int get_info(struct net *net, void __user *user, + + if (copy_from_user(name, user, sizeof(name)) != 0) +@@ -829,7 +829,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -155585,7 +156011,7 @@ index 85d60c6..a109f11 100644 ret = -EFAULT; else ret = 0; -@@ -1589,7 +1589,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, +@@ -1439,7 +1439,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, switch (cmd) { case ARPT_SO_GET_INFO: @@ -155594,7 +156020,7 @@ index 85d60c6..a109f11 100644 break; case ARPT_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -1634,7 +1634,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len +@@ -1483,7 +1483,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len switch (cmd) { case ARPT_SO_GET_INFO: @@ -155604,10 +156030,10 @@ index 85d60c6..a109f11 100644 case ARPT_SO_GET_ENTRIES: diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c -index 0984ea3..d1125b0 100644 +index 54906e0..d7a3430 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c -@@ -1082,14 +1082,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -957,13 +957,13 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -155618,14 +156044,12 @@ index 0984ea3..d1125b0 100644 struct xt_table *t; int ret; -- if (*len != sizeof(struct ipt_getinfo)) { -- duprintf("length %u != %zu\n", *len, -+ if (len != sizeof(struct ipt_getinfo)) { -+ duprintf("length %u != %zu\n", len, - sizeof(struct ipt_getinfo)); +- if (*len != sizeof(struct ipt_getinfo)) ++ if (len != sizeof(struct ipt_getinfo)) return -EINVAL; - } -@@ -1126,7 +1126,7 @@ static int get_info(struct net *net, void __user *user, + + if (copy_from_user(name, user, sizeof(name)) != 0) +@@ -998,7 +998,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -155634,7 +156058,7 @@ index 0984ea3..d1125b0 100644 ret = -EFAULT; else ret = 0; -@@ -1829,7 +1829,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1661,7 +1661,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IPT_SO_GET_INFO: @@ -155643,7 +156067,7 @@ index 0984ea3..d1125b0 100644 break; case IPT_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -1876,7 +1876,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1707,7 +1707,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IPT_SO_GET_INFO: @@ -155666,7 +156090,7 @@ index 4a9e6db..06174e1 100644 pr_err("Unable to proc dir entry\n"); return -ENOMEM; diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c -index cf9700b..9a5ded4 100644 +index 66ddcb6..0de0097 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -59,7 +59,7 @@ struct ping_table { @@ -155705,7 +156129,7 @@ index cf9700b..9a5ded4 100644 info, (u8 *)icmph); #endif } -@@ -923,10 +923,10 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock, +@@ -924,10 +924,10 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock, } if (inet6_sk(sk)->rxopt.all) @@ -155718,7 +156142,7 @@ index cf9700b..9a5ded4 100644 else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags) ip_cmsg_recv(msg, skb); #endif -@@ -1123,7 +1123,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, +@@ -1124,7 +1124,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, @@ -155775,7 +156199,7 @@ index 9f665b6..5900fae 100644 .exit = ip_proc_exit_net, }; diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c -index 8d22de7..af2d996 100644 +index 438f50c..96538dd 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -325,7 +325,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) @@ -155787,7 +156211,7 @@ index 8d22de7..af2d996 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -785,16 +785,20 @@ static int raw_init(struct sock *sk) +@@ -786,16 +786,20 @@ static int raw_init(struct sock *sk) static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen) { @@ -155809,7 +156233,7 @@ index 8d22de7..af2d996 100644 if (get_user(len, optlen)) goto out; -@@ -804,8 +808,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o +@@ -805,8 +809,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; @@ -155820,7 +156244,7 @@ index 8d22de7..af2d996 100644 goto out; ret = 0; out: return ret; -@@ -1034,7 +1038,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) +@@ -1035,7 +1039,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), @@ -155829,7 +156253,7 @@ index 8d22de7..af2d996 100644 } static int raw_seq_show(struct seq_file *seq, void *v) -@@ -1097,7 +1101,7 @@ static __net_exit void raw_exit_net(struct net *net) +@@ -1098,7 +1102,7 @@ static __net_exit void raw_exit_net(struct net *net) remove_proc_entry("raw", net->proc_net); } @@ -155839,7 +156263,7 @@ index 8d22de7..af2d996 100644 .exit = raw_exit_net, }; diff --git a/net/ipv4/route.c b/net/ipv4/route.c -index 60398a9..e7e6456 100644 +index a1f2830..21241de 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -232,7 +232,7 @@ static const struct seq_operations rt_cache_seq_ops = { @@ -155905,7 +156329,7 @@ index 60398a9..e7e6456 100644 } EXPORT_SYMBOL(ip_idents_reserve); -@@ -2768,34 +2768,34 @@ static struct ctl_table ipv4_route_flush_table[] = { +@@ -2772,34 +2772,34 @@ static struct ctl_table ipv4_route_flush_table[] = { .maxlen = sizeof(int), .mode = 0200, .proc_handler = ipv4_sysctl_rtcache_flush, @@ -155948,7 +156372,7 @@ index 60398a9..e7e6456 100644 err_dup: return -ENOMEM; } -@@ -2810,7 +2810,7 @@ static __net_exit void sysctl_route_net_exit(struct net *net) +@@ -2814,7 +2814,7 @@ static __net_exit void sysctl_route_net_exit(struct net *net) kfree(tbl); } @@ -155957,7 +156381,7 @@ index 60398a9..e7e6456 100644 .init = sysctl_route_net_init, .exit = sysctl_route_net_exit, }; -@@ -2818,14 +2818,14 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { +@@ -2822,14 +2822,14 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { static __net_init int rt_genid_init(struct net *net) { @@ -155975,7 +156399,7 @@ index 60398a9..e7e6456 100644 .init = rt_genid_init, }; -@@ -2849,7 +2849,7 @@ static void __net_exit ipv4_inetpeer_exit(struct net *net) +@@ -2853,7 +2853,7 @@ static void __net_exit ipv4_inetpeer_exit(struct net *net) kfree(bp); } @@ -155984,7 +156408,7 @@ index 60398a9..e7e6456 100644 .init = ipv4_inetpeer_init, .exit = ipv4_inetpeer_exit, }; -@@ -2863,11 +2863,7 @@ int __init ip_rt_init(void) +@@ -2867,11 +2867,7 @@ int __init ip_rt_init(void) int rc = 0; int cpu; @@ -155998,7 +156422,7 @@ index 60398a9..e7e6456 100644 ip_tstamps = kcalloc(IP_IDENTS_SZ, sizeof(*ip_tstamps), GFP_KERNEL); if (!ip_tstamps) diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c -index 03112a3..8890b4a 100644 +index 1cb67de..2acf1f0 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -66,7 +66,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write, @@ -156055,7 +156479,7 @@ index 03112a3..8890b4a 100644 struct tcp_fastopen_context *ctxt; int ret; u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */ -@@ -965,13 +965,12 @@ static struct ctl_table ipv4_net_table[] = { +@@ -976,13 +976,12 @@ static struct ctl_table ipv4_net_table[] = { static __net_init int ipv4_sysctl_init_net(struct net *net) { @@ -156071,7 +156495,7 @@ index 03112a3..8890b4a 100644 if (!table) goto err_alloc; -@@ -980,7 +979,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) +@@ -991,7 +990,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) table[i].data += (void *)net - (void *)&init_net; } @@ -156083,7 +156507,7 @@ index 03112a3..8890b4a 100644 if (!net->ipv4.ipv4_hdr) goto err_reg; -@@ -1009,7 +1011,7 @@ static __net_exit void ipv4_sysctl_exit_net(struct net *net) +@@ -1020,7 +1022,7 @@ static __net_exit void ipv4_sysctl_exit_net(struct net *net) kfree(table); } @@ -156093,7 +156517,7 @@ index 03112a3..8890b4a 100644 .exit = ipv4_sysctl_exit_net, }; diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index c124c3c..40340ab 100644 +index 42bf89a..adc7e6d 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -268,11 +268,13 @@ static void tcp_ecn_rcv_synack(struct tcp_sock *tp, const struct tcphdr *th) @@ -156119,7 +156543,7 @@ index c124c3c..40340ab 100644 sk->sk_max_pacing_rate); } -@@ -4722,7 +4724,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, +@@ -4735,7 +4737,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, * simplifies code) */ static void @@ -156128,7 +156552,7 @@ index c124c3c..40340ab 100644 struct sk_buff *head, struct sk_buff *tail, u32 start, u32 end) { -@@ -5720,6 +5722,7 @@ discard: +@@ -5713,6 +5715,7 @@ discard: tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -156136,7 +156560,7 @@ index c124c3c..40340ab 100644 if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5771,6 +5774,7 @@ discard: +@@ -5764,6 +5767,7 @@ discard: goto discard; #endif } @@ -156144,7 +156568,7 @@ index c124c3c..40340ab 100644 /* "fifth, if neither of the SYN or RST bits is set then * drop the segment and return." */ -@@ -5816,7 +5820,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) +@@ -5807,7 +5811,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) goto discard; if (th->syn) { @@ -156153,7 +156577,7 @@ index c124c3c..40340ab 100644 goto discard; if (icsk->icsk_af_ops->conn_request(sk, skb) < 0) return 1; -@@ -6148,7 +6152,7 @@ struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops, +@@ -6124,7 +6128,7 @@ struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops, kmemcheck_annotate_bitfield(ireq, flags); ireq->opt = NULL; @@ -156163,7 +156587,7 @@ index c124c3c..40340ab 100644 write_pnet(&ireq->ireq_net, sock_net(sk_listener)); ireq->ireq_family = sk_listener->sk_family; diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index ad45050..8203d2b 100644 +index 3708de2..2b40e93 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -88,6 +88,10 @@ int sysctl_tcp_tw_reuse __read_mostly; @@ -156177,7 +156601,7 @@ index ad45050..8203d2b 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); -@@ -1423,6 +1427,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1425,6 +1429,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -156187,10 +156611,10 @@ index ad45050..8203d2b 100644 tcp_v4_send_reset(rsk, skb); discard: kfree_skb(skb); -@@ -1589,12 +1596,19 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1592,12 +1599,19 @@ int tcp_v4_rcv(struct sk_buff *skb) lookup: sk = __inet_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source, - th->dest); + th->dest, &refcounted); - if (!sk) + if (!sk) { +#ifdef CONFIG_GRKERNSEC_BLACKHOLE @@ -156210,9 +156634,9 @@ index ad45050..8203d2b 100644 if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); -@@ -1679,6 +1693,10 @@ csum_error: +@@ -1687,6 +1701,10 @@ csum_error: bad_packet: - TCP_INC_STATS_BH(net, TCP_MIB_INERRS); + __TCP_INC_STATS(net, TCP_MIB_INERRS); } else { +#ifdef CONFIG_GRKERNSEC_BLACKHOLE + if (!grsec_enable_blackhole || (ret == 1 && @@ -156221,7 +156645,7 @@ index ad45050..8203d2b 100644 tcp_v4_send_reset(NULL, skb); } -@@ -2419,7 +2437,7 @@ static void __net_exit tcp_sk_exit_batch(struct list_head *net_exit_list) +@@ -2425,7 +2443,7 @@ static void __net_exit tcp_sk_exit_batch(struct list_head *net_exit_list) inet_twsk_purge(&tcp_hashinfo, &tcp_death_row, AF_INET); } @@ -156231,10 +156655,10 @@ index ad45050..8203d2b 100644 .exit = tcp_sk_exit, .exit_batch = tcp_sk_exit_batch, diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c -index 7b7eec43..dfa9f1c 100644 +index b617826..c544a96 100644 --- a/net/ipv4/tcp_metrics.c +++ b/net/ipv4/tcp_metrics.c -@@ -1164,7 +1164,7 @@ static void __net_exit tcp_net_metrics_exit(struct net *net) +@@ -1166,7 +1166,7 @@ static void __net_exit tcp_net_metrics_exit(struct net *net) tcp_metrics_flush_all(net); } @@ -156244,7 +156668,7 @@ index 7b7eec43..dfa9f1c 100644 .exit = tcp_net_metrics_exit, }; diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c -index acb366d..2d66ef0 100644 +index 4b95ec4..4a83836 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c @@ -27,6 +27,10 @@ @@ -156258,7 +156682,7 @@ index acb366d..2d66ef0 100644 int sysctl_tcp_abort_on_overflow __read_mostly; struct inet_timewait_death_row tcp_death_row = { -@@ -781,7 +785,10 @@ embryonic_reset: +@@ -784,7 +788,10 @@ embryonic_reset: * avoid becoming vulnerable to outside attack aiming at * resetting legit local connections. */ @@ -156284,7 +156708,7 @@ index f6c50af..1eb9aa5 100644 cnt += width; } diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c -index 49bc474..9f9767d 100644 +index debdd8b..7bcef89 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -22,6 +22,10 @@ @@ -156313,7 +156737,7 @@ index 49bc474..9f9767d 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 e9853df..4b57916 100644 +index 4aed8fc..7072373 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -87,6 +87,7 @@ @@ -156335,7 +156759,7 @@ index e9853df..4b57916 100644 struct udp_table udp_table __read_mostly; EXPORT_SYMBOL(udp_table); -@@ -696,6 +701,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk, +@@ -614,6 +619,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk, return true; } @@ -156345,7 +156769,7 @@ index e9853df..4b57916 100644 /* * This routine is called by the ICMP module when it gets some * sort of error condition. If err < 0 then the socket should -@@ -1022,9 +1030,18 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) +@@ -940,9 +948,18 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) dport = usin->sin_port; if (dport == 0) return -EINVAL; @@ -156364,64 +156788,59 @@ index e9853df..4b57916 100644 daddr = inet->inet_daddr; dport = inet->inet_dport; /* Open fast path for connected socket. -@@ -1281,7 +1298,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)); +@@ -1199,7 +1216,7 @@ static unsigned int first_packet_length(struct sock *sk) + IS_UDPLITE(sk)); + __UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, + IS_UDPLITE(sk)); - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); __skb_unlink(skb, rcvq); __skb_queue_tail(&list_kill, skb); } -@@ -1362,6 +1379,10 @@ try_again: - if (!skb) - goto out; +@@ -1301,10 +1318,13 @@ try_again: + goto csum_copy_err; + } -+ err = gr_search_udp_recvmsg(sk, skb); -+ if (err) -+ goto out_free; ++ if (likely(!err)) ++ err = gr_search_udp_recvmsg(sk, skb); + - ulen = skb->len - sizeof(struct udphdr); - copied = len; - if (copied > ulen) -@@ -1395,7 +1416,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udp_recvmsg); if (!peeked) { - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); - UDP_INC_STATS_USER(sock_net(sk), - UDP_MIB_INERRORS, is_udplite); + UDP_INC_STATS(sock_net(sk), + UDP_MIB_INERRORS, is_udplite); } -@@ -1697,7 +1718,7 @@ csum_error: - UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); +@@ -1611,7 +1631,7 @@ csum_error: + __UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: - UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); + __UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); kfree_skb(skb); return -1; } -@@ -1715,7 +1736,7 @@ static void flush_stack(struct sock **stack, unsigned int count, - skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); +@@ -1669,7 +1689,7 @@ start_lookup: + nskb = skb_clone(skb, GFP_ATOMIC); - if (!skb1) { + if (unlikely(!nskb)) { - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); - UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, - IS_UDPLITE(sk)); - UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -1921,6 +1942,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, + __UDP_INC_STATS(net, UDP_MIB_RCVBUFERRORS, + IS_UDPLITE(sk)); + __UDP_INC_STATS(net, UDP_MIB_INERRORS, +@@ -1810,6 +1830,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); + __UDP_INC_STATS(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); +#ifdef CONFIG_GRKERNSEC_BLACKHOLE + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK)) +#endif icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); /* -@@ -2529,7 +2553,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, +@@ -2375,7 +2398,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, @@ -156541,7 +156960,7 @@ index 542074c..648df74 100644 sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index 8ec4b30..fee6f55 100644 +index 47f837a..95f8192 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -179,7 +179,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = { @@ -156562,7 +156981,7 @@ index 8ec4b30..fee6f55 100644 .autoconf = 1, .force_mld_version = 0, .mldv1_unsolicited_report_interval = 10 * HZ, -@@ -651,7 +651,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, +@@ -650,7 +650,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, idx = 0; head = &net->dev_index_head[h]; rcu_read_lock(); @@ -156571,7 +156990,7 @@ index 8ec4b30..fee6f55 100644 net->dev_base_seq; hlist_for_each_entry_rcu(dev, head, index_hlist) { if (idx < s_idx) -@@ -2597,7 +2597,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) +@@ -2596,7 +2596,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) p.iph.ihl = 5; p.iph.protocol = IPPROTO_IPV6; p.iph.ttl = 64; @@ -156580,7 +156999,7 @@ index 8ec4b30..fee6f55 100644 if (ops->ndo_do_ioctl) { mm_segment_t oldfs = get_fs(); -@@ -4026,16 +4026,23 @@ static const struct file_operations if6_fops = { +@@ -4025,16 +4025,23 @@ static const struct file_operations if6_fops = { .release = seq_release_net, }; @@ -156605,7 +157024,7 @@ index 8ec4b30..fee6f55 100644 } static struct pernet_operations if6_proc_net_ops = { -@@ -4654,7 +4661,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, +@@ -4653,7 +4660,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(); @@ -156614,7 +157033,7 @@ index 8ec4b30..fee6f55 100644 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { idx = 0; head = &net->dev_index_head[h]; -@@ -4867,7 +4874,7 @@ static inline size_t inet6_if_nlmsg_size(void) +@@ -4866,7 +4873,7 @@ static inline size_t inet6_if_nlmsg_size(void) + nla_total_size(inet6_ifla6_size()); /* IFLA_PROTINFO */ } @@ -156623,7 +157042,7 @@ index 8ec4b30..fee6f55 100644 int items, int bytes) { int i; -@@ -4877,7 +4884,7 @@ static inline void __snmp6_fill_statsdev(u64 *stats, atomic_long_t *mib, +@@ -4876,7 +4883,7 @@ static inline void __snmp6_fill_statsdev(u64 *stats, atomic_long_t *mib, /* Use put_unaligned() because stats may not be aligned for u64. */ put_unaligned(items, &stats[0]); for (i = 1; i < items; i++) @@ -156632,7 +157051,7 @@ index 8ec4b30..fee6f55 100644 memset(&stats[items], 0, pad); } -@@ -5332,7 +5339,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) +@@ -5333,7 +5340,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) rt_genid_bump_ipv6(net); break; } @@ -156641,7 +157060,7 @@ index 8ec4b30..fee6f55 100644 } static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) -@@ -5352,7 +5359,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write, +@@ -5353,7 +5360,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write, int *valp = ctl->data; int val = *valp; loff_t pos = *ppos; @@ -156650,7 +157069,7 @@ index 8ec4b30..fee6f55 100644 int ret; /* -@@ -5375,7 +5382,7 @@ static +@@ -5376,7 +5383,7 @@ static int addrconf_sysctl_hop_limit(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -156659,7 +157078,7 @@ index 8ec4b30..fee6f55 100644 int min_hl = 1, max_hl = 255; lctl = *ctl; -@@ -5391,7 +5398,7 @@ int addrconf_sysctl_mtu(struct ctl_table *ctl, int write, +@@ -5392,7 +5399,7 @@ int addrconf_sysctl_mtu(struct ctl_table *ctl, int write, { struct inet6_dev *idev = ctl->extra1; int min_mtu = IPV6_MIN_MTU; @@ -156668,7 +157087,7 @@ index 8ec4b30..fee6f55 100644 lctl = *ctl; lctl.extra1 = &min_mtu; -@@ -5466,7 +5473,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write, +@@ -5467,7 +5474,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write, int *valp = ctl->data; int val = *valp; loff_t pos = *ppos; @@ -156677,7 +157096,7 @@ index 8ec4b30..fee6f55 100644 int ret; /* -@@ -5531,7 +5538,7 @@ static int addrconf_sysctl_stable_secret(struct ctl_table *ctl, int write, +@@ -5532,7 +5539,7 @@ static int addrconf_sysctl_stable_secret(struct ctl_table *ctl, int write, int err; struct in6_addr addr; char str[IPV6_MAX_STRLEN]; @@ -156686,7 +157105,7 @@ index 8ec4b30..fee6f55 100644 struct net *net = ctl->extra2; struct ipv6_stable_secret *secret = ctl->data; -@@ -5600,7 +5607,7 @@ int addrconf_sysctl_ignore_routes_with_linkdown(struct ctl_table *ctl, +@@ -5601,7 +5608,7 @@ int addrconf_sysctl_ignore_routes_with_linkdown(struct ctl_table *ctl, int *valp = ctl->data; int val = *valp; loff_t pos = *ppos; @@ -156695,11 +157114,20 @@ index 8ec4b30..fee6f55 100644 int ret; /* ctl->data points to idev->cnf.ignore_routes_when_linkdown +@@ -5941,7 +5948,7 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name, + struct inet6_dev *idev, struct ipv6_devconf *p) + { + int i; +- struct ctl_table *table; ++ ctl_table_no_const *table; + char path[sizeof("net/ipv6/conf/") + IFNAMSIZ]; + + table = kmemdup(addrconf_sysctl, sizeof(addrconf_sysctl), GFP_KERNEL); diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c -index b11c37c..38e3339 100644 +index bfa86f0..8737707 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c -@@ -784,7 +784,7 @@ static int __net_init inet6_net_init(struct net *net) +@@ -787,7 +787,7 @@ static int __net_init inet6_net_init(struct net *net) net->ipv6.sysctl.idgen_retries = 3; net->ipv6.sysctl.idgen_delay = 1 * HZ; net->ipv6.sysctl.flowlabel_state_ranges = 0; @@ -156709,10 +157137,10 @@ index b11c37c..38e3339 100644 err = ipv6_init_mibs(net); if (err) diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c -index 9dd3882..a03c07e 100644 +index 37874e2..d5cd498 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -1025,5 +1025,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp, +@@ -1032,5 +1032,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, @@ -156720,10 +157148,10 @@ index 9dd3882..a03c07e 100644 + atomic_read_unchecked(&sp->sk_drops)); } diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c -index 0013cac..08db290 100644 +index a4fa840..eadf5a1 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c -@@ -997,7 +997,7 @@ static struct ctl_table ipv6_icmp_table_template[] = { +@@ -1003,7 +1003,7 @@ static struct ctl_table ipv6_icmp_table_template[] = { struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net) { @@ -156733,10 +157161,10 @@ index 0013cac..08db290 100644 table = kmemdup(ipv6_icmp_table_template, sizeof(ipv6_icmp_table_template), diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c -index 70f2628..721dd1e 100644 +index 00cf28a..4699aa3 100644 --- a/net/ipv6/inet6_hashtables.c +++ b/net/ipv6/inet6_hashtables.c -@@ -210,7 +210,7 @@ struct sock *inet6_lookup(struct net *net, struct inet_hashinfo *hashinfo, +@@ -178,7 +178,7 @@ struct sock *inet6_lookup(struct net *net, struct inet_hashinfo *hashinfo, EXPORT_SYMBOL_GPL(inet6_lookup); static int __inet6_check_established(struct inet_timewait_death_row *death_row, @@ -156746,7 +157174,7 @@ index 70f2628..721dd1e 100644 { struct inet_hashinfo *hinfo = death_row->hashinfo; diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c -index c26fac2..f944bc7 100644 +index 771be1f..e592cb8 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -98,9 +98,9 @@ static int fib6_new_sernum(struct net *net) @@ -156762,10 +157190,10 @@ index c26fac2..f944bc7 100644 return new; } diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c -index 4e636e6..26d1e42 100644 +index 776d145..69772ae 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c -@@ -70,8 +70,8 @@ struct ip6gre_net { +@@ -71,8 +71,8 @@ struct ip6gre_net { struct net_device *fb_tunnel_dev; }; @@ -156776,17 +157204,17 @@ index 4e636e6..26d1e42 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); -@@ -1303,7 +1303,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) +@@ -1070,7 +1070,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) } -static struct inet6_protocol ip6gre_protocol __read_mostly = { +static struct inet6_protocol ip6gre_protocol = { - .handler = ip6gre_rcv, + .handler = gre_rcv, .err_handler = ip6gre_err, .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, -@@ -1658,7 +1658,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { - [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, +@@ -1523,7 +1523,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { + [IFLA_GRE_ENCAP_DPORT] = { .type = NLA_U16 }, }; -static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { @@ -156794,7 +157222,7 @@ index 4e636e6..26d1e42 100644 .kind = "ip6gre", .maxtype = IFLA_GRE_MAX, .policy = ip6gre_policy, -@@ -1673,7 +1673,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { +@@ -1538,7 +1538,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { .get_link_net = ip6_tnl_get_link_net, }; @@ -156804,7 +157232,7 @@ index 4e636e6..26d1e42 100644 .maxtype = IFLA_GRE_MAX, .policy = ip6gre_policy, diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c -index 1f20345..b3499ef 100644 +index 7b0481e..cd77386 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -80,7 +80,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) @@ -156816,8 +157244,8 @@ index 1f20345..b3499ef 100644 static int ip6_tnl_net_id __read_mostly; struct ip6_tnl_net { -@@ -1752,7 +1752,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { - [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, +@@ -1992,7 +1992,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { + [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, }; -static struct rtnl_link_ops ip6_link_ops __read_mostly = { @@ -156848,10 +157276,10 @@ index d90a11f..02af54d 100644 .maxtype = IFLA_VTI_MAX, .policy = vti6_policy, diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c -index 4449ad1..e47579c 100644 +index a9895e1..920025e 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c -@@ -1025,7 +1025,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, +@@ -1027,7 +1027,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, if (sk->sk_type != SOCK_STREAM) return -ENOPROTOOPT; @@ -156874,10 +157302,10 @@ index c245895..68c1693 100644 if (skb && ipv6_chk_addr_and_flags(dev_net(dev), &ipv6_hdr(skb)->saddr, dev, 1, diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c -index 9021b43..b2e6979 100644 +index 63e06c3..191ae03 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c -@@ -1094,14 +1094,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -985,13 +985,13 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -156888,14 +157316,12 @@ index 9021b43..b2e6979 100644 struct xt_table *t; int ret; -- if (*len != sizeof(struct ip6t_getinfo)) { -- duprintf("length %u != %zu\n", *len, -+ if (len != sizeof(struct ip6t_getinfo)) { -+ duprintf("length %u != %zu\n", len, - sizeof(struct ip6t_getinfo)); +- if (*len != sizeof(struct ip6t_getinfo)) ++ if (len != sizeof(struct ip6t_getinfo)) return -EINVAL; - } -@@ -1138,7 +1138,7 @@ static int get_info(struct net *net, void __user *user, + + if (copy_from_user(name, user, sizeof(name)) != 0) +@@ -1026,7 +1026,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -156904,7 +157330,7 @@ index 9021b43..b2e6979 100644 ret = -EFAULT; else ret = 0; -@@ -1831,7 +1831,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1680,7 +1680,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IP6T_SO_GET_INFO: @@ -156913,7 +157339,7 @@ index 9021b43..b2e6979 100644 break; case IP6T_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -1878,7 +1878,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1726,7 +1726,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IP6T_SO_GET_INFO: @@ -156965,10 +157391,10 @@ index e4347ae..c7654e7 100644 return -ENOMEM; } diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c -index c382db7..cd9e4d9 100644 +index 3ee3e44..2f70cc3 100644 --- a/net/ipv6/ping.c +++ b/net/ipv6/ping.c -@@ -239,6 +239,24 @@ static struct pernet_operations ping_v6_net_ops = { +@@ -242,6 +242,24 @@ static struct pernet_operations ping_v6_net_ops = { }; #endif @@ -156993,7 +157419,7 @@ index c382db7..cd9e4d9 100644 int __init pingv6_init(void) { #ifdef CONFIG_PROC_FS -@@ -246,13 +264,7 @@ int __init pingv6_init(void) +@@ -249,13 +267,7 @@ int __init pingv6_init(void) if (ret) return ret; #endif @@ -157008,7 +157434,7 @@ index c382db7..cd9e4d9 100644 return inet6_register_protosw(&pingv6_protosw); } -@@ -261,14 +273,9 @@ int __init pingv6_init(void) +@@ -264,14 +276,9 @@ int __init pingv6_init(void) */ void pingv6_exit(void) { @@ -157082,7 +157508,7 @@ index 679253d0..d85dd97 100644 goto proc_dev_snmp6_fail; return 0; diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index fa59dd7..d9d9c9d 100644 +index 896350d..cda3e97 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -389,7 +389,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) @@ -157121,7 +157547,7 @@ index fa59dd7..d9d9c9d 100644 struct flowi6 *fl6, struct dst_entry **dstp, unsigned int flags) { -@@ -922,12 +922,15 @@ do_confirm: +@@ -928,12 +928,15 @@ do_confirm: static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int optlen) { @@ -157138,7 +157564,7 @@ index fa59dd7..d9d9c9d 100644 return 0; default: return -ENOPROTOOPT; -@@ -940,6 +943,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -946,6 +949,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen) { int len; @@ -157146,7 +157572,7 @@ index fa59dd7..d9d9c9d 100644 switch (optname) { case ICMPV6_FILTER: -@@ -951,7 +955,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -957,7 +961,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, len = sizeof(struct icmp6_filter); if (put_user(len, optlen)) return -EFAULT; @@ -157157,7 +157583,7 @@ index fa59dd7..d9d9c9d 100644 return 0; default: diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c -index e2ea311..6f07106 100644 +index 2160d5d..6816c42 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c @@ -628,12 +628,11 @@ static struct ctl_table ip6_frags_ctl_table[] = { @@ -157199,10 +157625,10 @@ index e2ea311..6f07106 100644 return -ENOMEM; } diff --git a/net/ipv6/route.c b/net/ipv6/route.c -index 6f32944..03cad65 100644 +index 520b788..8c01b3e 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c -@@ -3538,7 +3538,7 @@ struct ctl_table ipv6_route_table_template[] = { +@@ -3574,7 +3574,7 @@ struct ctl_table ipv6_route_table_template[] = { struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) { @@ -157212,7 +157638,7 @@ index 6f32944..03cad65 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 6c53e4e..6e83866 100644 +index 0619ac7..0be97c7 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); @@ -157224,7 +157650,7 @@ index 6c53e4e..6e83866 100644 static int sit_net_id __read_mostly; struct sit_net { -@@ -1735,7 +1735,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) +@@ -1733,7 +1733,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) unregister_netdevice_queue(dev, head); } @@ -157247,7 +157673,7 @@ index 45243bb..cdb398e 100644 struct ctl_table *ipv6_icmp_table; int err; diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index f6d7516..8d7090d 100644 +index 2255d2b..b1c03a4 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -101,6 +101,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) @@ -157261,7 +157687,7 @@ index f6d7516..8d7090d 100644 static __u32 tcp_v6_init_sequence(const struct sk_buff *skb) { return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32, -@@ -1277,6 +1281,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1274,6 +1278,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -157271,10 +157697,10 @@ index f6d7516..8d7090d 100644 tcp_v6_send_reset(sk, skb); discard: if (opt_skb) -@@ -1387,12 +1394,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) - lookup: +@@ -1386,12 +1393,20 @@ lookup: sk = __inet6_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), - th->source, th->dest, inet6_iif(skb)); + th->source, th->dest, inet6_iif(skb), + &refcounted); - if (!sk) + if (!sk) { +#ifdef CONFIG_GRKERNSEC_BLACKHOLE @@ -157294,9 +157720,9 @@ index f6d7516..8d7090d 100644 if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); -@@ -1480,6 +1495,10 @@ csum_error: +@@ -1481,6 +1496,10 @@ csum_error: bad_packet: - TCP_INC_STATS_BH(net, TCP_MIB_INERRS); + __TCP_INC_STATS(net, TCP_MIB_INERRS); } else { +#ifdef CONFIG_GRKERNSEC_BLACKHOLE + if (!grsec_enable_blackhole || (ret == 1 && @@ -157306,7 +157732,7 @@ index f6d7516..8d7090d 100644 } diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c -index f96831d9..dae9a77 100644 +index acc09705..b43ebf5 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -78,6 +78,10 @@ static u32 udp6_ehashfn(const struct net *net, @@ -157320,37 +157746,37 @@ index f96831d9..dae9a77 100644 static u32 udp6_portaddr_hash(const struct net *net, const struct in6_addr *addr6, unsigned int port) -@@ -452,7 +456,7 @@ try_again: +@@ -380,7 +384,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udpv6_recvmsg); if (!peeked) { - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); if (is_udp4) - UDP_INC_STATS_USER(sock_net(sk), - UDP_MIB_INERRORS, -@@ -718,7 +722,7 @@ csum_error: - UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); + UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, + is_udplite); +@@ -648,7 +652,7 @@ csum_error: + __UDP6_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: - UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); + __UDP6_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); kfree_skb(skb); return -1; } -@@ -759,7 +763,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) { +@@ -729,7 +733,7 @@ start_lookup: + } + nskb = skb_clone(skb, GFP_ATOMIC); + if (unlikely(!nskb)) { - atomic_inc(&sk->sk_drops); + atomic_inc_unchecked(&sk->sk_drops); - UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, - IS_UDPLITE(sk)); - UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -941,6 +945,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, + __UDP6_INC_STATS(net, UDP_MIB_RCVBUFERRORS, + IS_UDPLITE(sk)); + __UDP6_INC_STATS(net, UDP_MIB_INERRORS, +@@ -847,6 +851,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); + __UDP6_INC_STATS(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); +#ifdef CONFIG_GRKERNSEC_BLACKHOLE + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK)) +#endif @@ -157516,7 +157942,7 @@ index 3af2195..a38e804 100644 EXPORT_SYMBOL(ircomm_close); diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c -index da126ee..c75b685 100644 +index 873c4b7..6d3624f 100644 --- a/net/irda/ircomm/ircomm_tty.c +++ b/net/irda/ircomm/ircomm_tty.c @@ -172,8 +172,10 @@ static int __init ircomm_tty_init(void) @@ -157540,7 +157966,7 @@ index da126ee..c75b685 100644 put_tty_driver(driver); } -@@ -310,10 +312,10 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, +@@ -311,10 +313,10 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, add_wait_queue(&port->open_wait, &wait); pr_debug("%s(%d):block_til_ready before block on %s open_count=%d\n", @@ -157576,7 +158002,7 @@ index da126ee..c75b685 100644 + __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count)); if (!retval) - port->flags |= ASYNC_NORMAL_ACTIVE; + tty_port_set_active(port, 1); @@ -432,12 +434,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp) /* ++ is not atomic, so this should be protected - Jean II */ @@ -157599,9 +158025,9 @@ index da126ee..c75b685 100644 - port->count = 0; + atomic_set(&port->count, 0); spin_unlock_irqrestore(&port->lock, flags); + tty_port_set_active(port, 0); - wake_up_interruptible(&port->open_wait); -@@ -1274,7 +1276,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m) +@@ -1275,7 +1277,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m) seq_putc(m, '\n'); seq_printf(m, "Role: %s\n", self->client ? "client" : "server"); @@ -157611,7 +158037,7 @@ index da126ee..c75b685 100644 seq_printf(m, "Max header size: %d\n", self->max_header_size); diff --git a/net/irda/ircomm/ircomm_tty_attach.c b/net/irda/ircomm/ircomm_tty_attach.c -index 61137f8..465b9ea 100644 +index 0a41101..e811c2e 100644 --- a/net/irda/ircomm/ircomm_tty_attach.c +++ b/net/irda/ircomm/ircomm_tty_attach.c @@ -52,7 +52,7 @@ static void ircomm_tty_getvalue_confirm(int result, __u16 obj_id, @@ -158249,10 +158675,10 @@ index 42de4cc..f00aa3e 100644 .netns_ok = 1, }; diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c -index cd47990..a979945 100644 +index 6c54e03..ccfec78 100644 --- a/net/l2tp/l2tp_ip6.c +++ b/net/l2tp/l2tp_ip6.c -@@ -762,7 +762,7 @@ static struct inet_protosw l2tp_ip6_protosw = { +@@ -769,7 +769,7 @@ static struct inet_protosw l2tp_ip6_protosw = { .ops = &l2tp_ip6_ops, }; @@ -158262,7 +158688,7 @@ index cd47990..a979945 100644 }; diff --git a/net/llc/llc_proc.c b/net/llc/llc_proc.c -index 1a3c7e0..80f8b0c 100644 +index 29c509c..c19322a 100644 --- a/net/llc/llc_proc.c +++ b/net/llc/llc_proc.c @@ -247,7 +247,7 @@ int __init llc_proc_init(void) @@ -158275,10 +158701,10 @@ index 1a3c7e0..80f8b0c 100644 goto out; diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c -index fe1704c..90b2111 100644 +index 0c12e40..95e7b88 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -339,7 +339,7 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev, +@@ -341,7 +341,7 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev, switch (key->conf.cipher) { case WLAN_CIPHER_SUITE_TKIP: @@ -158287,7 +158713,7 @@ index fe1704c..90b2111 100644 iv32 = TKIP_PN_TO_IV32(pn64); iv16 = TKIP_PN_TO_IV16(pn64); -@@ -379,7 +379,7 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev, +@@ -381,7 +381,7 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev, drv_get_key_seq(sdata->local, key, &kseq); memcpy(seq, kseq.ccmp.pn, 6); } else { @@ -158296,7 +158722,7 @@ index fe1704c..90b2111 100644 seq[0] = pn64; seq[1] = pn64 >> 8; seq[2] = pn64 >> 16; -@@ -541,7 +541,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, +@@ -543,7 +543,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, ret = ieee80211_vif_use_channel(sdata, chandef, IEEE80211_CHANCTX_EXCLUSIVE); } @@ -158305,7 +158731,7 @@ index fe1704c..90b2111 100644 local->_oper_chandef = *chandef; ieee80211_hw_config(local, 0); } -@@ -3065,7 +3065,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, +@@ -3073,7 +3073,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, sdata->vif.probe_req_reg--; } @@ -158314,7 +158740,7 @@ index fe1704c..90b2111 100644 break; if (sdata->vif.probe_req_reg == 1) -@@ -3220,8 +3220,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, +@@ -3228,8 +3228,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, if (chanctx_conf) { *chandef = sdata->vif.bss_conf.chandef; ret = 0; @@ -158326,7 +158752,7 @@ index fe1704c..90b2111 100644 if (local->use_chanctx) *chandef = local->monitor_chandef; diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c -index 4ab5c52..da3fdf1 100644 +index b251b2f7..c3d6215 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c @@ -91,7 +91,7 @@ static const struct file_operations reset_ops = { @@ -158370,7 +158796,7 @@ index a2ef95f..5adf27d 100644 (u8)(pn >> 40), (u8)(pn >> 32), (u8)(pn >> 24), (u8)(pn >> 16), (u8)(pn >> 8), (u8)pn); diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h -index 4220035..04bc5c0 100644 +index 9438c94..058c068 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -30,6 +30,7 @@ @@ -158381,7 +158807,7 @@ index 4220035..04bc5c0 100644 #include "key.h" #include "sta_info.h" #include "debug.h" -@@ -1106,7 +1107,7 @@ struct ieee80211_local { +@@ -1112,7 +1113,7 @@ struct ieee80211_local { /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ spinlock_t queue_stop_reason_lock; @@ -158391,7 +158817,7 @@ index 4220035..04bc5c0 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 e1cb22c..1e2ee0c 100644 +index c59af3e..e30c0ef 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -551,7 +551,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) @@ -158478,7 +158904,7 @@ index e1cb22c..1e2ee0c 100644 mutex_lock(&local->iflist_mtx); list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) { diff --git a/net/mac80211/main.c b/net/mac80211/main.c -index 8190bf27..a428476 100644 +index 7ee91d6..f522aac 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -170,7 +170,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) @@ -158513,7 +158939,7 @@ index 00a43a7..ab6deef 100644 suspend: diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c -index a4e2f4e..02bfac1 100644 +index 206698b..847e610 100644 --- a/net/mac80211/rate.c +++ b/net/mac80211/rate.c @@ -901,7 +901,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local, @@ -158526,10 +158952,10 @@ index a4e2f4e..02bfac1 100644 if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) { diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c -index 861b93f..7eeb0db 100644 +index 5ccfdbd..e0e72b6 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -351,7 +351,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, +@@ -361,7 +361,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 *)); @@ -158539,10 +158965,10 @@ index 861b93f..7eeb0db 100644 goto free; diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c -index 21f6602..90396f4 100644 +index 2030443..3956dd9 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -2908,7 +2908,7 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata, +@@ -3099,7 +3099,7 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata, case WLAN_CIPHER_SUITE_CCMP_256: case WLAN_CIPHER_SUITE_GCMP: case WLAN_CIPHER_SUITE_GCMP_256: @@ -158552,7 +158978,7 @@ index 21f6602..90396f4 100644 crypto_hdr[1] = pn >> 8; crypto_hdr[4] = pn >> 16; diff --git a/net/mac80211/util.c b/net/mac80211/util.c -index 7390de4..3612686c 100644 +index 905003f..06b15f3 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -1761,7 +1761,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) @@ -158592,7 +159018,7 @@ index 7390de4..3612686c 100644 list_for_each_entry(sdata, &local->interfaces, list) { diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c -index 1884825..37036cc 100644 +index b48c1e1..4c02b5b 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c @@ -223,7 +223,7 @@ static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) @@ -158613,7 +159039,7 @@ index 1884825..37036cc 100644 pn[5] = pn64; pn[4] = pn64 >> 8; -@@ -673,7 +673,7 @@ static int gcmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) +@@ -679,7 +679,7 @@ static int gcmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) hdr = (struct ieee80211_hdr *)pos; pos += hdrlen; @@ -158622,7 +159048,7 @@ index 1884825..37036cc 100644 pn[5] = pn64; pn[4] = pn64 >> 8; -@@ -947,7 +947,7 @@ ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx) +@@ -957,7 +957,7 @@ ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx) mmie->key_id = cpu_to_le16(key->conf.keyidx); /* PN = PN + 1 */ @@ -158631,7 +159057,7 @@ index 1884825..37036cc 100644 bip_ipn_set64(mmie->sequence_number, pn64); -@@ -991,7 +991,7 @@ ieee80211_crypto_aes_cmac_256_encrypt(struct ieee80211_tx_data *tx) +@@ -1001,7 +1001,7 @@ ieee80211_crypto_aes_cmac_256_encrypt(struct ieee80211_tx_data *tx) mmie->key_id = cpu_to_le16(key->conf.keyidx); /* PN = PN + 1 */ @@ -158640,7 +159066,7 @@ index 1884825..37036cc 100644 bip_ipn_set64(mmie->sequence_number, pn64); -@@ -1136,7 +1136,7 @@ ieee80211_crypto_aes_gmac_encrypt(struct ieee80211_tx_data *tx) +@@ -1146,7 +1146,7 @@ ieee80211_crypto_aes_gmac_encrypt(struct ieee80211_tx_data *tx) mmie->key_id = cpu_to_le16(key->conf.keyidx); /* PN = PN + 1 */ @@ -158802,10 +159228,10 @@ index a748b0c..90c1df6 100644 .get_optmin = SO_IP_SET, .get_optmax = SO_IP_SET + 1, diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c -index 85ca189..871f064 100644 +index 096a451..c80bc59 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c -@@ -574,7 +574,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest) +@@ -591,7 +591,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest) /* Increase the refcnt counter of the dest */ ip_vs_dest_hold(dest); @@ -158814,7 +159240,7 @@ index 85ca189..871f064 100644 if (cp->protocol != IPPROTO_UDP) conn_flags &= ~IP_VS_CONN_F_ONE_PACKET; flags = cp->flags; -@@ -923,7 +923,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af, +@@ -945,7 +945,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af, cp->control = NULL; atomic_set(&cp->n_control, 0); @@ -158823,7 +159249,7 @@ index 85ca189..871f064 100644 cp->packet_xmit = NULL; cp->app = NULL; -@@ -1230,7 +1230,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp) +@@ -1252,7 +1252,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp) /* Don't drop the entry if its number of incoming packets is not located in [0, 8] */ @@ -158833,19 +159259,22 @@ index 85ca189..871f064 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 b9a4082..0e84a78 100644 +index 2c1b498..3bca85c 100644 --- a/net/netfilter/ipvs/ip_vs_core.c +++ b/net/netfilter/ipvs/ip_vs_core.c -@@ -611,7 +611,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, - ret = cp->packet_xmit(skb, cp, pd->pp, iph); +@@ -613,9 +613,9 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, /* do not touch skb anymore */ -- atomic_inc(&cp->in_pkts); -+ atomic_inc_unchecked(&cp->in_pkts); + if ((cp->flags & IP_VS_CONN_F_ONE_PACKET) && cp->control) +- atomic_inc(&cp->control->in_pkts); ++ atomic_inc_unchecked(&cp->control->in_pkts); + else +- atomic_inc(&cp->in_pkts); ++ atomic_inc_unchecked(&cp->in_pkts); ip_vs_conn_put(cp); return ret; } -@@ -1833,7 +1833,7 @@ ip_vs_in(struct netns_ipvs *ipvs, unsigned int hooknum, struct sk_buff *skb, int +@@ -1991,13 +1991,13 @@ ip_vs_in(struct netns_ipvs *ipvs, unsigned int hooknum, struct sk_buff *skb, int if (cp->flags & IP_VS_CONN_F_ONE_PACKET) pkts = sysctl_sync_threshold(ipvs); else @@ -158854,11 +159283,18 @@ index b9a4082..0e84a78 100644 if (ipvs->sync_state & IP_VS_STATE_MASTER) ip_vs_sync_conn(ipvs, cp, pkts); + else if ((cp->flags & IP_VS_CONN_F_ONE_PACKET) && cp->control) + /* increment is done inside ip_vs_sync_conn too */ +- atomic_inc(&cp->control->in_pkts); ++ atomic_inc_unchecked(&cp->control->in_pkts); + + ip_vs_conn_put(cp); + return ret; diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c -index 404b2a4..ad446aa 100644 +index c3c809b..fb97ee5 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c -@@ -811,7 +811,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, +@@ -841,7 +841,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, */ ip_vs_rs_hash(ipvs, dest); } @@ -158867,7 +159303,7 @@ index 404b2a4..ad446aa 100644 /* bind the service */ old_svc = rcu_dereference_protected(dest->svc, 1); -@@ -1685,7 +1685,7 @@ proc_do_sync_ports(struct ctl_table *table, int write, +@@ -1728,7 +1728,7 @@ proc_do_sync_ports(struct ctl_table *table, int write, * align with netns init in ip_vs_control_net_init() */ @@ -158876,7 +159312,7 @@ index 404b2a4..ad446aa 100644 { .procname = "amemthresh", .maxlen = sizeof(int), -@@ -2040,7 +2040,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) +@@ -2083,7 +2083,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), @@ -158885,7 +159321,7 @@ index 404b2a4..ad446aa 100644 atomic_read(&dest->weight), atomic_read(&dest->activeconns), atomic_read(&dest->inactconns)); -@@ -2051,7 +2051,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) +@@ -2094,7 +2094,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), @@ -158894,7 +159330,7 @@ index 404b2a4..ad446aa 100644 atomic_read(&dest->weight), atomic_read(&dest->activeconns), atomic_read(&dest->inactconns)); -@@ -2560,7 +2560,7 @@ __ip_vs_get_dest_entries(struct netns_ipvs *ipvs, const struct ip_vs_get_dests * +@@ -2603,7 +2603,7 @@ __ip_vs_get_dest_entries(struct netns_ipvs *ipvs, const struct ip_vs_get_dests * entry.addr = dest->addr.ip; entry.port = dest->port; @@ -158903,7 +159339,7 @@ index 404b2a4..ad446aa 100644 entry.weight = atomic_read(&dest->weight); entry.u_threshold = dest->u_threshold; entry.l_threshold = dest->l_threshold; -@@ -3141,7 +3141,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest) +@@ -3196,7 +3196,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, @@ -158912,7 +159348,7 @@ index 404b2a4..ad446aa 100644 IP_VS_CONN_F_FWD_MASK)) || nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT, atomic_read(&dest->weight)) || -@@ -3838,7 +3838,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct netns_ipvs *ipvs) +@@ -3893,7 +3893,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct netns_ipvs *ipvs) { struct net *net = ipvs->net; int idx; @@ -158948,7 +159384,7 @@ index 796d70e..8458955 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 803001a..09fb00d 100644 +index 1b07578..36b88cb 100644 --- a/net/netfilter/ipvs/ip_vs_sync.c +++ b/net/netfilter/ipvs/ip_vs_sync.c @@ -611,7 +611,7 @@ static void ip_vs_sync_conn_v0(struct netns_ipvs *ipvs, struct ip_vs_conn *cp, @@ -158979,10 +159415,10 @@ index 803001a..09fb00d 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 dc196a0..e04d80d 100644 +index 01d3d89..fb0cd03 100644 --- a/net/netfilter/ipvs/ip_vs_xmit.c +++ b/net/netfilter/ipvs/ip_vs_xmit.c -@@ -1260,7 +1260,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1255,7 +1255,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -158991,7 +159427,7 @@ index dc196a0..e04d80d 100644 goto out; } -@@ -1353,7 +1353,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1348,7 +1348,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -159014,10 +159450,10 @@ index 45da11a..ef3e5dc 100644 table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), GFP_KERNEL); diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c -index e27fd17..480a953 100644 +index 9f530ad..bca1ad4 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c -@@ -1579,7 +1579,7 @@ void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls) +@@ -1625,7 +1625,7 @@ void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls) } EXPORT_SYMBOL_GPL(nf_ct_alloc_hashtable); @@ -159026,29 +159462,11 @@ index e27fd17..480a953 100644 { int i, bucket, rc; unsigned int hashsize, old_size; -@@ -1778,7 +1778,7 @@ void nf_conntrack_init_end(void) - - int nf_conntrack_init_net(struct net *net) - { -- static atomic64_t unique_id; -+ static atomic64_unchecked_t unique_id; - int ret = -ENOMEM; - int cpu; - -@@ -1802,7 +1802,7 @@ int nf_conntrack_init_net(struct net *net) - goto err_pcpu_lists; - - net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%llu", -- (u64)atomic64_inc_return(&unique_id)); -+ (u64)atomic64_inc_return_unchecked(&unique_id)); - if (!net->ct.slabname) - goto err_slabname; - diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c -index 4e78c57..ec8fb74 100644 +index d28011b..04d5063 100644 --- a/net/netfilter/nf_conntrack_ecache.c +++ b/net/netfilter/nf_conntrack_ecache.c -@@ -264,7 +264,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = { +@@ -348,7 +348,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = { #ifdef CONFIG_SYSCTL static int nf_conntrack_event_init_sysctl(struct net *net) { @@ -159058,7 +159476,7 @@ index 4e78c57..ec8fb74 100644 table = kmemdup(event_sysctl_table, sizeof(event_sysctl_table), GFP_KERNEL); diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c -index 3b40ec5..fbd2fb7 100644 +index 196cb39..acf8033 100644 --- a/net/netfilter/nf_conntrack_helper.c +++ b/net/netfilter/nf_conntrack_helper.c @@ -57,7 +57,7 @@ static struct ctl_table helper_sysctl_table[] = { @@ -159071,10 +159489,10 @@ index 3b40ec5..fbd2fb7 100644 table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table), GFP_KERNEL); diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c -index 355e855..4973252 100644 +index a18d1ce..794b75b 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c -@@ -1182,10 +1182,11 @@ static int ctnetlink_get_conntrack(struct net *net, struct sock *ctnl, +@@ -1170,10 +1170,11 @@ static int ctnetlink_get_conntrack(struct net *net, struct sock *ctnl, int err; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159087,7 +159505,7 @@ index 355e855..4973252 100644 if (cda[CTA_MARK] && cda[CTA_MARK_MASK]) { struct ctnetlink_filter *filter; -@@ -1194,9 +1195,9 @@ static int ctnetlink_get_conntrack(struct net *net, struct sock *ctnl, +@@ -1182,9 +1183,9 @@ static int ctnetlink_get_conntrack(struct net *net, struct sock *ctnl, if (IS_ERR(filter)) return PTR_ERR(filter); @@ -159099,7 +159517,7 @@ index 355e855..4973252 100644 } err = ctnetlink_parse_zone(cda[CTA_ZONE], &zone); -@@ -1334,7 +1335,7 @@ static int ctnetlink_get_ct_dying(struct net *net, struct sock *ctnl, +@@ -1322,7 +1323,7 @@ static int ctnetlink_get_ct_dying(struct net *net, struct sock *ctnl, const struct nlattr * const cda[]) { if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159108,7 +159526,7 @@ index 355e855..4973252 100644 .dump = ctnetlink_dump_dying, .done = ctnetlink_done_list, }; -@@ -1356,7 +1357,7 @@ static int ctnetlink_get_ct_unconfirmed(struct net *net, struct sock *ctnl, +@@ -1344,7 +1345,7 @@ static int ctnetlink_get_ct_unconfirmed(struct net *net, struct sock *ctnl, const struct nlattr * const cda[]) { if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159117,7 +159535,7 @@ index 355e855..4973252 100644 .dump = ctnetlink_dump_unconfirmed, .done = ctnetlink_done_list, }; -@@ -2037,7 +2038,7 @@ static int ctnetlink_stat_ct_cpu(struct net *net, struct sock *ctnl, +@@ -2025,7 +2026,7 @@ static int ctnetlink_stat_ct_cpu(struct net *net, struct sock *ctnl, const struct nlattr * const cda[]) { if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159126,7 +159544,7 @@ index 355e855..4973252 100644 .dump = ctnetlink_ct_stat_cpu_dump, }; return netlink_dump_start(ctnl, skb, nlh, &c); -@@ -2737,7 +2738,7 @@ static int ctnetlink_dump_exp_ct(struct net *net, struct sock *ctnl, +@@ -2727,7 +2728,7 @@ static int ctnetlink_dump_exp_ct(struct net *net, struct sock *ctnl, struct nf_conntrack_tuple_hash *h; struct nf_conn *ct; struct nf_conntrack_zone zone; @@ -159135,7 +159553,7 @@ index 355e855..4973252 100644 .dump = ctnetlink_exp_ct_dump_table, .done = ctnetlink_exp_done, }; -@@ -2756,9 +2757,8 @@ static int ctnetlink_dump_exp_ct(struct net *net, struct sock *ctnl, +@@ -2746,9 +2747,8 @@ static int ctnetlink_dump_exp_ct(struct net *net, struct sock *ctnl, return -ENOENT; ct = nf_ct_tuplehash_to_ctrack(h); @@ -159146,7 +159564,7 @@ index 355e855..4973252 100644 nf_ct_put(ct); return err; -@@ -2780,7 +2780,7 @@ static int ctnetlink_get_expect(struct net *net, struct sock *ctnl, +@@ -2770,7 +2770,7 @@ static int ctnetlink_get_expect(struct net *net, struct sock *ctnl, if (cda[CTA_EXPECT_MASTER]) return ctnetlink_dump_exp_ct(net, ctnl, skb, nlh, cda); else { @@ -159155,7 +159573,7 @@ index 355e855..4973252 100644 .dump = ctnetlink_exp_dump_table, .done = ctnetlink_exp_done, }; -@@ -3238,7 +3238,7 @@ static int ctnetlink_stat_exp_cpu(struct net *net, struct sock *ctnl, +@@ -3236,7 +3236,7 @@ static int ctnetlink_stat_exp_cpu(struct net *net, struct sock *ctnl, const struct nlattr * const cda[]) { if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159178,10 +159596,10 @@ index b65d586..beec902 100644 { if (users > 0) diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c -index 0f1a45b..a6ce792 100644 +index c026c47..89fc6b5 100644 --- a/net/netfilter/nf_conntrack_standalone.c +++ b/net/netfilter/nf_conntrack_standalone.c -@@ -504,7 +504,7 @@ static struct ctl_table nf_ct_netfilter_table[] = { +@@ -500,7 +500,7 @@ static struct ctl_table nf_ct_netfilter_table[] = { static int nf_conntrack_standalone_init_sysctl(struct net *net) { @@ -159284,7 +159702,7 @@ index c68c1e5..8b5d670 100644 } EXPORT_SYMBOL(nf_unregister_sockopt); diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c -index 2011977..ba46f29 100644 +index cf7c745..e4cd514 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -555,7 +555,7 @@ static int nf_tables_gettable(struct net *net, struct sock *nlsk, @@ -159296,7 +159714,7 @@ index 2011977..ba46f29 100644 .dump = nf_tables_dump_tables, }; return netlink_dump_start(nlsk, skb, nlh, &c); -@@ -1109,7 +1109,7 @@ static int nf_tables_getchain(struct net *net, struct sock *nlsk, +@@ -1112,7 +1112,7 @@ static int nf_tables_getchain(struct net *net, struct sock *nlsk, int err; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159305,7 +159723,7 @@ index 2011977..ba46f29 100644 .dump = nf_tables_dump_chains, }; return netlink_dump_start(nlsk, skb, nlh, &c); -@@ -1935,7 +1935,7 @@ static int nf_tables_getrule(struct net *net, struct sock *nlsk, +@@ -1942,7 +1942,7 @@ static int nf_tables_getrule(struct net *net, struct sock *nlsk, int err; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159314,7 +159732,7 @@ index 2011977..ba46f29 100644 .dump = nf_tables_dump_rules, }; return netlink_dump_start(nlsk, skb, nlh, &c); -@@ -2622,7 +2622,7 @@ static int nf_tables_getset(struct net *net, struct sock *nlsk, +@@ -2630,7 +2630,7 @@ static int nf_tables_getset(struct net *net, struct sock *nlsk, return err; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159323,7 +159741,7 @@ index 2011977..ba46f29 100644 .dump = nf_tables_dump_sets, .done = nf_tables_dump_sets_done, }; -@@ -2633,9 +2633,8 @@ static int nf_tables_getset(struct net *net, struct sock *nlsk, +@@ -2641,9 +2641,8 @@ static int nf_tables_getset(struct net *net, struct sock *nlsk, return -ENOMEM; *ctx_dump = ctx; @@ -159334,7 +159752,7 @@ index 2011977..ba46f29 100644 } /* Only accept unspec with dump */ -@@ -3226,7 +3225,7 @@ static int nf_tables_getsetelem(struct net *net, struct sock *nlsk, +@@ -3235,7 +3234,7 @@ static int nf_tables_getsetelem(struct net *net, struct sock *nlsk, return -ENOENT; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159344,7 +159762,7 @@ index 2011977..ba46f29 100644 }; return netlink_dump_start(nlsk, skb, nlh, &c); diff --git a/net/netfilter/nfnetlink_acct.c b/net/netfilter/nfnetlink_acct.c -index dbd0803..9d18caa 100644 +index 1b4de4b..1b5e7ed 100644 --- a/net/netfilter/nfnetlink_acct.c +++ b/net/netfilter/nfnetlink_acct.c @@ -28,8 +28,8 @@ MODULE_AUTHOR("Pablo Neira Ayuso <pablo@netfilter.org>"); @@ -159400,9 +159818,9 @@ index dbd0803..9d18caa 100644 + pkts = atomic64_read_unchecked(&acct->pkts); + bytes = atomic64_read_unchecked(&acct->bytes); } - if (nla_put_be64(skb, NFACCT_PKTS, cpu_to_be64(pkts)) || - nla_put_be64(skb, NFACCT_BYTES, cpu_to_be64(bytes)) || -@@ -266,10 +266,11 @@ static int nfnl_acct_get(struct net *net, struct sock *nfnl, + if (nla_put_be64(skb, NFACCT_PKTS, cpu_to_be64(pkts), + NFACCT_PAD) || +@@ -269,10 +269,11 @@ static int nfnl_acct_get(struct net *net, struct sock *nfnl, char *acct_name; if (nlh->nlmsg_flags & NLM_F_DUMP) { @@ -159415,7 +159833,7 @@ index dbd0803..9d18caa 100644 if (tb[NFACCT_FILTER]) { struct nfacct_filter *filter; -@@ -278,9 +279,9 @@ static int nfnl_acct_get(struct net *net, struct sock *nfnl, +@@ -281,9 +282,9 @@ static int nfnl_acct_get(struct net *net, struct sock *nfnl, if (IS_ERR(filter)) return PTR_ERR(filter); @@ -159427,7 +159845,7 @@ index dbd0803..9d18caa 100644 } if (!tb[NFACCT_NAME]) -@@ -435,8 +436,8 @@ EXPORT_SYMBOL_GPL(nfnl_acct_put); +@@ -438,8 +439,8 @@ EXPORT_SYMBOL_GPL(nfnl_acct_put); void nfnl_acct_update(const struct sk_buff *skb, struct nf_acct *nfacct) { @@ -159438,7 +159856,7 @@ index dbd0803..9d18caa 100644 } EXPORT_SYMBOL_GPL(nfnl_acct_update); -@@ -471,7 +472,7 @@ int nfnl_acct_overquota(const struct sk_buff *skb, struct nf_acct *nfacct) +@@ -474,7 +475,7 @@ int nfnl_acct_overquota(const struct sk_buff *skb, struct nf_acct *nfacct) quota = (u64 *)nfacct->data; now = (nfacct->flags & NFACCT_F_QUOTA_PKTS) ? @@ -159461,7 +159879,7 @@ index e924e95..1e2e233 100644 }; return netlink_dump_start(nfnl, skb, nlh, &c); diff --git a/net/netfilter/nfnetlink_cttimeout.c b/net/netfilter/nfnetlink_cttimeout.c -index 2671b9d..e518410 100644 +index 3c84f14..6a2372d 100644 --- a/net/netfilter/nfnetlink_cttimeout.c +++ b/net/netfilter/nfnetlink_cttimeout.c @@ -248,7 +248,7 @@ static int cttimeout_get_timeout(struct net *net, struct sock *ctnl, @@ -159681,7 +160099,7 @@ index 11de55e..f25e448 100644 return 0; } diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c -index f48e3b3..e7b3936 100644 +index 627f898c..13afbf6 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -287,7 +287,7 @@ static void netlink_overrun(struct sock *sk) @@ -159724,7 +160142,7 @@ index f48e3b3..e7b3936 100644 cb->min_dump_alloc = control->min_dump_alloc; cb->skb = skb; -@@ -2451,7 +2453,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) +@@ -2452,7 +2454,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), @@ -159733,7 +160151,7 @@ index f48e3b3..e7b3936 100644 sock_i_ino(s) ); -@@ -2558,7 +2560,7 @@ static void __init netlink_add_usersock_entry(void) +@@ -2559,7 +2561,7 @@ static void __init netlink_add_usersock_entry(void) netlink_table_ungrab(); } @@ -159839,7 +160257,7 @@ index 7f8897f..15b61a2 100644 }; diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c -index 7c8b90b..f7528aa 100644 +index 2ee48e4..cad6e4e 100644 --- a/net/openvswitch/vport-internal_dev.c +++ b/net/openvswitch/vport-internal_dev.c @@ -44,7 +44,7 @@ static struct internal_dev *internal_dev_priv(struct net_device *netdev) @@ -159906,10 +160324,10 @@ index 5eb7694..58d8f08 100644 static int __init ovs_vxlan_tnl_init(void) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index 8012f67..1a3168e 100644 +index b43c401..194796d 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -278,7 +278,7 @@ static int packet_direct_xmit(struct sk_buff *skb) +@@ -279,7 +279,7 @@ static int packet_direct_xmit(struct sk_buff *skb) return ret; drop: @@ -159918,7 +160336,7 @@ index 8012f67..1a3168e 100644 kfree_skb(skb); return NET_XMIT_DROP; } -@@ -1391,9 +1391,9 @@ static unsigned int fanout_demux_rollover(struct packet_fanout *f, +@@ -1392,9 +1392,9 @@ static unsigned int fanout_demux_rollover(struct packet_fanout *f, packet_rcv_has_room(po_next, skb) == ROOM_NORMAL) { if (i != j) po->rollover->sock = i; @@ -159930,7 +160348,7 @@ index 8012f67..1a3168e 100644 return i; } -@@ -1401,7 +1401,7 @@ static unsigned int fanout_demux_rollover(struct packet_fanout *f, +@@ -1402,7 +1402,7 @@ static unsigned int fanout_demux_rollover(struct packet_fanout *f, i = 0; } while (i != j); @@ -159939,7 +160357,7 @@ index 8012f67..1a3168e 100644 return idx; } -@@ -1656,9 +1656,9 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags) +@@ -1657,9 +1657,9 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags) po->rollover = kzalloc(sizeof(*po->rollover), GFP_KERNEL); if (!po->rollover) return -ENOMEM; @@ -159952,8 +160370,8 @@ index 8012f67..1a3168e 100644 } mutex_lock(&fanout_mutex); -@@ -2132,7 +2132,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, - drop_n_acct: +@@ -2143,7 +2143,7 @@ drop_n_acct: + is_drop_n_account = true; spin_lock(&sk->sk_receive_queue.lock); po->stats.stats1.tp_drops++; - atomic_inc(&sk->sk_drops); @@ -159961,7 +160379,7 @@ index 8012f67..1a3168e 100644 spin_unlock(&sk->sk_receive_queue.lock); drop_n_restore: -@@ -3849,7 +3849,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, +@@ -3878,7 +3878,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, case PACKET_HDRLEN: if (len > sizeof(int)) len = sizeof(int); @@ -159970,7 +160388,7 @@ index 8012f67..1a3168e 100644 return -EFAULT; switch (val) { case TPACKET_V1: -@@ -3884,9 +3884,9 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, +@@ -3913,9 +3913,9 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, case PACKET_ROLLOVER_STATS: if (!po->rollover) return -EINVAL; @@ -159983,7 +160401,7 @@ index 8012f67..1a3168e 100644 data = &rstats; lv = sizeof(rstats); break; -@@ -3904,7 +3904,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, +@@ -3933,7 +3933,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, len = lv; if (put_user(len, optlen)) return -EFAULT; @@ -160124,7 +160542,7 @@ index 627fb79..e0856c7 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 310cabc..76b03d2 100644 +index 7c2a65a..2968164 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c @@ -830,7 +830,7 @@ void rds_ib_conn_shutdown(struct rds_connection *conn) @@ -160159,10 +160577,10 @@ index abc8cc8..ef9adf9 100644 #endif diff --git a/net/rds/rds.h b/net/rds/rds.h -index 80256b0..dde73be 100644 +index 387df5f..e48448a 100644 --- a/net/rds/rds.h +++ b/net/rds/rds.h -@@ -464,7 +464,7 @@ struct rds_transport { +@@ -465,7 +465,7 @@ struct rds_transport { void (*sync_mr)(void *trans_private, int direction); void (*free_mr)(void *trans_private, int invalidate); void (*flush_mrs)(void); @@ -160172,7 +160590,7 @@ index 80256b0..dde73be 100644 struct rds_sock { struct sock rs_sk; diff --git a/net/rds/tcp.c b/net/rds/tcp.c -index 86187da..0a3d027 100644 +index c8a7b4c..8ba226b 100644 --- a/net/rds/tcp.c +++ b/net/rds/tcp.c @@ -59,7 +59,7 @@ static int rds_tcp_skbuf_handler(struct ctl_table *ctl, int write, @@ -160193,7 +160611,7 @@ index 86187da..0a3d027 100644 sizeof(val)); set_fs(oldfs); } -@@ -340,7 +340,7 @@ void rds_tcp_accept_work(struct sock *sk) +@@ -412,7 +412,7 @@ void rds_tcp_accept_work(struct sock *sk) static __net_init int rds_tcp_init_net(struct net *net) { struct rds_tcp_net *rtn = net_generic(net, rds_tcp_netid); @@ -160203,7 +160621,7 @@ index 86187da..0a3d027 100644 memset(rtn, 0, sizeof(*rtn)); diff --git a/net/rds/tcp.h b/net/rds/tcp.h -index 41c2283..6cad9c5 100644 +index 7940bab..83e8a4c 100644 --- a/net/rds/tcp.h +++ b/net/rds/tcp.h @@ -17,9 +17,9 @@ struct rds_tcp_connection { @@ -160220,7 +160638,7 @@ index 41c2283..6cad9c5 100644 struct rds_tcp_incoming *t_tinc; size_t t_tinc_hdr_rem; diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c -index 2894e60..f9c01ac 100644 +index 618be69..1664cde 100644 --- a/net/rds/tcp_send.c +++ b/net/rds/tcp_send.c @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *sock, int val) @@ -160233,7 +160651,7 @@ index 2894e60..f9c01ac 100644 set_fs(oldfs); } diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c -index 9d935fa..5f6db3c 100644 +index e45e94c..f9acab4 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; @@ -160246,10 +160664,10 @@ index 9d935fa..5f6db3c 100644 /* count of skbs currently in use */ atomic_t rxrpc_n_skbs; diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c -index 16d9670..3f3ab1a 100644 +index 374478e..7928cc5 100644 --- a/net/rxrpc/ar-ack.c +++ b/net/rxrpc/ar-ack.c -@@ -223,7 +223,7 @@ static void rxrpc_resend(struct rxrpc_call *call) +@@ -155,7 +155,7 @@ static void rxrpc_resend(struct rxrpc_call *call) _enter("{%d,%d,%d,%d},", call->acks_hard, call->acks_unacked, @@ -160258,7 +160676,7 @@ index 16d9670..3f3ab1a 100644 CIRC_CNT(call->acks_head, call->acks_tail, call->acks_winsz)); stop = false; -@@ -246,7 +246,7 @@ static void rxrpc_resend(struct rxrpc_call *call) +@@ -178,7 +178,7 @@ static void rxrpc_resend(struct rxrpc_call *call) sp->need_resend = false; /* each Tx packet has a new serial number */ @@ -160267,7 +160685,7 @@ index 16d9670..3f3ab1a 100644 whdr = (struct rxrpc_wire_header *)txb->head; whdr->serial = htonl(sp->hdr.serial); -@@ -450,7 +450,7 @@ static void rxrpc_rotate_tx_window(struct rxrpc_call *call, u32 hard) +@@ -382,7 +382,7 @@ static void rxrpc_rotate_tx_window(struct rxrpc_call *call, u32 hard) */ static void rxrpc_clear_tx_window(struct rxrpc_call *call) { @@ -160276,7 +160694,7 @@ index 16d9670..3f3ab1a 100644 } /* -@@ -673,7 +673,7 @@ process_further: +@@ -606,7 +606,7 @@ process_further: latest = sp->hdr.serial; hard = ntohl(ack.firstPacket); @@ -160285,7 +160703,7 @@ index 16d9670..3f3ab1a 100644 _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", latest, -@@ -1206,7 +1206,7 @@ void rxrpc_process_call(struct work_struct *work) +@@ -1139,7 +1139,7 @@ void rxrpc_process_call(struct work_struct *work) goto maybe_reschedule; send_ACK_with_skew: @@ -160294,7 +160712,7 @@ index 16d9670..3f3ab1a 100644 ntohl(ack.serial)); send_ACK: mtu = call->conn->trans->peer->if_mtu; -@@ -1218,7 +1218,7 @@ send_ACK: +@@ -1151,7 +1151,7 @@ send_ACK: ackinfo.rxMTU = htonl(rxrpc_rx_mtu); ackinfo.jumbo_max = htonl(rxrpc_rx_jumbo_max); @@ -160303,7 +160721,7 @@ index 16d9670..3f3ab1a 100644 whdr.serial = htonl(serial); _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", serial, -@@ -1237,7 +1237,7 @@ send_ACK: +@@ -1170,7 +1170,7 @@ send_ACK: send_message: _debug("send message"); @@ -160313,7 +160731,7 @@ index 16d9670..3f3ab1a 100644 _proto("Tx %s %%%u", rxrpc_pkts[whdr.type], serial); send_message_2: diff --git a/net/rxrpc/ar-call.c b/net/rxrpc/ar-call.c -index 7c8d300..570ba4f 100644 +index 571a41f..99be2a4 100644 --- a/net/rxrpc/ar-call.c +++ b/net/rxrpc/ar-call.c @@ -229,7 +229,7 @@ static struct rxrpc_call *rxrpc_alloc_call(gfp_t gfp) @@ -160326,10 +160744,10 @@ index 7c8d300..570ba4f 100644 memset(&call->sock_node, 0xed, sizeof(call->sock_node)); diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c -index 9942da1..1559525 100644 +index 97f4fae..0ca090b 100644 --- a/net/rxrpc/ar-connection.c +++ b/net/rxrpc/ar-connection.c -@@ -210,7 +210,7 @@ static struct rxrpc_connection *rxrpc_alloc_connection(gfp_t gfp) +@@ -211,7 +211,7 @@ static struct rxrpc_connection *rxrpc_alloc_connection(gfp_t gfp) rwlock_init(&conn->lock); spin_lock_init(&conn->state_lock); atomic_set(&conn->usage, 1); @@ -160339,23 +160757,23 @@ index 9942da1..1559525 100644 conn->size_align = 4; conn->header_size = sizeof(struct rxrpc_wire_header); diff --git a/net/rxrpc/ar-connevent.c b/net/rxrpc/ar-connevent.c -index 1bdaaed..899cdff3 100644 +index 5f95639..e9dd0ba 100644 --- a/net/rxrpc/ar-connevent.c +++ b/net/rxrpc/ar-connevent.c -@@ -110,7 +110,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn, +@@ -112,7 +112,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn, len = iov[0].iov_len + iov[1].iov_len; - serial = atomic_inc_return(&conn->serial); + serial = atomic_inc_return_unchecked(&conn->serial); whdr.serial = htonl(serial); - _proto("Tx CONN ABORT %%%u { %d }", serial, abort_code); + _proto("Tx CONN ABORT %%%u { %d }", serial, conn->local_abort); diff --git a/net/rxrpc/ar-input.c b/net/rxrpc/ar-input.c -index 63ed75c..bba8e0c 100644 +index 6ff9741..7089125 100644 --- a/net/rxrpc/ar-input.c +++ b/net/rxrpc/ar-input.c -@@ -330,9 +330,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb) +@@ -324,9 +324,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb) /* track the latest serial number on this connection for ACK packet * information */ @@ -160368,11 +160786,11 @@ index 63ed75c..bba8e0c 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 cd6cdbe..8d4020f 100644 +index f0b807a..a048bcf 100644 --- a/net/rxrpc/ar-internal.h +++ b/net/rxrpc/ar-internal.h -@@ -292,8 +292,8 @@ struct rxrpc_connection { - int error; /* error code for local abort */ +@@ -299,8 +299,8 @@ struct rxrpc_connection { + int error; /* local error incurred */ int debug_id; /* debug ID for printks */ unsigned int call_counter; /* call ID counter */ - atomic_t serial; /* packet serial number counter */ @@ -160382,16 +160800,16 @@ index cd6cdbe..8d4020f 100644 u8 avail_calls; /* number of calls available */ u8 size_align; /* data size alignment (for security) */ u8 header_size; /* rxrpc + security header size */ -@@ -398,7 +398,7 @@ struct rxrpc_call { +@@ -405,7 +405,7 @@ struct rxrpc_call { spinlock_t lock; rwlock_t state_lock; /* lock for state transition */ atomic_t usage; - atomic_t sequence; /* Tx data packet sequence counter */ + atomic_unchecked_t sequence; /* Tx data packet sequence counter */ - u32 abort_code; /* local/remote abort code */ - enum rxrpc_call_state state : 8; /* current state of call */ - int debug_id; /* debug ID for printks */ -@@ -465,7 +465,7 @@ static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code) + u32 local_abort; /* local abort code */ + u32 remote_abort; /* remote abort code */ + int error; /* local error incurred */ +@@ -474,7 +474,7 @@ static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code) */ extern atomic_t rxrpc_n_skbs; extern u32 rxrpc_epoch; @@ -160414,7 +160832,7 @@ index 4e1e6db..1e86180 100644 } diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c -index d36fb6e..2ef98a0 100644 +index 51cb100..fd82e4e 100644 --- a/net/rxrpc/ar-output.c +++ b/net/rxrpc/ar-output.c @@ -672,13 +672,13 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, @@ -160447,7 +160865,7 @@ index dc089b1..21889d9 100644 rxrpc_assess_MTU_size(peer); diff --git a/net/rxrpc/ar-proc.c b/net/rxrpc/ar-proc.c -index 525b2ba..d9373f8 100644 +index 225163b..9b2ea9f 100644 --- a/net/rxrpc/ar-proc.c +++ b/net/rxrpc/ar-proc.c @@ -164,8 +164,8 @@ static int rxrpc_connection_seq_show(struct seq_file *seq, void *v) @@ -160475,10 +160893,10 @@ index 66a1a56..01f6f0b 100644 if (peer->srx.transport.family == AF_INET) { switch (peer->srx.transport_type) { diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c -index f0aeb81..e0f0593 100644 +index bab56ed..39fa502 100644 --- a/net/rxrpc/rxkad.c +++ b/net/rxrpc/rxkad.c -@@ -633,7 +633,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn) +@@ -624,7 +624,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn) len = iov[0].iov_len + iov[1].iov_len; @@ -160487,7 +160905,7 @@ index f0aeb81..e0f0593 100644 whdr.serial = htonl(serial); _proto("Tx CHALLENGE %%%u", serial); -@@ -687,7 +687,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn, +@@ -678,7 +678,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn, len = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len; @@ -160497,10 +160915,10 @@ index f0aeb81..e0f0593 100644 _proto("Tx RESPONSE %%%u", serial); diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 80742ed..c76a9c4 100644 +index f9e0e9c..829aa7b 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c -@@ -352,7 +352,7 @@ void netif_carrier_on(struct net_device *dev) +@@ -318,7 +318,7 @@ void netif_carrier_on(struct net_device *dev) if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) { if (dev->reg_state == NETREG_UNINITIALIZED) return; @@ -160509,7 +160927,7 @@ index 80742ed..c76a9c4 100644 linkwatch_fire_event(dev); if (netif_running(dev)) __netdev_watchdog_up(dev); -@@ -371,7 +371,7 @@ void netif_carrier_off(struct net_device *dev) +@@ -337,7 +337,7 @@ void netif_carrier_off(struct net_device *dev) if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) { if (dev->reg_state == NETREG_UNINITIALIZED) return; @@ -160519,7 +160937,7 @@ index 80742ed..c76a9c4 100644 } } diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c -index c2fbde7..fedcaf4 100644 +index 3161e49..0785aa1 100644 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@ -161,7 +161,8 @@ static int tbf_segment(struct sk_buff *skb, struct Qdisc *sch) @@ -160546,7 +160964,7 @@ index c2fbde7..fedcaf4 100644 return nb > 0 ? NET_XMIT_SUCCESS : NET_XMIT_DROP; } diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c -index ce46f1c..0a4e659 100644 +index 0657d18..b095e6e 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c @@ -989,7 +989,7 @@ static const struct inet6_protocol sctpv6_protocol = { @@ -160601,8 +161019,21 @@ index d3d50da..55e871e 100644 } static int sctp_v4_protosw_init(void) +diff --git a/net/sctp/sctp_diag.c b/net/sctp/sctp_diag.c +index f69edcf..f015617 100644 +--- a/net/sctp/sctp_diag.c ++++ b/net/sctp/sctp_diag.c +@@ -150,7 +150,7 @@ static int inet_sctp_diag_fill(struct sock *sk, struct sctp_association *asoc, + mem[SK_MEMINFO_WMEM_QUEUED] = sk->sk_wmem_queued; + mem[SK_MEMINFO_OPTMEM] = atomic_read(&sk->sk_omem_alloc); + mem[SK_MEMINFO_BACKLOG] = sk->sk_backlog.len; +- mem[SK_MEMINFO_DROPS] = atomic_read(&sk->sk_drops); ++ mem[SK_MEMINFO_DROPS] = atomic_read_unchecked(&sk->sk_drops); + + if (nla_put(skb, INET_DIAG_SKMEMINFO, sizeof(mem), &mem) < 0) + goto errout; diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c -index 41b081a..cfea9d6 100644 +index aa37122..2b9780d 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c @@ -444,7 +444,7 @@ static void sctp_generate_sack_event(unsigned long data) @@ -160624,7 +161055,7 @@ index 41b081a..cfea9d6 100644 NULL, sctp_cname, sctp_tname, sctp_oname, sctp_pname, }; diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index 878d28e..09a9b63 100644 +index 67154b8..8550750 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2190,11 +2190,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, @@ -160642,7 +161073,7 @@ index 878d28e..09a9b63 100644 /* At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, * if there is no data to be sent or retransmit, the stack will -@@ -4369,13 +4371,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, +@@ -4586,13 +4588,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) { @@ -160660,7 +161091,7 @@ index 878d28e..09a9b63 100644 return -EFAULT; return 0; } -@@ -4393,6 +4398,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, +@@ -4610,6 +4615,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) { @@ -160669,7 +161100,7 @@ index 878d28e..09a9b63 100644 /* Applicable to UDP-style socket only */ if (sctp_style(sk, TCP)) return -EOPNOTSUPP; -@@ -4401,7 +4408,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv +@@ -4618,7 +4625,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv len = sizeof(int); if (put_user(len, optlen)) return -EFAULT; @@ -160679,7 +161110,7 @@ index 878d28e..09a9b63 100644 return -EFAULT; return 0; } -@@ -4775,12 +4783,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, +@@ -4992,12 +5000,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) { @@ -160696,7 +161127,7 @@ index 878d28e..09a9b63 100644 return -EFAULT; return 0; } -@@ -4821,6 +4832,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, +@@ -5038,6 +5049,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, ->addr_to_user(sp, &temp); if (space_left < addrlen) return -ENOMEM; @@ -160755,7 +161186,7 @@ index daf8554..4ab495b 100644 table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); diff --git a/net/socket.c b/net/socket.c -index 5f77a8e..1d36c7e 100644 +index a1bd161..b1f7508 100644 --- a/net/socket.c +++ b/net/socket.c @@ -89,6 +89,7 @@ @@ -160792,7 +161223,7 @@ index 5f77a8e..1d36c7e 100644 static struct file_system_type sock_fs_type = { .name = "sockfs", -@@ -1100,6 +1102,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, +@@ -1096,6 +1098,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, return -EAFNOSUPPORT; if (type < 0 || type >= SOCK_MAX) return -EINVAL; @@ -160801,7 +161232,7 @@ index 5f77a8e..1d36c7e 100644 /* Compatibility. -@@ -1116,6 +1120,20 @@ int __sock_create(struct net *net, int family, int type, int protocol, +@@ -1112,6 +1116,20 @@ int __sock_create(struct net *net, int family, int type, int protocol, if (err) return err; @@ -160822,7 +161253,7 @@ index 5f77a8e..1d36c7e 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 -@@ -1367,6 +1385,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) +@@ -1363,6 +1381,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) { @@ -160837,7 +161268,7 @@ index 5f77a8e..1d36c7e 100644 err = security_socket_bind(sock, (struct sockaddr *)&address, addrlen); -@@ -1375,6 +1401,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) +@@ -1371,6 +1397,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) (struct sockaddr *) &address, addrlen); } @@ -160845,7 +161276,7 @@ index 5f77a8e..1d36c7e 100644 fput_light(sock->file, fput_needed); } return err; -@@ -1398,10 +1425,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) +@@ -1394,10 +1421,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) if ((unsigned int)backlog > somaxconn) backlog = somaxconn; @@ -160866,7 +161297,7 @@ index 5f77a8e..1d36c7e 100644 fput_light(sock->file, fput_needed); } return err; -@@ -1445,6 +1482,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, +@@ -1441,6 +1478,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, newsock->type = sock->type; newsock->ops = sock->ops; @@ -160885,7 +161316,7 @@ index 5f77a8e..1d36c7e 100644 /* * We don't need try_module_get here, as the listening socket (sock) * has the protocol module (sock->ops->owner) held. -@@ -1490,6 +1539,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, +@@ -1486,6 +1535,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, fd_install(newfd, newfile); err = newfd; @@ -160894,7 +161325,7 @@ index 5f77a8e..1d36c7e 100644 out_put: fput_light(sock->file, fput_needed); out: -@@ -1522,6 +1573,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, +@@ -1518,6 +1569,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, int, addrlen) { struct socket *sock; @@ -160902,7 +161333,7 @@ index 5f77a8e..1d36c7e 100644 struct sockaddr_storage address; int err, fput_needed; -@@ -1532,6 +1584,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, +@@ -1528,6 +1580,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, if (err < 0) goto out_put; @@ -160920,7 +161351,7 @@ index 5f77a8e..1d36c7e 100644 err = security_socket_connect(sock, (struct sockaddr *)&address, addrlen); if (err) -@@ -1554,7 +1617,7 @@ SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr, +@@ -1550,7 +1613,7 @@ SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len) { struct socket *sock; @@ -160929,7 +161360,7 @@ index 5f77a8e..1d36c7e 100644 int len, err, fput_needed; sock = sockfd_lookup_light(fd, &err, &fput_needed); -@@ -1585,7 +1648,7 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, +@@ -1581,7 +1644,7 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len) { struct socket *sock; @@ -160938,7 +161369,7 @@ index 5f77a8e..1d36c7e 100644 int len, err, fput_needed; sock = sockfd_lookup_light(fd, &err, &fput_needed); -@@ -1613,6 +1676,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, +@@ -1609,6 +1672,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, * the protocol. */ @@ -160947,7 +161378,7 @@ index 5f77a8e..1d36c7e 100644 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, unsigned int, flags, struct sockaddr __user *, addr, int, addr_len) -@@ -1676,7 +1741,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, +@@ -1672,7 +1737,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, struct socket *sock; struct iovec iov; struct msghdr msg; @@ -160956,7 +161387,7 @@ index 5f77a8e..1d36c7e 100644 int err, err2; int fput_needed; -@@ -1921,7 +1986,7 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg, +@@ -1917,7 +1982,7 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg, * checking falls down on this. */ if (copy_from_user(ctl_buf, @@ -160965,7 +161396,7 @@ index 5f77a8e..1d36c7e 100644 ctl_len)) goto out_freectl; msg_sys->msg_control = ctl_buf; -@@ -2077,7 +2142,7 @@ static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg, +@@ -2073,7 +2138,7 @@ static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg, ssize_t err; /* kernel mode address */ @@ -160974,7 +161405,7 @@ index 5f77a8e..1d36c7e 100644 /* user mode address pointers */ struct sockaddr __user *uaddr; -@@ -2723,7 +2788,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32) +@@ -2719,7 +2784,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); @@ -160983,7 +161414,7 @@ index 5f77a8e..1d36c7e 100644 return -EFAULT; if (put_user(convert_in ? rxnfc : compat_ptr(data), -@@ -2834,7 +2899,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, +@@ -2830,7 +2895,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, old_fs = get_fs(); set_fs(KERNEL_DS); err = dev_ioctl(net, cmd, @@ -160992,7 +161423,7 @@ index 5f77a8e..1d36c7e 100644 set_fs(old_fs); return err; -@@ -2927,7 +2992,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, +@@ -2923,7 +2988,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, old_fs = get_fs(); set_fs(KERNEL_DS); @@ -161001,7 +161432,7 @@ index 5f77a8e..1d36c7e 100644 set_fs(old_fs); if (cmd == SIOCGIFMAP && !err) { -@@ -3011,7 +3076,7 @@ static int routing_ioctl(struct net *net, struct socket *sock, +@@ -3007,7 +3072,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); @@ -161010,7 +161441,7 @@ index 5f77a8e..1d36c7e 100644 devname[15] = 0; } else r4.rt_dev = NULL; -@@ -3238,8 +3303,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, +@@ -3234,8 +3299,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, int __user *uoptlen; int err; @@ -161021,7 +161452,7 @@ index 5f77a8e..1d36c7e 100644 set_fs(KERNEL_DS); if (level == SOL_SOCKET) -@@ -3259,7 +3324,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, +@@ -3255,7 +3320,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, char __user *uoptval; int err; @@ -161112,10 +161543,10 @@ index 9d88c62..53396b6 100644 #define gssx_dec_release_handle NULL #define gssx_enc_get_mic NULL diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c -index 4605dc7..c947fa5 100644 +index e085f5a..1132fd2 100644 --- a/net/sunrpc/auth_gss/svcauth_gss.c +++ b/net/sunrpc/auth_gss/svcauth_gss.c -@@ -1142,7 +1142,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd, +@@ -1141,7 +1141,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd, uint64_t *handle) { struct rsc rsci, *rscp = NULL; @@ -161124,7 +161555,7 @@ index 4605dc7..c947fa5 100644 long long ctxh; struct gss_api_mech *gm = NULL; time_t expiry; -@@ -1153,7 +1153,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd, +@@ -1152,7 +1152,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd, status = -ENOMEM; /* the handle needs to be just a unique id, * use a static counter */ @@ -161147,10 +161578,10 @@ index 553bf95..c4c6132 100644 goto out_nomem; cd->u.procfs.channel_ent = NULL; diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c -index 837dd91..7a070a7 100644 +index 2808d55..677092e 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c -@@ -1527,7 +1527,9 @@ call_start(struct rpc_task *task) +@@ -1544,7 +1544,9 @@ call_start(struct rpc_task *task) (RPC_IS_ASYNC(task) ? "async" : "sync")); /* Increment call count */ @@ -161542,7 +161973,7 @@ index c846ca9..d5968b4 100644 .proc_handler = read_reset_stat, }, diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c -index 3b24a64..a68bd749 100644 +index 2c25606..521a8e0 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c @@ -200,7 +200,7 @@ int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt, @@ -161563,7 +161994,7 @@ index 3b24a64..a68bd749 100644 return ret; err: ib_dma_unmap_sg(xprt->sc_cm_id->device, -@@ -631,7 +631,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) +@@ -612,7 +612,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) dto_q); list_del_init(&ctxt->dto_q); } else { @@ -161572,7 +162003,7 @@ index 3b24a64..a68bd749 100644 clear_bit(XPT_DATA, &xprt->xpt_flags); ctxt = NULL; } -@@ -648,7 +648,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) +@@ -629,7 +629,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) } dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n", ctxt, rdma_xprt, rqstp, ctxt->wc_status); @@ -161582,7 +162013,7 @@ index 3b24a64..a68bd749 100644 /* Build up the XDR from the receive buffers. */ rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len); diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c -index 4f1b1c4..40fd2aa 100644 +index 54d53330..fd6c4ac 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c @@ -307,7 +307,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp, @@ -161595,10 +162026,10 @@ index 4f1b1c4..40fd2aa 100644 goto err; return write_len - bc; diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c -index 9066896..c2fe701 100644 +index dd94401..9540398 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c -@@ -1285,7 +1285,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr) +@@ -1298,7 +1298,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr) spin_lock_bh(&xprt->sc_lock); if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) { spin_unlock_bh(&xprt->sc_lock); @@ -161621,7 +162052,7 @@ index ed98c1f..f74b659 100644 int mode = (table->mode >> 6) & 7; return (mode << 6) | (mode << 3) | mode; diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c -index 4dfc5c1..ed7921b 100644 +index 1fd4647..ebf12ff 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c @@ -65,13 +65,13 @@ struct tipc_nl_compat_cmd_dump { @@ -161640,7 +162071,7 @@ index 4dfc5c1..ed7921b 100644 static int tipc_skb_tailroom(struct sk_buff *skb) { -@@ -836,7 +836,10 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock) +@@ -885,7 +885,10 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock) void *hdr; struct nlattr *nest; struct sk_buff *args; @@ -161652,7 +162083,7 @@ index 4dfc5c1..ed7921b 100644 args = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); if (!args) -@@ -859,9 +862,6 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock) +@@ -908,9 +911,6 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock) nla_nest_end(args, nest); genlmsg_end(args, hdr); @@ -161663,7 +162094,7 @@ index 4dfc5c1..ed7921b 100644 kfree_skb(args); diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c -index e6cb386..9eaa00c 100644 +index 0dd0224..36a22a0 100644 --- a/net/tipc/subscr.c +++ b/net/tipc/subscr.c @@ -75,7 +75,7 @@ static void tipc_subscrp_send_event(struct tipc_subscription *sub, @@ -161676,7 +162107,7 @@ index e6cb386..9eaa00c 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 7748199..1cc52d17 100644 +index 735362c..49c97c7 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -919,6 +919,12 @@ static struct sock *unix_find_other(struct net *net, @@ -161706,7 +162137,7 @@ index 7748199..1cc52d17 100644 if (dentry) touch_atime(&unix_sk(u)->path); } else -@@ -960,13 +973,19 @@ static int unix_mknod(struct dentry *dentry, struct path *path, umode_t mode, +@@ -960,13 +973,19 @@ static int unix_mknod(struct dentry *dentry, const struct path *path, umode_t mo err = security_path_mknod(path, dentry, mode, 0); if (!err) { @@ -161880,10 +162311,10 @@ index 21e591d..f3a0afc 100644 + .process_negotiate = vmci_transport_notify_pkt_process_negotiate, }; diff --git a/net/wireless/scan.c b/net/wireless/scan.c -index 14d5369..7142d8e 100644 +index ef2955c..bdc636d 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c -@@ -1651,8 +1651,9 @@ static int ieee80211_scan_results(struct cfg80211_registered_device *rdev, +@@ -1657,8 +1657,9 @@ static int ieee80211_scan_results(struct cfg80211_registered_device *rdev, int cfg80211_wext_giwscan(struct net_device *dev, struct iw_request_info *info, @@ -161895,10 +162326,10 @@ index 14d5369..7142d8e 100644 int res; diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c -index fd68283..0681bb2 100644 +index 9f27221..031b0c4 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c -@@ -23,8 +23,9 @@ +@@ -23,16 +23,19 @@ int cfg80211_wext_giwname(struct net_device *dev, struct iw_request_info *info, @@ -161906,10 +162337,10 @@ index fd68283..0681bb2 100644 + union iwreq_data *wrqu, char *extra) { + char *name = wrqu->name; - struct wireless_dev *wdev = dev->ieee80211_ptr; - struct ieee80211_supported_band *sband; - bool is_ht = false, is_a = false, is_b = false, is_g = false; -@@ -66,8 +67,9 @@ int cfg80211_wext_giwname(struct net_device *dev, ++ + strcpy(name, "IEEE 802.11"); + return 0; + } EXPORT_WEXT_HANDLER(cfg80211_wext_giwname); int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info, @@ -161920,7 +162351,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev; struct vif_params vifparams; -@@ -102,8 +104,9 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info, +@@ -67,8 +70,9 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info, EXPORT_WEXT_HANDLER(cfg80211_wext_siwmode); int cfg80211_wext_giwmode(struct net_device *dev, struct iw_request_info *info, @@ -161931,7 +162362,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; if (!wdev) -@@ -139,8 +142,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwmode); +@@ -104,8 +108,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwmode); int cfg80211_wext_giwrange(struct net_device *dev, struct iw_request_info *info, @@ -161941,8 +162372,8 @@ index fd68283..0681bb2 100644 + struct iw_point *data = &wrqu->data; struct wireless_dev *wdev = dev->ieee80211_ptr; struct iw_range *range = (struct iw_range *) extra; - enum ieee80211_band band; -@@ -283,8 +287,9 @@ int cfg80211_wext_freq(struct iw_freq *freq) + enum nl80211_band band; +@@ -248,8 +253,9 @@ int cfg80211_wext_freq(struct iw_freq *freq) int cfg80211_wext_siwrts(struct net_device *dev, struct iw_request_info *info, @@ -161953,7 +162384,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); u32 orts = wdev->wiphy->rts_threshold; -@@ -307,8 +312,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_siwrts); +@@ -272,8 +278,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_siwrts); int cfg80211_wext_giwrts(struct net_device *dev, struct iw_request_info *info, @@ -161964,7 +162395,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; rts->value = wdev->wiphy->rts_threshold; -@@ -321,8 +327,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwrts); +@@ -286,8 +293,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwrts); int cfg80211_wext_siwfrag(struct net_device *dev, struct iw_request_info *info, @@ -161975,7 +162406,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); u32 ofrag = wdev->wiphy->frag_threshold; -@@ -347,8 +354,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_siwfrag); +@@ -312,8 +320,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_siwfrag); int cfg80211_wext_giwfrag(struct net_device *dev, struct iw_request_info *info, @@ -161986,7 +162417,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; frag->value = wdev->wiphy->frag_threshold; -@@ -361,8 +369,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwfrag); +@@ -326,8 +335,9 @@ EXPORT_WEXT_HANDLER(cfg80211_wext_giwfrag); static int cfg80211_wext_siwretry(struct net_device *dev, struct iw_request_info *info, @@ -161997,7 +162428,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); u32 changed = 0; -@@ -401,8 +410,9 @@ static int cfg80211_wext_siwretry(struct net_device *dev, +@@ -366,8 +376,9 @@ static int cfg80211_wext_siwretry(struct net_device *dev, int cfg80211_wext_giwretry(struct net_device *dev, struct iw_request_info *info, @@ -162008,7 +162439,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; retry->disabled = 0; -@@ -586,8 +596,9 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev, +@@ -551,8 +562,9 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev, static int cfg80211_wext_siwencode(struct net_device *dev, struct iw_request_info *info, @@ -162019,7 +162450,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); int idx, err; -@@ -646,8 +657,9 @@ static int cfg80211_wext_siwencode(struct net_device *dev, +@@ -611,8 +623,9 @@ static int cfg80211_wext_siwencode(struct net_device *dev, static int cfg80211_wext_siwencodeext(struct net_device *dev, struct iw_request_info *info, @@ -162030,7 +162461,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); struct iw_encode_ext *ext = (struct iw_encode_ext *) extra; -@@ -737,8 +749,9 @@ static int cfg80211_wext_siwencodeext(struct net_device *dev, +@@ -702,8 +715,9 @@ static int cfg80211_wext_siwencodeext(struct net_device *dev, static int cfg80211_wext_giwencode(struct net_device *dev, struct iw_request_info *info, @@ -162041,7 +162472,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; int idx; -@@ -774,8 +787,9 @@ static int cfg80211_wext_giwencode(struct net_device *dev, +@@ -739,8 +753,9 @@ static int cfg80211_wext_giwencode(struct net_device *dev, static int cfg80211_wext_siwfreq(struct net_device *dev, struct iw_request_info *info, @@ -162052,7 +162483,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); struct cfg80211_chan_def chandef = { -@@ -817,8 +831,9 @@ static int cfg80211_wext_siwfreq(struct net_device *dev, +@@ -782,8 +797,9 @@ static int cfg80211_wext_siwfreq(struct net_device *dev, static int cfg80211_wext_giwfreq(struct net_device *dev, struct iw_request_info *info, @@ -162063,7 +162494,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); struct cfg80211_chan_def chandef; -@@ -1076,8 +1091,9 @@ static int cfg80211_set_key_mgt(struct wireless_dev *wdev, u32 key_mgt) +@@ -1041,8 +1057,9 @@ static int cfg80211_set_key_mgt(struct wireless_dev *wdev, u32 key_mgt) static int cfg80211_wext_siwauth(struct net_device *dev, struct iw_request_info *info, @@ -162074,7 +162505,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; if (wdev->iftype != NL80211_IFTYPE_STATION) -@@ -1109,7 +1125,7 @@ static int cfg80211_wext_siwauth(struct net_device *dev, +@@ -1074,7 +1091,7 @@ static int cfg80211_wext_siwauth(struct net_device *dev, static int cfg80211_wext_giwauth(struct net_device *dev, struct iw_request_info *info, @@ -162083,7 +162514,7 @@ index fd68283..0681bb2 100644 { /* XXX: what do we need? */ -@@ -1118,8 +1134,9 @@ static int cfg80211_wext_giwauth(struct net_device *dev, +@@ -1083,8 +1100,9 @@ static int cfg80211_wext_giwauth(struct net_device *dev, static int cfg80211_wext_siwpower(struct net_device *dev, struct iw_request_info *info, @@ -162094,7 +162525,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); bool ps = wdev->ps; -@@ -1165,8 +1182,9 @@ static int cfg80211_wext_siwpower(struct net_device *dev, +@@ -1130,8 +1148,9 @@ static int cfg80211_wext_siwpower(struct net_device *dev, static int cfg80211_wext_giwpower(struct net_device *dev, struct iw_request_info *info, @@ -162105,7 +162536,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; wrq->disabled = !wdev->ps; -@@ -1220,8 +1238,9 @@ static int cfg80211_wds_wext_giwap(struct net_device *dev, +@@ -1185,8 +1204,9 @@ static int cfg80211_wds_wext_giwap(struct net_device *dev, static int cfg80211_wext_siwrate(struct net_device *dev, struct iw_request_info *info, @@ -162116,7 +162547,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); struct cfg80211_bitrate_mask mask; -@@ -1271,8 +1290,9 @@ static int cfg80211_wext_siwrate(struct net_device *dev, +@@ -1236,8 +1256,9 @@ static int cfg80211_wext_siwrate(struct net_device *dev, static int cfg80211_wext_giwrate(struct net_device *dev, struct iw_request_info *info, @@ -162127,7 +162558,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); /* we are under RTNL - globally locked - so can use a static struct */ -@@ -1379,8 +1399,9 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev) +@@ -1344,8 +1365,9 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev) static int cfg80211_wext_siwap(struct net_device *dev, struct iw_request_info *info, @@ -162138,7 +162569,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; switch (wdev->iftype) { -@@ -1397,8 +1418,9 @@ static int cfg80211_wext_siwap(struct net_device *dev, +@@ -1362,8 +1384,9 @@ static int cfg80211_wext_siwap(struct net_device *dev, static int cfg80211_wext_giwap(struct net_device *dev, struct iw_request_info *info, @@ -162149,7 +162580,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; switch (wdev->iftype) { -@@ -1415,8 +1437,9 @@ static int cfg80211_wext_giwap(struct net_device *dev, +@@ -1380,8 +1403,9 @@ static int cfg80211_wext_giwap(struct net_device *dev, static int cfg80211_wext_siwessid(struct net_device *dev, struct iw_request_info *info, @@ -162160,7 +162591,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; switch (wdev->iftype) { -@@ -1431,8 +1454,9 @@ static int cfg80211_wext_siwessid(struct net_device *dev, +@@ -1396,8 +1420,9 @@ static int cfg80211_wext_siwessid(struct net_device *dev, static int cfg80211_wext_giwessid(struct net_device *dev, struct iw_request_info *info, @@ -162171,7 +162602,7 @@ index fd68283..0681bb2 100644 struct wireless_dev *wdev = dev->ieee80211_ptr; data->flags = 0; -@@ -1450,7 +1474,7 @@ static int cfg80211_wext_giwessid(struct net_device *dev, +@@ -1415,7 +1440,7 @@ static int cfg80211_wext_giwessid(struct net_device *dev, static int cfg80211_wext_siwpmksa(struct net_device *dev, struct iw_request_info *info, @@ -162180,7 +162611,7 @@ index fd68283..0681bb2 100644 { struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); -@@ -1490,38 +1514,38 @@ static int cfg80211_wext_siwpmksa(struct net_device *dev, +@@ -1455,38 +1480,38 @@ static int cfg80211_wext_siwpmksa(struct net_device *dev, } static const iw_handler cfg80211_handlers[] = { @@ -162287,10 +162718,10 @@ index 94c7405..499cca4 100644 int cfg80211_wext_freq(struct iw_freq *freq); diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c -index c753211..d862a85 100644 +index dbb2738..6a52210 100644 --- a/net/wireless/wext-core.c +++ b/net/wireless/wext-core.c -@@ -778,8 +778,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd, +@@ -781,8 +781,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd, */ /* Support for very large requests */ @@ -162300,7 +162731,7 @@ index c753211..d862a85 100644 /* Allow userspace to GET more than max so * we can support any size GET requests. * There is still a limit : -ENOMEM. -@@ -818,22 +817,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd, +@@ -821,22 +820,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd, } } @@ -162601,10 +163032,10 @@ index 05a6e3d..6716ec9 100644 __xfrm_sysctl_init(net); diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c -index 2cc7af8..7b5d2be 100644 +index d516845..a3c6950 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c -@@ -2471,7 +2471,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -2473,7 +2473,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) return -EINVAL; { @@ -162614,10 +163045,10 @@ index 2cc7af8..7b5d2be 100644 .done = link->done, }; diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include -index b2ab2a9..a6f6124 100644 +index 0f82314..9b1fdf0 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include -@@ -107,16 +107,20 @@ as-option = $(call try-run,\ +@@ -108,16 +108,20 @@ as-option = $(call try-run,\ as-instr = $(call try-run,\ printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) @@ -162640,7 +163071,7 @@ index b2ab2a9..a6f6124 100644 # cc-option-align # Prefix align with either -falign or -malign -@@ -126,7 +130,7 @@ cc-option-align = $(subst -functions=0,,\ +@@ -127,7 +131,7 @@ cc-option-align = $(subst -functions=0,,\ # cc-disable-warning # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) cc-disable-warning = $(call try-run,\ @@ -162649,7 +163080,7 @@ index b2ab2a9..a6f6124 100644 # cc-name # Expands to either gcc or clang -@@ -146,7 +150,7 @@ cc-ifversion = $(shell [ $(cc-version) $(1) $(2) ] && echo $(3) || echo $(4)) +@@ -147,7 +151,7 @@ cc-ifversion = $(shell [ $(cc-version) $(1) $(2) ] && echo $(3) || echo $(4)) # cc-ldoption # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) cc-ldoption = $(call try-run,\ @@ -162669,7 +163100,7 @@ index 822ab4a..1d80897 100644 -subdir- += basic kconfig package +subdir- += basic kconfig package gcc-plugins diff --git a/scripts/Makefile.build b/scripts/Makefile.build -index e1bc190..b2ce235 100644 +index 0d1ca5b..11602e5 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -60,7 +60,7 @@ endif @@ -162713,7 +163144,7 @@ index 53449a6..c1fd180 100644 warning-2 += -Wdisabled-optimization diff --git a/scripts/Makefile.gcc-plugins b/scripts/Makefile.gcc-plugins new file mode 100644 -index 0000000..2a54819 +index 0000000..dc5098b --- /dev/null +++ b/scripts/Makefile.gcc-plugins @@ -0,0 +1,100 @@ @@ -162799,7 +163230,7 @@ index 0000000..2a54819 + ifeq ($(PLUGINCC),) + ifneq ($(GCC_PLUGINS_CFLAGS),) + ifeq ($(call cc-ifversion, -ge, 0405, y), y) -+ $(Q)$(srctree)/scripts/gcc-plugin.sh --show-error "$(__PLUGINCC)" "$(HOSTCXX)" "$(CC)" || true ++ $(Q)$(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh --show-error "$(__PLUGINCC)" "$(HOSTCXX)" "$(CC)" || true) + @echo "Cannot use CONFIG_GCC_PLUGINS: your gcc installation does not support plugins, perhaps the necessary headers are missing?" >&2 + else + @echo "Cannot use CONFIG_GCC_PLUGINS: your gcc version does not support plugins, you should upgrade it to at least gcc 4.5" >&2 @@ -162922,10 +163353,10 @@ index 133edfa..ac03751 100644 - $(host-cxxmulti) $(host-cxxobjs) + $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c -index caef815..957ffde 100644 +index 746ec1e..994846b 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c -@@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz) +@@ -197,7 +197,7 @@ static unsigned int strhash(const char *str, unsigned int sz) /* * Lookup a value in the configuration string. */ @@ -162934,7 +163365,7 @@ index caef815..957ffde 100644 { struct item *aux; -@@ -194,10 +194,10 @@ static void define_config(const char *name, int len, unsigned int hash) +@@ -230,7 +230,7 @@ static void define_config(const char *name, int len, unsigned int hash) /* * Record the use of a CONFIG_* word. */ @@ -162942,12 +163373,8 @@ index caef815..957ffde 100644 +static void use_config(const char *m, unsigned int slen) { unsigned int hash = strhash(m, slen); -- int c, i; -+ unsigned int c, i; - if (is_defined_config(m, slen, hash)) - return; -@@ -218,9 +218,9 @@ static void use_config(const char *m, int slen) +@@ -243,9 +243,9 @@ static void use_config(const char *m, int slen) static void parse_config_file(const char *map, size_t len) { @@ -162959,7 +163386,7 @@ index caef815..957ffde 100644 const char *p, *q; for (; m < end; m++) { -@@ -421,7 +421,7 @@ static void print_deps(void) +@@ -449,7 +449,7 @@ static void print_deps(void) static void traps(void) { static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; @@ -162969,7 +163396,7 @@ index caef815..957ffde 100644 if (*p != INT_CONF) { fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c -index 0c03ac9..70a172e 100644 +index 386f956..a3b3365 100644 --- a/scripts/dtc/checks.c +++ b/scripts/dtc/checks.c @@ -277,7 +277,7 @@ NODE_ERROR(duplicate_property_names, NULL); @@ -162981,7 +163408,7 @@ index 0c03ac9..70a172e 100644 if (n < strlen(node->name)) FAIL(c, "Bad character '%c' in node %s", -@@ -297,7 +297,7 @@ NODE_ERROR(node_name_format, NULL, &node_name_chars); +@@ -321,7 +321,7 @@ NODE_WARNING(unit_address_vs_reg, NULL); static void check_property_name_chars(struct check *c, struct node *dt, struct node *node, struct property *prop) { @@ -162990,7 +163417,7 @@ index 0c03ac9..70a172e 100644 if (n < strlen(prop->name)) FAIL(c, "Bad character '%c' in property name \"%s\", node %s", -@@ -399,7 +399,7 @@ static void check_explicit_phandles(struct check *c, struct node *root, +@@ -423,7 +423,7 @@ static void check_explicit_phandles(struct check *c, struct node *root, phandle = propval_cell(prop); @@ -162999,7 +163426,7 @@ index 0c03ac9..70a172e 100644 FAIL(c, "%s has bad value (0x%x) in %s property", node->fullpath, phandle, prop->name); return; -@@ -462,7 +462,7 @@ static void fixup_phandle_references(struct check *c, struct node *dt, +@@ -486,7 +486,7 @@ static void fixup_phandle_references(struct check *c, struct node *dt, cell_t phandle; for_each_marker_of_type(m, REF_PHANDLE) { @@ -163008,7 +163435,7 @@ index 0c03ac9..70a172e 100644 refnode = get_node_by_ref(dt, m->ref); if (! refnode) { -@@ -688,7 +688,7 @@ static void enable_warning_error(struct check *c, bool warn, bool error) +@@ -714,7 +714,7 @@ static void enable_warning_error(struct check *c, bool warn, bool error) static void disable_warning_error(struct check *c, bool warn, bool error) { @@ -163017,7 +163444,7 @@ index 0c03ac9..70a172e 100644 /* Lowering level, also lower it for things this is the prereq * for */ -@@ -709,7 +709,7 @@ static void disable_warning_error(struct check *c, bool warn, bool error) +@@ -735,7 +735,7 @@ static void disable_warning_error(struct check *c, bool warn, bool error) void parse_checks_option(bool warn, bool error, const char *arg) { @@ -163026,7 +163453,7 @@ index 0c03ac9..70a172e 100644 const char *name = arg; bool enable = true; -@@ -737,7 +737,7 @@ void parse_checks_option(bool warn, bool error, const char *arg) +@@ -763,7 +763,7 @@ void parse_checks_option(bool warn, bool error, const char *arg) void process_checks(bool force, struct boot_info *bi) { struct node *dt = bi->dt; @@ -163062,7 +163489,7 @@ index 8cae237..dcdab66 100644 d.len += ret; diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c -index bd99fa2..e04d08d 100644 +index ec14954..dff184d 100644 --- a/scripts/dtc/flattree.c +++ b/scripts/dtc/flattree.c @@ -178,7 +178,7 @@ static void asm_emit_data(void *e, struct data d) @@ -167972,7 +168399,7 @@ index 0000000..a7161bf +} diff --git a/scripts/gcc-plugins/randomize_layout_plugin.c b/scripts/gcc-plugins/randomize_layout_plugin.c new file mode 100644 -index 0000000..3ac813e +index 0000000..2ca34f1 --- /dev/null +++ b/scripts/gcc-plugins/randomize_layout_plugin.c @@ -0,0 +1,940 @@ @@ -168010,7 +168437,7 @@ index 0000000..3ac813e +static int performance_mode; + +static struct plugin_info randomize_layout_plugin_info = { -+ .version = "201607271952", ++ .version = "201402201816", + .help = "disable\t\t\tdo not activate plugin\n" + "performance-mode\tenable cacheline-aware layout randomization\n" +}; @@ -185039,10 +185466,10 @@ index 0000000..00c7430 +} diff --git a/scripts/gcc-plugins/size_overflow_plugin/size_overflow_hash.data b/scripts/gcc-plugins/size_overflow_plugin/size_overflow_hash.data new file mode 100644 -index 0000000..56d8f55 +index 0000000..d64cc64 --- /dev/null +++ b/scripts/gcc-plugins/size_overflow_plugin/size_overflow_hash.data -@@ -0,0 +1,21992 @@ +@@ -0,0 +1,22254 @@ +enable_so_recv_ctrl_pipe_us_data_0 recv_ctrl_pipe us_data 0 0 NULL +enable_so___earlyonly_bootmem_alloc_fndecl_3 __earlyonly_bootmem_alloc fndecl 2-3-4 3 NULL +enable_so_v9fs_xattr_get_acl_fndecl_4 v9fs_xattr_get_acl fndecl 5 4 NULL @@ -185060,6 +185487,7 @@ index 0000000..56d8f55 +enable_so_max_cache_pages_snd_emu10k1_24 max_cache_pages snd_emu10k1 0 24 &enable_so_dma_buf_sz_sxgbe_priv_data_24 +enable_so_T9_reportid_max_mxt_data_25 T9_reportid_max mxt_data 0 25 NULL +enable_so_max_frags_vxge_hw_fifo_config_26 max_frags vxge_hw_fifo_config 0 26 NULL ++enable_so_snic_reset_stats_write_fndecl_30 snic_reset_stats_write fndecl 3 30 NULL +enable_so_ocfs2_xattr_get_clusters_fndecl_34 ocfs2_xattr_get_clusters fndecl 0 34 NULL nohasharray +enable_so_ath10k_core_create_fndecl_34 ath10k_core_create fndecl 1 34 &enable_so_ocfs2_xattr_get_clusters_fndecl_34 +enable_so_total_drm_buf_35 total drm_buf 0 35 NULL @@ -185213,8 +185641,10 @@ index 0000000..56d8f55 +enable_so_security_inode_getxattr_fndecl_502 security_inode_getxattr fndecl 0 502 &enable_so_max_seg_sz_mmc_test_area_502 nohasharray +enable_so_ll_mtu_ipw_hardware_502 ll_mtu ipw_hardware 0 502 &enable_so_security_inode_getxattr_fndecl_502 +enable_so_num_virtio_mmio_vq_info_503 num virtio_mmio_vq_info 0 503 NULL -+enable_so_wa_xfer_status_to_errno_fndecl_506 wa_xfer_status_to_errno fndecl 0 506 NULL -+enable_so_hlen_ip6_tnl_510 hlen ip6_tnl 0 510 NULL ++enable_so_wa_xfer_status_to_errno_fndecl_506 wa_xfer_status_to_errno fndecl 0 506 NULL nohasharray ++enable_so_tracing_map_create_fndecl_506 tracing_map_create fndecl 2 506 &enable_so_wa_xfer_status_to_errno_fndecl_506 ++enable_so_hlen_ip6_tnl_510 hlen ip6_tnl 0 510 NULL nohasharray ++enable_so_mr_pool_size_srp_target_port_510 mr_pool_size srp_target_port 0 510 &enable_so_hlen_ip6_tnl_510 +enable_so_si476x_radio_read_acf_blob_fndecl_515 si476x_radio_read_acf_blob fndecl 3 515 NULL +enable_so_length_qib_sge_516 length qib_sge 0 516 NULL +enable_so_gfn_guest_walkerEPT_517 gfn guest_walkerEPT 0 517 NULL @@ -185323,6 +185753,7 @@ index 0000000..56d8f55 +enable_so_SyS_sethostname_fndecl_837 SyS_sethostname fndecl 2 837 NULL +enable_so_mdata_ofsh_cyttsp4_sysinfo_data_844 mdata_ofsh cyttsp4_sysinfo_data 0 844 NULL +enable_so_s_inopb_ufs_sb_private_info_849 s_inopb ufs_sb_private_info 0 849 NULL ++enable_so__picolcd_flash_write_fndecl_853 _picolcd_flash_write fndecl 4 853 NULL +enable_so_irnet_ctrl_write_fndecl_856 irnet_ctrl_write fndecl 3 856 NULL +enable_so_rsi_copy_to_card_fndecl_858 rsi_copy_to_card fndecl 3 858 NULL nohasharray +enable_so_nilfs_inode_by_name_fndecl_858 nilfs_inode_by_name fndecl 0 858 &enable_so_rsi_copy_to_card_fndecl_858 @@ -185427,6 +185858,7 @@ index 0000000..56d8f55 +enable_so_mdc800_device_read_fndecl_1123 mdc800_device_read fndecl 3 1123 NULL +enable_so_ctl_in_pipe_brcmf_usbdev_info_1124 ctl_in_pipe brcmf_usbdev_info 0 1124 NULL +enable_so_ion_handle_test_kernel_fndecl_1127 ion_handle_test_kernel fndecl 3-4 1127 NULL ++enable_so_do_kexec_load_fndecl_1129 do_kexec_load fndecl 2 1129 NULL +enable_so_forw_xfs_dir3_icleaf_hdr_1136 forw xfs_dir3_icleaf_hdr 0 1136 NULL +enable_so_log_num_mlx4_resource_1137 log_num mlx4_resource 0 1137 NULL +enable_so_port_num_ib_mad_port_private_1140 port_num ib_mad_port_private 0 1140 NULL @@ -185466,6 +185898,7 @@ index 0000000..56d8f55 +enable_so_i_sblock_bfs_inode_info_1228 i_sblock bfs_inode_info 0 1228 NULL +enable_so_cached_dev_cache_miss_fndecl_1232 cached_dev_cache_miss fndecl 4 1232 NULL +enable_so_pte_hole_mm_walk_1233 pte_hole mm_walk 0 1233 NULL ++enable_so_gtp_hashtable_new_fndecl_1236 gtp_hashtable_new fndecl 2 1236 NULL +enable_so_prev_chunk_sectors_r5conf_1237 prev_chunk_sectors r5conf 0 1237 NULL +enable_so_elf_headers_sz_kimage_arch_1238 elf_headers_sz kimage_arch 0 1238 NULL +enable_so_buffer_dma_zd_usb_interrupt_1239 buffer_dma zd_usb_interrupt 0 1239 NULL @@ -185517,12 +185950,14 @@ index 0000000..56d8f55 +enable_so_smsc911x_rx_get_rxstatus_fndecl_1389 smsc911x_rx_get_rxstatus fndecl 0 1389 NULL +enable_so_stepped_offset_skb_seq_state_1395 stepped_offset skb_seq_state 0 1395 NULL +enable_so_sctp_setsockopt_connectx_old_fndecl_1396 sctp_setsockopt_connectx_old fndecl 3 1396 NULL -+enable_so_len_wsm_hdr_1398 len wsm_hdr 0 1398 NULL ++enable_so_len_wsm_hdr_1398 len wsm_hdr 0 1398 NULL nohasharray ++enable_so_sync_file_alloc_fndecl_1398 sync_file_alloc fndecl 1 1398 &enable_so_len_wsm_hdr_1398 +enable_so_dev_size_amd_flash_info_1399 dev_size amd_flash_info 0 1399 NULL +enable_so_usb_transport_fail_vub300_mmc_host_1403 usb_transport_fail vub300_mmc_host 0 1403 NULL +enable_so_cmd_size_scsi_host_template_1404 cmd_size scsi_host_template 0 1404 NULL +enable_so_wl1271_rx_filter_get_fields_size_fndecl_1405 wl1271_rx_filter_get_fields_size fndecl 0 1405 NULL +enable_so_num_hsi_port_1406 num hsi_port 0 1406 NULL ++enable_so_ide_core_cp_entry_fndecl_1407 ide_core_cp_entry fndecl 3 1407 NULL +enable_so_ec_hdr_alsize_ubi_device_1411 ec_hdr_alsize ubi_device 0 1411 NULL +enable_so_ubifs_leb_write_fndecl_1412 ubifs_leb_write fndecl 5-4 1412 NULL nohasharray +enable_so_num_rx_bds_bcmgenet_priv_1412 num_rx_bds bcmgenet_priv 0 1412 &enable_so_ubifs_leb_write_fndecl_1412 @@ -185537,7 +185972,6 @@ index 0000000..56d8f55 +enable_so_idma64_alloc_desc_fndecl_1433 idma64_alloc_desc fndecl 1 1433 NULL +enable_so_relocation_count_drm_i915_gem_exec_object2_1435 relocation_count drm_i915_gem_exec_object2 0 1435 NULL +enable_so_rdev_num_s2mps11_info_1439 rdev_num s2mps11_info 0 1439 NULL -+enable_so_nr_cpusets_fndecl_1442 nr_cpusets fndecl 0 1442 NULL +enable_so_alloc_libipw_fndecl_1447 alloc_libipw fndecl 1 1447 NULL nohasharray +enable_so_loc_addr_rio_transfer_io_1447 loc_addr rio_transfer_io 0 1447 &enable_so_alloc_libipw_fndecl_1447 +enable_so_size_ip_vs_sync_mesg_1448 size ip_vs_sync_mesg 0 1448 NULL @@ -185549,6 +185983,7 @@ index 0000000..56d8f55 +enable_so_ceph_decode_32_fndecl_1473 ceph_decode_32 fndecl 0 1473 NULL +enable_so_xenbus_map_ring_valloc_pv_fndecl_1474 xenbus_map_ring_valloc_pv fndecl 3 1474 NULL +enable_so_ax25_output_fndecl_1475 ax25_output fndecl 2 1475 NULL ++enable_so_iio_debugfs_write_reg_fndecl_1477 iio_debugfs_write_reg fndecl 3 1477 NULL +enable_so_pbus_size_io_fndecl_1478 pbus_size_io fndecl 2 1478 NULL +enable_so_nfs3_proc_symlink_fndecl_1479 nfs3_proc_symlink fndecl 4 1479 NULL +enable_so_iscsi_sw_tcp_send_data_prep_fndecl_1485 iscsi_sw_tcp_send_data_prep fndecl 5-4 1485 NULL @@ -185638,6 +186073,7 @@ index 0000000..56d8f55 +enable_so_userspace_do_request_fndecl_1738 userspace_do_request fndecl 5 1738 NULL +enable_so_pci_omegapci_setup_fndecl_1740 pci_omegapci_setup fndecl 4 1740 NULL nohasharray +enable_so_size_nhlt_specific_cfg_1740 size nhlt_specific_cfg 0 1740 &enable_so_pci_omegapci_setup_fndecl_1740 ++enable_so_reg_list_format_size_bytes_amdgpu_rlc_1742 reg_list_format_size_bytes amdgpu_rlc 0 1742 NULL +enable_so_ad_sd_write_reg_fndecl_1743 ad_sd_write_reg fndecl 3 1743 NULL nohasharray +enable_so_nr_packets_saa7134_ts_1743 nr_packets saa7134_ts 0 1743 &enable_so_ad_sd_write_reg_fndecl_1743 +enable_so_compat_filldir_fndecl_1746 compat_filldir fndecl 3 1746 NULL @@ -185674,6 +186110,7 @@ index 0000000..56d8f55 +enable_so_bufsize_saa7134_dmasound_1821 bufsize saa7134_dmasound 0 1821 NULL +enable_so_lleft_ext4_allocation_request_1823 lleft ext4_allocation_request 0 1823 NULL nohasharray +enable_so_s_size_qib_qp_1823 s_size qib_qp 0 1823 &enable_so_lleft_ext4_allocation_request_1823 ++enable_so_rt2x00debug_write_eeprom_fndecl_1824 rt2x00debug_write_eeprom fndecl 3 1824 NULL +enable_so_num_vectors_e1000_adapter_1827 num_vectors e1000_adapter 0 1827 NULL +enable_so___add_prelim_ref_fndecl_1828 __add_prelim_ref fndecl 6-5-2 1828 NULL +enable_so_ntfs_ucstonls_fndecl_1834 ntfs_ucstonls fndecl 3-5 1834 NULL @@ -185697,6 +186134,7 @@ index 0000000..56d8f55 +enable_so_buf_size_cx18_stream_1878 buf_size cx18_stream 0 1878 &enable_so_sisusb_bulkin_msg_fndecl_1878 +enable_so_num_vmdq_vsis_i40e_pf_1882 num_vmdq_vsis i40e_pf 0 1882 NULL +enable_so___clear_user_fndecl_1885 __clear_user fndecl 0 1885 NULL ++enable_so__iwl_dbgfs_fw_dbg_collect_write_fndecl_1890 _iwl_dbgfs_fw_dbg_collect_write fndecl 3 1890 NULL +enable_so_vmxnet3_get_hdr_len_fndecl_1891 vmxnet3_get_hdr_len fndecl 0 1891 NULL +enable_so_read_file_ani_fndecl_1898 read_file_ani fndecl 3 1898 NULL +enable_so_cq_ecount_lpfc_sli4_hba_1907 cq_ecount lpfc_sli4_hba 0 1907 NULL @@ -185741,7 +186179,8 @@ index 0000000..56d8f55 +enable_so_wdt87xx_i2c_xfer_fndecl_2059 wdt87xx_i2c_xfer fndecl 3-5 2059 NULL nohasharray +enable_so_getgain_fndecl_2059 getgain fndecl 0 2059 &enable_so_wdt87xx_i2c_xfer_fndecl_2059 nohasharray +enable_so_rt2x00queue_remove_l2pad_fndecl_2059 rt2x00queue_remove_l2pad fndecl 2 2059 &enable_so_getgain_fndecl_2059 -+enable_so_receive_n_bytes_fndecl_2063 receive_n_bytes fndecl 3 2063 NULL ++enable_so_receive_n_bytes_fndecl_2063 receive_n_bytes fndecl 3 2063 NULL nohasharray ++enable_so_kmalloc_order_trace_fndecl_2063 kmalloc_order_trace fndecl 1 2063 &enable_so_receive_n_bytes_fndecl_2063 +enable_so_val_bytes_regmap_format_2064 val_bytes regmap_format 0 2064 NULL +enable_so_usbat_flash_read_data_fndecl_2065 usbat_flash_read_data fndecl 4 2065 NULL +enable_so_ide_dump_status_fndecl_2068 ide_dump_status fndecl 0 2068 NULL @@ -185753,6 +186192,7 @@ index 0000000..56d8f55 +enable_so_sensor_xres_em28xx_v4l2_2095 sensor_xres em28xx_v4l2 0 2095 NULL +enable_so_size_nfs_fattr_2101 size nfs_fattr 0 2101 NULL +enable_so_min_odd_fndecl_2105 min_odd fndecl 0-1-2 2105 NULL ++enable_so_qsfp1_debugfs_read_fndecl_2107 qsfp1_debugfs_read fndecl 3 2107 NULL +enable_so_namelen_extended_attribute_2109 namelen extended_attribute 0 2109 NULL +enable_so_dlen_nft_immediate_expr_2110 dlen nft_immediate_expr 0 2110 NULL +enable_so_max_pkt_payload_len_nci_conn_info_2111 max_pkt_payload_len nci_conn_info 0 2111 NULL @@ -185770,8 +186210,8 @@ index 0000000..56d8f55 +enable_so_count_skge_ring_2140 count skge_ring 0 2140 NULL +enable_so_dma_len_srp_map_state_2141 dma_len srp_map_state 0 2141 NULL nohasharray +enable_so_smb_init_fndecl_2141 smb_init fndecl 2 2141 &enable_so_dma_len_srp_map_state_2141 nohasharray -+enable_so_connection_length_spar_controlvm_parameters_header_2141 connection_length spar_controlvm_parameters_header 0 2141 &enable_so_smb_init_fndecl_2141 nohasharray -+enable_so_mdesc_kmalloc_fndecl_2141 mdesc_kmalloc fndecl 1 2141 &enable_so_connection_length_spar_controlvm_parameters_header_2141 ++enable_so_connection_length_spar_controlvm_parameters_header_2141 connection_length spar_controlvm_parameters_header 0 2141 &enable_so_smb_init_fndecl_2141 ++enable_so__iwl_dbgfs_sta_drain_write_fndecl_2142 _iwl_dbgfs_sta_drain_write fndecl 3 2142 NULL +enable_so_capacity_p9_fcall_2144 capacity p9_fcall 0 2144 NULL +enable_so_sisusbcon_bmove_fndecl_2146 sisusbcon_bmove fndecl 7-5-6 2146 NULL +enable_so_multi_ios_hda_gen_spec_2147 multi_ios hda_gen_spec 0 2147 NULL @@ -185929,6 +186369,7 @@ index 0000000..56d8f55 +enable_so_mad_len_ib_mad_recv_wc_2683 mad_len ib_mad_recv_wc 0 2683 NULL +enable_so_logo_lines_vardecl_fbcon_c_2685 logo_lines vardecl_fbcon.c 0 2685 NULL +enable_so_queue_reply_fndecl_2691 queue_reply fndecl 3 2691 NULL ++enable_so___set_enter_print_fmt_fndecl_2700 __set_enter_print_fmt fndecl 0 2700 NULL +enable_so_pkt_finish_packet_fndecl_2701 pkt_finish_packet fndecl 2 2701 NULL +enable_so_crash_shrink_memory_fndecl_2706 crash_shrink_memory fndecl 1 2706 NULL +enable_so_src_len_ccp_sha_engine_2711 src_len ccp_sha_engine 0 2711 NULL nohasharray @@ -186056,7 +186497,6 @@ index 0000000..56d8f55 +enable_so_ad7280_write_fndecl_3090 ad7280_write fndecl 0 3090 &enable_so_npages_mthca_db_table_3090 +enable_so_fb_prepare_logo_fndecl_3092 fb_prepare_logo fndecl 0 3092 NULL +enable_so_loopstart_soundfont_sample_info_3093 loopstart soundfont_sample_info 0 3093 NULL -+enable_so_iommu_dma_alloc_fndecl_3096 iommu_dma_alloc fndecl 2 3096 NULL +enable_so_gtt_mappable_entries__intel_private_3099 gtt_mappable_entries _intel_private 0 3099 NULL +enable_so_vol_cdev_direct_write_fndecl_3100 vol_cdev_direct_write fndecl 3 3100 NULL +enable_so_rx_pkt_map_sz_tg3_3106 rx_pkt_map_sz tg3 0 3106 NULL @@ -186065,7 +186505,8 @@ index 0000000..56d8f55 +enable_so_ipip6_tunnel_change_mtu_fndecl_3119 ipip6_tunnel_change_mtu fndecl 2 3119 NULL nohasharray +enable_so_blk_rq_map_user_fndecl_3119 blk_rq_map_user fndecl 5 3119 &enable_so_ipip6_tunnel_change_mtu_fndecl_3119 nohasharray +enable_so_compat_filldir64_fndecl_3119 compat_filldir64 fndecl 3 3119 &enable_so_blk_rq_map_user_fndecl_3119 nohasharray -+enable_so_controller_function_ms_boot_attr_info_3119 controller_function ms_boot_attr_info 0 3119 &enable_so_compat_filldir64_fndecl_3119 ++enable_so_controller_function_ms_boot_attr_info_3119 controller_function ms_boot_attr_info 0 3119 &enable_so_compat_filldir64_fndecl_3119 nohasharray ++enable_so_key_size_tracing_map_3119 key_size tracing_map 0 3119 &enable_so_controller_function_ms_boot_attr_info_3119 +enable_so_status_whc_qhead_3133 status whc_qhead 0 3133 NULL +enable_so_ext4_block_zero_page_range_fndecl_3135 ext4_block_zero_page_range fndecl 3 3135 NULL +enable_so_strndup_user_fndecl_3136 strndup_user fndecl 2 3136 NULL @@ -186119,7 +186560,6 @@ index 0000000..56d8f55 +enable_so_taglen_cb_compound_hdr_res_3259 taglen cb_compound_hdr_res 0 3259 NULL +enable_so_imx_pcm_dma_init_fndecl_3260 imx_pcm_dma_init fndecl 2 3260 NULL nohasharray +enable_so_compat_sys_readv_fndecl_3260 compat_sys_readv fndecl 3 3260 &enable_so_imx_pcm_dma_init_fndecl_3260 -+enable_so_ldc_alloc_exp_dring_fndecl_3263 ldc_alloc_exp_dring fndecl 2 3263 NULL +enable_so_rx_rx_phy_hdr_read_fndecl_3269 rx_rx_phy_hdr_read fndecl 3 3269 NULL +enable_so_vub300_response_error_fndecl_3270 vub300_response_error fndecl 0 3270 NULL +enable_so_altera_set_ir_post_fndecl_3271 altera_set_ir_post fndecl 2 3271 NULL @@ -186186,13 +186626,15 @@ index 0000000..56d8f55 +enable_so_len_nft_bitwise_3441 len nft_bitwise 0 3441 NULL nohasharray +enable_so_command_setcolourbalance_fndecl_3441 command_setcolourbalance fndecl 0 3441 &enable_so_len_nft_bitwise_3441 +enable_so_uc_inSize_upc_req_3444 uc_inSize upc_req 0 3444 NULL ++enable_so_cifs_read_page_from_socket_fndecl_3452 cifs_read_page_from_socket fndecl 0 3452 NULL +enable_so_rpipe_check_aim_fndecl_3456 rpipe_check_aim fndecl 0 3456 NULL nohasharray +enable_so_scsi_debug_unmap_granularity_vardecl_scsi_debug_c_3456 scsi_debug_unmap_granularity vardecl_scsi_debug.c 0 3456 &enable_so_rpipe_check_aim_fndecl_3456 +enable_so_s_itb_per_group_ext4_sb_info_3459 s_itb_per_group ext4_sb_info 0 3459 NULL +enable_so_adfs_dir_read_fndecl_3464 adfs_dir_read fndecl 2 3464 NULL +enable_so_vm_stat_account_fndecl_3465 vm_stat_account fndecl 4 3465 NULL +enable_so_intel_th_populate_fndecl_3473 intel_th_populate fndecl 4 3473 NULL -+enable_so_ngpios_chv_community_3476 ngpios chv_community 0 3476 NULL ++enable_so_ngpios_chv_community_3476 ngpios chv_community 0 3476 NULL nohasharray ++enable_so_acpi_aml_write_fndecl_3476 acpi_aml_write fndecl 3 3476 &enable_so_ngpios_chv_community_3476 +enable_so_qib_qsfp_write_fndecl_3477 qib_qsfp_write fndecl 2-4-0 3477 NULL +enable_so_namelen_xfs_dir2_sf_entry_3481 namelen xfs_dir2_sf_entry 0 3481 NULL nohasharray +enable_so_chip_send_contexts_hfi1_devdata_3481 chip_send_contexts hfi1_devdata 0 3481 &enable_so_namelen_xfs_dir2_sf_entry_3481 @@ -186270,6 +186712,7 @@ index 0000000..56d8f55 +enable_so_srp_max_rsp_size_srpt_port_attrib_3700 srp_max_rsp_size srpt_port_attrib 0 3700 NULL +enable_so_vmw_cmdbuf_space_pool_fndecl_3702 vmw_cmdbuf_space_pool fndecl 3 3702 NULL nohasharray +enable_so_get_urb_error_fndecl_3702 get_urb_error fndecl 0 3702 &enable_so_vmw_cmdbuf_space_pool_fndecl_3702 ++enable_so_allocate_cmdlines_buffer_fndecl_3704 allocate_cmdlines_buffer fndecl 1 3704 NULL +enable_so_vlan_netdev_private_3705 vlan netdev_private 0 3705 NULL +enable_so_ip_getsockopt_fndecl_3711 ip_getsockopt fndecl 0 3711 NULL +enable_so_len_sctp_auth_bytes_3715 len sctp_auth_bytes 0 3715 NULL @@ -186323,7 +186766,8 @@ index 0000000..56d8f55 +enable_so_size_of_priv_dvb_usb_adapter_fe_properties_3875 size_of_priv dvb_usb_adapter_fe_properties 0 3875 NULL +enable_so_lbs_threshold_read_fndecl_3877 lbs_threshold_read fndecl 5 3877 NULL +enable_so_console_size_ramoops_context_3884 console_size ramoops_context 0 3884 NULL -+enable_so_s_num_blocks_omfs_sb_info_3888 s_num_blocks omfs_sb_info 0 3888 NULL ++enable_so_s_num_blocks_omfs_sb_info_3888 s_num_blocks omfs_sb_info 0 3888 NULL nohasharray ++enable_so_dbgfs_sram_len_il_priv_3888 dbgfs_sram_len il_priv 0 3888 &enable_so_s_num_blocks_omfs_sb_info_3888 +enable_so_fs_div_hfs_sb_info_3890 fs_div hfs_sb_info 0 3890 NULL +enable_so_btrfs_inode_ref_name_len_fndecl_3891 btrfs_inode_ref_name_len fndecl 0 3891 NULL +enable_so_snd_pcm_lib_preallocate_pages_fndecl_3892 snd_pcm_lib_preallocate_pages fndecl 4 3892 NULL nohasharray @@ -186397,6 +186841,7 @@ index 0000000..56d8f55 +enable_so_mlx4_en_get_num_flows_fndecl_4078 mlx4_en_get_num_flows fndecl 0 4078 NULL +enable_so_IOCRequestFrameSize_mpt3sas_facts_4079 IOCRequestFrameSize mpt3sas_facts 0 4079 NULL +enable_so_bfad_iocmd_ioc_get_info_fndecl_4081 bfad_iocmd_ioc_get_info fndecl 0 4081 NULL ++enable_so_read_ftrace_buffer_info_4082 read ftrace_buffer_info 0 4082 NULL +enable_so_kvm_vcpu_read_guest_page_fndecl_4083 kvm_vcpu_read_guest_page fndecl 2-5 4083 NULL nohasharray +enable_so___set_extent_bit_fndecl_4083 __set_extent_bit fndecl 0-3-2 4083 &enable_so_kvm_vcpu_read_guest_page_fndecl_4083 +enable_so_n_drm_r128_depth_4085 n drm_r128_depth 0 4085 NULL @@ -186436,7 +186881,8 @@ index 0000000..56d8f55 +enable_so_vfs_getxattr_fndecl_4203 vfs_getxattr fndecl 0 4203 NULL +enable_so_sample_bits_snd_soc_dai_4206 sample_bits snd_soc_dai 0 4206 NULL nohasharray +enable_so_parent___prelim_ref_4206 parent __prelim_ref 0 4206 &enable_so_sample_bits_snd_soc_dai_4206 -+enable_so_rx_page_order_il_hw_params_4208 rx_page_order il_hw_params 0 4208 NULL ++enable_so_rx_page_order_il_hw_params_4208 rx_page_order il_hw_params 0 4208 NULL nohasharray ++enable_so_auxv_size_prctl_mm_map_4208 auxv_size prctl_mm_map 0 4208 &enable_so_rx_page_order_il_hw_params_4208 +enable_so_rx_pkt_offset_rxpd_4210 rx_pkt_offset rxpd 0 4210 NULL +enable_so_max_vectors_i40e_virtchnl_vf_resource_4213 max_vectors i40e_virtchnl_vf_resource 0 4213 NULL +enable_so_ext2_setsize_fndecl_4215 ext2_setsize fndecl 2 4215 NULL nohasharray @@ -186476,8 +186922,7 @@ index 0000000..56d8f55 +enable_so___add_section_fndecl_4296 __add_section fndecl 3 4296 NULL +enable_so_cgroup_task_count_fndecl_4297 cgroup_task_count fndecl 0 4297 NULL +enable_so_maxpacket_musb_qh_4303 maxpacket musb_qh 0 4303 NULL nohasharray -+enable_so_key_size_pkcs1pad_ctx_4303 key_size pkcs1pad_ctx 0 4303 &enable_so_maxpacket_musb_qh_4303 nohasharray -+enable_so____copy_to_user_fndecl_4303 ___copy_to_user fndecl 0 4303 &enable_so_key_size_pkcs1pad_ctx_4303 ++enable_so_key_size_pkcs1pad_ctx_4303 key_size pkcs1pad_ctx 0 4303 &enable_so_maxpacket_musb_qh_4303 +enable_so_rx_frm_len_mask_macb_4310 rx_frm_len_mask macb 0 4310 NULL +enable_so_raid56_alloc_missing_rbio_fndecl_4316 raid56_alloc_missing_rbio fndecl 4 4316 NULL +enable_so_ps_upsd_max_apturn_read_fndecl_4317 ps_upsd_max_apturn_read fndecl 3 4317 NULL @@ -186505,11 +186950,12 @@ index 0000000..56d8f55 +enable_so_diReadSpecial_fndecl_4393 diReadSpecial fndecl 2 4393 NULL +enable_so_ivtv_udma_setup_fndecl_4395 ivtv_udma_setup fndecl 4 4395 NULL +enable_so_mgag200_bo_create_fndecl_4398 mgag200_bo_create fndecl 2 4398 NULL -+enable_so_skb_realloc_headroom_fndecl_4399 skb_realloc_headroom fndecl 2 4399 NULL ++enable_so_skb_realloc_headroom_fndecl_4399 skb_realloc_headroom fndecl 2 4399 NULL nohasharray ++enable_so_ath10k_mem_value_write_fndecl_4399 ath10k_mem_value_write fndecl 3 4399 &enable_so_skb_realloc_headroom_fndecl_4399 +enable_so_leadin_ignore_xpnet_message_4402 leadin_ignore xpnet_message 0 4402 NULL nohasharray +enable_so_segment_length_sbp_page_table_entry_4402 segment_length sbp_page_table_entry 0 4402 &enable_so_leadin_ignore_xpnet_message_4402 +enable_so_page_ofs__ntfs_inode_4407 page_ofs _ntfs_inode 0 4407 NULL -+enable_so_pxad_prep_dma_cyclic_fndecl_4411 pxad_prep_dma_cyclic fndecl 3-4 4411 NULL ++enable_so_pxad_prep_dma_cyclic_fndecl_4411 pxad_prep_dma_cyclic fndecl 4-3 4411 NULL +enable_so_new_bytenr_backref_node_4416 new_bytenr backref_node 0 4416 NULL +enable_so___alloc_block_fndecl_4419 __alloc_block fndecl 2 4419 NULL nohasharray +enable_so_nfc_llcp_build_tlv_fndecl_4419 nfc_llcp_build_tlv fndecl 3 4419 &enable_so___alloc_block_fndecl_4419 @@ -186549,7 +186995,6 @@ index 0000000..56d8f55 +enable_so_nr_chans_solo_dev_4552 nr_chans solo_dev 0 4552 NULL +enable_so_data_len_o2net_msg_4553 data_len o2net_msg 0 4553 NULL +enable_so_acpi_read_slow_fndecl_4554 acpi_read_slow fndecl 3-2 4554 NULL -+enable_so_size_pcf8584_tblprop_4558 size pcf8584_tblprop 0 4558 NULL +enable_so_hwcursor_size_sis_video_info_4560 hwcursor_size sis_video_info 0 4560 NULL +enable_so_channels_snd_korg1212_4562 channels snd_korg1212 0 4562 NULL +enable_so_usbvision_rvmalloc_fndecl_4564 usbvision_rvmalloc fndecl 1 4564 NULL @@ -186681,6 +187126,7 @@ index 0000000..56d8f55 +enable_so_read_tape_fndecl_4950 read_tape fndecl 2 4950 &enable_so_mlx5_ib_db_map_user_fndecl_4950 +enable_so_clear_extent_uptodate_fndecl_4952 clear_extent_uptodate fndecl 2-3 4952 NULL +enable_so_myri10ge_get_txrx_fndecl_4953 myri10ge_get_txrx fndecl 2 4953 NULL ++enable_so_aat2870_reg_write_file_fndecl_4965 aat2870_reg_write_file fndecl 3 4965 NULL +enable_so_fuse_conn_limit_read_fndecl_4967 fuse_conn_limit_read fndecl 3 4967 NULL +enable_so_team_options_register_fndecl_4968 team_options_register fndecl 3 4968 NULL +enable_so_radeon_align_pitch_fndecl_4969 radeon_align_pitch fndecl 0-2 4969 NULL @@ -186843,6 +187289,7 @@ index 0000000..56d8f55 +enable_so_size_drm_radeon_gem_create_5440 size drm_radeon_gem_create 0 5440 NULL +enable_so_vlen_nfsd_writeargs_5461 vlen nfsd_writeargs 0 5461 NULL +enable_so_btrfs_fiemap_fndecl_5462 btrfs_fiemap fndecl 4-3 5462 NULL ++enable_so_num_stations_il_priv_5465 num_stations il_priv 0 5465 NULL +enable_so_acpi_register_gsi_ioapic_fndecl_5477 acpi_register_gsi_ioapic fndecl 2 5477 NULL +enable_so_max_pkeys_mthca_dev_lim_5481 max_pkeys mthca_dev_lim 0 5481 NULL +enable_so_efs_find_entry_fndecl_5485 efs_find_entry fndecl 0 5485 NULL @@ -186855,6 +187302,7 @@ index 0000000..56d8f55 +enable_so_pn_socket_create_fndecl_5510 pn_socket_create fndecl 3 5510 &enable_so___tipc_sendmsg_fndecl_5510 +enable_so_vmw_execbuf_submit_cmdbuf_fndecl_5516 vmw_execbuf_submit_cmdbuf fndecl 3 5516 NULL +enable_so_nsrcs_igmpv3_query_5520 nsrcs igmpv3_query 0 5520 NULL ++enable_so_wiidebug_eeprom_read_fndecl_5523 wiidebug_eeprom_read fndecl 3 5523 NULL +enable_so_smk_write_rules_list_fndecl_5526 smk_write_rules_list fndecl 3 5526 NULL +enable_so_line_slgt_info_5527 line slgt_info 0 5527 NULL +enable_so_ceph_tcp_sendpage_fndecl_5531 ceph_tcp_sendpage fndecl 0-4 5531 NULL @@ -187110,6 +187558,8 @@ index 0000000..56d8f55 +enable_so__snd_pcm_lib_alloc_vmalloc_buffer_fndecl_6287 _snd_pcm_lib_alloc_vmalloc_buffer fndecl 2 6287 NULL +enable_so_hOver_plus_panel_info_6297 hOver_plus panel_info 0 6297 NULL +enable_so_lpuart_copy_rx_to_tty_fndecl_6298 lpuart_copy_rx_to_tty fndecl 3 6298 NULL ++enable_so__iwl_dbgfs_set_nic_temperature_write_fndecl_6303 _iwl_dbgfs_set_nic_temperature_write fndecl 3 6303 NULL ++enable_so_count_leafs_fndecl_6305 count_leafs fndecl 0 6305 NULL +enable_so_iin_wMaxPacketSize_usbtmc_device_data_6306 iin_wMaxPacketSize usbtmc_device_data 0 6306 NULL +enable_so_sn9c2028_command_fndecl_6307 sn9c2028_command fndecl 0 6307 NULL +enable_so_em28xx_audio_ep_packet_size_fndecl_6311 em28xx_audio_ep_packet_size fndecl 0 6311 NULL @@ -187156,6 +187606,7 @@ index 0000000..56d8f55 +enable_so_max_agbno_xfs_alloc_arg_6395 max_agbno xfs_alloc_arg 0 6395 NULL nohasharray +enable_so_totalreserve_pages_vardecl_6395 totalreserve_pages vardecl 0 6395 &enable_so_max_agbno_xfs_alloc_arg_6395 +enable_so_i_file_acl_ext2_inode_info_6396 i_file_acl ext2_inode_info 0 6396 NULL ++enable_so_lpfc_debugfs_dif_err_write_fndecl_6403 lpfc_debugfs_dif_err_write fndecl 3 6403 NULL +enable_so_srpt_post_send_fndecl_6405 srpt_post_send fndecl 3 6405 NULL nohasharray +enable_so_compat_sys_ppoll_fndecl_6405 compat_sys_ppoll fndecl 2 6405 &enable_so_srpt_post_send_fndecl_6405 +enable_so_alloc_blocks_hfs_inode_info_6406 alloc_blocks hfs_inode_info 0 6406 NULL @@ -187170,7 +187621,6 @@ index 0000000..56d8f55 +enable_so_parse_dcb20_entry_fndecl_6440 parse_dcb20_entry fndecl 3 6440 NULL +enable_so_user_base_qib_mregion_6443 user_base qib_mregion 0 6443 NULL +enable_so_nvme_iod_alloc_size_fndecl_6444 nvme_iod_alloc_size fndecl 2-3-0 6444 NULL -+enable_so_i40iw_qp_roundup_fndecl_6447 i40iw_qp_roundup fndecl 1-0 6447 NULL +enable_so_max_packet_sz_tx_musb_hw_ep_6448 max_packet_sz_tx musb_hw_ep 0 6448 NULL +enable_so_snd_hammerfall_get_buffer_fndecl_6450 snd_hammerfall_get_buffer fndecl 3 6450 NULL +enable_so_qib_init_pportdata_fndecl_6452 qib_init_pportdata fndecl 4 6452 NULL @@ -187208,6 +187658,7 @@ index 0000000..56d8f55 +enable_so_active_duplex_tg3_link_config_6559 active_duplex tg3_link_config 0 6559 NULL +enable_so_verity_verify_io_fndecl_6564 verity_verify_io fndecl 0 6564 NULL +enable_so_vlan_tpid_ovs_action_push_vlan_6565 vlan_tpid ovs_action_push_vlan 0 6565 NULL ++enable_so_num_x_edt_ft5x06_ts_data_6566 num_x edt_ft5x06_ts_data 0 6566 NULL +enable_so_sddr09_read21_fndecl_6568 sddr09_read21 fndecl 4-3-6 6568 NULL nohasharray +enable_so_neigh_hash_alloc_fndecl_6568 neigh_hash_alloc fndecl 1 6568 &enable_so_sddr09_read21_fndecl_6568 +enable_so_acpi_ut_create_package_object_fndecl_6569 acpi_ut_create_package_object fndecl 1 6569 NULL @@ -187272,6 +187723,7 @@ index 0000000..56d8f55 +enable_so_iova_mlx5_core_mr_6733 iova mlx5_core_mr 0 6733 NULL +enable_so_pagesize_sddr09_card_info_6735 pagesize sddr09_card_info 0 6735 NULL +enable_so_gnttab_alloc_grant_references_fndecl_6739 gnttab_alloc_grant_references fndecl 1 6739 NULL ++enable_so_alloc_trace_uprobe_fndecl_6740 alloc_trace_uprobe fndecl 3 6740 NULL +enable_so_num_vectors_qed_int_param_6741 num_vectors qed_int_param 0 6741 NULL +enable_so__read_and_match_data_map_fndecl_6747 _read_and_match_data_map fndecl 2 6747 NULL +enable_so_rfcomm_sock_setsockopt_fndecl_6749 rfcomm_sock_setsockopt fndecl 5 6749 NULL @@ -187353,6 +187805,7 @@ index 0000000..56d8f55 +enable_so_af9013_write_ofsm_regs_fndecl_6965 af9013_write_ofsm_regs fndecl 4 6965 NULL +enable_so_ufs_free_blocks_fndecl_6968 ufs_free_blocks fndecl 3-2 6968 NULL nohasharray +enable_so_tlv_put_u64_fndecl_6968 tlv_put_u64 fndecl 0 6968 &enable_so_ufs_free_blocks_fndecl_6968 ++enable_so_mwifiex_verext_write_fndecl_6972 mwifiex_verext_write fndecl 3 6972 NULL +enable_so_odm_group_width_pnfs_osd_data_map_6977 odm_group_width pnfs_osd_data_map 0 6977 NULL +enable_so_mq_msg_max_ipc_namespace_6978 mq_msg_max ipc_namespace 0 6978 NULL +enable_so_pvr2_v4l2_read_fndecl_6981 pvr2_v4l2_read fndecl 3 6981 NULL @@ -187448,6 +187901,7 @@ index 0000000..56d8f55 +enable_so_drbd_drain_block_fndecl_7210 drbd_drain_block fndecl 2 7210 &enable_so_size_srp_iu_7210 +enable_so_rivafb_do_maximize_fndecl_7212 rivafb_do_maximize fndecl 3-4 7212 NULL nohasharray +enable_so_eq_ecount_lpfc_sli4_hba_7212 eq_ecount lpfc_sli4_hba 0 7212 &enable_so_rivafb_do_maximize_fndecl_7212 ++enable_so__iwl_dbgfs_bt_force_ant_write_fndecl_7214 _iwl_dbgfs_bt_force_ant_write fndecl 3 7214 NULL +enable_so_max_id_Scsi_Host_7217 max_id Scsi_Host 0 7217 NULL +enable_so_num_chipselect_spi_gpio_platform_data_7218 num_chipselect spi_gpio_platform_data 0 7218 NULL +enable_so_bfad_iocmd_qos_get_attr_fndecl_7226 bfad_iocmd_qos_get_attr fndecl 0 7226 NULL @@ -187591,6 +188045,7 @@ index 0000000..56d8f55 +enable_so_compat_SyS_migrate_pages_fndecl_7673 compat_SyS_migrate_pages fndecl 2 7673 NULL +enable_so_rds_sendmsg_fndecl_7675 rds_sendmsg fndecl 3 7675 NULL +enable_so_nfsd_max_blksize_vardecl_7678 nfsd_max_blksize vardecl 0 7678 NULL ++enable_so_nfp_net_shadow_rx_rings_prepare_fndecl_7679 nfp_net_shadow_rx_rings_prepare fndecl 3 7679 NULL +enable_so_shmem_read_mapping_page_gfp_fndecl_7681 shmem_read_mapping_page_gfp fndecl 2 7681 NULL +enable_so_UniStrnlen_fndecl_7682 UniStrnlen fndecl 0 7682 NULL +enable_so_pm860x_page_bulk_read_fndecl_7685 pm860x_page_bulk_read fndecl 3 7685 NULL nohasharray @@ -187638,6 +188093,7 @@ index 0000000..56d8f55 +enable_so_st_do_scsi_fndecl_7789 st_do_scsi fndecl 4 7789 NULL +enable_so_qxl_framebuffer_surface_dirty_fndecl_7791 qxl_framebuffer_surface_dirty fndecl 6 7791 NULL nohasharray +enable_so_pg_read_fndecl_7791 pg_read fndecl 3 7791 &enable_so_qxl_framebuffer_surface_dirty_fndecl_7791 ++enable_so_sysctl_perf_event_max_stack_vardecl_7792 sysctl_perf_event_max_stack vardecl 0 7792 NULL +enable_so_inode_getblk_fndecl_7794 inode_getblk fndecl 2-0 7794 NULL +enable_so___clk_speculate_rates_fndecl_7795 __clk_speculate_rates fndecl 2 7795 NULL +enable_so_remove_advertising_fndecl_7798 remove_advertising fndecl 4 7798 NULL @@ -187828,6 +188284,7 @@ index 0000000..56d8f55 +enable_so_wNdpOutPayloadRemainder_usb_cdc_ncm_ntb_parameters_8415 wNdpOutPayloadRemainder usb_cdc_ncm_ntb_parameters 0 8415 NULL +enable_so_ring_blocks_vxge_hw_ring_config_8417 ring_blocks vxge_hw_ring_config 0 8417 NULL nohasharray +enable_so_lbs_lowrssi_read_fndecl_8417 lbs_lowrssi_read fndecl 3 8417 &enable_so_ring_blocks_vxge_hw_ring_config_8417 ++enable_so_batadv_iv_ogm_drop_bcast_own_sum_entry_fndecl_8430 batadv_iv_ogm_drop_bcast_own_sum_entry fndecl 2 8430 NULL +enable_so_meson_clk_init_fndecl_8435 meson_clk_init fndecl 2 8435 NULL +enable_so_rtsx_pci_dma_transfer_fndecl_8439 rtsx_pci_dma_transfer fndecl 0 8439 NULL +enable_so_block_dm_buffer_8440 block dm_buffer 0 8440 NULL @@ -187964,7 +188421,8 @@ index 0000000..56d8f55 +enable_so_data_dma_powermate_device_8783 data_dma powermate_device 0 8783 NULL +enable_so_rx_tr_cfv_info_8786 rx_tr cfv_info 0 8786 NULL nohasharray +enable_so___pg_advance_sg_page_iter_8786 __pg_advance sg_page_iter 0 8786 &enable_so_rx_tr_cfv_info_8786 -+enable_so_nfs_setup_write_request_fndecl_8793 nfs_setup_write_request fndecl 3-4 8793 NULL ++enable_so_nfs_setup_write_request_fndecl_8793 nfs_setup_write_request fndecl 3-4 8793 NULL nohasharray ++enable_so_mem_swapout_entry_fndecl_8793 mem_swapout_entry fndecl 3 8793 &enable_so_nfs_setup_write_request_fndecl_8793 +enable_so_lcd_vblank_len_atyfb_par_8796 lcd_vblank_len atyfb_par 0 8796 NULL +enable_so_logic_start_scrub_parity_8798 logic_start scrub_parity 0 8798 NULL +enable_so_write_ext_msg_fndecl_8804 write_ext_msg fndecl 3 8804 NULL @@ -187981,7 +188439,6 @@ index 0000000..56d8f55 +enable_so_vsync_len_videomode_8830 vsync_len videomode 0 8830 NULL +enable_so_response_length_mlx5_ib_alloc_ucontext_resp_8839 response_length mlx5_ib_alloc_ucontext_resp 0 8839 NULL +enable_so_wm5110_set_fll_fndecl_8841 wm5110_set_fll fndecl 5 8841 NULL -+enable_so_rel_pd_idx_sd_pd_idx_8842 rel_pd_idx sd_pd_idx 0 8842 NULL +enable_so_iscsi_tcp_segment_recv_fndecl_8845 iscsi_tcp_segment_recv fndecl 4-0 8845 NULL +enable_so_max_packet_size_ftdi_private_8847 max_packet_size ftdi_private 0 8847 NULL +enable_so_ibufsize_sisusb_usb_data_8851 ibufsize sisusb_usb_data 0 8851 NULL @@ -188004,6 +188461,7 @@ index 0000000..56d8f55 +enable_so_bits_per_pixel_fb_var_screeninfo_8906 bits_per_pixel fb_var_screeninfo 0 8906 &enable_so_a_data_exec_8906 +enable_so_fll_factors_fndecl_8907 fll_factors fndecl 2-3 8907 NULL +enable_so__xfs_buf_get_pages_fndecl_8920 _xfs_buf_get_pages fndecl 2 8920 NULL ++enable_so_rt2x00debug_read_queue_dump_fndecl_8923 rt2x00debug_read_queue_dump fndecl 3 8923 NULL +enable_so_data_size_mdp_superblock_1_8925 data_size mdp_superblock_1 0 8925 NULL nohasharray +enable_so_max_transfer_size_dwc2_core_params_8925 max_transfer_size dwc2_core_params 0 8925 &enable_so_data_size_mdp_superblock_1_8925 +enable_so_fip_flags_fip_header_8926 fip_flags fip_header 0 8926 NULL @@ -188167,6 +188625,7 @@ index 0000000..56d8f55 +enable_so_mss_clamp_tcp_options_received_9378 mss_clamp tcp_options_received 0 9378 NULL +enable_so_fix_priv_head_fndecl_9385 fix_priv_head fndecl 2 9385 NULL +enable_so_nr_uart_driver_9391 nr uart_driver 0 9391 NULL ++enable_so_dwc2_hsotg_handle_unaligned_buf_start_fndecl_9392 dwc2_hsotg_handle_unaligned_buf_start fndecl 0 9392 NULL +enable_so_dr_pre_altera_jtag_9393 dr_pre altera_jtag 0 9393 NULL +enable_so_ubifs_tnc_add_nm_fndecl_9397 ubifs_tnc_add_nm fndecl 4-5 9397 NULL +enable_so_sr_bg_blkno_ocfs2_suballoc_result_9401 sr_bg_blkno ocfs2_suballoc_result 0 9401 NULL @@ -188182,6 +188641,7 @@ index 0000000..56d8f55 +enable_so_dgap_config_get_num_prts_fndecl_9435 dgap_config_get_num_prts fndecl 0 9435 NULL +enable_so_ext4_restore_inline_data_fndecl_9436 ext4_restore_inline_data fndecl 5 9436 NULL +enable_so_height_stk1160_9446 height stk1160 0 9446 NULL ++enable_so__max_socket_vardecl_x2apic_uv_x_c_9456 _max_socket vardecl_x2apic_uv_x.c 0 9456 NULL +enable_so_evdev_get_mask_fndecl_9457 evdev_get_mask fndecl 4 9457 NULL +enable_so_mtdchar_readoob_fndecl_9459 mtdchar_readoob fndecl 4-3 9459 NULL +enable_so_si21_writeregs_fndecl_9460 si21_writeregs fndecl 4 9460 NULL @@ -188409,6 +188869,7 @@ index 0000000..56d8f55 +enable_so_em28xx_init_usb_xfer_fndecl_10106 em28xx_init_usb_xfer fndecl 5-6-4 10106 NULL +enable_so_finish_wqe_fndecl_10107 finish_wqe fndecl 3 10107 NULL nohasharray +enable_so__regmap_raw_multi_reg_write_fndecl_10107 _regmap_raw_multi_reg_write fndecl 3 10107 &enable_so_finish_wqe_fndecl_10107 ++enable_so_trace_parser_get_init_fndecl_10112 trace_parser_get_init fndecl 2 10112 NULL +enable_so_req_sz__MPT_ADAPTER_10113 req_sz _MPT_ADAPTER 0 10113 NULL +enable_so_tfms_count_crypt_config_10114 tfms_count crypt_config 0 10114 NULL +enable_so_uvc_video_encode_data_fndecl_10117 uvc_video_encode_data fndecl 0-4 10117 NULL nohasharray @@ -188520,6 +188981,7 @@ index 0000000..56d8f55 +enable_so_num_vss_cfgs_wm8994_pdata_10405 num_vss_cfgs wm8994_pdata 0 10405 &enable_so__osd_req_sizeof_alist_header_fndecl_10405 +enable_so_zap_vma_ptes_fndecl_10406 zap_vma_ptes fndecl 3-2 10406 NULL +enable_so_u_memcpya_fndecl_10408 u_memcpya fndecl 2-3 10408 NULL ++enable_so_jfs_xattr_set_fndecl_10409 jfs_xattr_set fndecl 6 10409 NULL +enable_so_addr_page_req_dsc_10411 addr page_req_dsc 0 10411 NULL +enable_so_off_xtsplit_10412 off xtsplit 0 10412 NULL +enable_so_max_ctrl_size_ims_pcu_10413 max_ctrl_size ims_pcu 0 10413 NULL @@ -188568,7 +189030,8 @@ index 0000000..56d8f55 +enable_so_xen_set_callback_via_fndecl_10541 xen_set_callback_via fndecl 1 10541 NULL +enable_so_y_skip_top_mt9m001_10547 y_skip_top mt9m001 0 10547 NULL nohasharray +enable_so_isofs_get_last_session_fndecl_10547 isofs_get_last_session fndecl 0 10547 &enable_so_y_skip_top_mt9m001_10547 -+enable_so_read_cis_cache_fndecl_10548 read_cis_cache fndecl 4 10548 NULL ++enable_so_read_cis_cache_fndecl_10548 read_cis_cache fndecl 4 10548 NULL nohasharray ++enable_so_nfp_net_netdev_alloc_fndecl_10548 nfp_net_netdev_alloc fndecl 2-3 10548 &enable_so_read_cis_cache_fndecl_10548 +enable_so_nv_change_mtu_fndecl_10551 nv_change_mtu fndecl 2 10551 NULL +enable_so_wm_adsp_read_algs_fndecl_10552 wm_adsp_read_algs fndecl 4 10552 NULL +enable_so_new_leaf_fndecl_10553 new_leaf fndecl 3 10553 NULL @@ -188657,7 +189120,8 @@ index 0000000..56d8f55 +enable_so_iptunnel_xmit_fndecl_10787 iptunnel_xmit fndecl 6 10787 NULL +enable_so_soc_camera_calc_client_output_fndecl_10789 soc_camera_calc_client_output fndecl 6 10789 NULL +enable_so_pnode_sz_ubifs_info_10791 pnode_sz ubifs_info 0 10791 NULL nohasharray -+enable_so_ea_write_fndecl_10791 ea_write fndecl 3 10791 &enable_so_pnode_sz_ubifs_info_10791 ++enable_so_ea_write_fndecl_10791 ea_write fndecl 3 10791 &enable_so_pnode_sz_ubifs_info_10791 nohasharray ++enable_so_dwc3_testmode_write_fndecl_10791 dwc3_testmode_write fndecl 3 10791 &enable_so_ea_write_fndecl_10791 +enable_so_read32_brcmf_buscore_ops_10795 read32 brcmf_buscore_ops 0 10795 NULL +enable_so_set_config_fndecl_10797 set_config fndecl 0 10797 NULL +enable_so_num_events_kfd_ioctl_wait_events_args_10811 num_events kfd_ioctl_wait_events_args 0 10811 NULL nohasharray @@ -188807,6 +189271,7 @@ index 0000000..56d8f55 +enable_so_nr_pins_timbgpio_platform_data_11195 nr_pins timbgpio_platform_data 0 11195 NULL +enable_so_mangle_sdp_packet_fndecl_11198 mangle_sdp_packet fndecl 2-10 11198 NULL +enable_so_snoop_send_pio_handler_fndecl_11203 snoop_send_pio_handler fndecl 3 11203 NULL ++enable_so_trace_insert_enum_map_fndecl_11206 trace_insert_enum_map fndecl 3 11206 NULL +enable_so_vb2_fop_write_fndecl_11207 vb2_fop_write fndecl 3 11207 NULL +enable_so_wipers_mcp4531_cfg_11208 wipers mcp4531_cfg 0 11208 NULL +enable_so_used_bytes_ubi_volume_info_11209 used_bytes ubi_volume_info 0 11209 NULL @@ -188871,6 +189336,7 @@ index 0000000..56d8f55 +enable_so_rxBytesRemaining_edgeport_serial_11436 rxBytesRemaining edgeport_serial 0 11436 NULL nohasharray +enable_so_rule_cnt_ethtool_rxnfc_11436 rule_cnt ethtool_rxnfc 0 11436 &enable_so_rxBytesRemaining_edgeport_serial_11436 +enable_so_acpi_node_prop_read_fndecl_11442 acpi_node_prop_read fndecl 0 11442 NULL ++enable_so_iwl_dbgfs_log_event_write_fndecl_11443 iwl_dbgfs_log_event_write fndecl 3 11443 NULL +enable_so_llsec_do_decrypt_auth_fndecl_11445 llsec_do_decrypt_auth fndecl 0 11445 NULL +enable_so_ccp_init_dm_workarea_fndecl_11450 ccp_init_dm_workarea fndecl 3 11450 NULL +enable_so___compat_sys_preadv64_fndecl_11452 __compat_sys_preadv64 fndecl 3 11452 NULL @@ -188887,6 +189353,7 @@ index 0000000..56d8f55 +enable_so_c_cpos_ocfs2_write_cluster_desc_11481 c_cpos ocfs2_write_cluster_desc 0 11481 &enable_so_iov_shorten_fndecl_11481 +enable_so_num_crtc_drm_mode_config_11484 num_crtc drm_mode_config 0 11484 NULL +enable_so_count_e1000_ring_11491 count e1000_ring 0 11491 NULL ++enable_so__max_pnode_vardecl_x2apic_uv_x_c_11492 _max_pnode vardecl_x2apic_uv_x.c 0 11492 NULL +enable_so_get_ablock_fndecl_11495 get_ablock fndecl 2 11495 NULL nohasharray +enable_so_length_RioCommand_11495 length RioCommand 0 11495 &enable_so_get_ablock_fndecl_11495 +enable_so_batadv_max_header_len_fndecl_11496 batadv_max_header_len fndecl 0 11496 NULL @@ -188970,6 +189437,7 @@ index 0000000..56d8f55 +enable_so_num_mtt_mthca_profile_11767 num_mtt mthca_profile 0 11767 NULL +enable_so_length_acpi_dmar_header_11768 length acpi_dmar_header 0 11768 NULL +enable_so_grow_buffers_fndecl_11774 grow_buffers fndecl 3-2 11774 NULL ++enable_so_num_fences_sync_file_11779 num_fences sync_file 0 11779 NULL +enable_so_pci_scan_child_bus_fndecl_11784 pci_scan_child_bus fndecl 0 11784 NULL +enable_so_svc_pool_map_init_percpu_fndecl_11792 svc_pool_map_init_percpu fndecl 0 11792 NULL nohasharray +enable_so_iscsi_sw_tcp_session_create_fndecl_11792 iscsi_sw_tcp_session_create fndecl 3 11792 &enable_so_svc_pool_map_init_percpu_fndecl_11792 @@ -188983,17 +189451,18 @@ index 0000000..56d8f55 +enable_so_SyS_flistxattr_fndecl_11825 SyS_flistxattr fndecl 3 11825 NULL +enable_so_bufflen_alua_dh_data_11826 bufflen alua_dh_data 0 11826 NULL +enable_so_be_change_mtu_fndecl_11828 be_change_mtu fndecl 2 11828 NULL -+enable_so_acpi_allocate_root_table_fndecl_11829 acpi_allocate_root_table fndecl 1 11829 NULL ++enable_so_acpi_allocate_root_table_fndecl_11829 acpi_allocate_root_table fndecl 1 11829 NULL nohasharray ++enable_so_do_register_entry_fndecl_11829 do_register_entry fndecl 4 11829 &enable_so_acpi_allocate_root_table_fndecl_11829 +enable_so_length_TAG_TW_SG_Entry_ISO_11846 length TAG_TW_SG_Entry_ISO 0 11846 NULL +enable_so_mic_vringh_copy_fndecl_11848 mic_vringh_copy fndecl 4 11848 NULL +enable_so_num_crtc_mga_device_11851 num_crtc mga_device 0 11851 NULL +enable_so_number_of_packets_urb_11853 number_of_packets urb 0 11853 NULL nohasharray +enable_so_add_to_page_cache_lru_fndecl_11853 add_to_page_cache_lru fndecl 0 11853 &enable_so_number_of_packets_urb_11853 +enable_so_sg_tablesize_srp_target_port_11858 sg_tablesize srp_target_port 0 11858 NULL ++enable_so_btmrvl_pscmd_write_fndecl_11859 btmrvl_pscmd_write fndecl 3 11859 NULL +enable_so_frame_rate_sd_11862 frame_rate sd 0 11862 NULL +enable_so_s_nsegments_nilfs_super_block_11865 s_nsegments nilfs_super_block 0 11865 NULL +enable_so_wr_host_buf_pos_xilly_channel_11866 wr_host_buf_pos xilly_channel 0 11866 NULL -+enable_so_qcache_active_peers_ath10k_hw_params_11868 qcache_active_peers ath10k_hw_params 0 11868 NULL +enable_so_heads_ssfdcr_record_11869 heads ssfdcr_record 0 11869 NULL +enable_so_u8ssidlen_hidden_net_info_11872 u8ssidlen hidden_net_info 0 11872 NULL +enable_so_domain_child_num_acl_role_label_11875 domain_child_num acl_role_label 0 11875 NULL @@ -189014,7 +189483,6 @@ index 0000000..56d8f55 +enable_so_iwl_dbgfs_missed_beacon_write_fndecl_11905 iwl_dbgfs_missed_beacon_write fndecl 3 11905 NULL +enable_so_num_dma_mlx5e_tx_skb_cb_11911 num_dma mlx5e_tx_skb_cb 0 11911 NULL nohasharray +enable_so_snd_device_new_fndecl_11911 snd_device_new fndecl 0 11911 &enable_so_num_dma_mlx5e_tx_skb_cb_11911 -+enable_so_x___una_u32_11914 x __una_u32 0 11914 NULL +enable_so_dio_set_defer_completion_fndecl_11916 dio_set_defer_completion fndecl 0 11916 NULL +enable_so_residual_length_atto_vda_scsi_rsp_11918 residual_length atto_vda_scsi_rsp 0 11918 NULL +enable_so_lbs_lowsnr_read_fndecl_11920 lbs_lowsnr_read fndecl 3 11920 NULL @@ -189121,6 +189589,7 @@ index 0000000..56d8f55 +enable_so_alignment_acpi_resource_memory24_12188 alignment acpi_resource_memory24 0 12188 NULL +enable_so_max_qp_sz_mlx4_dev_cap_12189 max_qp_sz mlx4_dev_cap 0 12189 NULL +enable_so_lpfc_bsg_diag_mode_enter_fndecl_12200 lpfc_bsg_diag_mode_enter fndecl 0 12200 NULL ++enable_so_alloc_and_copy_ftrace_hash_fndecl_12203 alloc_and_copy_ftrace_hash fndecl 1 12203 NULL +enable_so_handle_gk20a_instobj_dma_12206 handle gk20a_instobj_dma 0 12206 NULL +enable_so_lmc_crcSize_lmc___softc_12208 lmc_crcSize lmc___softc 0 12208 NULL +enable_so_length_cifs_io_parms_12209 length cifs_io_parms 0 12209 NULL nohasharray @@ -189148,15 +189617,16 @@ index 0000000..56d8f55 +enable_so_size_btrfs_ioctl_logical_ino_args_12299 size btrfs_ioctl_logical_ino_args 0 12299 NULL +enable_so_max_y_fb_monspecs_12303 max_y fb_monspecs 0 12303 NULL +enable_so_nb_blocks_NFTLrecord_12306 nb_blocks NFTLrecord 0 12306 NULL -+enable_so_offset_pcf8584_tblprop_12311 offset pcf8584_tblprop 0 12311 NULL +enable_so_hr_blocks_o2hb_region_12318 hr_blocks o2hb_region 0 12318 NULL nohasharray +enable_so_mthca_max_data_size_fndecl_12318 mthca_max_data_size fndecl 0-3 12318 &enable_so_hr_blocks_o2hb_region_12318 +enable_so_length_sg_mapping_iter_12324 length sg_mapping_iter 0 12324 NULL nohasharray +enable_so_sctp_make_abort_violation_fndecl_12324 sctp_make_abort_violation fndecl 4 12324 &enable_so_length_sg_mapping_iter_12324 +enable_so_ubifs_change_lp_fndecl_12325 ubifs_change_lp fndecl 3 12325 NULL +enable_so_no_of_triplet_mwifiex_802_11d_domain_reg_12326 no_of_triplet mwifiex_802_11d_domain_reg 0 12326 NULL ++enable_so_tracing_clock_write_fndecl_12330 tracing_clock_write fndecl 3 12330 NULL +enable_so_s_log_block_size_nilfs_super_block_12332 s_log_block_size nilfs_super_block 0 12332 NULL -+enable_so_read_regr_pi_protocol_12333 read_regr pi_protocol 0 12333 NULL ++enable_so_read_regr_pi_protocol_12333 read_regr pi_protocol 0 12333 NULL nohasharray ++enable_so_srpt_alloc_rw_ctxs_fndecl_12333 srpt_alloc_rw_ctxs fndecl 3 12333 &enable_so_read_regr_pi_protocol_12333 +enable_so_status_w840_rx_desc_12335 status w840_rx_desc 0 12335 NULL nohasharray +enable_so_snd_hdac_bus_exec_verb_unlocked_fndecl_12335 snd_hdac_bus_exec_verb_unlocked fndecl 0 12335 &enable_so_status_w840_rx_desc_12335 +enable_so_out_usbnet_12337 out usbnet 0 12337 NULL @@ -189189,6 +189659,7 @@ index 0000000..56d8f55 +enable_so_buffer_size_zoran_buffer_col_12398 buffer_size zoran_buffer_col 0 12398 NULL +enable_so_powercap_register_zone_fndecl_12399 powercap_register_zone fndecl 6 12399 NULL +enable_so_ieee802154_alloc_hw_fndecl_12400 ieee802154_alloc_hw fndecl 1 12400 NULL ++enable_so_edt_ft5x06_debugfs_raw_data_read_fndecl_12401 edt_ft5x06_debugfs_raw_data_read fndecl 3 12401 NULL +enable_so_acl_len_nfs_setaclargs_12402 acl_len nfs_setaclargs 0 12402 NULL +enable_so_length_iw_point_12404 length iw_point 0 12404 NULL +enable_so_reg_read_fndecl_12405 reg_read fndecl 4 12405 NULL @@ -189305,7 +189776,7 @@ index 0000000..56d8f55 +enable_so_fld_debugfs_hash_seq_write_fndecl_12713 fld_debugfs_hash_seq_write fndecl 3 12713 &enable_so_mdio_phys_octeon_mdiobus_12713 +enable_so_total_len_ocrdma_hdr_wqe_12714 total_len ocrdma_hdr_wqe 0 12714 NULL nohasharray +enable_so_sys_listxattr_fndecl_12714 sys_listxattr fndecl 3 12714 &enable_so_total_len_ocrdma_hdr_wqe_12714 -+enable_so_dmm_read_fndecl_12716 dmm_read fndecl 0 12716 NULL ++enable_so_rdma_rw_init_mr_wrs_fndecl_12719 rdma_rw_init_mr_wrs fndecl 5 12719 NULL +enable_so_ss_in_channels_hdsp_12726 ss_in_channels hdsp 0 12726 NULL +enable_so_start_brk_prctl_mm_map_12729 start_brk prctl_mm_map 0 12729 NULL +enable_so_btrfs_truncate_item_fndecl_12731 btrfs_truncate_item fndecl 3 12731 NULL @@ -189323,6 +189794,7 @@ index 0000000..56d8f55 +enable_so_sb_fseg_start_nilfs_segment_buffer_12802 sb_fseg_start nilfs_segment_buffer 0 12802 NULL +enable_so_mpage_readpages_fndecl_12807 mpage_readpages fndecl 3 12807 NULL +enable_so_object_num_mxt_info_12810 object_num mxt_info 0 12810 NULL ++enable_so_testmode_write_fndecl_12814 testmode_write fndecl 3 12814 NULL +enable_so_hint_events_per_packet_input_dev_12818 hint_events_per_packet input_dev 0 12818 NULL nohasharray +enable_so_subdev_ioctl_fndecl_12818 subdev_ioctl fndecl 2 12818 &enable_so_hint_events_per_packet_input_dev_12818 +enable_so_xen_pirq_from_irq_fndecl_12820 xen_pirq_from_irq fndecl 0 12820 NULL @@ -189331,6 +189803,7 @@ index 0000000..56d8f55 +enable_so_falcon_spi_device_init_fndecl_12835 falcon_spi_device_init fndecl 4 12835 NULL +enable_so_xfs_rtfind_back_fndecl_12849 xfs_rtfind_back fndecl 3 12849 NULL +enable_so_sbs_setup_fndecl_12851 sbs_setup fndecl 4 12851 NULL ++enable_so_of_n_addr_cells_fndecl_12852 of_n_addr_cells fndecl 0 12852 NULL +enable_so_rx_buffer_size_macb_12864 rx_buffer_size macb 0 12864 NULL +enable_so_snd_interval_refine_max_fndecl_12865 snd_interval_refine_max fndecl 2 12865 NULL +enable_so_frameoffset_b43legacy_dmaring_12869 frameoffset b43legacy_dmaring 0 12869 NULL @@ -189344,6 +189817,7 @@ index 0000000..56d8f55 +enable_so_max_response_pages_fndecl_12895 max_response_pages fndecl 0 12895 NULL +enable_so_offset_ceph_dentry_info_12896 offset ceph_dentry_info 0 12896 NULL +enable_so_early_init_dt_alloc_memory_arch_fndecl_12899 early_init_dt_alloc_memory_arch fndecl 2-1 12899 NULL ++enable_so_dbgfs_sram_len_iwl_mvm_12900 dbgfs_sram_len iwl_mvm 0 12900 NULL +enable_so_tool_db_read_fndecl_12902 tool_db_read fndecl 3 12902 NULL +enable_so_ccw_cursor_fndecl_12903 ccw_cursor fndecl 4 12903 NULL +enable_so_capinc_tty_write_fndecl_12904 capinc_tty_write fndecl 3 12904 NULL @@ -189380,8 +189854,6 @@ index 0000000..56d8f55 +enable_so_clone_update_extent_map_fndecl_12984 clone_update_extent_map fndecl 4-5 12984 NULL nohasharray +enable_so_newwin_mad_rmpp_recv_12984 newwin mad_rmpp_recv 0 12984 &enable_so_clone_update_extent_map_fndecl_12984 +enable_so_num_outbound_streams_sctp_inithdr_12987 num_outbound_streams sctp_inithdr 0 12987 NULL -+enable_so_sync_fill_fence_info_fndecl_12989 sync_fill_fence_info fndecl 0 12989 NULL -+enable_so_sys_oabi_epoll_wait_fndecl_12992 sys_oabi_epoll_wait fndecl 3 12992 NULL +enable_so_rohm_i2c_burst_read_fndecl_12996 rohm_i2c_burst_read fndecl 4 12996 NULL +enable_so_xdr_reserve_space_fndecl_12997 xdr_reserve_space fndecl 2 12997 NULL +enable_so_end_file_extent_cluster_13001 end file_extent_cluster 0 13001 NULL @@ -189416,8 +189888,7 @@ index 0000000..56d8f55 +enable_so_hard_mtu_usbnet_13093 hard_mtu usbnet 0 13093 NULL nohasharray +enable_so_vrambase_sisusb_usb_data_13093 vrambase sisusb_usb_data 0 13093 &enable_so_hard_mtu_usbnet_13093 nohasharray +enable_so_cursg_ofs_ide_cmd_13093 cursg_ofs ide_cmd 0 13093 &enable_so_vrambase_sisusb_usb_data_13093 nohasharray -+enable_so_thermal_zone_device_register_fndecl_13093 thermal_zone_device_register fndecl 2 13093 &enable_so_cursg_ofs_ide_cmd_13093 nohasharray -+enable_so_ds_data_fndecl_13093 ds_data fndecl 3 13093 &enable_so_thermal_zone_device_register_fndecl_13093 ++enable_so_thermal_zone_device_register_fndecl_13093 thermal_zone_device_register fndecl 2 13093 &enable_so_cursg_ofs_ide_cmd_13093 +enable_so_set_wep_key_fndecl_13094 set_wep_key fndecl 4 13094 NULL +enable_so___exclude_logged_extent_fndecl_13095 __exclude_logged_extent fndecl 3-2 13095 NULL +enable_so_end_data_mm_struct_13099 end_data mm_struct 0 13099 NULL @@ -189445,6 +189916,7 @@ index 0000000..56d8f55 +enable_so_len_mtd_write_req_13154 len mtd_write_req 0 13154 NULL nohasharray +enable_so_EraseUnitSize_erase_unit_header_t_13154 EraseUnitSize erase_unit_header_t 0 13154 &enable_so_len_mtd_write_req_13154 +enable_so_num_pg_nvm_id_group_13160 num_pg nvm_id_group 0 13160 NULL ++enable_so_nr_possible_cpus_uv_hub_info_s_13164 nr_possible_cpus uv_hub_info_s 0 13164 NULL +enable_so_inline_xattr_size_fndecl_13166 inline_xattr_size fndecl 0 13166 NULL +enable_so_hpfs_add_to_dnode_fndecl_13167 hpfs_add_to_dnode fndecl 4-2 13167 NULL +enable_so_iproc_pll_clk_setup_fndecl_13179 iproc_pll_clk_setup fndecl 6 13179 NULL @@ -189570,6 +190042,7 @@ index 0000000..56d8f55 +enable_so_curchunk_len_drm_dp_sideband_msg_rx_13501 curchunk_len drm_dp_sideband_msg_rx 0 13501 NULL +enable_so_sendpage_proto_ops_13505 sendpage proto_ops 0 13505 NULL nohasharray +enable_so_hwtstamp_ioctl_fndecl_13505 hwtstamp_ioctl fndecl 0 13505 &enable_so_sendpage_proto_ops_13505 ++enable_so_btmrvl_hscmd_write_fndecl_13506 btmrvl_hscmd_write fndecl 3 13506 NULL +enable_so_scif_vreadfrom_fndecl_13516 scif_vreadfrom fndecl 4-3 13516 NULL +enable_so_max_channels_cmipci_13517 max_channels cmipci 0 13517 NULL nohasharray +enable_so_len_unix_address_13517 len unix_address 0 13517 &enable_so_max_channels_cmipci_13517 @@ -189592,7 +190065,7 @@ index 0000000..56d8f55 +enable_so_capture_periodsize_rme96_13564 capture_periodsize rme96 0 13564 NULL +enable_so_trusted_set_fndecl_13568 trusted_set fndecl 5 13568 NULL nohasharray +enable_so_init_currently_empty_zone_fndecl_13568 init_currently_empty_zone fndecl 2 13568 &enable_so_trusted_set_fndecl_13568 -+enable_so_edt_ft5x06_ts_readwrite_fndecl_13570 edt_ft5x06_ts_readwrite fndecl 2-4 13570 NULL ++enable_so_edt_ft5x06_ts_readwrite_fndecl_13570 edt_ft5x06_ts_readwrite fndecl 2-4-0 13570 NULL +enable_so_avc_tuner_dsd_dvb_t_fndecl_13571 avc_tuner_dsd_dvb_t fndecl 0 13571 NULL +enable_so_pitch_drm_mode_create_dumb_13574 pitch drm_mode_create_dumb 0 13574 NULL nohasharray +enable_so_amdtp_stream_get_max_payload_fndecl_13574 amdtp_stream_get_max_payload fndecl 0 13574 &enable_so_pitch_drm_mode_create_dumb_13574 @@ -189613,6 +190086,7 @@ index 0000000..56d8f55 +enable_so_size_sm501_mem_13611 size sm501_mem 0 13611 &enable_so_cipso_v4_map_cat_rbm_hton_fndecl_13611 +enable_so_nvoices_snd_seq_oss_reg_13613 nvoices snd_seq_oss_reg 0 13613 NULL +enable_so_us122l_start_fndecl_13617 us122l_start fndecl 2-3 13617 NULL ++enable_so_sysctl_perf_event_max_contexts_per_stack_vardecl_13620 sysctl_perf_event_max_contexts_per_stack vardecl 0 13620 NULL +enable_so_softback_top_vardecl_fbcon_c_13621 softback_top vardecl_fbcon.c 0 13621 NULL nohasharray +enable_so_mpt_entry_sz_mthca_dev_lim_13621 mpt_entry_sz mthca_dev_lim 0 13621 &enable_so_softback_top_vardecl_fbcon_c_13621 +enable_so_desc_size_efi_memory_map_13622 desc_size efi_memory_map 0 13622 NULL nohasharray @@ -189630,7 +190104,8 @@ index 0000000..56d8f55 +enable_so_totalsize_fdt_header_13649 totalsize fdt_header 0 13649 NULL +enable_so_unicast_mac_count_be_nic_res_desc_13650 unicast_mac_count be_nic_res_desc 0 13650 NULL +enable_so_page_len_xdr_buf_13652 page_len xdr_buf 0 13652 NULL -+enable_so_buffer_pos_vardecl_event_buffer_c_13658 buffer_pos vardecl_event_buffer.c 0 13658 NULL ++enable_so_buffer_pos_vardecl_event_buffer_c_13658 buffer_pos vardecl_event_buffer.c 0 13658 NULL nohasharray ++enable_so_lowpan_ctx_pfx_write_fndecl_13658 lowpan_ctx_pfx_write fndecl 3 13658 &enable_so_buffer_pos_vardecl_event_buffer_c_13658 +enable_so_width_s2255_vc_13661 width s2255_vc 0 13661 NULL +enable_so_fdt_node_offset_by_prop_value_fndecl_13670 fdt_node_offset_by_prop_value fndecl 2 13670 NULL +enable_so_qpn_ib_ucm_req_13672 qpn ib_ucm_req 0 13672 NULL @@ -189787,6 +190262,7 @@ index 0000000..56d8f55 +enable_so_phantom_major_vardecl_phantom_c_14093 phantom_major vardecl_phantom.c 0 14093 NULL +enable_so_snd_compr_calc_avail_fndecl_14094 snd_compr_calc_avail fndecl 0 14094 NULL +enable_so___ext4_handle_dirty_metadata_fndecl_14098 __ext4_handle_dirty_metadata fndecl 0 14098 NULL ++enable_so_btmrvl_hscfgcmd_write_fndecl_14100 btmrvl_hscfgcmd_write fndecl 3 14100 NULL +enable_so_data_len_vscsibk_pend_14106 data_len vscsibk_pend 0 14106 NULL +enable_so_gue_gro_remcsum_fndecl_14109 gue_gro_remcsum fndecl 5-2 14109 NULL nohasharray +enable_so_wil_write_file_wmi_fndecl_14109 wil_write_file_wmi fndecl 3 14109 &enable_so_gue_gro_remcsum_fndecl_14109 @@ -189808,7 +190284,8 @@ index 0000000..56d8f55 +enable_so_num_ratios_coreclk_soc_desc_14154 num_ratios coreclk_soc_desc 0 14154 &enable_so_write_kmem_fndecl_14154 +enable_so_range_min_regmap_range_node_14166 range_min regmap_range_node 0 14166 NULL +enable_so_ocfs2_read_blocks_sync_fndecl_14169 ocfs2_read_blocks_sync fndecl 2 14169 NULL -+enable_so_cmd_len_scsi_cmnd_14171 cmd_len scsi_cmnd 0 14171 NULL ++enable_so_cmd_len_scsi_cmnd_14171 cmd_len scsi_cmnd 0 14171 NULL nohasharray ++enable_so_nd_size_in_nd_cmd_pkg_14171 nd_size_in nd_cmd_pkg 0 14171 &enable_so_cmd_len_scsi_cmnd_14171 +enable_so_ath6kl_wmi_sync_point_fndecl_14172 ath6kl_wmi_sync_point fndecl 2 14172 NULL +enable_so_len_hermes_idstring_14173 len hermes_idstring 0 14173 NULL +enable_so_brcmf_usb_recv_ctl_fndecl_14174 brcmf_usb_recv_ctl fndecl 3 14174 NULL @@ -189985,7 +190462,8 @@ index 0000000..56d8f55 +enable_so_ep_usbip_header_basic_14659 ep usbip_header_basic 0 14659 NULL +enable_so_interval_solo_enc_dev_14661 interval solo_enc_dev 0 14661 NULL +enable_so___btrfs_qgroup_release_data_fndecl_14664 __btrfs_qgroup_release_data fndecl 2-3 14664 NULL -+enable_so_tty_copy_to_user_fndecl_14668 tty_copy_to_user fndecl 3-4 14668 NULL ++enable_so_tty_copy_to_user_fndecl_14668 tty_copy_to_user fndecl 3-4 14668 NULL nohasharray ++enable_so_mlx5_query_ports_check_fndecl_14668 mlx5_query_ports_check fndecl 3 14668 &enable_so_tty_copy_to_user_fndecl_14668 +enable_so_ext2_try_to_allocate_fndecl_14672 ext2_try_to_allocate fndecl 0-4 14672 NULL +enable_so_sg_tablesize_usb_bus_14673 sg_tablesize usb_bus 0 14673 NULL +enable_so_di_anextents_xfs_dinode_14674 di_anextents xfs_dinode 0 14674 NULL @@ -189993,6 +190471,7 @@ index 0000000..56d8f55 +enable_so_file_size_squashfs_reg_inode_14679 file_size squashfs_reg_inode 0 14679 NULL +enable_so_x86_virt_bits_cpuinfo_x86_14680 x86_virt_bits cpuinfo_x86 0 14680 NULL +enable_so_mtu_vnic_devcmd_notify_14682 mtu vnic_devcmd_notify 0 14682 NULL ++enable_so_lpfc_idiag_cmd_get_fndecl_14683 lpfc_idiag_cmd_get fndecl 2 14683 NULL +enable_so_rx_queue_entry_next_fndecl_14688 rx_queue_entry_next fndecl 0 14688 NULL nohasharray +enable_so_stream_sctp_datahdr_14688 stream sctp_datahdr 0 14688 &enable_so_rx_queue_entry_next_fndecl_14688 +enable_so_ibmasm_new_command_fndecl_14689 ibmasm_new_command fndecl 2 14689 NULL @@ -190143,6 +190622,7 @@ index 0000000..56d8f55 +enable_so_ia32_arch_ptrace_fndecl_15094 ia32_arch_ptrace fndecl 3 15094 &enable_so_cirrusfb_get_memsize_fndecl_15094 +enable_so_drm_mm_insert_node_in_range_generic_fndecl_15103 drm_mm_insert_node_in_range_generic fndecl 3 15103 NULL +enable_so_usbat_read_blocks_fndecl_15109 usbat_read_blocks fndecl 3-4 15109 NULL ++enable_so_SYSC_bpf_fndecl_15113 SYSC_bpf fndecl 3 15113 NULL +enable_so_split_nodes_size_interleave_fndecl_15116 split_nodes_size_interleave fndecl 3-4-5 15116 NULL +enable_so_ubifs_tnc_replace_fndecl_15122 ubifs_tnc_replace fndecl 7-6 15122 NULL +enable_so_read_sb_page_fndecl_15124 read_sb_page fndecl 5-4-2 15124 NULL @@ -190302,6 +190782,7 @@ index 0000000..56d8f55 +enable_so_wsize_p9_conn_15686 wsize p9_conn 0 15686 NULL +enable_so_total_bnx2x_sriov_15692 total bnx2x_sriov 0 15692 NULL +enable_so_num_bytes_sigmadsp_control_15699 num_bytes sigmadsp_control 0 15699 NULL ++enable_so_btrfs_test_extent_io_fndecl_15701 btrfs_test_extent_io fndecl 1 15701 NULL +enable_so_iov_len_kvec_15702 iov_len kvec 0 15702 NULL nohasharray +enable_so_context_alloc_fndecl_15702 context_alloc fndecl 3 15702 &enable_so_iov_len_kvec_15702 +enable_so_blk_rq_err_bytes_fndecl_15705 blk_rq_err_bytes fndecl 0 15705 NULL @@ -190326,6 +190807,7 @@ index 0000000..56d8f55 +enable_so_ip_tunnel_change_mtu_fndecl_15752 ip_tunnel_change_mtu fndecl 2 15752 NULL +enable_so_transfer_done_snd_usb_substream_15753 transfer_done snd_usb_substream 0 15753 NULL +enable_so_xres__sisbios_mode_15754 xres _sisbios_mode 0 15754 NULL ++enable_so_sockid_uv_gam_range_entry_15756 sockid uv_gam_range_entry 0 15756 NULL +enable_so_bfad_iocmd_ioc_reset_stats_fndecl_15763 bfad_iocmd_ioc_reset_stats fndecl 0 15763 NULL +enable_so_niu_change_mtu_fndecl_15765 niu_change_mtu fndecl 2 15765 NULL +enable_so_header_read_sd_15767 header_read sd 0 15767 NULL @@ -190365,6 +190847,7 @@ index 0000000..56d8f55 +enable_so_sb_set_blocksize_fndecl_15860 sb_set_blocksize fndecl 2-0 15860 NULL +enable_so_kvm_read_guest_virt_helper_fndecl_15863 kvm_read_guest_virt_helper fndecl 3-1 15863 NULL +enable_so_period_bytes_min_snd_pcm_hardware_15864 period_bytes_min snd_pcm_hardware 0 15864 NULL ++enable_so_SYSC_kexec_load_fndecl_15874 SYSC_kexec_load fndecl 2 15874 NULL +enable_so_mlx4_valid_vf_state_change_fndecl_15876 mlx4_valid_vf_state_change fndecl 5 15876 NULL nohasharray +enable_so_o2net_send_tcp_msg_fndecl_15876 o2net_send_tcp_msg fndecl 4-3 15876 &enable_so_mlx4_valid_vf_state_change_fndecl_15876 +enable_so_sel_read_mls_fndecl_15882 sel_read_mls fndecl 3 15882 NULL @@ -190477,6 +190960,7 @@ index 0000000..56d8f55 +enable_so_ks8851_rdreg32_fndecl_16240 ks8851_rdreg32 fndecl 0 16240 NULL +enable_so_len_wmi_p2p_rx_probe_req_event_16241 len wmi_p2p_rx_probe_req_event 0 16241 NULL +enable_so_used_count_pvr2_buffer_16246 used_count pvr2_buffer 0 16246 NULL ++enable_so_num_r_vecs_nfp_net_16247 num_r_vecs nfp_net 0 16247 NULL +enable_so_num_tbps___thermal_zone_16249 num_tbps __thermal_zone 0 16249 NULL +enable_so_nilfs_iget_locked_fndecl_16250 nilfs_iget_locked fndecl 3 16250 NULL +enable_so_offs_ubifs_scan_node_16253 offs ubifs_scan_node 0 16253 NULL @@ -190521,6 +191005,7 @@ index 0000000..56d8f55 +enable_so_set_pio_mode_fndecl_16395 set_pio_mode fndecl 2 16395 NULL nohasharray +enable_so_ip_options_get_alloc_fndecl_16395 ip_options_get_alloc fndecl 1 16395 &enable_so_set_pio_mode_fndecl_16395 nohasharray +enable_so_pci_map_page_fndecl_16395 pci_map_page fndecl 0 16395 &enable_so_ip_options_get_alloc_fndecl_16395 ++enable_so_rt2x00debug_read_queue_stats_fndecl_16396 rt2x00debug_read_queue_stats fndecl 3 16396 NULL +enable_so_SYSC_setgroups_fndecl_16397 SYSC_setgroups fndecl 1 16397 NULL +enable_so___logfs_seek_data_fndecl_16398 __logfs_seek_data fndecl 2-0 16398 NULL +enable_so_usbat_execute_command_fndecl_16400 usbat_execute_command fndecl 3 16400 NULL @@ -190531,7 +191016,8 @@ index 0000000..56d8f55 +enable_so_romfs_dev_read_fndecl_16412 romfs_dev_read fndecl 2-4 16412 NULL +enable_so_bcnt_aoeif_16414 bcnt aoeif 0 16414 NULL +enable_so_n_sectors_hpfs_super_block_16421 n_sectors hpfs_super_block 0 16421 NULL -+enable_so_bNrInPins_uac_selector_unit_descriptor_16423 bNrInPins uac_selector_unit_descriptor 0 16423 NULL ++enable_so_bNrInPins_uac_selector_unit_descriptor_16423 bNrInPins uac_selector_unit_descriptor 0 16423 NULL nohasharray ++enable_so_per_vf_cids_qed_cdu_iids_16423 per_vf_cids qed_cdu_iids 0 16423 &enable_so_bNrInPins_uac_selector_unit_descriptor_16423 +enable_so_gem_allocate_guc_obj_fndecl_16428 gem_allocate_guc_obj fndecl 2 16428 NULL +enable_so_numa_emulation_fndecl_16441 numa_emulation fndecl 2 16441 NULL +enable_so_ep_in_usbtest_info_16442 ep_in usbtest_info 0 16442 NULL @@ -190573,7 +191059,6 @@ index 0000000..56d8f55 +enable_so_max_mthca_srq_16551 max mthca_srq 0 16551 NULL +enable_so_max_srq_sz_mlx4_dev_cap_16554 max_srq_sz mlx4_dev_cap 0 16554 NULL +enable_so_groups_alloc_fndecl_16557 groups_alloc fndecl 1 16557 NULL -+enable_so_alloc_one_table_fndecl_16559 alloc_one_table fndecl 1 16559 NULL +enable_so_result_wa_xfer_16568 result wa_xfer 0 16568 NULL +enable_so_cramfs_uncompress_block_fndecl_16569 cramfs_uncompress_block fndecl 4-2 16569 NULL +enable_so___mei_cl_send_fndecl_16571 __mei_cl_send fndecl 3 16571 NULL @@ -190588,10 +191073,12 @@ index 0000000..56d8f55 +enable_so_ext4_group_extend_fndecl_16613 ext4_group_extend fndecl 3 16613 NULL +enable_so_coda_upcall_fndecl_16614 coda_upcall fndecl 2 16614 NULL +enable_so_agf_freeblks_xfs_agf_16620 agf_freeblks xfs_agf 0 16620 NULL ++enable_so_amdgpu_ttm_gtt_read_fndecl_16621 amdgpu_ttm_gtt_read fndecl 3 16621 NULL +enable_so_ceph_fsync_fndecl_16625 ceph_fsync fndecl 2-3 16625 NULL +enable_so_len_t4_cqe_16627 len t4_cqe 0 16627 NULL +enable_so_ext_tree_remove_fndecl_16629 ext_tree_remove fndecl 3-4 16629 NULL nohasharray +enable_so_uc_outSize_upc_req_16629 uc_outSize upc_req 0 16629 &enable_so_ext_tree_remove_fndecl_16629 ++enable_so_fault_inject_write_fndecl_16637 fault_inject_write fndecl 3 16637 NULL +enable_so_crtc_hsync_start_drm_display_mode_16643 crtc_hsync_start drm_display_mode 0 16643 NULL +enable_so_svc_pool_map_init_pernode_fndecl_16648 svc_pool_map_init_pernode fndecl 0 16648 NULL +enable_so_nfc_hci_allocate_device_fndecl_16649 nfc_hci_allocate_device fndecl 8-6 16649 NULL @@ -190615,9 +191102,11 @@ index 0000000..56d8f55 +enable_so_efx_ef10_pci_sriov_enable_fndecl_16694 efx_ef10_pci_sriov_enable fndecl 2 16694 NULL +enable_so_llcp_tlv_miux_fndecl_16699 llcp_tlv_miux fndecl 0 16699 NULL +enable_so_ad714x_spi_read_fndecl_16700 ad714x_spi_read fndecl 4 16700 NULL -+enable_so_tlv_buf_len_mwifiex_scan_cmd_config_16702 tlv_buf_len mwifiex_scan_cmd_config 0 16702 NULL ++enable_so_tlv_buf_len_mwifiex_scan_cmd_config_16702 tlv_buf_len mwifiex_scan_cmd_config 0 16702 NULL nohasharray ++enable_so_trace_insert_enum_map_file_fndecl_16702 trace_insert_enum_map_file fndecl 3 16702 &enable_so_tlv_buf_len_mwifiex_scan_cmd_config_16702 +enable_so_hdlc_loop_fndecl_16708 hdlc_loop fndecl 0 16708 NULL -+enable_so_vm_mmap_pgoff_fndecl_16712 vm_mmap_pgoff fndecl 3 16712 NULL ++enable_so_vm_mmap_pgoff_fndecl_16712 vm_mmap_pgoff fndecl 3 16712 NULL nohasharray ++enable_so_i2c1_debugfs_read_fndecl_16712 i2c1_debugfs_read fndecl 3 16712 &enable_so_vm_mmap_pgoff_fndecl_16712 +enable_so_ntargets_ips_ha_16718 ntargets ips_ha 0 16718 NULL +enable_so_pcm_buf_host_rw_ofs_snd_card_asihpi_pcm_16719 pcm_buf_host_rw_ofs snd_card_asihpi_pcm 0 16719 NULL +enable_so_opcfg_ofsl_cyttsp4_sysinfo_data_16723 opcfg_ofsl cyttsp4_sysinfo_data 0 16723 NULL @@ -190630,7 +191119,8 @@ index 0000000..56d8f55 +enable_so_udf_add_extendedattr_fndecl_16737 udf_add_extendedattr fndecl 2 16737 &enable_so_rx_rate_rx_frames_per_rates_read_fndecl_16737 nohasharray +enable_so_kimage_alloc_init_fndecl_16737 kimage_alloc_init fndecl 3 16737 &enable_so_udf_add_extendedattr_fndecl_16737 +enable_so_r_root_dir_omfs_root_block_16742 r_root_dir omfs_root_block 0 16742 NULL nohasharray -+enable_so_devlink_alloc_fndecl_16742 devlink_alloc fndecl 2 16742 &enable_so_r_root_dir_omfs_root_block_16742 ++enable_so_devlink_alloc_fndecl_16742 devlink_alloc fndecl 2 16742 &enable_so_r_root_dir_omfs_root_block_16742 nohasharray ++enable_so_fault_disconnect_write_fndecl_16742 fault_disconnect_write fndecl 3 16742 &enable_so_devlink_alloc_fndecl_16742 +enable_so_blockshift_sddr55_card_info_16749 blockshift sddr55_card_info 0 16749 NULL +enable_so_lib80211_wep_encrypt_fndecl_16752 lib80211_wep_encrypt fndecl 2 16752 NULL +enable_so_skb_pull_rcsum_fndecl_16757 skb_pull_rcsum fndecl 2 16757 NULL @@ -190731,6 +191221,7 @@ index 0000000..56d8f55 +enable_so_consumed_unix_skb_parms_17012 consumed unix_skb_parms 0 17012 NULL nohasharray +enable_so_len_sh_eth_rxdesc_17012 len sh_eth_rxdesc 0 17012 &enable_so_consumed_unix_skb_parms_17012 +enable_so_ds_segment_shift_logfs_disk_super_17013 ds_segment_shift logfs_disk_super 0 17013 NULL ++enable_so___iommu_dma_alloc_pages_fndecl_17015 __iommu_dma_alloc_pages fndecl 1 17015 NULL +enable_so_u132_hcd_abandon_urb_fndecl_17016 u132_hcd_abandon_urb fndecl 4 17016 NULL nohasharray +enable_so_rq_size_i40iw_qp_uk_init_info_17016 rq_size i40iw_qp_uk_init_info 0 17016 &enable_so_u132_hcd_abandon_urb_fndecl_17016 +enable_so_num_pads_media_entity_17022 num_pads media_entity 0 17022 NULL @@ -190801,6 +191292,7 @@ index 0000000..56d8f55 +enable_so_luma_size_s5p_mfc_ctx_17182 luma_size s5p_mfc_ctx 0 17182 NULL +enable_so_pci_raw_set_power_state_fndecl_17186 pci_raw_set_power_state fndecl 0 17186 NULL +enable_so_num_component_match_17187 num component_match 0 17187 NULL ++enable_so_ath10k_write_peer_stats_fndecl_17195 ath10k_write_peer_stats fndecl 3 17195 NULL +enable_so_sys_pread64_fndecl_17210 sys_pread64 fndecl 3 17210 NULL +enable_so_type_to_neq_fw_pfvf_cmd_17213 type_to_neq fw_pfvf_cmd 0 17213 NULL +enable_so_logical_blk_num_osst_tape_17216 logical_blk_num osst_tape 0 17216 NULL @@ -190933,6 +191425,7 @@ index 0000000..56d8f55 +enable_so_sita_init_fndecl_17588 sita_init fndecl 2-1 17588 NULL +enable_so_bfad_iocmd_itnim_get_iostats_fndecl_17592 bfad_iocmd_itnim_get_iostats fndecl 0 17592 NULL +enable_so_fdt_delprop_fndecl_17595 fdt_delprop fndecl 2 17595 NULL ++enable_so__iwl_dbgfs_indirection_tbl_write_fndecl_17597 _iwl_dbgfs_indirection_tbl_write fndecl 3 17597 NULL +enable_so_reg_bytes_regmap_format_17598 reg_bytes regmap_format 0 17598 NULL +enable_so_disk_num_bytes_btrfs_file_extent_item_17599 disk_num_bytes btrfs_file_extent_item 0 17599 NULL +enable_so_qlf_len_xfs_dq_logformat_17603 qlf_len xfs_dq_logformat 0 17603 NULL nohasharray @@ -190954,7 +191447,8 @@ index 0000000..56d8f55 +enable_so_batadv_tt_add_temporary_global_entry_fndecl_17661 batadv_tt_add_temporary_global_entry fndecl 4 17661 &enable_so_size_scsi_host_sg_pool_17661 +enable_so_stereo_cmipci_sb_reg_17667 stereo cmipci_sb_reg 0 17667 NULL +enable_so_maybe_insert_hole_fndecl_17668 maybe_insert_hole fndecl 4-3 17668 NULL -+enable_so_f2fs_update_extent_cache_range_fndecl_17671 f2fs_update_extent_cache_range fndecl 4-2-3 17671 NULL ++enable_so_f2fs_update_extent_cache_range_fndecl_17671 f2fs_update_extent_cache_range fndecl 4-2-3 17671 NULL nohasharray ++enable_so_submit_queues_vardecl_scsi_debug_c_17671 submit_queues vardecl_scsi_debug.c 0 17671 &enable_so_f2fs_update_extent_cache_range_fndecl_17671 +enable_so_vdma_mem_alloc_fndecl_17672 vdma_mem_alloc fndecl 1 17672 NULL +enable_so_wl1251_cmd_template_set_fndecl_17679 wl1251_cmd_template_set fndecl 4 17679 NULL +enable_so_memory_block_size_probed_vardecl_init_64_c_17683 memory_block_size_probed vardecl_init_64.c 0 17683 NULL nohasharray @@ -191106,6 +191600,7 @@ index 0000000..56d8f55 +enable_so_di_nextents_xfs_icdinode_18090 di_nextents xfs_icdinode 0 18090 NULL +enable_so_bfad_iocmd_ioc_fw_sig_inv_fndecl_18091 bfad_iocmd_ioc_fw_sig_inv fndecl 0 18091 NULL +enable_so_inode2sd_fndecl_18094 inode2sd fndecl 3 18094 NULL ++enable_so_n_pages_tracing_map_array_18100 n_pages tracing_map_array 0 18100 NULL +enable_so_thermal_irq_thr_high_read_fndecl_18102 thermal_irq_thr_high_read fndecl 3 18102 NULL +enable_so_btrfs_qgroup_reserve_data_fndecl_18109 btrfs_qgroup_reserve_data fndecl 0-3-2 18109 NULL +enable_so_do_async_mmap_readahead_fndecl_18112 do_async_mmap_readahead fndecl 5 18112 NULL nohasharray @@ -191174,7 +191669,8 @@ index 0000000..56d8f55 +enable_so_ocfs2_calc_refcount_meta_credits_fndecl_18305 ocfs2_calc_refcount_meta_credits fndecl 5-4 18305 NULL +enable_so_essid_len_iw_scan_req_18306 essid_len iw_scan_req 0 18306 NULL +enable_so_add_pfn_range_mapped_fndecl_18307 add_pfn_range_mapped fndecl 2-1 18307 NULL -+enable_so_twl4030_init_irq_fndecl_18308 twl4030_init_irq fndecl 0 18308 NULL ++enable_so_twl4030_init_irq_fndecl_18308 twl4030_init_irq fndecl 0 18308 NULL nohasharray ++enable_so_i2c_read_fndecl_18308 i2c_read fndecl 0 18308 &enable_so_twl4030_init_irq_fndecl_18308 +enable_so_zone_spanned_pages_in_node_fndecl_18320 zone_spanned_pages_in_node fndecl 0-3-4 18320 NULL +enable_so_rpipes_wahc_18323 rpipes wahc 0 18323 NULL +enable_so_e820_end_of_low_ram_pfn_fndecl_18324 e820_end_of_low_ram_pfn fndecl 0 18324 NULL @@ -191471,8 +191967,7 @@ index 0000000..56d8f55 +enable_so_inftl_write_oob_fndecl_19154 inftl_write_oob fndecl 2-3 19154 NULL +enable_so_alloc_indirect_fndecl_19156 alloc_indirect fndecl 2 19156 NULL +enable_so_do_get_thread_area_fndecl_19157 do_get_thread_area fndecl 2 19157 NULL -+enable_so_page_array_size_firmware_buf_19163 page_array_size firmware_buf 0 19163 NULL nohasharray -+enable_so_x___una_u16_19163 x __una_u16 0 19163 &enable_so_page_array_size_firmware_buf_19163 ++enable_so_page_array_size_firmware_buf_19163 page_array_size firmware_buf 0 19163 NULL +enable_so_ve_attrlen_nfsd4_verify_19164 ve_attrlen nfsd4_verify 0 19164 NULL +enable_so_ms_nvme_ns_19166 ms nvme_ns 0 19166 NULL +enable_so_dma_start_hi_rx_buf_desc_19167 dma_start_hi rx_buf_desc 0 19167 NULL @@ -191533,8 +192028,7 @@ index 0000000..56d8f55 +enable_so_rule_size_fib_rules_ops_19335 rule_size fib_rules_ops 0 19335 NULL +enable_so___vxge_hw_blockpool_malloc_fndecl_19337 __vxge_hw_blockpool_malloc fndecl 2 19337 NULL +enable_so_compat_sys_writev_fndecl_19339 compat_sys_writev fndecl 3 19339 NULL -+enable_so_NetworkInfoReceived_fndecl_19353 NetworkInfoReceived fndecl 2 19353 NULL nohasharray -+enable_so_rockchip_clk_init_fndecl_19353 rockchip_clk_init fndecl 3 19353 &enable_so_NetworkInfoReceived_fndecl_19353 ++enable_so_NetworkInfoReceived_fndecl_19353 NetworkInfoReceived fndecl 2 19353 NULL +enable_so_sock_alloc_send_pskb_fndecl_19354 sock_alloc_send_pskb fndecl 3 19354 NULL +enable_so_data_sge_offset_mpt3_ioctl_command_19355 data_sge_offset mpt3_ioctl_command 0 19355 NULL +enable_so_qlcnic_83xx_sysfs_flash_read_handler_fndecl_19356 qlcnic_83xx_sysfs_flash_read_handler fndecl 6 19356 NULL nohasharray @@ -191563,6 +192057,7 @@ index 0000000..56d8f55 +enable_so_proc_read_atmdev_ops_19414 proc_read atmdev_ops 0 19414 NULL +enable_so_num_ip_blocks_amdgpu_device_19419 num_ip_blocks amdgpu_device 0 19419 NULL +enable_so_size_mthca_resource_19420 size mthca_resource 0 19420 NULL ++enable_so__iwl_dbgfs_cont_recording_write_fndecl_19421 _iwl_dbgfs_cont_recording_write fndecl 3 19421 NULL +enable_so_fw_card_add_fndecl_19423 fw_card_add fndecl 2 19423 NULL +enable_so_mixer_nid_hda_gen_spec_19429 mixer_nid hda_gen_spec 0 19429 NULL +enable_so_config_buf_fndecl_19445 config_buf fndecl 0 19445 NULL nohasharray @@ -191643,7 +192138,6 @@ index 0000000..56d8f55 +enable_so_name_len_ext4_dir_entry_2_19628 name_len ext4_dir_entry_2 0 19628 NULL +enable_so_logical_io_failure_record_19631 logical io_failure_record 0 19631 NULL +enable_so_softback_buf_vardecl_fbcon_c_19637 softback_buf vardecl_fbcon.c 0 19637 NULL -+enable_so_num_kernel_image_mappings_vardecl_19639 num_kernel_image_mappings vardecl 0 19639 NULL +enable_so_sdio_io_rw_ext_helper_fndecl_19641 sdio_io_rw_ext_helper fndecl 6 19641 NULL +enable_so_set_fp_int_qed_common_ops_19644 set_fp_int qed_common_ops 0 19644 NULL nohasharray +enable_so_pcfg_ofsh_cyttsp4_sysinfo_data_19644 pcfg_ofsh cyttsp4_sysinfo_data 0 19644 &enable_so_set_fp_int_qed_common_ops_19644 @@ -191675,6 +192169,7 @@ index 0000000..56d8f55 +enable_so_slots_end_qxl_rom_19718 slots_end qxl_rom 0 19718 NULL +enable_so_fat32_info_sector_fat_bios_param_block_19727 fat32_info_sector fat_bios_param_block 0 19727 NULL +enable_so_msc_win_to_user_fndecl_19728 msc_win_to_user fndecl 3 19728 NULL ++enable_so_mps_trc_write_fndecl_19736 mps_trc_write fndecl 3 19736 NULL +enable_so_small_smb_init_no_tc_fndecl_19738 small_smb_init_no_tc fndecl 2 19738 NULL +enable_so_max_active_conns_bnx2i_hba_19740 max_active_conns bnx2i_hba 0 19740 NULL +enable_so_bytesperline_v4l2_pix_format_19741 bytesperline v4l2_pix_format 0 19741 NULL @@ -191701,6 +192196,7 @@ index 0000000..56d8f55 +enable_so_eeprom_len_niu_19815 eeprom_len niu 0 19815 NULL +enable_so_size_vring_19817 size vring 0 19817 NULL +enable_so_ip_send_unicast_reply_fndecl_19820 ip_send_unicast_reply fndecl 7 19820 NULL ++enable_so_oid_printf_vargs_fndecl_19821 oid_printf_vargs fndecl 0 19821 NULL +enable_so_packet_space_tso_state_19824 packet_space tso_state 0 19824 NULL +enable_so_vring_new_virtqueue_fndecl_19828 vring_new_virtqueue fndecl 2 19828 NULL +enable_so___nfs4_get_acl_uncached_fndecl_19830 __nfs4_get_acl_uncached fndecl 3 19830 NULL @@ -191745,6 +192241,7 @@ index 0000000..56d8f55 +enable_so_ipoib_sendq_size_vardecl_19969 ipoib_sendq_size vardecl 0 19969 NULL +enable_so_src_len_ccp_passthru_engine_19970 src_len ccp_passthru_engine 0 19970 NULL +enable_so_vga_arb_read_fndecl_19973 vga_arb_read fndecl 3 19973 NULL ++enable_so_paravirt_read_msr_fndecl_19974 paravirt_read_msr fndecl 0 19974 NULL +enable_so_le_max_key_size_read_fndecl_19975 le_max_key_size_read fndecl 3 19975 NULL +enable_so_cmd_hix5hd2_desc_19977 cmd hix5hd2_desc 0 19977 NULL +enable_so_protocol_gre_base_hdr_19981 protocol gre_base_hdr 0 19981 NULL @@ -191781,7 +192278,6 @@ index 0000000..56d8f55 +enable_so_fb_deferred_io_fsync_fndecl_20083 fb_deferred_io_fsync fndecl 2-3 20083 &enable_so_max_rqst_sz_nfs4_channel_attrs_20083 +enable_so_compat_rawv6_setsockopt_fndecl_20084 compat_rawv6_setsockopt fndecl 5 20084 NULL +enable_so_rxsize_grcan_device_config_20087 rxsize grcan_device_config 0 20087 NULL -+enable_so_submit_rtpg_fndecl_20091 submit_rtpg fndecl 3 20091 NULL +enable_so_bnx2_set_rx_ring_size_fndecl_20092 bnx2_set_rx_ring_size fndecl 2 20092 NULL +enable_so_r8712_read32_fndecl_20095 r8712_read32 fndecl 0 20095 NULL +enable_so_reg_count_cs_extent_def_20096 reg_count cs_extent_def 0 20096 NULL @@ -191817,6 +192313,7 @@ index 0000000..56d8f55 +enable_so_sectors_per_block_bits_dm_bufio_client_20202 sectors_per_block_bits dm_bufio_client 0 20202 NULL +enable_so_max_frame_size__mgslpc_info_20204 max_frame_size _mgslpc_info 0 20204 NULL +enable_so_sbq_len_rx_ring_20205 sbq_len rx_ring 0 20205 NULL ++enable_so_i40e_dbg_netdev_ops_write_fndecl_20206 i40e_dbg_netdev_ops_write fndecl 3 20206 NULL +enable_so_kfifo_copy_from_user_fndecl_20208 kfifo_copy_from_user fndecl 3-4-0 20208 NULL +enable_so_dma_limit_tg3_20210 dma_limit tg3 0 20210 NULL +enable_so_objlayout_write_done_fndecl_20211 objlayout_write_done fndecl 2 20211 NULL nohasharray @@ -191827,9 +192324,9 @@ index 0000000..56d8f55 +enable_so_sound_write_fndecl_20221 sound_write fndecl 3 20221 &enable_so_dmah_acm_wb_20221 +enable_so_produce_va_vmci_qp_page_file_info_20224 produce_va vmci_qp_page_file_info 0 20224 NULL +enable_so_use_sg_osst_buffer_20225 use_sg osst_buffer 0 20225 NULL -+enable_so_ll_rw_extents_stats_seq_write_fndecl_20234 ll_rw_extents_stats_seq_write fndecl 3 20234 NULL ++enable_so_ll_rw_extents_stats_seq_write_fndecl_20234 ll_rw_extents_stats_seq_write fndecl 3 20234 NULL nohasharray ++enable_so_nwriters_vardecl_rcuperf_c_20234 nwriters vardecl_rcuperf.c 0 20234 &enable_so_ll_rw_extents_stats_seq_write_fndecl_20234 +enable_so_setup_sgl_buf_fndecl_20237 setup_sgl_buf fndecl 4 20237 NULL -+enable_so_msm_gem_import_fndecl_20238 msm_gem_import fndecl 2 20238 NULL +enable_so_phys_map_info_20239 phys map_info 0 20239 NULL +enable_so_mac_find_mode_fndecl_20243 mac_find_mode fndecl 4 20243 NULL +enable_so_rx_agg_bmap_size_bnxt_rx_ring_info_20244 rx_agg_bmap_size bnxt_rx_ring_info 0 20244 NULL @@ -191953,7 +192450,8 @@ index 0000000..56d8f55 +enable_so_isdn_readbchan_fndecl_20570 isdn_readbchan fndecl 5-0 20570 NULL +enable_so_nullb_indexes_vardecl_null_blk_c_20571 nullb_indexes vardecl_null_blk.c 0 20571 NULL +enable_so_check_defrag_in_cache_fndecl_20573 check_defrag_in_cache fndecl 3-2 20573 NULL -+enable_so_hp_outs_auto_pin_cfg_20574 hp_outs auto_pin_cfg 0 20574 NULL ++enable_so_hp_outs_auto_pin_cfg_20574 hp_outs auto_pin_cfg 0 20574 NULL nohasharray ++enable_so_nfp_net_shadow_tx_rings_prepare_fndecl_20574 nfp_net_shadow_tx_rings_prepare fndecl 2 20574 &enable_so_hp_outs_auto_pin_cfg_20574 +enable_so_fifo_size_pxa_ep_20587 fifo_size pxa_ep 0 20587 NULL +enable_so_nrof_flowrings_brcmf_pcie_shared_info_20590 nrof_flowrings brcmf_pcie_shared_info 0 20590 NULL +enable_so_pci_add_cap_save_buffer_fndecl_20593 pci_add_cap_save_buffer fndecl 3 20593 NULL @@ -191972,7 +192470,8 @@ index 0000000..56d8f55 +enable_so_cursor_size_fbcon_ops_20640 cursor_size fbcon_ops 0 20640 NULL +enable_so_hpi_outstream_write_buf_fndecl_20645 hpi_outstream_write_buf fndecl 3 20645 NULL +enable_so_offset_iscsi_seq_20646 offset iscsi_seq 0 20646 NULL -+enable_so_nr_pages_ore_io_state_20648 nr_pages ore_io_state 0 20648 NULL ++enable_so_nr_pages_ore_io_state_20648 nr_pages ore_io_state 0 20648 NULL nohasharray ++enable_so_bcm2835_dma_create_cb_chain_fndecl_20648 bcm2835_dma_create_cb_chain fndecl 6 20648 &enable_so_nr_pages_ore_io_state_20648 +enable_so_m_pblk_ext4_map_blocks_20649 m_pblk ext4_map_blocks 0 20649 NULL +enable_so_security_context_to_sid_default_fndecl_20663 security_context_to_sid_default fndecl 2 20663 NULL +enable_so_dlm_process_incoming_buffer_fndecl_20665 dlm_process_incoming_buffer fndecl 0 20665 NULL nohasharray @@ -191984,8 +192483,7 @@ index 0000000..56d8f55 +enable_so_btrfs_dir_name_len_fndecl_20686 btrfs_dir_name_len fndecl 0 20686 NULL +enable_so_write_to_8820_fndecl_20687 write_to_8820 fndecl 3 20687 NULL +enable_so_num_evt_qs_be_adapter_20688 num_evt_qs be_adapter 0 20688 NULL -+enable_so_SyS_semtimedop_fndecl_20703 SyS_semtimedop fndecl 3 20703 NULL nohasharray -+enable_so_ldc_read_fndecl_20703 ldc_read fndecl 0 20703 &enable_so_SyS_semtimedop_fndecl_20703 ++enable_so_SyS_semtimedop_fndecl_20703 SyS_semtimedop fndecl 3 20703 NULL +enable_so_erase_size_vardecl_mtdram_c_20704 erase_size vardecl_mtdram.c 0 20704 NULL +enable_so_evtchn_read_fndecl_20706 evtchn_read fndecl 3 20706 NULL +enable_so_err_dev_e752x_dev_info_20708 err_dev e752x_dev_info 0 20708 NULL @@ -192062,6 +192560,7 @@ index 0000000..56d8f55 +enable_so_nr_hotspot_blocks_smq_policy_20876 nr_hotspot_blocks smq_policy 0 20876 NULL +enable_so_max_q_per_vf_rcb_common_cb_20877 max_q_per_vf rcb_common_cb 0 20877 NULL +enable_so_usb_stor_intr_transfer_fndecl_20883 usb_stor_intr_transfer fndecl 3 20883 NULL ++enable_so_codec_reg_write_file_fndecl_20887 codec_reg_write_file fndecl 3 20887 NULL +enable_so_cl_local_node_o2nm_cluster_20896 cl_local_node o2nm_cluster 0 20896 NULL +enable_so_idiag_info_size_inet_diag_handler_20898 idiag_info_size inet_diag_handler 0 20898 NULL +enable_so_num_rows_vardecl_arcfb_c_20902 num_rows vardecl_arcfb.c 0 20902 NULL @@ -192077,6 +192576,7 @@ index 0000000..56d8f55 +enable_so_pkey_index_mlx4_qp_path_20950 pkey_index mlx4_qp_path 0 20950 NULL +enable_so_gid_table_len_mthca_limits_20957 gid_table_len mthca_limits 0 20957 NULL +enable_so_npages_mlx5_buf_20958 npages mlx5_buf 0 20958 NULL ++enable_so__iwl_dbgfs_d3_sram_write_fndecl_20960 _iwl_dbgfs_d3_sram_write fndecl 3 20960 NULL +enable_so_calc_plane_fndecl_20962 calc_plane fndecl 0-2-1 20962 NULL +enable_so_range_start_writeback_control_20965 range_start writeback_control 0 20965 NULL +enable_so_dbDiscardAG_fndecl_20969 dbDiscardAG fndecl 0-3 20969 NULL @@ -192092,6 +192592,7 @@ index 0000000..56d8f55 +enable_so_rate_ib_sa_mcmember_rec_20997 rate ib_sa_mcmember_rec 0 20997 NULL +enable_so_udf_direct_IO_fndecl_20999 udf_direct_IO fndecl 3 20999 NULL +enable_so_get_fd_set_fndecl_21001 get_fd_set fndecl 1 21001 NULL ++enable_so_nouveau_debugfs_pstate_set_fndecl_21004 nouveau_debugfs_pstate_set fndecl 3 21004 NULL +enable_so_sst_hsw_module_set_param_fndecl_21007 sst_hsw_module_set_param fndecl 5 21007 NULL +enable_so_cxns_per_ctrl_hba_parameters_21008 cxns_per_ctrl hba_parameters 0 21008 NULL +enable_so_controller_function_mspro_sys_info_21011 controller_function mspro_sys_info 0 21011 NULL @@ -192155,6 +192656,7 @@ index 0000000..56d8f55 +enable_so_hsu_dma_prep_slave_sg_fndecl_21155 hsu_dma_prep_slave_sg fndecl 3 21155 NULL +enable_so_ext4_xattr_find_entry_fndecl_21162 ext4_xattr_find_entry fndecl 0 21162 NULL +enable_so_blk_end_request_fndecl_21163 blk_end_request fndecl 3-2 21163 NULL ++enable_so_nd_size_out_nd_cmd_pkg_21165 nd_size_out nd_cmd_pkg 0 21165 NULL +enable_so_gfs2_dir_get_existing_buffer_fndecl_21172 gfs2_dir_get_existing_buffer fndecl 2 21172 NULL +enable_so_mei_write_fndecl_21174 mei_write fndecl 3 21174 NULL nohasharray +enable_so_xfs_check_block_fndecl_21174 xfs_check_block fndecl 4 21174 &enable_so_mei_write_fndecl_21174 @@ -192216,6 +192718,7 @@ index 0000000..56d8f55 +enable_so_num_paths_bna_rx_config_21315 num_paths bna_rx_config 0 21315 NULL +enable_so_fuse_copy_page_fndecl_21316 fuse_copy_page fndecl 4-3 21316 NULL +enable_so_tcp_fragment_fndecl_21318 tcp_fragment fndecl 3 21318 NULL ++enable_so__iwl_dbgfs_tx_flush_write_fndecl_21320 _iwl_dbgfs_tx_flush_write fndecl 3 21320 NULL +enable_so_packet_present_len_cfg80211_wowlan_wakeup_21321 packet_present_len cfg80211_wowlan_wakeup 0 21321 NULL nohasharray +enable_so_sq_len_queue_set_21321 sq_len queue_set 0 21321 &enable_so_packet_present_len_cfg80211_wowlan_wakeup_21321 +enable_so_mincore_unmapped_range_fndecl_21322 mincore_unmapped_range fndecl 1 21322 NULL @@ -192238,7 +192741,8 @@ index 0000000..56d8f55 +enable_so_num_vfs_enic_21386 num_vfs enic 0 21386 NULL +enable_so_temp_count_applesmc_registers_21387 temp_count applesmc_registers 0 21387 NULL +enable_so_ci_ll_write_fndecl_21391 ci_ll_write fndecl 4 21391 NULL -+enable_so_vc_scan_lines_vc_data_21393 vc_scan_lines vc_data 0 21393 NULL ++enable_so_vc_scan_lines_vc_data_21393 vc_scan_lines vc_data 0 21393 NULL nohasharray ++enable_so_cids_per_vf_qed_conn_type_cfg_21393 cids_per_vf qed_conn_type_cfg 0 21393 &enable_so_vc_scan_lines_vc_data_21393 +enable_so_digest_size_dm_verity_21399 digest_size dm_verity 0 21399 NULL +enable_so_pg_count_agp_allocate32_21404 pg_count agp_allocate32 0 21404 NULL +enable_so_v4l2_fh_open_fndecl_21406 v4l2_fh_open fndecl 0 21406 NULL @@ -192275,7 +192779,6 @@ index 0000000..56d8f55 +enable_so_c67x00_urb_dequeue_fndecl_21522 c67x00_urb_dequeue fndecl 3 21522 &enable_so_fifo_size_hscx_hw_21522 +enable_so_data_offset_mdp_superblock_1_21524 data_offset mdp_superblock_1 0 21524 NULL nohasharray +enable_so_intel_sdvo_set_value_fndecl_21524 intel_sdvo_set_value fndecl 4 21524 &enable_so_data_offset_mdp_superblock_1_21524 -+enable_so_sys_oabi_semtimedop_fndecl_21526 sys_oabi_semtimedop fndecl 3 21526 NULL +enable_so_kvm_clear_guest_page_fndecl_21527 kvm_clear_guest_page fndecl 2-4 21527 NULL +enable_so_xennet_max_queues_vardecl_xen_netfront_c_21530 xennet_max_queues vardecl_xen-netfront.c 0 21530 NULL +enable_so_ooblen_mtd_oob_ops_21531 ooblen mtd_oob_ops 0 21531 NULL @@ -192373,7 +192876,8 @@ index 0000000..56d8f55 +enable_so_tpg_alloc_fndecl_21789 tpg_alloc fndecl 2 21789 NULL +enable_so_find_group_dir_fndecl_21790 find_group_dir fndecl 0 21790 NULL +enable_so_idetape_chrdev_read_fndecl_21794 idetape_chrdev_read fndecl 3 21794 NULL -+enable_so_reg_stride_regmap_21801 reg_stride regmap 0 21801 NULL ++enable_so_reg_stride_regmap_21801 reg_stride regmap 0 21801 NULL nohasharray ++enable_so___set_print_fmt_fndecl_21801 __set_print_fmt fndecl 0 21801 &enable_so_reg_stride_regmap_21801 +enable_so_num_vss_hpf_cfgs_wm8994_pdata_21802 num_vss_hpf_cfgs wm8994_pdata 0 21802 NULL +enable_so___svc_create_fndecl_21804 __svc_create fndecl 2-3 21804 NULL +enable_so_ecryptfs_encrypt_and_encode_filename_fndecl_21806 ecryptfs_encrypt_and_encode_filename fndecl 6 21806 NULL @@ -192401,6 +192905,7 @@ index 0000000..56d8f55 +enable_so_mlx4_init_icm_table_fndecl_21876 mlx4_init_icm_table fndecl 4-5 21876 &enable_so_ad_sd_read_reg_fndecl_21876 +enable_so__drbd_send_page_fndecl_21886 _drbd_send_page fndecl 4 21886 NULL nohasharray +enable_so___copy_to_user_ll_fndecl_21886 __copy_to_user_ll fndecl 0 21886 &enable_so__drbd_send_page_fndecl_21886 ++enable_so_picolcd_debug_reset_write_fndecl_21888 picolcd_debug_reset_write fndecl 3 21888 NULL +enable_so_bio_integrity_alloc_fndecl_21889 bio_integrity_alloc fndecl 3 21889 NULL +enable_so_ext4_xattr_trusted_set_fndecl_21891 ext4_xattr_trusted_set fndecl 5 21891 NULL +enable_so_npwm_pwm_chip_21895 npwm pwm_chip 0 21895 NULL @@ -192412,7 +192917,6 @@ index 0000000..56d8f55 +enable_so_error_bio_and_error_21918 error bio_and_error 0 21918 NULL +enable_so_addr_width_snd_dmaengine_dai_dma_data_21920 addr_width snd_dmaengine_dai_dma_data 0 21920 NULL +enable_so_ceph_osdc_new_request_fndecl_21921 ceph_osdc_new_request fndecl 7 21921 NULL -+enable_so_efx_tsoh_page_count_fndecl_21922 efx_tsoh_page_count fndecl 0 21922 NULL +enable_so_membase_pm8001_hba_memspace_21924 membase pm8001_hba_memspace 0 21924 NULL +enable_so_ath6kl_sdio_bmi_read_fndecl_21930 ath6kl_sdio_bmi_read fndecl 3 21930 NULL +enable_so_error_memstick_request_21931 error memstick_request 0 21931 NULL nohasharray @@ -192522,12 +193026,14 @@ index 0000000..56d8f55 +enable_so_ch_count_vardecl_ib_srp_c_22190 ch_count vardecl_ib_srp.c 0 22190 NULL +enable_so_affs_alloc_block_fndecl_22192 affs_alloc_block fndecl 0-2 22192 NULL +enable_so_sector_packet_data_22197 sector packet_data 0 22197 NULL ++enable_so_acpi_aml_read_fndecl_22207 acpi_aml_read fndecl 3 22207 NULL +enable_so_length_ntlmssp2_name_22211 length ntlmssp2_name 0 22211 NULL +enable_so_req_len_brcmf_cfg80211_assoc_ielen_le_22213 req_len brcmf_cfg80211_assoc_ielen_le 0 22213 NULL +enable_so_nreaders_stress_vardecl_locktorture_c_22217 nreaders_stress vardecl_locktorture.c 0 22217 NULL nohasharray +enable_so_xfrm_dst_alloc_copy_fndecl_22217 xfrm_dst_alloc_copy fndecl 3 22217 &enable_so_nreaders_stress_vardecl_locktorture_c_22217 +enable_so_ram_size_async_extent_22219 ram_size async_extent 0 22219 NULL +enable_so_get_max_acpi_id_fndecl_22220 get_max_acpi_id fndecl 0 22220 NULL ++enable_so_lpfc_idiag_mbxacc_write_fndecl_22221 lpfc_idiag_mbxacc_write fndecl 3 22221 NULL +enable_so_s_dirsize_minix_sb_info_22225 s_dirsize minix_sb_info 0 22225 NULL +enable_so_num_areas_prism2_download_param_22233 num_areas prism2_download_param 0 22233 NULL +enable_so_num_vlan_batadv_tvlv_tt_data_22234 num_vlan batadv_tvlv_tt_data 0 22234 NULL @@ -192601,7 +193107,8 @@ index 0000000..56d8f55 +enable_so_do_send_fragment_fndecl_22447 do_send_fragment fndecl 3 22447 NULL +enable_so_frame_len_ksz_desc_rx_stat_22454 frame_len ksz_desc_rx_stat 0 22454 NULL +enable_so_ntfs_attr_vcn_to_lcn_nolock_fndecl_22455 ntfs_attr_vcn_to_lcn_nolock fndecl 2 22455 NULL -+enable_so_llc_ui_recvmsg_fndecl_22457 llc_ui_recvmsg fndecl 3 22457 NULL ++enable_so_llc_ui_recvmsg_fndecl_22457 llc_ui_recvmsg fndecl 3 22457 NULL nohasharray ++enable_so_oid_printf_vargs_fndecl_22457 oid_printf_vargs fndecl 0 22457 &enable_so_llc_ui_recvmsg_fndecl_22457 +enable_so_ceph_zero_pagecache_range_fndecl_22464 ceph_zero_pagecache_range fndecl 3-2 22464 NULL nohasharray +enable_so_mon_bin_ioctl_fndecl_22464 mon_bin_ioctl fndecl 3 22464 &enable_so_ceph_zero_pagecache_range_fndecl_22464 +enable_so_params1_mthca_qp_context_22465 params1 mthca_qp_context 0 22465 NULL @@ -192630,7 +193137,8 @@ index 0000000..56d8f55 +enable_so_ocfs2_bg_discontig_add_extent_fndecl_22531 ocfs2_bg_discontig_add_extent fndecl 4 22531 NULL +enable_so_count_pch_gbe_tx_ring_22534 count pch_gbe_tx_ring 0 22534 NULL +enable_so_pci_iomap_wc_range_fndecl_22536 pci_iomap_wc_range fndecl 4-3 22536 NULL -+enable_so_last_checkpoint_r5l_log_22540 last_checkpoint r5l_log 0 22540 NULL ++enable_so_last_checkpoint_r5l_log_22540 last_checkpoint r5l_log 0 22540 NULL nohasharray ++enable_so_mlx5e_create_rqt_fndecl_22540 mlx5e_create_rqt fndecl 2 22540 &enable_so_last_checkpoint_r5l_log_22540 +enable_so_submit_queue_fndecl_22542 submit_queue fndecl 5 22542 NULL +enable_so_SyS_flistxattr_fndecl_22548 SyS_flistxattr fndecl 3 22548 NULL +enable_so_clsb_isar_reg_22551 clsb isar_reg 0 22551 NULL @@ -192670,7 +193178,8 @@ index 0000000..56d8f55 +enable_so_hci_si_event_fndecl_22639 hci_si_event fndecl 3 22639 NULL +enable_so_scif_vwriteto_fndecl_22640 scif_vwriteto fndecl 4-3 22640 NULL +enable_so_logfs_write_header_fndecl_22642 logfs_write_header fndecl 3 22642 NULL -+enable_so_num_rcv_bufs_visornic_devdata_22643 num_rcv_bufs visornic_devdata 0 22643 NULL ++enable_so_num_rcv_bufs_visornic_devdata_22643 num_rcv_bufs visornic_devdata 0 22643 NULL nohasharray ++enable_so_rdma_alloc_hw_stats_struct_fndecl_22643 rdma_alloc_hw_stats_struct fndecl 2 22643 &enable_so_num_rcv_bufs_visornic_devdata_22643 +enable_so_sctp_setsockopt_initmsg_fndecl_22644 sctp_setsockopt_initmsg fndecl 3 22644 NULL +enable_so_queue_size_snd_timer_params_22646 queue_size snd_timer_params 0 22646 NULL +enable_so_do_msgsnd_fndecl_22648 do_msgsnd fndecl 4 22648 NULL @@ -192713,6 +193222,7 @@ index 0000000..56d8f55 +enable_so_slave_num_ad7280_state_22755 slave_num ad7280_state 0 22755 NULL +enable_so_alloc_perm_bits_fndecl_22767 alloc_perm_bits fndecl 2 22767 NULL +enable_so_rambase_brcmf_chip_22773 rambase brcmf_chip 0 22773 NULL ++enable_so_ide_get_identity_ioctl_fndecl_22776 ide_get_identity_ioctl fndecl 0 22776 NULL +enable_so_xfs_bmap_add_free_fndecl_22778 xfs_bmap_add_free fndecl 1-2 22778 NULL +enable_so_tomoyo_round2_fndecl_22781 tomoyo_round2 fndecl 0 22781 NULL +enable_so_orig_video_cols_screen_info_22783 orig_video_cols screen_info 0 22783 NULL @@ -192738,6 +193248,7 @@ index 0000000..56d8f55 +enable_so_var2_apei_exec_context_22852 var2 apei_exec_context 0 22852 NULL +enable_so_utf8s_to_utf16s_fndecl_22856 utf8s_to_utf16s fndecl 0 22856 NULL +enable_so_size_proc_dir_entry_22859 size proc_dir_entry 0 22859 NULL ++enable_so_test_eb_bitmaps_fndecl_22861 test_eb_bitmaps fndecl 1 22861 NULL +enable_so_sst_fill_and_send_cmd_unlocked_fndecl_22862 sst_fill_and_send_cmd_unlocked fndecl 7 22862 NULL +enable_so_xs_sendpages_fndecl_22864 xs_sendpages fndecl 5-3 22864 NULL +enable_so_hpfs_get_block_fndecl_22865 hpfs_get_block fndecl 2 22865 NULL @@ -192755,6 +193266,7 @@ index 0000000..56d8f55 +enable_so_lpfc_fcp_io_channel_init_fndecl_22903 lpfc_fcp_io_channel_init fndecl 2 22903 NULL +enable_so_count_ioctl_gntdev_map_grant_ref_22904 count ioctl_gntdev_map_grant_ref 0 22904 NULL nohasharray +enable_so_bcma_hcd_create_pdev_fndecl_22904 bcma_hcd_create_pdev fndecl 3 22904 &enable_so_count_ioctl_gntdev_map_grant_ref_22904 ++enable_so_num_y_edt_ft5x06_ts_data_22905 num_y edt_ft5x06_ts_data 0 22905 NULL +enable_so_membase_phys_efx_nic_22907 membase_phys efx_nic 0 22907 NULL +enable_so_vmalloc_32_fndecl_22908 vmalloc_32 fndecl 1 22908 NULL +enable_so_cfg80211_report_obss_beacon_fndecl_22910 cfg80211_report_obss_beacon fndecl 3 22910 NULL @@ -192764,6 +193276,7 @@ index 0000000..56d8f55 +enable_so_len_ext4_allocation_request_22920 len ext4_allocation_request 0 22920 NULL +enable_so_e_name_len_ext4_xattr_entry_22925 e_name_len ext4_xattr_entry 0 22925 NULL +enable_so_port100_send_frame_async_fndecl_22927 port100_send_frame_async fndecl 4 22927 NULL ++enable_so_cifs_xattr_set_fndecl_22930 cifs_xattr_set fndecl 6 22930 NULL +enable_so_event_data_len_msgbuf_rx_event_22931 event_data_len msgbuf_rx_event 0 22931 NULL +enable_so_i2400m_rx_ctl_fndecl_22934 i2400m_rx_ctl fndecl 4 22934 NULL +enable_so_num_counters_ip6t_replace_22944 num_counters ip6t_replace 0 22944 NULL @@ -192800,6 +193313,7 @@ index 0000000..56d8f55 +enable_so_ioctl_private_iw_point_fndecl_23018 ioctl_private_iw_point fndecl 7 23018 &enable_so_tim_len_wmi_tim_info_arg_23018 +enable_so_fw_vif_idx_ath6kl_vif_23020 fw_vif_idx ath6kl_vif 0 23020 NULL +enable_so_nested_get_page_fndecl_23031 nested_get_page fndecl 2 23031 NULL ++enable_so_acpi_aml_write_kern_fndecl_23032 acpi_aml_write_kern fndecl 2-0 23032 NULL +enable_so_rx_frag_size_atl1c_adapter_23034 rx_frag_size atl1c_adapter 0 23034 NULL nohasharray +enable_so_remap_fndecl_23034 remap fndecl 3 23034 &enable_so_rx_frag_size_atl1c_adapter_23034 +enable_so_io_tlb_start_vardecl_swiotlb_c_23035 io_tlb_start vardecl_swiotlb.c 0 23035 NULL @@ -192834,11 +193348,13 @@ index 0000000..56d8f55 +enable_so_numchips_nand_chip_23137 numchips nand_chip 0 23137 NULL +enable_so_num_dv_ports_adv76xx_chip_info_23140 num_dv_ports adv76xx_chip_info 0 23140 NULL +enable_so_udf_load_pvoldesc_fndecl_23141 udf_load_pvoldesc fndecl 2 23141 NULL ++enable_so_rproc_state_write_fndecl_23143 rproc_state_write fndecl 3 23143 NULL +enable_so_max_tx_urbs_kvaser_usb_23152 max_tx_urbs kvaser_usb 0 23152 NULL +enable_so_memblock_free_fndecl_23154 memblock_free fndecl 2-1 23154 NULL +enable_so_oxu_create_fndecl_23159 oxu_create fndecl 3-2 23159 NULL +enable_so_isdn_audio_xlaw2adpcm_fndecl_23162 isdn_audio_xlaw2adpcm fndecl 0 23162 NULL nohasharray +enable_so_rx_defrag_called_read_fndecl_23162 rx_defrag_called_read fndecl 3 23162 &enable_so_isdn_audio_xlaw2adpcm_fndecl_23162 ++enable_so_gfs2_xattr_set_fndecl_23165 gfs2_xattr_set fndecl 6 23165 NULL +enable_so_width_linux_logo_23166 width linux_logo 0 23166 NULL +enable_so_ip6_tnl_rcv_fndecl_23167 ip6_tnl_rcv fndecl 2 23167 NULL nohasharray +enable_so_SyS_add_key_fndecl_23167 SyS_add_key fndecl 4 23167 &enable_so_ip6_tnl_rcv_fndecl_23167 @@ -192847,6 +193363,7 @@ index 0000000..56d8f55 +enable_so_retry_count_ib_cm_req_param_23173 retry_count ib_cm_req_param 0 23173 NULL +enable_so_cyttsp_probe_fndecl_23175 cyttsp_probe fndecl 4 23175 NULL +enable_so_x_res_vbe_mode_ib_23177 x_res vbe_mode_ib 0 23177 NULL ++enable_so_nslot_nd_namespace_index_23178 nslot nd_namespace_index 0 23178 NULL +enable_so_uhid_char_read_fndecl_23187 uhid_char_read fndecl 3 23187 NULL +enable_so_tx_tx_retry_data_read_fndecl_23189 tx_tx_retry_data_read fndecl 3 23189 NULL +enable_so___reuseport_alloc_fndecl_23190 __reuseport_alloc fndecl 1 23190 NULL @@ -192902,7 +193419,8 @@ index 0000000..56d8f55 +enable_so_default_blksize_st_modedef_23371 default_blksize st_modedef 0 23371 NULL +enable_so_packet_buffer_init_fndecl_23380 packet_buffer_init fndecl 2 23380 NULL +enable_so_kernel_map_sync_memtype_fndecl_23381 kernel_map_sync_memtype fndecl 1 23381 NULL -+enable_so_length_dmi_header_23383 length dmi_header 0 23383 NULL ++enable_so_length_dmi_header_23383 length dmi_header 0 23383 NULL nohasharray ++enable_so_nreaders_vardecl_rcuperf_c_23383 nreaders vardecl_rcuperf.c 0 23383 &enable_so_length_dmi_header_23383 +enable_so_pcpu_atom_size_vardecl_percpu_c_23384 pcpu_atom_size vardecl_percpu.c 0 23384 NULL +enable_so_sf_entsize_xfs_dir_ops_23386 sf_entsize xfs_dir_ops 0 23386 NULL nohasharray +enable_so_dstirq_mpc_intsrc_23386 dstirq mpc_intsrc 0 23386 &enable_so_sf_entsize_xfs_dir_ops_23386 @@ -192958,7 +193476,8 @@ index 0000000..56d8f55 +enable_so_cosa_write_fndecl_23549 cosa_write fndecl 3 23549 NULL +enable_so_ufs_inode_getblock_fndecl_23550 ufs_inode_getblock fndecl 4-3-2-0 23550 NULL nohasharray +enable_so_inode_no_exofs_dir_entry_23550 inode_no exofs_dir_entry 0 23550 &enable_so_ufs_inode_getblock_fndecl_23550 -+enable_so_ast_fbdev_set_base_fndecl_23556 ast_fbdev_set_base fndecl 2 23556 NULL ++enable_so_ast_fbdev_set_base_fndecl_23556 ast_fbdev_set_base fndecl 2 23556 NULL nohasharray ++enable_so_n_fields_tracing_map_23556 n_fields tracing_map 0 23556 &enable_so_ast_fbdev_set_base_fndecl_23556 +enable_so_xfs_dabuf_map_fndecl_23558 xfs_dabuf_map fndecl 2 23558 NULL +enable_so_p_chmask_f_uac2_opts_23559 p_chmask f_uac2_opts 0 23559 NULL +enable_so_max_length_axi_dmac_chan_23560 max_length axi_dmac_chan 0 23560 NULL @@ -192996,7 +193515,8 @@ index 0000000..56d8f55 +enable_so_viafb_bpp1_vardecl_viafbdev_c_23657 viafb_bpp1 vardecl_viafbdev.c 0 23657 NULL +enable_so_cmtp_send_interopmsg_fndecl_23659 cmtp_send_interopmsg fndecl 7 23659 NULL +enable_so_unix_stream_sendpage_fndecl_23660 unix_stream_sendpage fndecl 4-3 23660 NULL nohasharray -+enable_so_elem_count_mlxsw_pci_queue_ops_23660 elem_count mlxsw_pci_queue_ops 0 23660 &enable_so_unix_stream_sendpage_fndecl_23660 ++enable_so_elem_count_mlxsw_pci_queue_ops_23660 elem_count mlxsw_pci_queue_ops 0 23660 &enable_so_unix_stream_sendpage_fndecl_23660 nohasharray ++enable_so_reg_list_size_bytes_rlc_firmware_header_v2_0_23660 reg_list_size_bytes rlc_firmware_header_v2_0 0 23660 &enable_so_elem_count_mlxsw_pci_queue_ops_23660 +enable_so_fat_length_msdos_sb_info_23672 fat_length msdos_sb_info 0 23672 NULL +enable_so_mlx5_core_access_reg_fndecl_23674 mlx5_core_access_reg fndecl 3-5 23674 NULL +enable_so_xfs_get_blocks_fndecl_23679 xfs_get_blocks fndecl 2 23679 NULL nohasharray @@ -193077,6 +193597,7 @@ index 0000000..56d8f55 +enable_so_vdisplay_drm_display_mode_23870 vdisplay drm_display_mode 0 23870 NULL +enable_so_ohead_offs_ubifs_info_23876 ohead_offs ubifs_info 0 23876 NULL nohasharray +enable_so_c_data_offs_pvr2_ioread_23876 c_data_offs pvr2_ioread 0 23876 &enable_so_ohead_offs_ubifs_info_23876 ++enable_so_write_file_tpc_fndecl_23877 write_file_tpc fndecl 3 23877 NULL +enable_so_operand_2_len_ccp_ecc_modular_math_23882 operand_2_len ccp_ecc_modular_math 0 23882 NULL +enable_so_load_msg_fndecl_23884 load_msg fndecl 2 23884 NULL +enable_so_snd_korg1212_copy_to_fndecl_23887 snd_korg1212_copy_to fndecl 6 23887 NULL @@ -193097,6 +193618,7 @@ index 0000000..56d8f55 +enable_so_p9_client_readdir_fndecl_23927 p9_client_readdir fndecl 0-3 23927 NULL +enable_so_disk_len_btrfs_ordered_extent_23932 disk_len btrfs_ordered_extent 0 23932 NULL +enable_so_smiapp_write_8_fndecl_23937 smiapp_write_8 fndecl 2 23937 NULL ++enable_so_tracing_trace_options_write_fndecl_23946 tracing_trace_options_write fndecl 3 23946 NULL +enable_so_btrfs_setxattr_fndecl_23956 btrfs_setxattr fndecl 4 23956 NULL +enable_so_init_q_fndecl_23959 init_q fndecl 4 23959 NULL +enable_so_input_buffer_size_vardecl_seq_midi_c_23961 input_buffer_size vardecl_seq_midi.c 0 23961 NULL @@ -193152,7 +193674,6 @@ index 0000000..56d8f55 +enable_so_pat_pagerange_is_ram_fndecl_24089 pat_pagerange_is_ram fndecl 1-2 24089 NULL +enable_so_mw_count_ntb_transport_ctx_24094 mw_count ntb_transport_ctx 0 24094 NULL nohasharray +enable_so_cfs_trace_allocate_string_buffer_fndecl_24094 cfs_trace_allocate_string_buffer fndecl 2 24094 &enable_so_mw_count_ntb_transport_ctx_24094 -+enable_so_strings_count_ffs_data_24095 strings_count ffs_data 0 24095 NULL +enable_so_irq_base_pm860x_chip_24096 irq_base pm860x_chip 0 24096 NULL +enable_so_sectors_md_rdev_24098 sectors md_rdev 0 24098 NULL +enable_so_cnt_nfp_net_rx_ring_24099 cnt nfp_net_rx_ring 0 24099 NULL @@ -193416,7 +193937,8 @@ index 0000000..56d8f55 +enable_so_scif_create_pinned_pages_fndecl_24761 scif_create_pinned_pages fndecl 1 24761 NULL nohasharray +enable_so_inftl_read_oob_fndecl_24761 inftl_read_oob fndecl 2-3 24761 &enable_so_scif_create_pinned_pages_fndecl_24761 +enable_so_pending_deflate_state_24766 pending deflate_state 0 24766 NULL -+enable_so_drbd_bm_total_weight_fndecl_24776 drbd_bm_total_weight fndecl 0 24776 NULL ++enable_so_drbd_bm_total_weight_fndecl_24776 drbd_bm_total_weight fndecl 0 24776 NULL nohasharray ++enable_so_s_hdrwords_hfi1_qp_24776 s_hdrwords hfi1_qp 0 24776 &enable_so_drbd_bm_total_weight_fndecl_24776 +enable_so_xlog_state_switch_iclogs_fndecl_24782 xlog_state_switch_iclogs fndecl 3 24782 NULL +enable_so__sdma_txadd_daddr_fndecl_24789 _sdma_txadd_daddr fndecl 5 24789 NULL +enable_so_gx1_read_conf_reg_fndecl_24794 gx1_read_conf_reg fndecl 0 24794 NULL nohasharray @@ -193424,7 +193946,8 @@ index 0000000..56d8f55 +enable_so_afs_proc_rootcell_write_fndecl_24797 afs_proc_rootcell_write fndecl 3 24797 NULL +enable_so_usHSyncWidth__ATOM_DTD_FORMAT_24801 usHSyncWidth _ATOM_DTD_FORMAT 0 24801 NULL nohasharray +enable_so_index_vardecl_atiixp_c_24801 index vardecl_atiixp.c 0 24801 &enable_so_usHSyncWidth__ATOM_DTD_FORMAT_24801 -+enable_so_mprotect_fixup_fndecl_24803 mprotect_fixup fndecl 4-3 24803 NULL ++enable_so_mprotect_fixup_fndecl_24803 mprotect_fixup fndecl 4-3 24803 NULL nohasharray ++enable_so_write_file_tx99_fndecl_24803 write_file_tx99 fndecl 3 24803 &enable_so_mprotect_fixup_fndecl_24803 +enable_so___read_extent_tree_block_fndecl_24804 __read_extent_tree_block fndecl 4 24804 NULL +enable_so_copy_to_urb_quirk_fndecl_24807 copy_to_urb_quirk fndecl 3-0-4 24807 NULL nohasharray +enable_so_num_q_vectors_i40e_vsi_24807 num_q_vectors i40e_vsi 0 24807 &enable_so_copy_to_urb_quirk_fndecl_24807 @@ -193447,6 +193970,7 @@ index 0000000..56d8f55 +enable_so_wLength_usbdevfs_ctrltransfer_24851 wLength usbdevfs_ctrltransfer 0 24851 &enable_so_acpi_ut_create_string_object_fndecl_24851 +enable_so_pa_len_ext4_prealloc_space_24852 pa_len ext4_prealloc_space 0 24852 NULL +enable_so_body_len_vardecl_initramfs_c_24853 body_len vardecl_initramfs.c 0 24853 NULL ++enable_so_sdebug_sector_size_vardecl_scsi_debug_c_24855 sdebug_sector_size vardecl_scsi_debug.c 0 24855 NULL +enable_so_usbhs_pipe_config_update_fndecl_24856 usbhs_pipe_config_update fndecl 4 24856 NULL +enable_so_compat_sys_process_vm_readv_fndecl_24861 compat_sys_process_vm_readv fndecl 5-3 24861 NULL nohasharray +enable_so_bgpio_init_fndecl_24861 bgpio_init fndecl 3 24861 &enable_so_compat_sys_process_vm_readv_fndecl_24861 @@ -193569,12 +194093,14 @@ index 0000000..56d8f55 +enable_so_s_writesize_logfs_super_25176 s_writesize logfs_super 0 25176 &enable_so_cipso_v4_map_cat_rng_hton_fndecl_25176 +enable_so_btrfs_create_repair_bio_fndecl_25181 btrfs_create_repair_bio fndecl 5 25181 NULL +enable_so_heapstart_sis_video_info_25184 heapstart sis_video_info 0 25184 NULL ++enable_so_il_dbgfs_disable_ht40_write_fndecl_25194 il_dbgfs_disable_ht40_write fndecl 3 25194 NULL +enable_so_coex_tx_win_size_mwifiex_adapter_25195 coex_tx_win_size mwifiex_adapter 0 25195 NULL +enable_so_run_filter_fndecl_25196 run_filter fndecl 0-3 25196 NULL +enable_so_iso_in_endp_ttusbir_25197 iso_in_endp ttusbir 0 25197 NULL nohasharray +enable_so_SyS_fgetxattr_fndecl_25197 SyS_fgetxattr fndecl 4 25197 &enable_so_iso_in_endp_ttusbir_25197 +enable_so_do_shrink_fndecl_25198 do_shrink fndecl 3-2 25198 NULL +enable_so_backing_dev_len_disk_conf_25199 backing_dev_len disk_conf 0 25199 NULL ++enable_so_dlen_cxgbit_lro_pdu_cb_25201 dlen cxgbit_lro_pdu_cb 0 25201 NULL +enable_so_size_ioc_sts_mv_dtd_25203 size_ioc_sts mv_dtd 0 25203 NULL +enable_so_ux500_regulator_debug_init_fndecl_25207 ux500_regulator_debug_init fndecl 3 25207 NULL +enable_so___exchange_data_block_fndecl_25208 __exchange_data_block fndecl 3-2 25208 NULL @@ -193704,6 +194230,7 @@ index 0000000..56d8f55 +enable_so_s_partition_len_udf_part_map_25593 s_partition_len udf_part_map 0 25593 NULL nohasharray +enable_so_MaxReplyDescriptorPostQueueDepth_mpt3sas_facts_25593 MaxReplyDescriptorPostQueueDepth mpt3sas_facts 0 25593 &enable_so_s_partition_len_udf_part_map_25593 +enable_so_pcm_playback_analog_channels_snd_tscm_spec_25594 pcm_playback_analog_channels snd_tscm_spec 0 25594 NULL ++enable_so_udelay_test_write_fndecl_25596 udelay_test_write fndecl 3 25596 NULL +enable_so_isr_hw_pm_mode_changes_read_fndecl_25597 isr_hw_pm_mode_changes_read fndecl 3 25597 NULL nohasharray +enable_so_dma_tx_requested_read_fndecl_25597 dma_tx_requested_read fndecl 3 25597 &enable_so_isr_hw_pm_mode_changes_read_fndecl_25597 +enable_so_max_cmd_sg_entries_ctlr_info_25601 max_cmd_sg_entries ctlr_info 0 25601 NULL @@ -193720,6 +194247,7 @@ index 0000000..56d8f55 +enable_so_getxattr_inode_operations_25660 getxattr inode_operations 0 25660 NULL +enable_so_s5c73m3_spi_write_fndecl_25661 s5c73m3_spi_write fndecl 4-3 25661 NULL nohasharray +enable_so_btt_write_pg_fndecl_25661 btt_write_pg fndecl 0 25661 &enable_so_s5c73m3_spi_write_fndecl_25661 ++enable_so_min_bytes_needed_fndecl_25664 min_bytes_needed fndecl 0 25664 NULL +enable_so_eec_entry_sz_mthca_dev_lim_25665 eec_entry_sz mthca_dev_lim 0 25665 NULL +enable_so_m_ag_maxlevels_xfs_mount_25666 m_ag_maxlevels xfs_mount 0 25666 NULL nohasharray +enable_so_HWPartsNum_qinfo_chip_25666 HWPartsNum qinfo_chip 0 25666 &enable_so_m_ag_maxlevels_xfs_mount_25666 @@ -193729,7 +194257,6 @@ index 0000000..56d8f55 +enable_so_pipeline_enc_tx_stat_fifo_int_read_fndecl_25675 pipeline_enc_tx_stat_fifo_int_read fndecl 3 25675 &enable_so_bnxt_change_mtu_fndecl_25675 +enable_so_tsi148_master_set_fndecl_25678 tsi148_master_set fndecl 4 25678 NULL +enable_so_layout_mdp_superblock_s_25680 layout mdp_superblock_s 0 25680 NULL -+enable_so_enumerate_cpuinfo_nodes_fndecl_25690 enumerate_cpuinfo_nodes fndecl 0 25690 NULL +enable_so_max_cmd_per_lun_vardecl_megaraid_c_25693 max_cmd_per_lun vardecl_megaraid.c 0 25693 NULL +enable_so_persistent_ram_ecc_string_fndecl_25699 persistent_ram_ecc_string fndecl 0 25699 NULL +enable_so_xh_num_buckets_ocfs2_xattr_header_25701 xh_num_buckets ocfs2_xattr_header 0 25701 NULL nohasharray @@ -193806,7 +194333,8 @@ index 0000000..56d8f55 +enable_so_gid_tbl_len_ib_port_immutable_25893 gid_tbl_len ib_port_immutable 0 25893 &enable_so_intf_num_smi_info_25893 +enable_so_walk_page_range_fndecl_25894 walk_page_range fndecl 0 25894 NULL +enable_so_ath6kl_regdump_read_fndecl_25898 ath6kl_regdump_read fndecl 3 25898 NULL -+enable_so_vram_remap_vardecl_uvesafb_c_25907 vram_remap vardecl_uvesafb.c 0 25907 NULL ++enable_so_vram_remap_vardecl_uvesafb_c_25907 vram_remap vardecl_uvesafb.c 0 25907 NULL nohasharray ++enable_so_nfp_net_tx_ring_alloc_fndecl_25907 nfp_net_tx_ring_alloc fndecl 2 25907 &enable_so_vram_remap_vardecl_uvesafb_c_25907 +enable_so_kvm_vcpu_gfn_to_hva_prot_fndecl_25911 kvm_vcpu_gfn_to_hva_prot fndecl 2 25911 NULL +enable_so_acpi_get_override_irq_fndecl_25918 acpi_get_override_irq fndecl 1 25918 NULL +enable_so_mtd_concat_create_fndecl_25923 mtd_concat_create fndecl 2 25923 NULL nohasharray @@ -193823,6 +194351,7 @@ index 0000000..56d8f55 +enable_so_len_xsd_sockmsg_25963 len xsd_sockmsg 0 25963 NULL +enable_so_ieee802154_hdr_get_sechdr_fndecl_25965 ieee802154_hdr_get_sechdr fndecl 0 25965 NULL +enable_so_memblock_remove_range_fndecl_25969 memblock_remove_range fndecl 3-2 25969 NULL ++enable_so__iwl_dbgfs_sram_write_fndecl_25972 _iwl_dbgfs_sram_write fndecl 3 25972 NULL +enable_so_tx_max_out_mpt_lan_priv_25974 tx_max_out mpt_lan_priv 0 25974 NULL +enable_so_pci_ni8430_setup_fndecl_25977 pci_ni8430_setup fndecl 4 25977 NULL +enable_so_vscnprintf_fndecl_25984 vscnprintf fndecl 0 25984 NULL @@ -193841,6 +194370,7 @@ index 0000000..56d8f55 +enable_so_ll_recv_fndecl_26047 ll_recv fndecl 3 26047 NULL +enable_so_md_template_size_netxen_minidump_26050 md_template_size netxen_minidump 0 26050 NULL +enable_so_port_ipoib_dev_priv_26051 port ipoib_dev_priv 0 26051 NULL ++enable_so_picolcd_debug_eeprom_read_fndecl_26054 picolcd_debug_eeprom_read fndecl 3 26054 NULL +enable_so_l2cap_send_cmd_fndecl_26055 l2cap_send_cmd fndecl 4 26055 NULL +enable_so__pcol_init_fndecl_26056 _pcol_init fndecl 2 26056 NULL +enable_so_physical_for_dev_replace_scrub_copy_nocow_ctx_26059 physical_for_dev_replace scrub_copy_nocow_ctx 0 26059 NULL @@ -194019,7 +194549,8 @@ index 0000000..56d8f55 +enable_so_npages_kvm_memory_slot_26541 npages kvm_memory_slot 0 26541 NULL +enable_so_nfsd_drc_max_mem_vardecl_26544 nfsd_drc_max_mem vardecl 0 26544 NULL nohasharray +enable_so_sctp_setsockopt_default_sndinfo_fndecl_26544 sctp_setsockopt_default_sndinfo fndecl 3 26544 &enable_so_nfsd_drc_max_mem_vardecl_26544 -+enable_so_onenand_write_fndecl_26546 onenand_write fndecl 2 26546 NULL ++enable_so_onenand_write_fndecl_26546 onenand_write fndecl 2 26546 NULL nohasharray ++enable_so_rss_lut_size_i40evf_adapter_26546 rss_lut_size i40evf_adapter 0 26546 &enable_so_onenand_write_fndecl_26546 +enable_so_pci_irq_pcmcia_socket_26558 pci_irq pcmcia_socket 0 26558 NULL +enable_so_maxdepth_sfq_sched_data_26560 maxdepth sfq_sched_data 0 26560 NULL +enable_so_cld_pipe_downcall_fndecl_26561 cld_pipe_downcall fndecl 3 26561 NULL @@ -194150,6 +194681,7 @@ index 0000000..56d8f55 +enable_so_cache_ctr_fndecl_26919 cache_ctr fndecl 2 26919 &enable_so_get_wep_key_fndecl_26919 +enable_so_amdgpu_bo_create_restricted_fndecl_26920 amdgpu_bo_create_restricted fndecl 2 26920 NULL +enable_so_to_skip_sd_26922 to_skip sd 0 26922 NULL ++enable_so_jfs_xattr_set_os2_fndecl_26923 jfs_xattr_set_os2 fndecl 6 26923 NULL +enable_so_count_vnic_res_26925 count vnic_res 0 26925 NULL +enable_so_depth_vpdma_data_format_26927 depth vpdma_data_format 0 26927 NULL +enable_so_major_intel_th_26929 major intel_th 0 26929 NULL @@ -194242,7 +194774,7 @@ index 0000000..56d8f55 +enable_so_rxkad_sg_set_buf2_fndecl_27140 rxkad_sg_set_buf2 fndecl 3 27140 NULL +enable_so_rx_ps_bsize0_e1000_adapter_27144 rx_ps_bsize0 e1000_adapter 0 27144 NULL +enable_so_compat_sys_pselect6_fndecl_27146 compat_sys_pselect6 fndecl 1 27146 NULL -+enable_so_p9_client_prepare_req_fndecl_27150 p9_client_prepare_req fndecl 3 27150 NULL ++enable_so_sys_bpf_fndecl_27150 sys_bpf fndecl 3 27150 NULL +enable_so_nilfs_attach_checkpoint_fndecl_27152 nilfs_attach_checkpoint fndecl 2 27152 NULL +enable_so__nfs4_proc_readdir_fndecl_27153 _nfs4_proc_readdir fndecl 5 27153 NULL +enable_so_dgram_recvmsg_fndecl_27155 dgram_recvmsg fndecl 3 27155 NULL @@ -194277,6 +194809,7 @@ index 0000000..56d8f55 +enable_so_acks_winsz_rxrpc_call_27236 acks_winsz rxrpc_call 0 27236 &enable_so_qib_cfgctxts_vardecl_27236 +enable_so_do_splice_fndecl_27239 do_splice fndecl 5 27239 NULL +enable_so_hfsplus_brec_find_fndecl_27243 hfsplus_brec_find fndecl 0 27243 NULL ++enable_so_name_len_ceph_mds_reply_dir_entry_27245 name_len ceph_mds_reply_dir_entry 0 27245 NULL +enable_so_sisusb_recv_bulk_msg_fndecl_27246 sisusb_recv_bulk_msg fndecl 3-2 27246 NULL +enable_so_skb_read_pdu_data_fndecl_27249 skb_read_pdu_data fndecl 4 27249 NULL +enable_so_ocfs2_xattr_value_truncate_fndecl_27252 ocfs2_xattr_value_truncate fndecl 3 27252 NULL nohasharray @@ -194315,8 +194848,7 @@ index 0000000..56d8f55 +enable_so_offset_gtt_range_27356 offset gtt_range 0 27356 &enable_so_pix_format_set_size_fndecl_27356 +enable_so_static_data_priv_len_wl1271_27357 static_data_priv_len wl1271 0 27357 NULL +enable_so_n_mcgrps_genl_family_27362 n_mcgrps genl_family 0 27362 NULL -+enable_so_find_new_extents_fndecl_27368 find_new_extents fndecl 5 27368 NULL nohasharray -+enable_so_ext_tree_layoutupdate_size_fndecl_27368 ext_tree_layoutupdate_size fndecl 0-2 27368 &enable_so_find_new_extents_fndecl_27368 ++enable_so_find_new_extents_fndecl_27368 find_new_extents fndecl 5 27368 NULL +enable_so_channels_pda_pa_curve_data_27369 channels pda_pa_curve_data 0 27369 NULL +enable_so_btrfs_add_delayed_tree_ref_fndecl_27370 btrfs_add_delayed_tree_ref fndecl 3 27370 NULL +enable_so_num_altsetting_usb_interface_27371 num_altsetting usb_interface 0 27371 NULL @@ -194419,6 +194951,7 @@ index 0000000..56d8f55 +enable_so_size_compat_ip6t_replace_27672 size compat_ip6t_replace 0 27672 NULL +enable_so_ib_umem_get_fndecl_27678 ib_umem_get fndecl 2-3 27678 NULL +enable_so_tlbflush_write_file_fndecl_27685 tlbflush_write_file fndecl 3 27685 NULL ++enable_so__iwl_dbgfs_prph_reg_write_fndecl_27686 _iwl_dbgfs_prph_reg_write fndecl 3 27686 NULL +enable_so_bnx2x_iov_init_one_fndecl_27687 bnx2x_iov_init_one fndecl 3 27687 NULL +enable_so_mt9m111_get_global_gain_fndecl_27689 mt9m111_get_global_gain fndecl 0 27689 NULL +enable_so_ipv6_get_l4proto_fndecl_27691 ipv6_get_l4proto fndecl 2 27691 NULL @@ -194445,6 +194978,7 @@ index 0000000..56d8f55 +enable_so_si_blocks_ocfs2_slot_info_27753 si_blocks ocfs2_slot_info 0 27753 NULL +enable_so_sparse_mem_maps_populate_node_fndecl_27758 sparse_mem_maps_populate_node fndecl 4 27758 NULL nohasharray +enable_so_sel_read_class_fndecl_27758 sel_read_class fndecl 3 27758 &enable_so_sparse_mem_maps_populate_node_fndecl_27758 ++enable_so_dwc3_link_state_write_fndecl_27762 dwc3_link_state_write fndecl 3 27762 NULL +enable_so_nr_sendmsg_fndecl_27763 nr_sendmsg fndecl 3 27763 NULL +enable_so_h_drm_vmw_rect_27765 h drm_vmw_rect 0 27765 NULL +enable_so_instat_endpoint_keyspan_device_details_27768 instat_endpoint keyspan_device_details 0 27768 NULL nohasharray @@ -194624,13 +195158,15 @@ index 0000000..56d8f55 +enable_so_data_pad_ubi_vtbl_record_28297 data_pad ubi_vtbl_record 0 28297 NULL +enable_so_byte_count_il_rx_phy_res_28304 byte_count il_rx_phy_res 0 28304 NULL +enable_so_flags2_psb_s_28305 flags2 psb_s 0 28305 NULL ++enable_so_create_trace_uprobe_fndecl_28307 create_trace_uprobe fndecl 1 28307 NULL +enable_so___xfs_get_blocks_fndecl_28308 __xfs_get_blocks fndecl 2 28308 NULL +enable_so_sst25l_read_fndecl_28315 sst25l_read fndecl 3 28315 NULL +enable_so_comedi_read_fndecl_28316 comedi_read fndecl 3 28316 NULL +enable_so_npages_mlx4_buf_28321 npages mlx4_buf 0 28321 NULL +enable_so_version_tclass_flow_ib_grh_28322 version_tclass_flow ib_grh 0 28322 NULL +enable_so_set_video_mode_Kiara_fndecl_28325 set_video_mode_Kiara fndecl 4 28325 NULL -+enable_so_raw_descs_length_ffs_data_28328 raw_descs_length ffs_data 0 28328 NULL ++enable_so_raw_descs_length_ffs_data_28328 raw_descs_length ffs_data 0 28328 NULL nohasharray ++enable_so__iwl_dbgfs_disable_power_off_write_fndecl_28328 _iwl_dbgfs_disable_power_off_write fndecl 3 28328 &enable_so_raw_descs_length_ffs_data_28328 +enable_so_max_segment_size_brcmf_sdio_dev_28330 max_segment_size brcmf_sdio_dev 0 28330 NULL nohasharray +enable_so_size_videobuf_dmabuf_28330 size videobuf_dmabuf 0 28330 &enable_so_max_segment_size_brcmf_sdio_dev_28330 +enable_so_asix_read_cmd_fndecl_28334 asix_read_cmd fndecl 5 28334 NULL @@ -194718,6 +195254,7 @@ index 0000000..56d8f55 +enable_so_out_max_chans_snd_card_asihpi_28574 out_max_chans snd_card_asihpi 0 28574 NULL nohasharray +enable_so_ufx_i2c_wait_busy_fndecl_28574 ufx_i2c_wait_busy fndecl 0 28574 &enable_so_out_max_chans_snd_card_asihpi_28574 +enable_so_charcount_console_font_op_28585 charcount console_font_op 0 28585 NULL ++enable_so__iwl_dbgfs_ss_force_write_fndecl_28587 _iwl_dbgfs_ss_force_write fndecl 3 28587 NULL +enable_so_uhci_map_status_fndecl_28591 uhci_map_status fndecl 0 28591 NULL +enable_so_tmc_read_fndecl_28597 tmc_read fndecl 3 28597 NULL +enable_so_icsk_pmtu_cookie_inet_connection_sock_28598 icsk_pmtu_cookie inet_connection_sock 0 28598 NULL @@ -194759,6 +195296,7 @@ index 0000000..56d8f55 +enable_so_size_fuse_notify_store_out_28704 size fuse_notify_store_out 0 28704 &enable_so_cw_bmove_fndecl_28704 +enable_so_CIFSSMBWrite2_fndecl_28705 CIFSSMBWrite2 fndecl 5 28705 NULL +enable_so_mlx4_init_cmpt_table_fndecl_28706 mlx4_init_cmpt_table fndecl 3 28706 NULL ++enable_so_lpfc_idiag_ctlacc_write_fndecl_28715 lpfc_idiag_ctlacc_write fndecl 3 28715 NULL +enable_so_nilfs_bmap_lookup_contig_fndecl_28717 nilfs_bmap_lookup_contig fndecl 0 28717 NULL nohasharray +enable_so_oprofilefs_ulong_to_user_fndecl_28717 oprofilefs_ulong_to_user fndecl 3 28717 &enable_so_nilfs_bmap_lookup_contig_fndecl_28717 +enable_so_phys_smscore_buffer_t_28719 phys smscore_buffer_t 0 28719 NULL nohasharray @@ -194790,7 +195328,8 @@ index 0000000..56d8f55 +enable_so_e820_remove_range_fndecl_28810 e820_remove_range fndecl 1-2 28810 NULL nohasharray +enable_so_ide_queue_pc_tail_fndecl_28810 ide_queue_pc_tail fndecl 5 28810 &enable_so_e820_remove_range_fndecl_28810 +enable_so_sisusb_send_bridge_packet_fndecl_28818 sisusb_send_bridge_packet fndecl 2 28818 NULL -+enable_so_ceph_build_auth_fndecl_28825 ceph_build_auth fndecl 0 28825 NULL ++enable_so_ceph_build_auth_fndecl_28825 ceph_build_auth fndecl 0 28825 NULL nohasharray ++enable_so_oid_printf_vargs_fndecl_28825 oid_printf_vargs fndecl 0 28825 &enable_so_ceph_build_auth_fndecl_28825 +enable_so_sdio_memcpy_toio_fndecl_28828 sdio_memcpy_toio fndecl 4 28828 NULL +enable_so_vram_end_radeon_mc_28831 vram_end radeon_mc 0 28831 NULL +enable_so_right_qxl_urect_28833 right qxl_urect 0 28833 NULL nohasharray @@ -194828,6 +195367,7 @@ index 0000000..56d8f55 +enable_so_tegra_sflash_start_cpu_based_transfer_fndecl_28927 tegra_sflash_start_cpu_based_transfer fndecl 0 28927 NULL +enable_so_block_hfs_extent_28930 block hfs_extent 0 28930 NULL +enable_so_rpcrdma_count_chunks_fndecl_28931 rpcrdma_count_chunks fndecl 0 28931 NULL ++enable_so_wil_write_led_blink_time_fndecl_28933 wil_write_led_blink_time fndecl 3 28933 NULL +enable_so_usbat_write_block_fndecl_28938 usbat_write_block fndecl 4-6 28938 NULL +enable_so_pgs_per_blk_nvm_dev_28942 pgs_per_blk nvm_dev 0 28942 NULL +enable_so_alsa_index_vardecl_thinkpad_acpi_c_28952 alsa_index vardecl_thinkpad_acpi.c 0 28952 NULL @@ -194864,8 +195404,8 @@ index 0000000..56d8f55 +enable_so_at24_read_fndecl_29031 at24_read fndecl 4 29031 NULL +enable_so_drm_vblank_init_fndecl_29041 drm_vblank_init fndecl 2 29041 NULL +enable_so_of_get_available_child_count_fndecl_29042 of_get_available_child_count fndecl 0 29042 NULL -+enable_so_batadv_skb_head_push_fndecl_29043 batadv_skb_head_push fndecl 2 29043 NULL -+enable_so_scsi_debug_unmap_max_desc_vardecl_scsi_debug_c_29046 scsi_debug_unmap_max_desc vardecl_scsi_debug.c 0 29046 NULL ++enable_so_batadv_skb_head_push_fndecl_29043 batadv_skb_head_push fndecl 2 29043 NULL nohasharray ++enable_so_devm_mfd_add_devices_fndecl_29043 devm_mfd_add_devices fndecl 4 29043 &enable_so_batadv_skb_head_push_fndecl_29043 +enable_so_memory_size_kvm_userspace_memory_region_29047 memory_size kvm_userspace_memory_region 0 29047 NULL +enable_so_qib_get_base_info_fndecl_29050 qib_get_base_info fndecl 3 29050 NULL +enable_so_scsi_debug_max_queue_vardecl_scsi_debug_c_29056 scsi_debug_max_queue vardecl_scsi_debug.c 0 29056 NULL nohasharray @@ -194876,6 +195416,7 @@ index 0000000..56d8f55 +enable_so_nfs4_xattr_set_nfs4_acl_fndecl_29062 nfs4_xattr_set_nfs4_acl fndecl 5 29062 NULL +enable_so_use_dmio_fndecl_29065 use_dmio fndecl 3 29065 NULL +enable_so_ucFakeEDIDLength__ATOM_FAKE_EDID_PATCH_RECORD_29067 ucFakeEDIDLength _ATOM_FAKE_EDID_PATCH_RECORD 0 29067 NULL ++enable_so_i40e_dbg_command_write_fndecl_29070 i40e_dbg_command_write fndecl 3 29070 NULL +enable_so_isku_sysfs_read_keys_capslock_fndecl_29075 isku_sysfs_read_keys_capslock fndecl 6 29075 NULL +enable_so_tse_change_mtu_fndecl_29076 tse_change_mtu fndecl 2 29076 NULL +enable_so_dev_irnet_write_fndecl_29077 dev_irnet_write fndecl 3 29077 NULL @@ -194892,8 +195433,7 @@ index 0000000..56d8f55 +enable_so_ioctl_code_usbdevfs_ioctl_29134 ioctl_code usbdevfs_ioctl 0 29134 NULL +enable_so_max_dump_cnt_ramoops_context_29141 max_dump_cnt ramoops_context 0 29141 NULL +enable_so_pci_pericom_setup_fndecl_29142 pci_pericom_setup fndecl 4 29142 NULL -+enable_so_y1_virtio_gpu_framebuffer_29147 y1 virtio_gpu_framebuffer 0 29147 NULL nohasharray -+enable_so_sys_oabi_ipc_fndecl_29147 sys_oabi_ipc fndecl 3 29147 &enable_so_y1_virtio_gpu_framebuffer_29147 ++enable_so_y1_virtio_gpu_framebuffer_29147 y1 virtio_gpu_framebuffer 0 29147 NULL +enable_so_send_bulk_pipe_us_data_29148 send_bulk_pipe us_data 0 29148 NULL +enable_so_hidp_sock_create_fndecl_29151 hidp_sock_create fndecl 3 29151 NULL +enable_so_width_usbtv_29152 width usbtv 0 29152 NULL @@ -194938,7 +195478,8 @@ index 0000000..56d8f55 +enable_so_reg_shift_sccnxp_pdata_29283 reg_shift sccnxp_pdata 0 29283 NULL +enable_so_sh_last_alloc_nilfs_sufile_header_29285 sh_last_alloc nilfs_sufile_header 0 29285 NULL +enable_so_vmbus_open_fndecl_29289 vmbus_open fndecl 3-2 29289 NULL -+enable_so_data_len_ceph_msg_header_29290 data_len ceph_msg_header 0 29290 NULL ++enable_so_data_len_ceph_msg_header_29290 data_len ceph_msg_header 0 29290 NULL nohasharray ++enable_so__iwl_dbgfs_tof_range_req_ext_write_fndecl_29290 _iwl_dbgfs_tof_range_req_ext_write fndecl 3 29290 &enable_so_data_len_ceph_msg_header_29290 +enable_so_btmrvl_sdio_host_to_card_fndecl_29291 btmrvl_sdio_host_to_card fndecl 3 29291 NULL +enable_so_leb_start_ubi_device_29292 leb_start ubi_device 0 29292 NULL +enable_so_user_ptr_drm_i915_gem_userptr_29294 user_ptr drm_i915_gem_userptr 0 29294 NULL @@ -194953,7 +195494,6 @@ index 0000000..56d8f55 +enable_so_vmw_fifo_reserve_fndecl_29310 vmw_fifo_reserve fndecl 2 29310 NULL +enable_so_soc_mbus_image_size_fndecl_29311 soc_mbus_image_size fndecl 0-3-2 29311 NULL +enable_so_ddp_make_gl_fndecl_29312 ddp_make_gl fndecl 1 29312 NULL -+enable_so_LNetEQAlloc_fndecl_29313 LNetEQAlloc fndecl 1 29313 NULL +enable_so_fnic_reset_stats_write_fndecl_29314 fnic_reset_stats_write fndecl 3 29314 NULL +enable_so_num_msix_roce_vec_be_adapter_29319 num_msix_roce_vec be_adapter 0 29319 NULL +enable_so_ip_generic_getfrag_fndecl_29320 ip_generic_getfrag fndecl 4 29320 NULL @@ -194989,7 +195529,8 @@ index 0000000..56d8f55 +enable_so___alloc_bootmem_low_nopanic_fndecl_29400 __alloc_bootmem_low_nopanic fndecl 2-1-3 29400 NULL nohasharray +enable_so_irq_set_msi_desc_off_fndecl_29400 irq_set_msi_desc_off fndecl 1 29400 &enable_so___alloc_bootmem_low_nopanic_fndecl_29400 nohasharray +enable_so_octeon_alloc_recv_info_fndecl_29400 octeon_alloc_recv_info fndecl 1 29400 &enable_so_irq_set_msi_desc_off_fndecl_29400 -+enable_so_hpfs_map_sector_fndecl_29402 hpfs_map_sector fndecl 2 29402 NULL ++enable_so_hpfs_map_sector_fndecl_29402 hpfs_map_sector fndecl 2 29402 NULL nohasharray ++enable_so_hisax_cs_setup_fndecl_29402 hisax_cs_setup fndecl 0 29402 &enable_so_hpfs_map_sector_fndecl_29402 +enable_so_udp_gro_complete_fndecl_29407 udp_gro_complete fndecl 2 29407 NULL +enable_so_sisfb_mem_sis_video_info_29418 sisfb_mem sis_video_info 0 29418 NULL +enable_so_xop_data_nents_xcopy_op_29423 xop_data_nents xcopy_op 0 29423 NULL @@ -195033,6 +195574,7 @@ index 0000000..56d8f55 +enable_so_iwl_mvm_send_cmd_pdu_fndecl_29560 iwl_mvm_send_cmd_pdu fndecl 0 29560 NULL +enable_so_calculate_iosize_fndecl_29562 calculate_iosize fndecl 0-4-5-3-2-1 29562 NULL +enable_so_ieee80211_rx_bss_info_fndecl_29564 ieee80211_rx_bss_info fndecl 3 29564 NULL ++enable_so_fs_devrw_entry_fndecl_29575 fs_devrw_entry fndecl 3 29575 NULL +enable_so_addr_drm_amdgpu_gem_userptr_29582 addr drm_amdgpu_gem_userptr 0 29582 NULL +enable_so___allowed_ingress_fndecl_29584 __allowed_ingress fndecl 2 29584 NULL +enable_so_xstateregs_get_fndecl_29585 xstateregs_get fndecl 4 29585 NULL nohasharray @@ -195209,6 +195751,7 @@ index 0000000..56d8f55 +enable_so_if_real_bytes_xfs_ifork_30126 if_real_bytes xfs_ifork 0 30126 NULL +enable_so_max_total_qng_asc_dvc_var_30137 max_total_qng asc_dvc_var 0 30137 NULL +enable_so_hdr_len_ieee80211_fast_tx_30143 hdr_len ieee80211_fast_tx 0 30143 NULL ++enable_so_ath10k_write_btcoex_fndecl_30144 ath10k_write_btcoex fndecl 3 30144 NULL +enable_so_map_mr_sg_ib_device_30147 map_mr_sg ib_device 0 30147 NULL +enable_so_chunk_len_nfcmrvl_fw_dnld_30149 chunk_len nfcmrvl_fw_dnld 0 30149 NULL +enable_so_i915_gem_object_create_stolen_for_preallocated_fndecl_30151 i915_gem_object_create_stolen_for_preallocated fndecl 4-2-3 30151 NULL nohasharray @@ -195258,7 +195801,6 @@ index 0000000..56d8f55 +enable_so_tda665x_write_fndecl_30269 tda665x_write fndecl 3 30269 NULL +enable_so_minor_count_vardecl_30272 minor_count vardecl 0 30272 NULL +enable_so_data_size_netup_dma_30274 data_size netup_dma 0 30274 NULL -+enable_so_amdgpu_job_alloc_fndecl_30277 amdgpu_job_alloc fndecl 2 30277 NULL +enable_so_blockshift_alauda_media_info_30287 blockshift alauda_media_info 0 30287 NULL +enable_so_xfs_collapse_file_space_fndecl_30288 xfs_collapse_file_space fndecl 2-3 30288 NULL +enable_so_blk_queue_dma_drain_fndecl_30290 blk_queue_dma_drain fndecl 4 30290 NULL @@ -195269,6 +195811,7 @@ index 0000000..56d8f55 +enable_so_logi_dj_raw_event_fndecl_30304 logi_dj_raw_event fndecl 4 30304 NULL +enable_so_m_ts_msg_msg_30307 m_ts msg_msg 0 30307 NULL +enable_so_alloc_alien_cache_fndecl_30308 alloc_alien_cache fndecl 2 30308 NULL ++enable_so_tracing_buffers_read_fndecl_30311 tracing_buffers_read fndecl 3 30311 NULL +enable_so_ki_pos_kiocb_30312 ki_pos kiocb 0 30312 NULL +enable_so_wbuf_pagesize_jffs2_sb_info_30318 wbuf_pagesize jffs2_sb_info 0 30318 NULL +enable_so_nfakewriters_vardecl_rcutorture_c_30320 nfakewriters vardecl_rcutorture.c 0 30320 NULL @@ -195276,6 +195819,7 @@ index 0000000..56d8f55 +enable_so_avc_stream_set_format_fndecl_30322 avc_stream_set_format fndecl 5 30322 NULL +enable_so_name_len_discovery_t_30331 name_len discovery_t 0 30331 NULL +enable_so_tc90522_master_xfer_fndecl_30332 tc90522_master_xfer fndecl 3 30332 NULL ++enable_so_nr_ops_rdma_rw_ctx_30338 nr_ops rdma_rw_ctx 0 30338 NULL +enable_so_bfad_iocmd_vport_get_stats_fndecl_30341 bfad_iocmd_vport_get_stats fndecl 0 30341 NULL +enable_so_acpi_os_map_memory_fndecl_30346 acpi_os_map_memory fndecl 2-1 30346 NULL +enable_so_overflow_maj_vardecl_ucm_c_30347 overflow_maj vardecl_ucm.c 0 30347 NULL @@ -195347,7 +195891,8 @@ index 0000000..56d8f55 +enable_so_entries_usb_sg_request_30570 entries usb_sg_request 0 30570 NULL +enable_so_snd_pcm_oss_write1_fndecl_30571 snd_pcm_oss_write1 fndecl 3 30571 NULL +enable_so_s_iblkno_ufs_sb_private_info_30572 s_iblkno ufs_sb_private_info 0 30572 NULL nohasharray -+enable_so_key_len_ubifs_info_30572 key_len ubifs_info 0 30572 &enable_so_s_iblkno_ufs_sb_private_info_30572 ++enable_so_key_len_ubifs_info_30572 key_len ubifs_info 0 30572 &enable_so_s_iblkno_ufs_sb_private_info_30572 nohasharray ++enable_so_wiidebug_drm_write_fndecl_30572 wiidebug_drm_write fndecl 3 30572 &enable_so_key_len_ubifs_info_30572 +enable_so_udf_get_pblock_virt20_fndecl_30574 udf_get_pblock_virt20 fndecl 4 30574 NULL +enable_so_pio_ide_pio_info_30575 pio ide_pio_info 0 30575 NULL nohasharray +enable_so_mid_get_vbt_data_r0_fndecl_30575 mid_get_vbt_data_r0 fndecl 2 30575 &enable_so_pio_ide_pio_info_30575 @@ -195400,6 +195945,7 @@ index 0000000..56d8f55 +enable_so_bin_cl_size_drm_vc4_submit_cl_30710 bin_cl_size drm_vc4_submit_cl 0 30710 NULL +enable_so_sched_autogroup_write_fndecl_30715 sched_autogroup_write fndecl 3 30715 NULL +enable_so_numPhys_PVSCSIConfigPageController_30726 numPhys PVSCSIConfigPageController 0 30726 NULL ++enable_so___alloc_preds_fndecl_30727 __alloc_preds fndecl 2 30727 NULL +enable_so_lbs_threshold_write_fndecl_30733 lbs_threshold_write fndecl 5 30733 NULL +enable_so_sock_recvmsg_fndecl_30735 sock_recvmsg fndecl 0 30735 NULL nohasharray +enable_so_num_descriptors_pmc_ctx_30735 num_descriptors pmc_ctx 0 30735 &enable_so_sock_recvmsg_fndecl_30735 @@ -195428,7 +195974,8 @@ index 0000000..56d8f55 +enable_so_ResidualCnt_ErrorInfo_30806 ResidualCnt ErrorInfo 0 30806 NULL +enable_so_buf_dma_gtco_30808 buf_dma gtco 0 30808 NULL nohasharray +enable_so_sadb_key_bits_sadb_key_30808 sadb_key_bits sadb_key 0 30808 &enable_so_buf_dma_gtco_30808 -+enable_so_unmerge_ksm_pages_fndecl_30809 unmerge_ksm_pages fndecl 2 30809 NULL ++enable_so_unmerge_ksm_pages_fndecl_30809 unmerge_ksm_pages fndecl 2 30809 NULL nohasharray ++enable_so_il_dbgfs_missed_beacon_write_fndecl_30809 il_dbgfs_missed_beacon_write fndecl 3 30809 &enable_so_unmerge_ksm_pages_fndecl_30809 +enable_so_si21_readregs_fndecl_30810 si21_readregs fndecl 4 30810 NULL nohasharray +enable_so_xfs_ialloc_read_agi_fndecl_30810 xfs_ialloc_read_agi fndecl 3 30810 &enable_so_si21_readregs_fndecl_30810 +enable_so_totalram_sysinfo_30812 totalram sysinfo 0 30812 NULL @@ -195701,7 +196248,8 @@ index 0000000..56d8f55 +enable_so_num_txq_bna_attr_31588 num_txq bna_attr 0 31588 NULL +enable_so_v_max_out_saa7146_standard_31591 v_max_out saa7146_standard 0 31591 NULL +enable_so_nbchannel_capi_profile_31592 nbchannel capi_profile 0 31592 NULL -+enable_so_radeon_gart_size_auto_fndecl_31605 radeon_gart_size_auto fndecl 0 31605 NULL ++enable_so_radeon_gart_size_auto_fndecl_31605 radeon_gart_size_auto fndecl 0 31605 NULL nohasharray ++enable_so_compute_real_fndecl_31605 compute_real fndecl 0-1 31605 &enable_so_radeon_gart_size_auto_fndecl_31605 +enable_so_sys_mprotect_fndecl_31611 sys_mprotect fndecl 2-1 31611 NULL +enable_so_ino_logfs_object_header_31613 ino logfs_object_header 0 31613 NULL +enable_so_iterate_fd_fndecl_31615 iterate_fd fndecl 0 31615 NULL @@ -195801,7 +196349,6 @@ index 0000000..56d8f55 +enable_so_gseg_gru_set_context_option_req_31876 gseg gru_set_context_option_req 0 31876 NULL +enable_so_i_lastfrag_ufs_inode_info_31879 i_lastfrag ufs_inode_info 0 31879 NULL +enable_so_sctp_user_addto_chunk_fndecl_31881 sctp_user_addto_chunk fndecl 2 31881 NULL -+enable_so_s_hdrwords_rvt_qp_31882 s_hdrwords rvt_qp 0 31882 NULL +enable_so_reallocate_resource_fndecl_31885 reallocate_resource fndecl 3 31885 NULL +enable_so_first_user_ctxt_qib_devdata_31889 first_user_ctxt qib_devdata 0 31889 NULL +enable_so_max_tasks_bnx2fc_hba_31893 max_tasks bnx2fc_hba 0 31893 NULL @@ -195852,6 +196399,7 @@ index 0000000..56d8f55 +enable_so_bg_next_group_ocfs2_group_desc_32003 bg_next_group ocfs2_group_desc 0 32003 &enable_so_blocksize_sddr09_card_info_32003 nohasharray +enable_so_bfad_iocmd_port_enable_fndecl_32003 bfad_iocmd_port_enable fndecl 0 32003 &enable_so_bg_next_group_ocfs2_group_desc_32003 +enable_so_ss_descs_count_ffs_data_32006 ss_descs_count ffs_data 0 32006 NULL ++enable_so_rt2x00debug_write_bbp_fndecl_32007 rt2x00debug_write_bbp fndecl 3 32007 NULL +enable_so_play_iframe_fndecl_32008 play_iframe fndecl 3 32008 NULL +enable_so_ad7879_spi_multi_read_fndecl_32009 ad7879_spi_multi_read fndecl 3 32009 NULL +enable_so_size_tiger_dma_32013 size tiger_dma 0 32013 NULL nohasharray @@ -195867,6 +196415,7 @@ index 0000000..56d8f55 +enable_so_next_free_pstore_32049 next_free pstore 0 32049 NULL +enable_so_kvm_mmu_page_set_gfn_fndecl_32050 kvm_mmu_page_set_gfn fndecl 2 32050 NULL +enable_so_g_num_of_iommus_vardecl_intel_iommu_c_32059 g_num_of_iommus vardecl_intel-iommu.c 0 32059 NULL ++enable_so___jfs_xattr_set_fndecl_32062 __jfs_xattr_set fndecl 4 32062 NULL +enable_so_assoc_sta_del_all_sta_32069 assoc_sta del_all_sta 0 32069 NULL +enable_so_config_size_nd_cmd_get_config_size_32073 config_size nd_cmd_get_config_size 0 32073 NULL +enable_so_rproc_recovery_write_fndecl_32074 rproc_recovery_write fndecl 3 32074 NULL @@ -195887,6 +196436,7 @@ index 0000000..56d8f55 +enable_so_rcvegrcnt_qib_ctxtdata_32127 rcvegrcnt qib_ctxtdata 0 32127 NULL +enable_so_ip6_make_skb_fndecl_32129 ip6_make_skb fndecl 5-4 32129 NULL nohasharray +enable_so_first_slot_vardecl_cpcihp_generic_c_32129 first_slot vardecl_cpcihp_generic.c 0 32129 &enable_so_ip6_make_skb_fndecl_32129 ++enable_so_lpfc_debugfs_max_slow_ring_trc_vardecl_lpfc_debugfs_c_32130 lpfc_debugfs_max_slow_ring_trc vardecl_lpfc_debugfs.c 0 32130 NULL +enable_so_sb_gquotino_xfs_sb_32131 sb_gquotino xfs_sb 0 32131 NULL +enable_so_sync_request_fndecl_32141 sync_request fndecl 2 32141 NULL nohasharray +enable_so_fsector_t_vardecl_floppy_c_32141 fsector_t vardecl_floppy.c 0 32141 &enable_so_sync_request_fndecl_32141 @@ -195949,6 +196499,7 @@ index 0000000..56d8f55 +enable_so_num_gpes_vardecl_sysfs_c_32294 num_gpes vardecl_sysfs.c 0 32294 NULL +enable_so_IA_TX_BUF_SZ_vardecl_iphase_c_32295 IA_TX_BUF_SZ vardecl_iphase.c 0 32295 NULL nohasharray +enable_so_dma_size_sst_pdata_32295 dma_size sst_pdata 0 32295 &enable_so_IA_TX_BUF_SZ_vardecl_iphase_c_32295 ++enable_so_il_dbgfs_clear_ucode_stats_write_fndecl_32299 il_dbgfs_clear_ucode_stats_write fndecl 3 32299 NULL +enable_so_rept_size_usbtouch_device_info_32306 rept_size usbtouch_device_info 0 32306 NULL +enable_so_sizeof_namespace_index_fndecl_32312 sizeof_namespace_index fndecl 0 32312 NULL +enable_so_snd_info_text_entry_write_fndecl_32315 snd_info_text_entry_write fndecl 3 32315 NULL @@ -196075,7 +196626,8 @@ index 0000000..56d8f55 +enable_so_nrof_flowrings_brcmf_msgbuf_32666 nrof_flowrings brcmf_msgbuf 0 32666 NULL +enable_so_rtsx_usb_transfer_data_fndecl_32669 rtsx_usb_transfer_data fndecl 4-2-0-5 32669 NULL +enable_so_compressed_bio_size_fndecl_32676 compressed_bio_size fndecl 0-2 32676 NULL -+enable_so_engine_start_viafb_dev_32681 engine_start viafb_dev 0 32681 NULL ++enable_so_engine_start_viafb_dev_32681 engine_start viafb_dev 0 32681 NULL nohasharray ++enable_so_ab3100_get_set_reg_fndecl_32681 ab3100_get_set_reg fndecl 3 32681 &enable_so_engine_start_viafb_dev_32681 +enable_so_length_ib_umem_32690 length ib_umem 0 32690 NULL +enable_so_radeon_drm_ioctl_fndecl_32696 radeon_drm_ioctl fndecl 2 32696 NULL +enable_so_ubifs_prepare_node_fndecl_32700 ubifs_prepare_node fndecl 3 32700 NULL @@ -196173,7 +196725,8 @@ index 0000000..56d8f55 +enable_so_mtdchar_write_fndecl_33004 mtdchar_write fndecl 3 33004 NULL +enable_so_dwNtbInMaxSize_usb_cdc_ncm_ntb_parameters_33006 dwNtbInMaxSize usb_cdc_ncm_ntb_parameters 0 33006 NULL +enable_so_pktshift_sge_33011 pktshift sge 0 33011 NULL nohasharray -+enable_so_offset_fl_pg_chunk_33011 offset fl_pg_chunk 0 33011 &enable_so_pktshift_sge_33011 ++enable_so_offset_fl_pg_chunk_33011 offset fl_pg_chunk 0 33011 &enable_so_pktshift_sge_33011 nohasharray ++enable_so_mr_per_cmd_srp_target_port_33011 mr_per_cmd srp_target_port 0 33011 &enable_so_offset_fl_pg_chunk_33011 +enable_so_size_qlcnic_82xx_dump_template_hdr_33013 size qlcnic_82xx_dump_template_hdr 0 33013 NULL nohasharray +enable_so_ion_ioctl_fndecl_33013 ion_ioctl fndecl 2 33013 &enable_so_size_qlcnic_82xx_dump_template_hdr_33013 +enable_so_nr_regions_amd_flash_info_33022 nr_regions amd_flash_info 0 33022 NULL @@ -196231,7 +196784,8 @@ index 0000000..56d8f55 +enable_so___get_vm_area_caller_fndecl_33139 __get_vm_area_caller fndecl 1-3 33139 &enable_so_acpi_os_write_memory_fndecl_33139 +enable_so_size_bmp_header_33141 size bmp_header 0 33141 NULL nohasharray +enable_so_hostname_len_nlm_lookup_host_info_33141 hostname_len nlm_lookup_host_info 0 33141 &enable_so_size_bmp_header_33141 -+enable_so_fm_extent_count_fiemap_33144 fm_extent_count fiemap 0 33144 NULL ++enable_so_fm_extent_count_fiemap_33144 fm_extent_count fiemap 0 33144 NULL nohasharray ++enable_so_ucNumEntries__ATOM_Polaris_SCLK_Dependency_Table_33144 ucNumEntries _ATOM_Polaris_SCLK_Dependency_Table 0 33144 &enable_so_fm_extent_count_fiemap_33144 +enable_so_l2cap_segment_le_sdu_fndecl_33145 l2cap_segment_le_sdu fndecl 4 33145 NULL +enable_so_putused_user_fndecl_33152 putused_user fndecl 3 33152 NULL +enable_so_osd_req_list_partition_objects_fndecl_33155 osd_req_list_partition_objects fndecl 5 33155 NULL nohasharray @@ -196242,6 +196796,7 @@ index 0000000..56d8f55 +enable_so_walk_pgd_range_fndecl_33169 walk_pgd_range fndecl 0 33169 NULL +enable_so_cx231xx_init_isoc_fndecl_33174 cx231xx_init_isoc fndecl 4-2-3 33174 NULL +enable_so_hcs_params2_xhci_hcd_33175 hcs_params2 xhci_hcd 0 33175 NULL ++enable_so__min_socket_vardecl_x2apic_uv_x_c_33176 _min_socket vardecl_x2apic_uv_x.c 0 33176 NULL +enable_so_set_connectable_fndecl_33177 set_connectable fndecl 4 33177 NULL +enable_so_rw_devices_btrfs_fs_devices_33182 rw_devices btrfs_fs_devices 0 33182 NULL +enable_so_arp_filter_size_mwifiex_adapter_33183 arp_filter_size mwifiex_adapter 0 33183 NULL @@ -196285,10 +196840,12 @@ index 0000000..56d8f55 +enable_so_num_vls_vardecl_33298 num_vls vardecl 0 33298 NULL +enable_so_vlen_nfsd_readargs_33302 vlen nfsd_readargs 0 33302 NULL +enable_so_e_phnum_elf64_hdr_33305 e_phnum elf64_hdr 0 33305 NULL ++enable_so_tracing_set_trace_write_fndecl_33307 tracing_set_trace_write fndecl 3 33307 NULL +enable_so_max_width_vsp1_rwpf_33314 max_width vsp1_rwpf 0 33314 NULL +enable_so_nl80211_send_deauth_fndecl_33315 nl80211_send_deauth fndecl 4 33315 NULL nohasharray +enable_so_ima_show_htable_value_fndecl_33315 ima_show_htable_value fndecl 2 33315 &enable_so_nl80211_send_deauth_fndecl_33315 +enable_so_static_rate_ib_ah_attr_33316 static_rate ib_ah_attr 0 33316 NULL ++enable_so__iwl_dbgfs_bf_params_write_fndecl_33318 _iwl_dbgfs_bf_params_write fndecl 3 33318 NULL +enable_so_index_vardecl_via82xx_modem_c_33320 index vardecl_via82xx_modem.c 0 33320 NULL +enable_so_acpi_gsb_i2c_read_bytes_fndecl_33322 acpi_gsb_i2c_read_bytes fndecl 4 33322 NULL +enable_so_hlen_h4_recv_pkt_33324 hlen h4_recv_pkt 0 33324 NULL @@ -196352,7 +196909,8 @@ index 0000000..56d8f55 +enable_so___asymmetric_key_hex_to_key_id_fndecl_33513 __asymmetric_key_hex_to_key_id fndecl 3 33513 &enable_so_error_rx_excessive_frame_len_read_fndecl_33513 +enable_so_check_mirror_fndecl_33517 check_mirror fndecl 2-1 33517 NULL nohasharray +enable_so_usblp_read_fndecl_33517 usblp_read fndecl 3 33517 &enable_so_check_mirror_fndecl_33517 -+enable_so_len_writequeue_entry_33522 len writequeue_entry 0 33522 NULL ++enable_so_len_writequeue_entry_33522 len writequeue_entry 0 33522 NULL nohasharray ++enable_so_write_file_regval_fndecl_33522 write_file_regval fndecl 3 33522 &enable_so_len_writequeue_entry_33522 +enable_so_evdev_set_mask_fndecl_33528 evdev_set_mask fndecl 4-0 33528 NULL +enable_so_offset_port_buffer_33530 offset port_buffer 0 33530 NULL +enable_so___mxt_write_reg_fndecl_33533 __mxt_write_reg fndecl 3 33533 NULL @@ -196448,6 +197006,7 @@ index 0000000..56d8f55 +enable_so_sd_write_data_fndecl_33792 sd_write_data fndecl 5-0 33792 NULL +enable_so_icv_truncbits_xfrm_algo_auth_info_33798 icv_truncbits xfrm_algo_auth_info 0 33798 NULL +enable_so___ip_tun_to_nlattr_fndecl_33801 __ip_tun_to_nlattr fndecl 4 33801 NULL ++enable_so_edt_ft5x06_register_read_fndecl_33803 edt_ft5x06_register_read fndecl 0 33803 NULL +enable_so_page_size_vmw_cmdbuf_alloc_info_33815 page_size vmw_cmdbuf_alloc_info 0 33815 NULL nohasharray +enable_so_next_send_psn_mthca_qp_context_33815 next_send_psn mthca_qp_context 0 33815 &enable_so_page_size_vmw_cmdbuf_alloc_info_33815 +enable_so_custom_length_iscsi_stats_33819 custom_length iscsi_stats 0 33819 NULL @@ -196521,6 +197080,7 @@ index 0000000..56d8f55 +enable_so_dib9000_risc_apb_access_write_fndecl_34004 dib9000_risc_apb_access_write fndecl 5 34004 NULL +enable_so_batadv_tvlv_unicast_send_fndecl_34005 batadv_tvlv_unicast_send fndecl 7 34005 NULL +enable_so_rxextrahdrroom_dma_info_34007 rxextrahdrroom dma_info 0 34007 NULL ++enable_so_of_n_size_cells_fndecl_34009 of_n_size_cells fndecl 0 34009 NULL +enable_so_ctxtcnt_qib_devdata_34012 ctxtcnt qib_devdata 0 34012 NULL +enable_so_size_vmw_cotable_info_34013 size vmw_cotable_info 0 34013 NULL nohasharray +enable_so_periodic_size_ehci_hcd_34013 periodic_size ehci_hcd 0 34013 &enable_so_size_vmw_cotable_info_34013 @@ -196590,7 +197150,8 @@ index 0000000..56d8f55 +enable_so_krb5_decrypt_fndecl_34166 krb5_decrypt fndecl 5 34166 NULL +enable_so_save_mr_fndecl_34167 save_mr fndecl 4 34167 NULL +enable_so_blockmask_sddr55_card_info_34172 blockmask sddr55_card_info 0 34172 NULL -+enable_so_osst_seek_sector_fndecl_34173 osst_seek_sector fndecl 3 34173 NULL ++enable_so_osst_seek_sector_fndecl_34173 osst_seek_sector fndecl 3 34173 NULL nohasharray ++enable_so_ucNumEntries__ATOM_Polaris10_PCIE_Table_34173 ucNumEntries _ATOM_Polaris10_PCIE_Table 0 34173 &enable_so_osst_seek_sector_fndecl_34173 +enable_so_bfad_iocmd_phy_update_fndecl_34178 bfad_iocmd_phy_update fndecl 0 34178 NULL +enable_so_buffers_pipe_inode_info_34187 buffers pipe_inode_info 0 34187 NULL +enable_so_sys_recv_fndecl_34188 sys_recv fndecl 3 34188 NULL @@ -196687,11 +197248,13 @@ index 0000000..56d8f55 +enable_so_speakup_file_write_fndecl_34533 speakup_file_write fndecl 3 34533 NULL +enable_so_bfad_iocmd_itnim_get_itnstats_fndecl_34534 bfad_iocmd_itnim_get_itnstats fndecl 0 34534 NULL nohasharray +enable_so_track_pfn_remap_fndecl_34534 track_pfn_remap fndecl 3-5 34534 &enable_so_bfad_iocmd_itnim_get_itnstats_fndecl_34534 ++enable_so_total_vfs_qed_hw_sriov_info_34538 total_vfs qed_hw_sriov_info 0 34538 NULL +enable_so_resid_sg_io_hdr_34541 resid sg_io_hdr 0 34541 NULL +enable_so_host_size_scsi_transport_template_34551 host_size scsi_transport_template 0 34551 NULL +enable_so_dvb_aplay_fndecl_34555 dvb_aplay fndecl 3 34555 NULL +enable_so_maximum_mfc_control_34558 maximum mfc_control 0 34558 NULL -+enable_so_maxpacket_limit_usb_ep_34566 maxpacket_limit usb_ep 0 34566 NULL ++enable_so_maxpacket_limit_usb_ep_34566 maxpacket_limit usb_ep 0 34566 NULL nohasharray ++enable_so_target_alloc_sgl_fndecl_34566 target_alloc_sgl fndecl 3 34566 &enable_so_maxpacket_limit_usb_ep_34566 +enable_so_rx_ring_num_config_param_34571 rx_ring_num config_param 0 34571 NULL +enable_so_sb16_copy_from_user_fndecl_34575 sb16_copy_from_user fndecl 10-7-6 34575 NULL +enable_so_blkno_range2trim_34581 blkno range2trim 0 34581 NULL @@ -196713,9 +197276,9 @@ index 0000000..56d8f55 +enable_so_cpu_npartitions_vardecl_linux_cpu_c_34622 cpu_npartitions vardecl_linux-cpu.c 0 34622 NULL +enable_so_batadv_tt_global_is_isolated_fndecl_34623 batadv_tt_global_is_isolated fndecl 3 34623 NULL +enable_so_pm_qos_power_read_fndecl_34624 pm_qos_power_read fndecl 3 34624 NULL -+enable_so___iommu_dma_alloc_pages_fndecl_34632 __iommu_dma_alloc_pages fndecl 1 34632 NULL +enable_so_ace_change_mtu_fndecl_34639 ace_change_mtu fndecl 2 34639 NULL +enable_so_hsc_write_fndecl_34640 hsc_write fndecl 3 34640 NULL ++enable_so_type_tw686x_dev_34645 type tw686x_dev 0 34645 NULL +enable_so_idef6cpy_gru_control_block_extended_34646 idef6cpy gru_control_block_extended 0 34646 NULL +enable_so_ramdisk_store_fndecl_34654 ramdisk_store fndecl 4 34654 NULL +enable_so_uwb_est_used_vardecl_est_c_34662 uwb_est_used vardecl_est.c 0 34662 NULL @@ -196791,6 +197354,7 @@ index 0000000..56d8f55 +enable_so_log_sz_mlx5_flow_table_group_34853 log_sz mlx5_flow_table_group 0 34853 &enable_so_good_peb_count_ubi_device_34853 nohasharray +enable_so_fw_iso_buffer_init_fndecl_34853 fw_iso_buffer_init fndecl 3 34853 &enable_so_log_sz_mlx5_flow_table_group_34853 +enable_so_nilfs_ioctl_do_get_suinfo_fndecl_34854 nilfs_ioctl_do_get_suinfo fndecl 6 34854 NULL ++enable_so_flags_write_fndecl_34858 flags_write fndecl 3 34858 NULL +enable_so_max_msix_vectors_fm10k_mac_info_34860 max_msix_vectors fm10k_mac_info 0 34860 NULL +enable_so_tipc_link_set_mtu_fndecl_34861 tipc_link_set_mtu fndecl 2 34861 NULL nohasharray +enable_so_gk20a_instobj_ctor_iommu_fndecl_34861 gk20a_instobj_ctor_iommu fndecl 2 34861 &enable_so_tipc_link_set_mtu_fndecl_34861 @@ -196852,7 +197416,8 @@ index 0000000..56d8f55 +enable_so_kzalloc_fndecl_35015 kzalloc fndecl 1 35015 NULL +enable_so_skb_zerocopy_fndecl_35016 skb_zerocopy fndecl 4-3 35016 NULL +enable_so_read_capacity_10_fndecl_35017 read_capacity_10 fndecl 0 35017 NULL -+enable_so_no_ids_squashfs_super_block_35022 no_ids squashfs_super_block 0 35022 NULL ++enable_so_no_ids_squashfs_super_block_35022 no_ids squashfs_super_block 0 35022 NULL nohasharray ++enable_so_lpfc_idiag_pcicfg_write_fndecl_35022 lpfc_idiag_pcicfg_write fndecl 3 35022 &enable_so_no_ids_squashfs_super_block_35022 +enable_so__add_sg_continuation_descriptor_fndecl_35026 _add_sg_continuation_descriptor fndecl 3 35026 NULL +enable_so_vSync_width_panel_info_35029 vSync_width panel_info 0 35029 NULL nohasharray +enable_so_set_nservers_fndecl_35029 set_nservers fndecl 2 35029 &enable_so_vSync_width_panel_info_35029 @@ -197228,9 +197793,11 @@ index 0000000..56d8f55 +enable_so_update_ind_extent_range_fndecl_36049 update_ind_extent_range fndecl 3 36049 NULL +enable_so_rx_status_len_bcm_rsb_36064 rx_status_len bcm_rsb 0 36064 NULL +enable_so_piobcnt2k_qib_devdata_36065 piobcnt2k qib_devdata 0 36065 NULL ++enable_so_iwl_mvm_send_patterns_fndecl_36067 iwl_mvm_send_patterns fndecl 0 36067 NULL +enable_so_xfrm_compile_policy_fndecl_36070 xfrm_compile_policy fndecl 4 36070 NULL +enable_so_usb_stor_control_msg_fndecl_36073 usb_stor_control_msg fndecl 8-2 36073 NULL +enable_so_wa_populate_buf_in_urb_fndecl_36077 wa_populate_buf_in_urb fndecl 4-3 36077 NULL ++enable_so_nfs4_xattr_get_nfs4_acl_fndecl_36079 nfs4_xattr_get_nfs4_acl fndecl 6 36079 NULL +enable_so_blocksize_alauda_media_info_36080 blocksize alauda_media_info 0 36080 NULL nohasharray +enable_so_nwriters_stress_vardecl_locktorture_c_36080 nwriters_stress vardecl_locktorture.c 0 36080 &enable_so_blocksize_alauda_media_info_36080 +enable_so_wdm_write_fndecl_36084 wdm_write fndecl 3 36084 NULL @@ -197275,7 +197842,8 @@ index 0000000..56d8f55 +enable_so_xfs_vm_write_begin_fndecl_36211 xfs_vm_write_begin fndecl 3-4 36211 NULL +enable_so_nfs_try_to_update_request_fndecl_36213 nfs_try_to_update_request fndecl 3-4 36213 NULL nohasharray +enable_so_btrfs_find_all_roots_fndecl_36213 btrfs_find_all_roots fndecl 3 36213 &enable_so_nfs_try_to_update_request_fndecl_36213 -+enable_so_v4l2_ctrl_g_ctrl_fndecl_36216 v4l2_ctrl_g_ctrl fndecl 0 36216 NULL ++enable_so_v4l2_ctrl_g_ctrl_fndecl_36216 v4l2_ctrl_g_ctrl fndecl 0 36216 NULL nohasharray ++enable_so_qsfp1_debugfs_write_fndecl_36216 qsfp1_debugfs_write fndecl 3 36216 &enable_so_v4l2_ctrl_g_ctrl_fndecl_36216 +enable_so_bnx2i_send_nl_mesg_fndecl_36218 bnx2i_send_nl_mesg fndecl 4 36218 NULL +enable_so_alloc_xen_mmio_fndecl_36220 alloc_xen_mmio fndecl 0-1 36220 NULL +enable_so_page_size_spi_eeprom_36227 page_size spi_eeprom 0 36227 NULL nohasharray @@ -197328,7 +197896,8 @@ index 0000000..56d8f55 +enable_so_xfs_symlink_blocks_fndecl_36326 xfs_symlink_blocks fndecl 0-2 36326 NULL nohasharray +enable_so_xferred_rbd_obj_request_36326 xferred rbd_obj_request 0 36326 &enable_so_xfs_symlink_blocks_fndecl_36326 +enable_so_do_verify_xattr_datum_fndecl_36328 do_verify_xattr_datum fndecl 0 36328 NULL -+enable_so_ima_write_template_field_data_fndecl_36336 ima_write_template_field_data fndecl 2 36336 NULL ++enable_so_ima_write_template_field_data_fndecl_36336 ima_write_template_field_data fndecl 2 36336 NULL nohasharray ++enable_so_create_trace_kprobe_fndecl_36336 create_trace_kprobe fndecl 1 36336 &enable_so_ima_write_template_field_data_fndecl_36336 +enable_so_c_size_p_sizes_36338 c_size p_sizes 0 36338 NULL nohasharray +enable_so_hidp_send_frame_fndecl_36338 hidp_send_frame fndecl 3 36338 &enable_so_c_size_p_sizes_36338 +enable_so_digest_encode_fndecl_36340 digest_encode fndecl 0 36340 NULL @@ -197425,6 +197994,7 @@ index 0000000..56d8f55 +enable_so_gamma_size_drm_mode_crtc_lut_36622 gamma_size drm_mode_crtc_lut 0 36622 NULL +enable_so_raw_serial_size_x509_certificate_36629 raw_serial_size x509_certificate 0 36629 NULL +enable_so_block_count_mspro_sys_info_36630 block_count mspro_sys_info 0 36630 NULL ++enable_so_acpi_aml_read_user_fndecl_36632 acpi_aml_read_user fndecl 2 36632 NULL +enable_so_i915_gem_execbuffer_parse_fndecl_36633 i915_gem_execbuffer_parse fndecl 6-5 36633 NULL nohasharray +enable_so_opcfg_ofsh_cyttsp4_sysinfo_data_36633 opcfg_ofsh cyttsp4_sysinfo_data 0 36633 &enable_so_i915_gem_execbuffer_parse_fndecl_36633 +enable_so_read_super_block_fndecl_36638 read_super_block fndecl 2 36638 NULL @@ -197501,6 +198071,7 @@ index 0000000..56d8f55 +enable_so_raid5_compute_sector_fndecl_36860 raid5_compute_sector fndecl 0-2 36860 NULL +enable_so_acpi_register_gsi_pic_fndecl_36869 acpi_register_gsi_pic fndecl 0-2 36869 NULL +enable_so_vtotal_drm_display_mode_36870 vtotal drm_display_mode 0 36870 NULL ++enable_so_int_tasklet_entry_fndecl_36871 int_tasklet_entry fndecl 3 36871 NULL +enable_so_qlcnic_83xx_sysfs_flash_write_fndecl_36872 qlcnic_83xx_sysfs_flash_write fndecl 4 36872 NULL +enable_so_self_inum_vardecl_self_c_36873 self_inum vardecl_self.c 0 36873 NULL nohasharray +enable_so_txd_size_bdx_priv_36873 txd_size bdx_priv 0 36873 &enable_so_self_inum_vardecl_self_c_36873 nohasharray @@ -197532,7 +198103,6 @@ index 0000000..56d8f55 +enable_so_isku_sysfs_read_macro_fndecl_36984 isku_sysfs_read_macro fndecl 6 36984 NULL +enable_so_v_sync_strt_wid_aty128_crtc_36987 v_sync_strt_wid aty128_crtc 0 36987 NULL +enable_so_lbmAllocate_fndecl_36995 lbmAllocate fndecl 2 36995 NULL -+enable_so_num_attached_opcode_info_t_36997 num_attached opcode_info_t 0 36997 NULL +enable_so_exp_len_ccp_rsa_engine_36998 exp_len ccp_rsa_engine 0 36998 NULL +enable_so_ll_sa_entry_alloc_fndecl_37008 ll_sa_entry_alloc fndecl 4 37008 NULL +enable_so_num_rxp_per_rx_bnad_37010 num_rxp_per_rx bnad 0 37010 NULL @@ -197827,7 +198397,8 @@ index 0000000..56d8f55 +enable_so_cleanmarker_size_jffs2_sb_info_37959 cleanmarker_size jffs2_sb_info 0 37959 NULL +enable_so_num_kcontrols_snd_soc_tplg_dapm_widget_37960 num_kcontrols snd_soc_tplg_dapm_widget 0 37960 NULL +enable_so_consume_size_vmci_qp_alloc_info_vmvm_37962 consume_size vmci_qp_alloc_info_vmvm 0 37962 NULL -+enable_so_unmap_vmas_fndecl_37967 unmap_vmas fndecl 4-3 37967 NULL ++enable_so_unmap_vmas_fndecl_37967 unmap_vmas fndecl 4-3 37967 NULL nohasharray ++enable_so_mbox_write_fndecl_37967 mbox_write fndecl 3 37967 &enable_so_unmap_vmas_fndecl_37967 +enable_so_ieee80211_if_write_uapsd_queues_fndecl_37973 ieee80211_if_write_uapsd_queues fndecl 3 37973 NULL +enable_so_vortex_core_init_fndecl_37980 vortex_core_init fndecl 0 37980 NULL +enable_so_key_search_fndecl_37982 key_search fndecl 0 37982 NULL @@ -197899,7 +198470,8 @@ index 0000000..56d8f55 +enable_so_zone_end_strip_zone_38191 zone_end strip_zone 0 38191 NULL +enable_so_nf_ct_ext_create_fndecl_38195 nf_ct_ext_create fndecl 3 38195 NULL +enable_so_drm_property_create_fndecl_38196 drm_property_create fndecl 4 38196 NULL -+enable_so_nilfs_cpfile_checkpoints_in_block_fndecl_38197 nilfs_cpfile_checkpoints_in_block fndecl 0-2-3 38197 NULL ++enable_so_nilfs_cpfile_checkpoints_in_block_fndecl_38197 nilfs_cpfile_checkpoints_in_block fndecl 0-2-3 38197 NULL nohasharray ++enable_so_pfpg_size_nvm_dev_38197 pfpg_size nvm_dev 0 38197 &enable_so_nilfs_cpfile_checkpoints_in_block_fndecl_38197 +enable_so_goto_high_power_fndecl_38198 goto_high_power fndecl 0 38198 NULL +enable_so_driver_data_i2c_device_id_38200 driver_data i2c_device_id 0 38200 NULL +enable_so_rx_offset_tg3_38201 rx_offset tg3 0 38201 NULL @@ -197926,6 +198498,7 @@ index 0000000..56d8f55 +enable_so_bLength_usb_cdc_country_functional_desc_38256 bLength usb_cdc_country_functional_desc 0 38256 &enable_so_rsize_nfs_server_38256 +enable_so__osd_req_cdb_len_fndecl_38259 _osd_req_cdb_len fndecl 0 38259 NULL +enable_so_security_set_fndecl_38262 security_set fndecl 5 38262 NULL ++enable_so_i2c2_debugfs_read_fndecl_38270 i2c2_debugfs_read fndecl 3 38270 NULL +enable_so_prepare_header100_fndecl_38275 prepare_header100 fndecl 3-0 38275 NULL +enable_so_min_pnp_port_38276 min pnp_port 0 38276 NULL +enable_so_numpmkid_host_if_pmkid_attr_38277 numpmkid host_if_pmkid_attr 0 38277 NULL nohasharray @@ -197975,6 +198548,7 @@ index 0000000..56d8f55 +enable_so_sl_tclass_flowlabel_mthca_qp_path_38402 sl_tclass_flowlabel mthca_qp_path 0 38402 NULL +enable_so__c4iw_write_mem_dma_fndecl_38404 _c4iw_write_mem_dma fndecl 3 38404 NULL +enable_so_parent_offset_isofs_fid_38408 parent_offset isofs_fid 0 38408 NULL ++enable_so_dwc3_mode_write_fndecl_38414 dwc3_mode_write fndecl 3 38414 NULL +enable_so_xdr_xcode_array2_fndecl_38417 xdr_xcode_array2 fndecl 2 38417 NULL +enable_so_count_grant_map_38422 count grant_map 0 38422 NULL +enable_so_bond_next_port_mlx4_ib_dev_38423 bond_next_port mlx4_ib_dev 0 38423 NULL nohasharray @@ -198143,6 +198717,7 @@ index 0000000..56d8f55 +enable_so_srs_nslot_sptlrpc_rule_set_38854 srs_nslot sptlrpc_rule_set 0 38854 NULL +enable_so_count_ixgbevf_ring_38867 count ixgbevf_ring 0 38867 NULL +enable_so_sectors_per_track_mspro_devinfo_38870 sectors_per_track mspro_devinfo 0 38870 NULL ++enable_so_nrealwriters_vardecl_rcuperf_c_38873 nrealwriters vardecl_rcuperf.c 0 38873 NULL +enable_so_mask_mthca_alloc_38874 mask mthca_alloc 0 38874 NULL nohasharray +enable_so_if_sdio_handle_data_fndecl_38874 if_sdio_handle_data fndecl 3 38874 &enable_so_mask_mthca_alloc_38874 +enable_so_wmi_set_ie_fndecl_38876 wmi_set_ie fndecl 3 38876 NULL @@ -198176,8 +198751,7 @@ index 0000000..56d8f55 +enable_so_depth_cx231xx_fmt_38940 depth cx231xx_fmt 0 38940 NULL +enable_so_pcm_open_fndecl_38941 pcm_open fndecl 2 38941 NULL +enable_so_ecryptfs_write_lower_page_segment_fndecl_38943 ecryptfs_write_lower_page_segment fndecl 4 38943 NULL -+enable_so_drm_fb_helper_sys_write_fndecl_38945 drm_fb_helper_sys_write fndecl 3 38945 NULL nohasharray -+enable_so_alloc_bootmem_core_fndecl_38945 alloc_bootmem_core fndecl 1 38945 &enable_so_drm_fb_helper_sys_write_fndecl_38945 ++enable_so_drm_fb_helper_sys_write_fndecl_38945 drm_fb_helper_sys_write fndecl 3 38945 NULL +enable_so_sc_page_off_o2net_sock_container_38950 sc_page_off o2net_sock_container 0 38950 NULL +enable_so_in_length_nd_cmd_set_config_hdr_38954 in_length nd_cmd_set_config_hdr 0 38954 NULL +enable_so_of_irq_parse_one_fndecl_38957 of_irq_parse_one fndecl 0 38957 NULL @@ -198217,7 +198791,8 @@ index 0000000..56d8f55 +enable_so_bnxt_get_max_irq_fndecl_39067 bnxt_get_max_irq fndecl 0 39067 NULL nohasharray +enable_so_n_buckets_bpf_htab_39067 n_buckets bpf_htab 0 39067 &enable_so_bnxt_get_max_irq_fndecl_39067 +enable_so_iscsit_handle_immediate_data_fndecl_39071 iscsit_handle_immediate_data fndecl 3 39071 NULL -+enable_so_max_rules_crush_map_39073 max_rules crush_map 0 39073 NULL ++enable_so_max_rules_crush_map_39073 max_rules crush_map 0 39073 NULL nohasharray ++enable_so_num_counters_rdma_hw_stats_39073 num_counters rdma_hw_stats 0 39073 &enable_so_max_rules_crush_map_39073 +enable_so_usbatm_write_cells_fndecl_39074 usbatm_write_cells fndecl 0 39074 NULL +enable_so_block_id_ms_boot_header_39075 block_id ms_boot_header 0 39075 NULL +enable_so_frame_len_b43_rxhdr_fw4_39076 frame_len b43_rxhdr_fw4 0 39076 NULL @@ -198247,6 +198822,7 @@ index 0000000..56d8f55 +enable_so_system_sample_rate_hdsp_39140 system_sample_rate hdsp 0 39140 NULL +enable_so_drvr_sglimit_blogic_adapter_39142 drvr_sglimit blogic_adapter 0 39142 NULL +enable_so_mmc_test_buffer_transfer_fndecl_39150 mmc_test_buffer_transfer fndecl 4 39150 NULL ++enable_so_of_phandle_iterator_args_fndecl_39151 of_phandle_iterator_args fndecl 0 39151 NULL +enable_so_raid56_parity_alloc_scrub_rbio_fndecl_39153 raid56_parity_alloc_scrub_rbio fndecl 4 39153 NULL +enable_so_port_srpt_port_39154 port srpt_port 0 39154 NULL +enable_so_size_intel_initial_plane_config_39155 size intel_initial_plane_config 0 39155 NULL @@ -198291,6 +198867,7 @@ index 0000000..56d8f55 +enable_so_data_offset_napi_gro_cb_39263 data_offset napi_gro_cb 0 39263 NULL +enable_so_fdt_get_phandle_fndecl_39273 fdt_get_phandle fndecl 2 39273 NULL +enable_so_sky2_rx_tag_fndecl_39276 sky2_rx_tag fndecl 2 39276 NULL ++enable_so_soc_codec_reg_show_fndecl_39277 soc_codec_reg_show fndecl 3-0 39277 NULL +enable_so_idata_dma_usb_xpad_39278 idata_dma usb_xpad 0 39278 NULL +enable_so_size_tomoyo_condition_39281 size tomoyo_condition 0 39281 NULL +enable_so_find_parent_nodes_fndecl_39282 find_parent_nodes fndecl 3 39282 NULL @@ -198319,7 +198896,8 @@ index 0000000..56d8f55 +enable_so_tx_pipe_brcmf_usbdev_info_39337 tx_pipe brcmf_usbdev_info 0 39337 NULL nohasharray +enable_so_num_channels_hw_mode_spec_39337 num_channels hw_mode_spec 0 39337 &enable_so_tx_pipe_brcmf_usbdev_info_39337 nohasharray +enable_so_iwl_dbgfs_echo_test_write_fndecl_39337 iwl_dbgfs_echo_test_write fndecl 3 39337 &enable_so_num_channels_hw_mode_spec_39337 -+enable_so_fscrypt_fname_alloc_buffer_fndecl_39339 fscrypt_fname_alloc_buffer fndecl 2 39339 NULL ++enable_so_fscrypt_fname_alloc_buffer_fndecl_39339 fscrypt_fname_alloc_buffer fndecl 2 39339 NULL nohasharray ++enable_so_musb_softconnect_write_fndecl_39339 musb_softconnect_write fndecl 3 39339 &enable_so_fscrypt_fname_alloc_buffer_fndecl_39339 +enable_so_setbrightness_fndecl_39342 setbrightness fndecl 0 39342 NULL +enable_so_svc_create_fndecl_39343 svc_create fndecl 2 39343 NULL +enable_so_nhead_offs_ubifs_info_39346 nhead_offs ubifs_info 0 39346 NULL @@ -198346,7 +198924,8 @@ index 0000000..56d8f55 +enable_so___page_set_anon_rmap_fndecl_39401 __page_set_anon_rmap fndecl 3 39401 NULL +enable_so_iscsi_create_conn_fndecl_39402 iscsi_create_conn fndecl 2 39402 NULL +enable_so_userptr_radeon_ttm_tt_39408 userptr radeon_ttm_tt 0 39408 NULL -+enable_so_total_vfs_fm10k_iov_info_39412 total_vfs fm10k_iov_info 0 39412 NULL ++enable_so_total_vfs_fm10k_iov_info_39412 total_vfs fm10k_iov_info 0 39412 NULL nohasharray ++enable_so__iwl_dbgfs_send_echo_cmd_write_fndecl_39412 _iwl_dbgfs_send_echo_cmd_write fndecl 3 39412 &enable_so_total_vfs_fm10k_iov_info_39412 +enable_so_pages_i40iw_add_page_info_39415 pages i40iw_add_page_info 0 39415 NULL +enable_so_payld_len_htc_frame_hdr_39418 payld_len htc_frame_hdr 0 39418 NULL +enable_so_vramsize_sisusb_usb_data_39419 vramsize sisusb_usb_data 0 39419 NULL @@ -198361,6 +198940,7 @@ index 0000000..56d8f55 +enable_so_iov_len_iovec_39437 iov_len iovec 0 39437 &enable_so_ring_size__drm_i810_init_39437 +enable_so_show_device_status_fndecl_39440 show_device_status fndecl 0 39440 NULL +enable_so_virtio_cread16_fndecl_39444 virtio_cread16 fndecl 0 39444 NULL ++enable_so_tp_la_write_fndecl_39445 tp_la_write fndecl 3 39445 NULL +enable_so_sdio_uart_write_fndecl_39449 sdio_uart_write fndecl 3 39449 NULL +enable_so_zl10036_write_fndecl_39451 zl10036_write fndecl 3 39451 NULL nohasharray +enable_so_ocfs2_add_refcount_flag_fndecl_39451 ocfs2_add_refcount_flag fndecl 6-7-5 39451 &enable_so_zl10036_write_fndecl_39451 @@ -198380,7 +198960,8 @@ index 0000000..56d8f55 +enable_so_pktdev_major_vardecl_pktcdvd_c_39506 pktdev_major vardecl_pktcdvd.c 0 39506 NULL +enable_so_rds_iw_sysctl_max_recv_wr_vardecl_39508 rds_iw_sysctl_max_recv_wr vardecl 0 39508 NULL +enable_so_ppp_read_fndecl_39514 ppp_read fndecl 3 39514 NULL -+enable_so_lbs_dev_info_fndecl_39516 lbs_dev_info fndecl 3 39516 NULL ++enable_so_lbs_dev_info_fndecl_39516 lbs_dev_info fndecl 3 39516 NULL nohasharray ++enable_so_mwifiex_timeshare_coex_write_fndecl_39516 mwifiex_timeshare_coex_write fndecl 3 39516 &enable_so_lbs_dev_info_fndecl_39516 +enable_so_error_tx_resume_failure_read_fndecl_39521 error_tx_resume_failure_read fndecl 3 39521 NULL +enable_so_len_batadv_tvlv_hdr_39527 len batadv_tvlv_hdr 0 39527 NULL nohasharray +enable_so_txsize_grcan_device_config_39527 txsize grcan_device_config 0 39527 &enable_so_len_batadv_tvlv_hdr_39527 @@ -198502,7 +199083,8 @@ index 0000000..56d8f55 +enable_so_xres_panel_info_39849 xres panel_info 0 39849 NULL +enable_so_di_nextents_xfs_dinode_39855 di_nextents xfs_dinode 0 39855 NULL +enable_so_imtu_l2cap_chan_39857 imtu l2cap_chan 0 39857 NULL -+enable_so_usb_stor_reset_common_fndecl_39866 usb_stor_reset_common fndecl 7 39866 NULL ++enable_so_usb_stor_reset_common_fndecl_39866 usb_stor_reset_common fndecl 7 39866 NULL nohasharray ++enable_so_carl9170_debugfs_write_fndecl_39866 carl9170_debugfs_write fndecl 3 39866 &enable_so_usb_stor_reset_common_fndecl_39866 +enable_so_self_check_write_fndecl_39867 self_check_write fndecl 5 39867 NULL +enable_so___bdev_writeseg_fndecl_39876 __bdev_writeseg fndecl 2-4 39876 NULL +enable_so_do_shrink_slab_fndecl_39881 do_shrink_slab fndecl 4-3 39881 NULL @@ -198649,6 +199231,7 @@ index 0000000..56d8f55 +enable_so_srpt_alloc_ioctx_ring_fndecl_40353 srpt_alloc_ioctx_ring fndecl 3-4-2 40353 &enable_so_default_llseek_fndecl_40353 +enable_so_pgbase_pnfs_device_40355 pgbase pnfs_device 0 40355 NULL +enable_so_rbd_img_request_submit_fndecl_40356 rbd_img_request_submit fndecl 0 40356 NULL ++enable_so_reg_list_format_size_bytes_rlc_firmware_header_v2_0_40357 reg_list_format_size_bytes rlc_firmware_header_v2_0 0 40357 NULL +enable_so_cblock_dm_cache_migration_40361 cblock dm_cache_migration 0 40361 NULL +enable_so_cfpkt_setlen_fndecl_40364 cfpkt_setlen fndecl 2 40364 NULL nohasharray +enable_so_max_wrs_rds_ib_device_40364 max_wrs rds_ib_device 0 40364 &enable_so_cfpkt_setlen_fndecl_40364 @@ -198658,7 +199241,9 @@ index 0000000..56d8f55 +enable_so_align_kmem_cache_40377 align kmem_cache 0 40377 NULL +enable_so___vmalloc_node_fndecl_40382 __vmalloc_node fndecl 1 40382 NULL +enable_so_ilm_len_mt76_fw_header_40389 ilm_len mt76_fw_header 0 40389 NULL -+enable_so_px_raw_event_fndecl_40392 px_raw_event fndecl 4 40392 NULL ++enable_so_qsfp_read_fndecl_40391 qsfp_read fndecl 0 40391 NULL ++enable_so_px_raw_event_fndecl_40392 px_raw_event fndecl 4 40392 NULL nohasharray ++enable_so_alloc_test_extent_buffer_fndecl_40392 alloc_test_extent_buffer fndecl 2 40392 &enable_so_px_raw_event_fndecl_40392 +enable_so_file_secno_bplus_leaf_node_40394 file_secno bplus_leaf_node 0 40394 NULL nohasharray +enable_so_sb_root_hpfs_sb_info_40394 sb_root hpfs_sb_info 0 40394 &enable_so_file_secno_bplus_leaf_node_40394 +enable_so_snd_ak4113_external_rate_fndecl_40404 snd_ak4113_external_rate fndecl 0 40404 NULL nohasharray @@ -198809,7 +199394,6 @@ index 0000000..56d8f55 +enable_so_v9fs_file_fsync_dotl_fndecl_40845 v9fs_file_fsync_dotl fndecl 2-3 40845 NULL +enable_so_newblocks_xfs_growfs_data_40847 newblocks xfs_growfs_data 0 40847 NULL +enable_so_nfs_file_fsync_fndecl_40851 nfs_file_fsync fndecl 2-3 40851 NULL -+enable_so_mtu_ldc_channel_config_40859 mtu ldc_channel_config 0 40859 NULL +enable_so___of_parse_phandle_with_args_fndecl_40860 __of_parse_phandle_with_args fndecl 0 40860 NULL +enable_so_ov_left_drbd_device_40861 ov_left drbd_device 0 40861 NULL nohasharray +enable_so_extended_capabilities_len_wiphy_40861 extended_capabilities_len wiphy 0 40861 &enable_so_ov_left_drbd_device_40861 @@ -198819,6 +199403,7 @@ index 0000000..56d8f55 +enable_so_nvram_llseek_fndecl_40869 nvram_llseek fndecl 2 40869 NULL +enable_so_reply_queue_count_MPT3SAS_ADAPTER_40870 reply_queue_count MPT3SAS_ADAPTER 0 40870 NULL +enable_so_sector_count_partition_40874 sector_count partition 0 40874 NULL ++enable_so_scsi_dispatch_cmd_entry_fndecl_40875 scsi_dispatch_cmd_entry fndecl 3 40875 NULL +enable_so_config_len_mic_device_desc_40877 config_len mic_device_desc 0 40877 NULL +enable_so_min_agbno_xfs_alloc_arg_40884 min_agbno xfs_alloc_arg 0 40884 NULL nohasharray +enable_so_osst_set_options_fndecl_40884 osst_set_options fndecl 2 40884 &enable_so_min_agbno_xfs_alloc_arg_40884 @@ -198912,7 +199497,8 @@ index 0000000..56d8f55 +enable_so_calib_fail_count_read_fndecl_41171 calib_fail_count_read fndecl 3 41171 NULL +enable_so_suspend_dtim_interval_read_fndecl_41176 suspend_dtim_interval_read fndecl 3 41176 NULL +enable_so_size_brnf_frag_data_41177 size brnf_frag_data 0 41177 NULL -+enable_so_start_flakey_c_41178 start flakey_c 0 41178 NULL ++enable_so_start_flakey_c_41178 start flakey_c 0 41178 NULL nohasharray ++enable_so_traceprobe_probes_write_fndecl_41178 traceprobe_probes_write fndecl 3 41178 &enable_so_start_flakey_c_41178 +enable_so_lro_wqe_sz_mlx5e_params_41180 lro_wqe_sz mlx5e_params 0 41180 NULL +enable_so_gfn_guest_walker64_41182 gfn guest_walker64 0 41182 NULL +enable_so_index_vardecl_via82xx_c_41183 index vardecl_via82xx.c 0 41183 NULL @@ -198961,7 +199547,7 @@ index 0000000..56d8f55 +enable_so_bop_check_delete_nilfs_bmap_operations_41302 bop_check_delete nilfs_bmap_operations 0 41302 NULL +enable_so_register_vlan_device_fndecl_41310 register_vlan_device fndecl 2 41310 NULL +enable_so_img_SRAM_size_fw_hdr_41311 img_SRAM_size fw_hdr 0 41311 NULL nohasharray -+enable_so_d40_size_2_dmalen_fndecl_41311 d40_size_2_dmalen fndecl 0-2-3-1 41311 &enable_so_img_SRAM_size_fw_hdr_41311 ++enable_so_d40_size_2_dmalen_fndecl_41311 d40_size_2_dmalen fndecl 0-3-2-1 41311 &enable_so_img_SRAM_size_fw_hdr_41311 +enable_so_cma_declare_contiguous_fndecl_41316 cma_declare_contiguous fndecl 4-2-1-3-5 41316 NULL nohasharray +enable_so_block_start_extent_map_41316 block_start extent_map 0 41316 &enable_so_cma_declare_contiguous_fndecl_41316 +enable_so_pc_len_s_pcon_41324 pc_len s_pcon 0 41324 NULL @@ -198980,6 +199566,7 @@ index 0000000..56d8f55 +enable_so_efx_tsoh_get_buffer_fndecl_41355 efx_tsoh_get_buffer fndecl 3 41355 NULL +enable_so_usb_stor_probe1_fndecl_41357 usb_stor_probe1 fndecl 0 41357 NULL +enable_so_rx_rx_out_of_mpdu_nodes_read_fndecl_41359 rx_rx_out_of_mpdu_nodes_read fndecl 3 41359 NULL ++enable_so__iwl_dbgfs_d0i3_refs_write_fndecl_41361 _iwl_dbgfs_d0i3_refs_write fndecl 3 41361 NULL +enable_so_sl_ocrdma_dev_41367 sl ocrdma_dev 0 41367 NULL +enable_so_num_eq_entries_hba_parameters_41369 num_eq_entries hba_parameters 0 41369 NULL +enable_so_wrsent_cyberjack_private_41371 wrsent cyberjack_private 0 41371 NULL @@ -199000,6 +199587,7 @@ index 0000000..56d8f55 +enable_so_snd_pcm_oss_capture_position_fixup_fndecl_41434 snd_pcm_oss_capture_position_fixup fndecl 0 41434 NULL +enable_so_l1_size_vardecl_acpi_extlog_c_41440 l1_size vardecl_acpi_extlog.c 0 41440 NULL +enable_so_vram_remap_vardecl_vesafb_c_41441 vram_remap vardecl_vesafb.c 0 41441 NULL ++enable_so_rt2x00debug_write_csr_fndecl_41442 rt2x00debug_write_csr fndecl 3 41442 NULL +enable_so_udf_NLStoCS0_fndecl_41451 udf_NLStoCS0 fndecl 0 41451 NULL +enable_so_rf_blkno_ocfs2_refcount_tree_41452 rf_blkno ocfs2_refcount_tree 0 41452 NULL +enable_so_dm_wmfw_adsp1_alg_hdr_41454 dm wmfw_adsp1_alg_hdr 0 41454 NULL @@ -199017,10 +199605,12 @@ index 0000000..56d8f55 +enable_so_redirected_tty_write_fndecl_41474 redirected_tty_write fndecl 3 41474 NULL +enable_so_get_var_len_fndecl_41483 get_var_len fndecl 0 41483 NULL +enable_so_video_offset_sis_video_info_41491 video_offset sis_video_info 0 41491 NULL -+enable_so_lpddr_info_query_fndecl_41492 lpddr_info_query fndecl 0 41492 NULL ++enable_so_lpddr_info_query_fndecl_41492 lpddr_info_query fndecl 0 41492 NULL nohasharray ++enable_so__iwl_dbgfs_quota_min_write_fndecl_41492 _iwl_dbgfs_quota_min_write fndecl 3 41492 &enable_so_lpddr_info_query_fndecl_41492 +enable_so_compat_core_sys_select_fndecl_41494 compat_core_sys_select fndecl 1 41494 NULL +enable_so_dir_entries_fat_floppy_defaults_41499 dir_entries fat_floppy_defaults 0 41499 NULL -+enable_so_mpi_set_buffer_fndecl_41501 mpi_set_buffer fndecl 3 41501 NULL ++enable_so_mpi_set_buffer_fndecl_41501 mpi_set_buffer fndecl 3 41501 NULL nohasharray ++enable_so_join_req_size_vardecl_host_interface_c_41501 join_req_size vardecl_host_interface.c 0 41501 &enable_so_mpi_set_buffer_fndecl_41501 +enable_so_irda_param_insert_fndecl_41502 irda_param_insert fndecl 0 41502 NULL +enable_so_max_shutter_mt9v032_model_data_41509 max_shutter mt9v032_model_data 0 41509 NULL +enable_so_b_fifo_size_hfcSX_hw_41512 b_fifo_size hfcSX_hw 0 41512 NULL @@ -199114,7 +199704,8 @@ index 0000000..56d8f55 +enable_so_pcibios_enable_device_fndecl_41776 pcibios_enable_device fndecl 0 41776 NULL +enable_so_ath9k_multi_regread_fndecl_41779 ath9k_multi_regread fndecl 4 41779 NULL +enable_so_dma_rx_size_stmmac_priv_41781 dma_rx_size stmmac_priv 0 41781 NULL nohasharray -+enable_so_pg_vec_len_packet_ring_buffer_41781 pg_vec_len packet_ring_buffer 0 41781 &enable_so_dma_rx_size_stmmac_priv_41781 ++enable_so_pg_vec_len_packet_ring_buffer_41781 pg_vec_len packet_ring_buffer 0 41781 &enable_so_dma_rx_size_stmmac_priv_41781 nohasharray ++enable_so_alloc_dummy_extent_buffer_fndecl_41781 alloc_dummy_extent_buffer fndecl 2 41781 &enable_so_pg_vec_len_packet_ring_buffer_41781 +enable_so_scif_get_pages_fndecl_41783 scif_get_pages fndecl 2-3 41783 NULL +enable_so_numtx_velocity_opt_41785 numtx velocity_opt 0 41785 NULL +enable_so_num_bytes_drm_dp_remote_i2c_write_41786 num_bytes drm_dp_remote_i2c_write 0 41786 NULL @@ -199169,6 +199760,7 @@ index 0000000..56d8f55 +enable_so_rx_rx_done_read_fndecl_41938 rx_rx_done_read fndecl 3 41938 NULL +enable_so_n_sel_arg_struct_41940 n sel_arg_struct 0 41940 NULL +enable_so_rmmio_size_cirrus_device_41950 rmmio_size cirrus_device 0 41950 NULL ++enable_so_compat_packet_setsockopt_fndecl_41954 compat_packet_setsockopt fndecl 5 41954 NULL +enable_so_smb_buf_length_smb_hdr_41959 smb_buf_length smb_hdr 0 41959 NULL nohasharray +enable_so_kmem_zalloc_greedy_fndecl_41959 kmem_zalloc_greedy fndecl 3-2 41959 &enable_so_smb_buf_length_smb_hdr_41959 +enable_so_ide_init_sg_cmd_fndecl_41962 ide_init_sg_cmd fndecl 2 41962 NULL @@ -199224,6 +199816,7 @@ index 0000000..56d8f55 +enable_so_namelen_xenpf_symdata_42085 namelen xenpf_symdata 0 42085 NULL +enable_so_raw_issuer_size_x509_certificate_42091 raw_issuer_size x509_certificate 0 42091 NULL +enable_so_rtsx_pci_send_cmd_fndecl_42093 rtsx_pci_send_cmd fndecl 0 42093 NULL ++enable_so_read_page_owner_fndecl_42094 read_page_owner fndecl 3 42094 NULL +enable_so_outsize_cros_ec_command_42095 outsize cros_ec_command 0 42095 NULL +enable_so_do_syslog_fndecl_42100 do_syslog fndecl 3 42100 NULL +enable_so_gtt_size_radeon_mc_42102 gtt_size radeon_mc 0 42102 NULL nohasharray @@ -199279,7 +199872,8 @@ index 0000000..56d8f55 +enable_so_snd_pcm_plug_write_transfer_fndecl_42268 snd_pcm_plug_write_transfer fndecl 3-0 42268 NULL +enable_so_sge_length_qib_sge_42274 sge_length qib_sge 0 42274 NULL +enable_so_write_file_spectral_period_fndecl_42275 write_file_spectral_period fndecl 3 42275 NULL -+enable_so_if_sdio_read_scratch_fndecl_42279 if_sdio_read_scratch fndecl 0 42279 NULL ++enable_so_if_sdio_read_scratch_fndecl_42279 if_sdio_read_scratch fndecl 0 42279 NULL nohasharray ++enable_so_f2fs_kmalloc_fndecl_42279 f2fs_kmalloc fndecl 1 42279 &enable_so_if_sdio_read_scratch_fndecl_42279 +enable_so_cfg_sriov_nr_virtfn_lpfc_hba_42280 cfg_sriov_nr_virtfn lpfc_hba 0 42280 NULL nohasharray +enable_so_rx_pending_ethtool_ringparam_42280 rx_pending ethtool_ringparam 0 42280 &enable_so_cfg_sriov_nr_virtfn_lpfc_hba_42280 +enable_so_append_to_buffer_fndecl_42285 append_to_buffer fndecl 3 42285 NULL @@ -199365,7 +199959,8 @@ index 0000000..56d8f55 +enable_so_cn_netlink_send_mult_fndecl_42523 cn_netlink_send_mult fndecl 2 42523 NULL +enable_so_maxframe_size_fc_rport_priv_42527 maxframe_size fc_rport_priv 0 42527 NULL +enable_so_size_rx_desc_42538 size rx_desc 0 42538 NULL -+enable_so_max_payload_len_pn533_frame_ops_42544 max_payload_len pn533_frame_ops 0 42544 NULL ++enable_so_max_payload_len_pn533_frame_ops_42544 max_payload_len pn533_frame_ops 0 42544 NULL nohasharray ++enable_so_info_debugfs_read_fndecl_42544 info_debugfs_read fndecl 3 42544 &enable_so_max_payload_len_pn533_frame_ops_42544 +enable_so_fdt_num_mem_rsv_fndecl_42546 fdt_num_mem_rsv fndecl 0 42546 NULL nohasharray +enable_so_num_reg_channel_bounds_42546 num reg_channel_bounds 0 42546 &enable_so_fdt_num_mem_rsv_fndecl_42546 +enable_so_xfs_dir_cilookup_result_fndecl_42547 xfs_dir_cilookup_result fndecl 3 42547 NULL @@ -199515,7 +200110,6 @@ index 0000000..56d8f55 +enable_so_clkin_adf4350_state_42914 clkin adf4350_state 0 42914 NULL +enable_so_i915_gem_stolen_insert_node_fndecl_42918 i915_gem_stolen_insert_node fndecl 3 42918 NULL +enable_so_st21nfca_hci_dm_field_generator_fndecl_42926 st21nfca_hci_dm_field_generator fndecl 3 42926 NULL -+enable_so_scsi_debug_unmap_max_blocks_vardecl_scsi_debug_c_42927 scsi_debug_unmap_max_blocks vardecl_scsi_debug.c 0 42927 NULL +enable_so_carl9170_handle_command_response_fndecl_42930 carl9170_handle_command_response fndecl 3 42930 NULL +enable_so_wMaxInputLength_i2c_hid_desc_42932 wMaxInputLength i2c_hid_desc 0 42932 NULL +enable_so_bnx2x_vf_mcast_fndecl_42933 bnx2x_vf_mcast fndecl 4 42933 NULL @@ -199528,6 +200122,7 @@ index 0000000..56d8f55 +enable_so_vb2_dc_get_userptr_fndecl_42957 vb2_dc_get_userptr fndecl 2-3 42957 NULL +enable_so_brcmf_usb_tx_ctlpkt_fndecl_42958 brcmf_usb_tx_ctlpkt fndecl 3 42958 NULL +enable_so_kernfs_iop_setxattr_fndecl_42959 kernfs_iop_setxattr fndecl 4 42959 NULL ++enable_so_wm_coeff_tlv_get_fndecl_42961 wm_coeff_tlv_get fndecl 3 42961 NULL +enable_so_gpio_count_async_state_42965 gpio_count async_state 0 42965 NULL nohasharray +enable_so_udf_get_block_fndecl_42965 udf_get_block fndecl 2 42965 &enable_so_gpio_count_async_state_42965 +enable_so___pskb_copy_fclone_fndecl_42969 __pskb_copy_fclone fndecl 2 42969 NULL @@ -199566,6 +200161,7 @@ index 0000000..56d8f55 +enable_so_acpi_dev_get_ioresource_fndecl_43062 acpi_dev_get_ioresource fndecl 3-2 43062 &enable_so_inode_number_squashfs_base_inode_43062 +enable_so_len_ib_ucm_rep_43064 len ib_ucm_rep 0 43064 NULL +enable_so_len_srp_direct_buf_43066 len srp_direct_buf 0 43066 NULL ++enable_so_quirk_simultaneous_discovery_write_fndecl_43076 quirk_simultaneous_discovery_write fndecl 3 43076 NULL +enable_so_raw_skid_size_pkcs7_parse_context_43081 raw_skid_size pkcs7_parse_context 0 43081 NULL +enable_so_output_buffer_size_vardecl_seq_midi_c_43084 output_buffer_size vardecl_seq_midi.c 0 43084 NULL +enable_so_bttv_prepare_buffer_fndecl_43088 bttv_prepare_buffer fndecl 6-5 43088 NULL @@ -199737,6 +200333,7 @@ index 0000000..56d8f55 +enable_so_sb_rextslog_xfs_sb_43520 sb_rextslog xfs_sb 0 43520 NULL nohasharray +enable_so_ptp_read_fndecl_43520 ptp_read fndecl 4 43520 &enable_so_sb_rextslog_xfs_sb_43520 +enable_so_fifo_pool_size_snd_seq_user_client_43523 fifo_pool_size snd_seq_user_client 0 43523 NULL ++enable_so__iwl_dbgfs_rx_phyinfo_write_fndecl_43525 _iwl_dbgfs_rx_phyinfo_write fndecl 3 43525 NULL +enable_so_xfs_dir2_leaf_getdents_fndecl_43533 xfs_dir2_leaf_getdents fndecl 3 43533 NULL +enable_so_mei_amthif_read_start_fndecl_43534 mei_amthif_read_start fndecl 0 43534 NULL +enable_so_dccps_gsr_dccp_sock_43535 dccps_gsr dccp_sock 0 43535 NULL @@ -199774,6 +200371,7 @@ index 0000000..56d8f55 +enable_so_sdricoh_mmc_cmd_fndecl_43641 sdricoh_mmc_cmd fndecl 0 43641 NULL +enable_so_info_server_fndecl_43644 info_server fndecl 4 43644 NULL +enable_so_bfad_iocmd_pcifn_create_fndecl_43645 bfad_iocmd_pcifn_create fndecl 0 43645 NULL ++enable_so_name_len_ceph_object_id_43655 name_len ceph_object_id 0 43655 NULL +enable_so_nf_nat_sip_fndecl_43657 nf_nat_sip fndecl 2 43657 NULL +enable_so_usbnet_read_cmd_nopm_fndecl_43663 usbnet_read_cmd_nopm fndecl 7 43663 NULL nohasharray +enable_so_edac_pci_alloc_ctl_info_fndecl_43663 edac_pci_alloc_ctl_info fndecl 1 43663 &enable_so_usbnet_read_cmd_nopm_fndecl_43663 @@ -199816,7 +200414,6 @@ index 0000000..56d8f55 +enable_so_clipcount_cap_vivid_dev_43781 clipcount_cap vivid_dev 0 43781 NULL +enable_so_prepare_packet_fndecl_43783 prepare_packet fndecl 0 43783 NULL +enable_so_data_pad_ubi_volume_43787 data_pad ubi_volume 0 43787 NULL -+enable_so_VMALLOC_END_vardecl_43790 VMALLOC_END vardecl 0 43790 NULL +enable_so_smsc47m1_device_add_fndecl_43796 smsc47m1_device_add fndecl 1 43796 NULL +enable_so_uhci_urb_dequeue_fndecl_43804 uhci_urb_dequeue fndecl 3 43804 NULL +enable_so_xfs_trans_reserve_fndecl_43809 xfs_trans_reserve fndecl 3 43809 NULL @@ -199897,17 +200494,20 @@ index 0000000..56d8f55 +enable_so_rbd_img_obj_exists_submit_fndecl_44011 rbd_img_obj_exists_submit fndecl 0 44011 NULL +enable_so_ext2_direct_IO_fndecl_44012 ext2_direct_IO fndecl 3 44012 NULL +enable_so_level_pid_namespace_44021 level pid_namespace 0 44021 NULL -+enable_so_nr_chnls_nvm_dev_44026 nr_chnls nvm_dev 0 44026 NULL ++enable_so_nr_chnls_nvm_dev_44026 nr_chnls nvm_dev 0 44026 NULL nohasharray ++enable_so__iwl_dbgfs_stop_ctdp_write_fndecl_44026 _iwl_dbgfs_stop_ctdp_write fndecl 3 44026 &enable_so_nr_chnls_nvm_dev_44026 +enable_so_rx_buffer_truesize_efx_nic_44027 rx_buffer_truesize efx_nic 0 44027 NULL +enable_so_response_length_ib_uverbs_ex_create_qp_resp_44030 response_length ib_uverbs_ex_create_qp_resp 0 44030 NULL +enable_so_SyS_kexec_file_load_fndecl_44032 SyS_kexec_file_load fndecl 3 44032 NULL +enable_so_wilc_gnrl_async_info_received_fndecl_44034 wilc_gnrl_async_info_received fndecl 3 44034 NULL +enable_so_regsize_octeon_mdiobus_44041 regsize octeon_mdiobus 0 44041 NULL +enable_so_convert_extent_bit_fndecl_44046 convert_extent_bit fndecl 2-3 44046 NULL ++enable_so_nfp_net_set_ring_size_fndecl_44050 nfp_net_set_ring_size fndecl 3-2 44050 NULL +enable_so_nr_rings_xen_blkif_44058 nr_rings xen_blkif 0 44058 NULL +enable_so_ahc_linux_map_seg_fndecl_44059 ahc_linux_map_seg fndecl 4-5 44059 NULL nohasharray +enable_so_btrfs_submit_direct_fndecl_44059 btrfs_submit_direct fndecl 4 44059 &enable_so_ahc_linux_map_seg_fndecl_44059 +enable_so_prog_page_fndecl_44060 prog_page fndecl 2 44060 NULL ++enable_so_num_trace_enums_module_44062 num_trace_enums module 0 44062 NULL +enable_so_blksize_xfs_da_geometry_44068 blksize xfs_da_geometry 0 44068 NULL +enable_so_xen_io_tlb_nslabs_vardecl_swiotlb_xen_c_44077 xen_io_tlb_nslabs vardecl_swiotlb-xen.c 0 44077 NULL +enable_so_maxports_board_t_44081 maxports board_t 0 44081 NULL @@ -199984,6 +200584,7 @@ index 0000000..56d8f55 +enable_so_size_drm_radeon_gem_userptr_44334 size drm_radeon_gem_userptr 0 44334 NULL +enable_so_arm_copy_from_user_fndecl_44337 arm_copy_from_user fndecl 0 44337 NULL +enable_so_bytesused_cx18_buffer_44339 bytesused cx18_buffer 0 44339 NULL ++enable_so_btusb_setup_qca_download_fw_fndecl_44343 btusb_setup_qca_download_fw fndecl 0 44343 NULL +enable_so_snd_pcm_lib_writev_transfer_fndecl_44344 snd_pcm_lib_writev_transfer fndecl 5 44344 NULL +enable_so_tail_circ_buf_44346 tail circ_buf 0 44346 NULL nohasharray +enable_so_count_v4l2_ext_controls_44346 count v4l2_ext_controls 0 44346 &enable_so_tail_circ_buf_44346 @@ -200005,6 +200606,7 @@ index 0000000..56d8f55 +enable_so_reiserfs_xattr_set_fndecl_44389 reiserfs_xattr_set fndecl 4 44389 NULL nohasharray +enable_so_bfad_iocmd_ioc_get_attr_fndecl_44389 bfad_iocmd_ioc_get_attr fndecl 0 44389 &enable_so_reiserfs_xattr_set_fndecl_44389 +enable_so_hidpp_prefix_name_fndecl_44393 hidpp_prefix_name fndecl 2 44393 NULL ++enable_so_num_rx_rings_nfp_net_44395 num_rx_rings nfp_net 0 44395 NULL +enable_so_s_raid_stripe_width_ext4_super_block_44401 s_raid_stripe_width ext4_super_block 0 44401 NULL +enable_so_num_iscsi_tasks_cnic_local_44404 num_iscsi_tasks cnic_local 0 44404 NULL +enable_so_compat_SyS_select_fndecl_44405 compat_SyS_select fndecl 1 44405 NULL @@ -200058,7 +200660,6 @@ index 0000000..56d8f55 +enable_so_filter_read_fndecl_44527 filter_read fndecl 3 44527 NULL +enable_so_yenta_search_one_res_fndecl_44533 yenta_search_one_res fndecl 3 44533 NULL +enable_so_max_cqes_mthca_limits_44535 max_cqes mthca_limits 0 44535 NULL -+enable_so_nr_entry_nvbios_iccsense_44538 nr_entry nvbios_iccsense 0 44538 NULL +enable_so_consume_size_vmci_transport_44542 consume_size vmci_transport 0 44542 NULL +enable_so_smk_read_syslog_fndecl_44544 smk_read_syslog fndecl 3 44544 NULL +enable_so_numps_powernow_k8_data_44546 numps powernow_k8_data 0 44546 NULL @@ -200117,11 +200718,13 @@ index 0000000..56d8f55 +enable_so_offset_drm_map_44692 offset drm_map 0 44692 NULL +enable_so_start_linear_c_44708 start linear_c 0 44708 NULL +enable_so_au_rslack_rpc_auth_44712 au_rslack rpc_auth 0 44712 NULL ++enable_so_asic_flags_write_fndecl_44717 asic_flags_write fndecl 3 44717 NULL +enable_so_altera_irscan_fndecl_44719 altera_irscan fndecl 2 44719 NULL +enable_so___nilfs_get_page_block_fndecl_44723 __nilfs_get_page_block fndecl 4 44723 NULL +enable_so_inlen_mimd_44727 inlen mimd 0 44727 NULL nohasharray +enable_so_kmalloc_order_fndecl_44727 kmalloc_order fndecl 1 44727 &enable_so_inlen_mimd_44727 +enable_so_nd_blk_rw_integrity_fndecl_44728 nd_blk_rw_integrity fndecl 0 44728 NULL ++enable_so_amdgpu_job_alloc_fndecl_44730 amdgpu_job_alloc fndecl 2 44730 NULL +enable_so_assoc_req_ies_len_station_info_44731 assoc_req_ies_len station_info 0 44731 NULL nohasharray +enable_so_buffer_size_st_buffer_44731 buffer_size st_buffer 0 44731 &enable_so_assoc_req_ies_len_station_info_44731 +enable_so_ino_nilfs_recovery_block_44737 ino nilfs_recovery_block 0 44737 NULL @@ -200165,6 +200768,7 @@ index 0000000..56d8f55 +enable_so_squashfs_read_id_index_table_fndecl_44826 squashfs_read_id_index_table fndecl 4 44826 NULL +enable_so_vlan_tag_be_rx_compl_info_44830 vlan_tag be_rx_compl_info 0 44830 NULL nohasharray +enable_so_fix_read_error_fndecl_44830 fix_read_error fndecl 4-3 44830 &enable_so_vlan_tag_be_rx_compl_info_44830 ++enable_so_snprint_stack_trace_fndecl_44832 snprint_stack_trace fndecl 0 44832 NULL +enable_so_dequeue_event_fndecl_44835 dequeue_event fndecl 3 44835 NULL +enable_so_name_len_exofs_dir_entry_44838 name_len exofs_dir_entry 0 44838 NULL +enable_so_xt_compat_match_offset_fndecl_44840 xt_compat_match_offset fndecl 0 44840 NULL nohasharray @@ -200228,15 +200832,16 @@ index 0000000..56d8f55 +enable_so_eeprom_size_il_cfg_44998 eeprom_size il_cfg 0 44998 &enable_so_host_int_set_join_req_fndecl_44998 +enable_so_ocfs2_list_xattr_tree_rec_fndecl_45001 ocfs2_list_xattr_tree_rec fndecl 3 45001 NULL +enable_so_prism54_wpa_bss_ie_get_fndecl_45006 prism54_wpa_bss_ie_get fndecl 0 45006 NULL ++enable_so_mlx5e_redirect_rqt_fndecl_45007 mlx5e_redirect_rqt fndecl 3 45007 NULL +enable_so_bnx2fc_initiate_els_fndecl_45008 bnx2fc_initiate_els fndecl 4 45008 NULL +enable_so_video_usercopy_fndecl_45012 video_usercopy fndecl 2 45012 NULL +enable_so_size_e820entry_45018 size e820entry 0 45018 NULL +enable_so_num_cqs_mthca_limits_45021 num_cqs mthca_limits 0 45021 NULL +enable_so_membase_vgastate_45022 membase vgastate 0 45022 NULL +enable_so_rd_size_hidp_session_45023 rd_size hidp_session 0 45023 NULL -+enable_so_msiq_num_pci_pbm_info_45030 msiq_num pci_pbm_info 0 45030 NULL +enable_so_nvalid_xfs_dir3_icfree_hdr_45035 nvalid xfs_dir3_icfree_hdr 0 45035 NULL +enable_so_sock_kmalloc_fndecl_45038 sock_kmalloc fndecl 2 45038 NULL ++enable_so_write_file_dfs_fndecl_45047 write_file_dfs fndecl 3 45047 NULL +enable_so_alloc_upcall_fndecl_45049 alloc_upcall fndecl 2 45049 NULL nohasharray +enable_so_ib_uverbs_rereg_mr_fndecl_45049 ib_uverbs_rereg_mr fndecl 4 45049 &enable_so_alloc_upcall_fndecl_45049 +enable_so_hs_extra_bytes_cfs_hash_45050 hs_extra_bytes cfs_hash 0 45050 NULL @@ -200248,8 +200853,7 @@ index 0000000..56d8f55 +enable_so_crypto_akcipher_maxsize_fndecl_45073 crypto_akcipher_maxsize fndecl 0 45073 NULL +enable_so_read_vbt_r10_fndecl_45076 read_vbt_r10 fndecl 1 45076 NULL +enable_so_sendpage_iscsi_sw_tcp_conn_45081 sendpage iscsi_sw_tcp_conn 0 45081 NULL -+enable_so_unmap_mapping_range_vma_fndecl_45084 unmap_mapping_range_vma fndecl 2-3 45084 NULL nohasharray -+enable_so_entry_size_vio_dring_state_45084 entry_size vio_dring_state 0 45084 &enable_so_unmap_mapping_range_vma_fndecl_45084 ++enable_so_unmap_mapping_range_vma_fndecl_45084 unmap_mapping_range_vma fndecl 2-3 45084 NULL +enable_so_regshift_uart_port_45089 regshift uart_port 0 45089 NULL +enable_so_revmap_size_irq_domain_45091 revmap_size irq_domain 0 45091 NULL +enable_so_ocfs2_lock_reflink_xattr_rec_allocators_fndecl_45097 ocfs2_lock_reflink_xattr_rec_allocators fndecl 3 45097 NULL @@ -200268,6 +200872,7 @@ index 0000000..56d8f55 +enable_so_early_init_dt_scan_root_fndecl_45127 early_init_dt_scan_root fndecl 1 45127 NULL nohasharray +enable_so_key_len_mwifiex_ds_encrypt_key_45127 key_len mwifiex_ds_encrypt_key 0 45127 &enable_so_early_init_dt_scan_root_fndecl_45127 nohasharray +enable_so_offset_nb8800_rx_buf_45127 offset nb8800_rx_buf 0 45127 &enable_so_key_len_mwifiex_ds_encrypt_key_45127 ++enable_so_rpc_max_bc_payload_fndecl_45131 rpc_max_bc_payload fndecl 0 45131 NULL +enable_so_img_x_zoran_jpg_settings_45135 img_x zoran_jpg_settings 0 45135 NULL +enable_so_offset_mlx4_clock_params_45137 offset mlx4_clock_params 0 45137 NULL +enable_so_specified_table_size_vardecl_45152 specified_table_size vardecl 0 45152 NULL @@ -200441,7 +201046,8 @@ index 0000000..56d8f55 +enable_so_sys_add_key_fndecl_45691 sys_add_key fndecl 4 45691 NULL nohasharray +enable_so_nvme_trans_copy_to_user_fndecl_45691 nvme_trans_copy_to_user fndecl 3 45691 &enable_so_sys_add_key_fndecl_45691 +enable_so_endpt_ubifs_unclean_leb_45692 endpt ubifs_unclean_leb 0 45692 NULL nohasharray -+enable_so_hd_end_request_cur_fndecl_45692 hd_end_request_cur fndecl 1 45692 &enable_so_endpt_ubifs_unclean_leb_45692 ++enable_so_hd_end_request_cur_fndecl_45692 hd_end_request_cur fndecl 1 45692 &enable_so_endpt_ubifs_unclean_leb_45692 nohasharray ++enable_so_iommu_dma_alloc_fndecl_45692 iommu_dma_alloc fndecl 2 45692 &enable_so_hd_end_request_cur_fndecl_45692 +enable_so___netdev_adjacent_dev_insert_fndecl_45697 __netdev_adjacent_dev_insert fndecl 0 45697 NULL +enable_so_write_file_spectral_short_repeat_fndecl_45700 write_file_spectral_short_repeat fndecl 3 45700 NULL +enable_so_shift_badblocks_45703 shift badblocks 0 45703 NULL @@ -200518,6 +201124,7 @@ index 0000000..56d8f55 +enable_so_vce_v1_0_bo_size_fndecl_45909 vce_v1_0_bo_size fndecl 0 45909 NULL +enable_so_bg_itable_unused_hi_ext4_group_desc_45918 bg_itable_unused_hi ext4_group_desc 0 45918 NULL +enable_so_alloc_sglist_fndecl_45919 alloc_sglist fndecl 3-2-1 45919 NULL ++enable_so_lpfc_idiag_queacc_write_fndecl_45920 lpfc_idiag_queacc_write fndecl 3 45920 NULL +enable_so_wl1271_tx_allocate_fndecl_45921 wl1271_tx_allocate fndecl 4 45921 NULL +enable_so_mru_asyncppp_45929 mru asyncppp 0 45929 NULL +enable_so_base_i40iw_hmc_obj_info_45931 base i40iw_hmc_obj_info 0 45931 NULL @@ -200658,6 +201265,7 @@ index 0000000..56d8f55 +enable_so_recently_deleted_fndecl_46346 recently_deleted fndecl 3 46346 NULL +enable_so_zoran_v4l_set_format_fndecl_46347 zoran_v4l_set_format fndecl 2-3 46347 NULL +enable_so_fc_frame_alloc_fill_fndecl_46353 fc_frame_alloc_fill fndecl 2 46353 NULL ++enable_so___qsfp_debugfs_write_fndecl_46356 __qsfp_debugfs_write fndecl 3 46356 NULL +enable_so_dvb_ep_isoc_em28xx_46357 dvb_ep_isoc em28xx 0 46357 NULL +enable_so_shadow_image_fndecl_46361 shadow_image fndecl 3 46361 NULL +enable_so_debilen_av7110_46363 debilen av7110 0 46363 NULL @@ -200685,6 +201293,7 @@ index 0000000..56d8f55 +enable_so_btrfsic_process_superblock_dev_mirror_fndecl_46444 btrfsic_process_superblock_dev_mirror fndecl 4 46444 NULL nohasharray +enable_so_iblock_execute_unmap_fndecl_46444 iblock_execute_unmap fndecl 3-2 46444 &enable_so_btrfsic_process_superblock_dev_mirror_fndecl_46444 +enable_so_C_SYSC_get_mempolicy_fndecl_46447 C_SYSC_get_mempolicy fndecl 3 46447 NULL ++enable_so__iwl_dbgfs_bcast_filters_write_fndecl_46448 _iwl_dbgfs_bcast_filters_write fndecl 3 46448 NULL +enable_so_fb_base_phys_mb862xxfb_par_46449 fb_base_phys mb862xxfb_par 0 46449 NULL +enable_so_sglen_usbtest_param_32_46451 sglen usbtest_param_32 0 46451 NULL +enable_so_untranslate_fndecl_46453 untranslate fndecl 3 46453 NULL @@ -200743,6 +201352,7 @@ index 0000000..56d8f55 +enable_so_cfpkt_extr_head_fndecl_46598 cfpkt_extr_head fndecl 3 46598 NULL +enable_so_len_ext4_str_46600 len ext4_str 0 46600 NULL +enable_so_cma_init_reserved_mem_fndecl_46602 cma_init_reserved_mem fndecl 3-2 46602 NULL ++enable_so_nfp_net_msix_alloc_fndecl_46607 nfp_net_msix_alloc fndecl 0 46607 NULL +enable_so_init_state_fndecl_46614 init_state fndecl 2 46614 NULL +enable_so_pci_scan_bridge_fndecl_46615 pci_scan_bridge fndecl 3-0 46615 NULL nohasharray +enable_so_jmb38x_ms_count_slots_fndecl_46615 jmb38x_ms_count_slots fndecl 0 46615 &enable_so_pci_scan_bridge_fndecl_46615 @@ -200789,7 +201399,6 @@ index 0000000..56d8f55 +enable_so_wm8994_set_fll_fndecl_46745 wm8994_set_fll fndecl 4-5 46745 NULL +enable_so_rxsz_fc_plogi_clp_s_46751 rxsz fc_plogi_clp_s 0 46751 NULL +enable_so_cvmx_bootmem_phy_named_block_find_fndecl_46752 cvmx_bootmem_phy_named_block_find fndecl 0 46752 NULL -+enable_so_sunzilog_alloc_tables_fndecl_46756 sunzilog_alloc_tables fndecl 1 46756 NULL +enable_so_count_nfs_readdirargs_46759 count nfs_readdirargs 0 46759 NULL +enable_so___kfifo_from_user_r_fndecl_46762 __kfifo_from_user_r fndecl 3-5 46762 NULL nohasharray +enable_so_perf_aux_output_skip_fndecl_46762 perf_aux_output_skip fndecl 2 46762 &enable_so___kfifo_from_user_r_fndecl_46762 @@ -200797,6 +201406,7 @@ index 0000000..56d8f55 +enable_so_s_bshift_ufs_sb_private_info_46773 s_bshift ufs_sb_private_info 0 46773 NULL nohasharray +enable_so_target_begin_dm_region_hash_46773 target_begin dm_region_hash 0 46773 &enable_so_s_bshift_ufs_sb_private_info_46773 +enable_so_mc_groups_longs_vardecl_genetlink_c_46774 mc_groups_longs vardecl_genetlink.c 0 46774 NULL ++enable_so_acpi_aml_lock_write_fndecl_46777 acpi_aml_lock_write fndecl 0 46777 NULL +enable_so_bytes_remaining_parser_context_46791 bytes_remaining parser_context 0 46791 NULL +enable_so_ubi_eba_atomic_leb_change_fndecl_46792 ubi_eba_atomic_leb_change fndecl 5 46792 NULL nohasharray +enable_so_rq_size_i40iw_qp_uk_46792 rq_size i40iw_qp_uk 0 46792 &enable_so_ubi_eba_atomic_leb_change_fndecl_46792 @@ -201120,6 +201730,7 @@ index 0000000..56d8f55 +enable_so_max_active_ib_mad_queue_47691 max_active ib_mad_queue 0 47691 &enable_so_cno_nilfs_super_data_47691 +enable_so_virtblk_queue_depth_vardecl_virtio_blk_c_47692 virtblk_queue_depth vardecl_virtio_blk.c 0 47692 NULL +enable_so_paging64_gpte_to_gfn_lvl_fndecl_47694 paging64_gpte_to_gfn_lvl fndecl 0-2-1 47694 NULL ++enable_so_efi_capsule_write_fndecl_47697 efi_capsule_write fndecl 3 47697 NULL +enable_so_afavlab_setup_fndecl_47698 afavlab_setup fndecl 4 47698 NULL +enable_so_gpu_mem_base_vml_par_47703 gpu_mem_base vml_par 0 47703 NULL +enable_so_xfs_iext_realloc_indirect_fndecl_47704 xfs_iext_realloc_indirect fndecl 2 47704 NULL nohasharray @@ -201134,6 +201745,7 @@ index 0000000..56d8f55 +enable_so_oxu_init_fndecl_47714 oxu_init fndecl 3-2 47714 NULL +enable_so_tegra_sflash_start_transfer_one_fndecl_47723 tegra_sflash_start_transfer_one fndecl 0 47723 NULL +enable_so_max_size_ttm_pool_opts_47726 max_size ttm_pool_opts 0 47726 NULL ++enable_so_batadv_send_tt_request_fndecl_47727 batadv_send_tt_request fndecl 5 47727 NULL +enable_so_bdev_stack_limits_fndecl_47732 bdev_stack_limits fndecl 3 47732 NULL +enable_so_copy_nocow_pages_for_inode_fndecl_47736 copy_nocow_pages_for_inode fndecl 2 47736 NULL +enable_so_geneve_build_skb_fndecl_47741 geneve_build_skb fndecl 5 47741 NULL nohasharray @@ -201225,6 +201837,8 @@ index 0000000..56d8f55 +enable_so_size_nfs_fh_48014 size nfs_fh 0 48014 NULL +enable_so_temp_end_applesmc_registers_48016 temp_end applesmc_registers 0 48016 NULL +enable_so_mdiobus_read_nested_fndecl_48017 mdiobus_read_nested fndecl 0 48017 NULL ++enable_so_drm_malloc_gfp_fndecl_48018 drm_malloc_gfp fndecl 1-2 48018 NULL ++enable_so_lpfc_idiag_baracc_write_fndecl_48021 lpfc_idiag_baracc_write fndecl 3 48021 NULL +enable_so_original_mtu_slave_48025 original_mtu slave 0 48025 NULL +enable_so__find_next_bit_le_fndecl_48027 _find_next_bit_le fndecl 0 48027 NULL +enable_so_hmac_len_sctp_hmac_48030 hmac_len sctp_hmac 0 48030 NULL @@ -201313,6 +201927,7 @@ index 0000000..56d8f55 +enable_so_ci_flags_f2fs_crypt_info_48318 ci_flags f2fs_crypt_info 0 48318 NULL +enable_so_ngroups_group_info_48320 ngroups group_info 0 48320 NULL +enable_so_pin_down_extent_fndecl_48324 pin_down_extent fndecl 4-3 48324 NULL ++enable_so__iwl_dbgfs_lqm_send_cmd_write_fndecl_48326 _iwl_dbgfs_lqm_send_cmd_write fndecl 3 48326 NULL +enable_so_acpi_efi_48328 acpi efi 0 48328 NULL nohasharray +enable_so_btn_rec_size_cyttsp4_sysinfo_ofs_48328 btn_rec_size cyttsp4_sysinfo_ofs 0 48328 &enable_so_acpi_efi_48328 +enable_so_vga_scan_lines_vardecl_vgacon_c_48330 vga_scan_lines vardecl_vgacon.c 0 48330 NULL @@ -201350,7 +201965,8 @@ index 0000000..56d8f55 +enable_so_tty_register_device_attr_fndecl_48438 tty_register_device_attr fndecl 2 48438 NULL +enable_so_natids_tid_info_48439 natids tid_info 0 48439 NULL +enable_so_bzImage64_load_fndecl_48447 bzImage64_load fndecl 5-7 48447 NULL -+enable_so_compat_keyctl_instantiate_key_iov_fndecl_48452 compat_keyctl_instantiate_key_iov fndecl 3 48452 NULL ++enable_so_compat_keyctl_instantiate_key_iov_fndecl_48452 compat_keyctl_instantiate_key_iov fndecl 3 48452 NULL nohasharray ++enable_so_alloc_ftrace_hash_fndecl_48452 alloc_ftrace_hash fndecl 1 48452 &enable_so_compat_keyctl_instantiate_key_iov_fndecl_48452 +enable_so_read_file_eeprom_fndecl_48455 read_file_eeprom fndecl 3 48455 NULL +enable_so_dp_out_buf_len_digi_port_48457 dp_out_buf_len digi_port 0 48457 NULL nohasharray +enable_so_xen_align_and_add_e820_region_fndecl_48457 xen_align_and_add_e820_region fndecl 2-1 48457 &enable_so_dp_out_buf_len_digi_port_48457 nohasharray @@ -201370,7 +201986,8 @@ index 0000000..56d8f55 +enable_so_addidata_apci7800_setup_fndecl_48487 addidata_apci7800_setup fndecl 4 48487 &enable_so___origin_write_fndecl_48487 +enable_so_sisusb_clear_vram_fndecl_48489 sisusb_clear_vram fndecl 2-3 48489 NULL +enable_so_l_len_ocfs2_space_resv_48490 l_len ocfs2_space_resv 0 48490 NULL -+enable_so_ydepth_sh_veu_format_48498 ydepth sh_veu_format 0 48498 NULL ++enable_so_ydepth_sh_veu_format_48498 ydepth sh_veu_format 0 48498 NULL nohasharray ++enable_so_rss_key_write_fndecl_48498 rss_key_write fndecl 3 48498 &enable_so_ydepth_sh_veu_format_48498 +enable_so_ping_v6_sendmsg_fndecl_48499 ping_v6_sendmsg fndecl 3 48499 NULL +enable_so_encode_filename_fndecl_48501 encode_filename fndecl 3 48501 NULL +enable_so_len_cfg80211_bss_ies_48503 len cfg80211_bss_ies 0 48503 NULL @@ -201381,7 +201998,7 @@ index 0000000..56d8f55 +enable_so_octeon_read_device_mem32_fndecl_48520 octeon_read_device_mem32 fndecl 0 48520 NULL +enable_so_fcoe_get_paged_crc_eof_fndecl_48522 fcoe_get_paged_crc_eof fndecl 2 48522 NULL +enable_so_copy_in_user_fndecl_48525 copy_in_user fndecl 3 48525 NULL -+enable_so_fscrypt_fname_encrypted_size_fndecl_48527 fscrypt_fname_encrypted_size fndecl 0-2 48527 NULL ++enable_so_fscrypt_fname_encrypted_size_fndecl_48527 fscrypt_fname_encrypted_size fndecl 0 48527 NULL +enable_so_receive_buf_fndecl_48528 receive_buf fndecl 4 48528 NULL nohasharray +enable_so_max_sense_bytes_mpt3_ioctl_command_48528 max_sense_bytes mpt3_ioctl_command 0 48528 &enable_so_receive_buf_fndecl_48528 +enable_so_dxfer_len_sg_io_hdr_48532 dxfer_len sg_io_hdr 0 48532 NULL @@ -201414,7 +202031,6 @@ index 0000000..56d8f55 +enable_so_driver_register_fndecl_48593 driver_register fndecl 0 48593 NULL +enable_so_len_isert_data_buf_48596 len isert_data_buf 0 48596 NULL +enable_so_arm_copy_to_user_fndecl_48602 arm_copy_to_user fndecl 0 48602 NULL -+enable_so_args_count_of_phandle_args_48605 args_count of_phandle_args 0 48605 NULL +enable_so_datalen_atp_info_48607 datalen atp_info 0 48607 NULL nohasharray +enable_so_aggr_size_tx_agg_rate_read_fndecl_48607 aggr_size_tx_agg_rate_read fndecl 3 48607 &enable_so_datalen_atp_info_48607 +enable_so_count_e8390_pkt_hdr_48610 count e8390_pkt_hdr 0 48610 NULL @@ -201522,7 +202138,9 @@ index 0000000..56d8f55 +enable_so_memblock_clear_hotplug_fndecl_48883 memblock_clear_hotplug fndecl 2-1 48883 &enable_so_diva_init_dma_map_fndecl_48883 +enable_so_cl_in_max_entry_size_mvumi_hs_page1_48890 cl_in_max_entry_size mvumi_hs_page1 0 48890 NULL nohasharray +enable_so_bylength_atto_vda_ae_hdr_48890 bylength atto_vda_ae_hdr 0 48890 &enable_so_cl_in_max_entry_size_mvumi_hs_page1_48890 ++enable_so_radeon_ttm_gtt_read_fndecl_48900 radeon_ttm_gtt_read fndecl 3 48900 NULL +enable_so_nr_buffers_drm_nouveau_gem_pushbuf_48902 nr_buffers drm_nouveau_gem_pushbuf 0 48902 NULL ++enable_so_nr_addr_filters_pmu_48905 nr_addr_filters pmu 0 48905 NULL +enable_so_RPyLen_hfs_cat_file_48906 RPyLen hfs_cat_file 0 48906 NULL +enable_so_offset_scatterlist_48908 offset scatterlist 0 48908 NULL nohasharray +enable_so_max_devices_support_mvumi_hs_page1_48908 max_devices_support mvumi_hs_page1 0 48908 &enable_so_offset_scatterlist_48908 @@ -201614,7 +202232,8 @@ index 0000000..56d8f55 +enable_so_tx_tr_cfv_info_49171 tx_tr cfv_info 0 49171 NULL +enable_so_ipr_alloc_ucode_buffer_fndecl_49172 ipr_alloc_ucode_buffer fndecl 1 49172 NULL +enable_so_guc_fw_size_intel_guc_fw_49177 guc_fw_size intel_guc_fw 0 49177 NULL -+enable_so_nilfs_sufile_do_cancel_free_fndecl_49183 nilfs_sufile_do_cancel_free fndecl 2 49183 NULL ++enable_so_nilfs_sufile_do_cancel_free_fndecl_49183 nilfs_sufile_do_cancel_free fndecl 2 49183 NULL nohasharray ++enable_so_allocate_probes_fndecl_49183 allocate_probes fndecl 1 49183 &enable_so_nilfs_sufile_do_cancel_free_fndecl_49183 +enable_so_s_last_ino_logfs_super_49185 s_last_ino logfs_super 0 49185 NULL +enable_so_page_size_nvme_ctrl_49190 page_size nvme_ctrl 0 49190 NULL +enable_so_len_fb_cmap_user_49195 len fb_cmap_user 0 49195 NULL @@ -201777,8 +202396,10 @@ index 0000000..56d8f55 +enable_so_clk_core_get_rate_nolock_fndecl_49685 clk_core_get_rate_nolock fndecl 0 49685 NULL +enable_so_subsampling_s5p_jpeg_fmt_49688 subsampling s5p_jpeg_fmt 0 49688 NULL nohasharray +enable_so___seq_open_private_fndecl_49688 __seq_open_private fndecl 3 49688 &enable_so_subsampling_s5p_jpeg_fmt_49688 ++enable_so_batadv_iv_ogm_drop_bcast_own_entry_fndecl_49690 batadv_iv_ogm_drop_bcast_own_entry fndecl 2 49690 NULL +enable_so_report_size_iowarrior_49692 report_size iowarrior 0 49692 NULL nohasharray +enable_so_set_extent_bit_fndecl_49692 set_extent_bit fndecl 3-2 49692 &enable_so_report_size_iowarrior_49692 ++enable_so_pnode_uv_gam_range_entry_49695 pnode uv_gam_range_entry 0 49695 NULL +enable_so_security_inode_listxattr_fndecl_49699 security_inode_listxattr fndecl 0 49699 NULL +enable_so_s_segshift_logfs_super_49707 s_segshift logfs_super 0 49707 NULL +enable_so_pg_write_fndecl_49709 pg_write fndecl 3 49709 NULL @@ -201808,6 +202429,7 @@ index 0000000..56d8f55 +enable_so_seeks_shrinker_49793 seeks shrinker 0 49793 NULL +enable_so_nilfs_mdt_init_fndecl_49794 nilfs_mdt_init fndecl 3 49794 NULL +enable_so_outlen_mimd_49796 outlen mimd 0 49796 NULL ++enable_so_write_file_wow_fndecl_49799 write_file_wow fndecl 3 49799 NULL +enable_so_substream_alloc_pages_fndecl_49800 substream_alloc_pages fndecl 3 49800 NULL +enable_so_n_mmc_ies_whc_49802 n_mmc_ies whc 0 49802 NULL +enable_so_ocfs2_zero_partial_clusters_fndecl_49803 ocfs2_zero_partial_clusters fndecl 2-3 49803 NULL @@ -201866,8 +202488,7 @@ index 0000000..56d8f55 +enable_so_mms114_write_reg_fndecl_49977 mms114_write_reg fndecl 3 49977 NULL +enable_so_dig_in_nid_hda_gen_spec_49979 dig_in_nid hda_gen_spec 0 49979 NULL +enable_so_subtract_range_fndecl_49980 subtract_range fndecl 3-4 49980 NULL nohasharray -+enable_so_tty_write_room_fndecl_49980 tty_write_room fndecl 0 49980 &enable_so_subtract_range_fndecl_49980 nohasharray -+enable_so_scsi_debug_opt_blks_vardecl_scsi_debug_c_49980 scsi_debug_opt_blks vardecl_scsi_debug.c 0 49980 &enable_so_tty_write_room_fndecl_49980 ++enable_so_tty_write_room_fndecl_49980 tty_write_room fndecl 0 49980 &enable_so_subtract_range_fndecl_49980 +enable_so_mbox_size_wl1271_49981 mbox_size wl1271 0 49981 NULL +enable_so___mms114_read_reg_fndecl_49983 __mms114_read_reg fndecl 3-0 49983 NULL +enable_so_eqc_entry_sz_mthca_dev_lim_49984 eqc_entry_sz mthca_dev_lim 0 49984 NULL @@ -201965,6 +202586,7 @@ index 0000000..56d8f55 +enable_so_insert_reserved_file_extent_fndecl_50316 insert_reserved_file_extent fndecl 6-3-7 50316 NULL +enable_so___cfg80211_connect_result_fndecl_50317 __cfg80211_connect_result fndecl 4-6 50317 NULL nohasharray +enable_so_fs_cgfsize_efs_super_50317 fs_cgfsize efs_super 0 50317 &enable_so___cfg80211_connect_result_fndecl_50317 ++enable_so__iwl_dbgfs_pm_params_write_fndecl_50318 _iwl_dbgfs_pm_params_write fndecl 3 50318 NULL +enable_so_scif_rma_copy_fndecl_50320 scif_rma_copy fndecl 2-5-4-3 50320 NULL +enable_so_rbytes_ceph_mds_reply_inode_50321 rbytes ceph_mds_reply_inode 0 50321 NULL +enable_so_VST_kyrofb_info_50324 VST kyrofb_info 0 50324 NULL @@ -201998,6 +202620,7 @@ index 0000000..56d8f55 +enable_so_nilfs_gccache_submit_read_data_fndecl_50434 nilfs_gccache_submit_read_data fndecl 3-4 50434 NULL +enable_so_pkt_size_asender_cmd_50437 pkt_size asender_cmd 0 50437 NULL +enable_so_sbp_count_se_tpg_luns_fndecl_50444 sbp_count_se_tpg_luns fndecl 0 50444 NULL ++enable_so_il_dbgfs_sram_write_fndecl_50445 il_dbgfs_sram_write fndecl 3 50445 NULL +enable_so_nfsd4_encode_fattr_to_buf_fndecl_50449 nfsd4_encode_fattr_to_buf fndecl 2 50449 NULL nohasharray +enable_so_nr_phys_segments_request_50449 nr_phys_segments request 0 50449 &enable_so_nfsd4_encode_fattr_to_buf_fndecl_50449 +enable_so_nfsd_drc_mem_used_vardecl_50456 nfsd_drc_mem_used vardecl 0 50456 NULL @@ -202012,6 +202635,7 @@ index 0000000..56d8f55 +enable_so_snd_sbmixer_add_ctl_fndecl_50491 snd_sbmixer_add_ctl fndecl 5 50491 NULL +enable_so_max_pages_nilfs_write_info_50494 max_pages nilfs_write_info 0 50494 NULL +enable_so_udf_new_block_fndecl_50500 udf_new_block fndecl 0 50500 NULL ++enable_so_lpfc_idiag_extacc_write_fndecl_50501 lpfc_idiag_extacc_write fndecl 3 50501 NULL +enable_so_bio_clone_range_fndecl_50502 bio_clone_range fndecl 2-3 50502 NULL +enable_so_mwifiex_read_data_sync_fndecl_50504 mwifiex_read_data_sync fndecl 3 50504 NULL +enable_so_readahead_tree_block_fndecl_50505 readahead_tree_block fndecl 2 50505 NULL @@ -202065,7 +202689,8 @@ index 0000000..56d8f55 +enable_so_pvid_net_bridge_vlan_group_50651 pvid net_bridge_vlan_group 0 50651 NULL +enable_so_xor_sources_dmatest_params_50653 xor_sources dmatest_params 0 50653 NULL +enable_so_recalc_rate_clk_ops_50655 recalc_rate clk_ops 0 50655 NULL -+enable_so_io_size_tulip_chip_table_50656 io_size tulip_chip_table 0 50656 NULL ++enable_so_io_size_tulip_chip_table_50656 io_size tulip_chip_table 0 50656 NULL nohasharray ++enable_so_qsfp2_debugfs_write_fndecl_50656 qsfp2_debugfs_write fndecl 3 50656 &enable_so_io_size_tulip_chip_table_50656 +enable_so_proc_coredump_filter_read_fndecl_50658 proc_coredump_filter_read fndecl 3 50658 NULL +enable_so_ucNumEntries__ATOM_Tonga_SCLK_Dependency_Table_50666 ucNumEntries _ATOM_Tonga_SCLK_Dependency_Table 0 50666 NULL +enable_so_da9150_i2c_write_device_fndecl_50670 da9150_i2c_write_device fndecl 3 50670 NULL @@ -202082,6 +202707,7 @@ index 0000000..56d8f55 +enable_so_rxkad_secure_packet_encrypt_fndecl_50687 rxkad_secure_packet_encrypt fndecl 3 50687 NULL nohasharray +enable_so_hv_mem_hot_add_fndecl_50687 hv_mem_hot_add fndecl 1 50687 &enable_so_rxkad_secure_packet_encrypt_fndecl_50687 +enable_so_dm_bm_read_try_lock_fndecl_50688 dm_bm_read_try_lock fndecl 2-0 50688 NULL ++enable_so_ftrace_pid_write_fndecl_50701 ftrace_pid_write fndecl 3 50701 NULL +enable_so___find_rev_next_bit_fndecl_50712 __find_rev_next_bit fndecl 0-3-2 50712 NULL +enable_so_back_xfs_da3_icnode_hdr_50715 back xfs_da3_icnode_hdr 0 50715 NULL +enable_so_sc18is602_wait_ready_fndecl_50717 sc18is602_wait_ready fndecl 0 50717 NULL @@ -202149,7 +202775,6 @@ index 0000000..56d8f55 +enable_so_max_ceqs_i40iw_hmc_fpm_misc_50878 max_ceqs i40iw_hmc_fpm_misc 0 50878 NULL +enable_so_qib_read_kreg64_fndecl_50881 qib_read_kreg64 fndecl 0 50881 NULL +enable_so___nvme_submit_sync_cmd_fndecl_50882 __nvme_submit_sync_cmd fndecl 5 50882 NULL -+enable_so_sync_file_alloc_fndecl_50886 sync_file_alloc fndecl 1 50886 NULL +enable_so_get_ramdisk_image_fndecl_50888 get_ramdisk_image fndecl 0 50888 NULL +enable_so_pkt_add_fndecl_50890 pkt_add fndecl 3 50890 NULL nohasharray +enable_so_size_t4_sq_50890 size t4_sq 0 50890 &enable_so_pkt_add_fndecl_50890 nohasharray @@ -202189,10 +202814,10 @@ index 0000000..56d8f55 +enable_so_usif_ioctl_fndecl_50986 usif_ioctl fndecl 3 50986 NULL +enable_so_first_burst_len_iscsi_cmd_50987 first_burst_len iscsi_cmd 0 50987 NULL +enable_so_do_get_mempolicy_fndecl_50990 do_get_mempolicy fndecl 3 50990 NULL -+enable_so_msi_num_pci_pbm_info_50995 msi_num pci_pbm_info 0 50995 NULL +enable_so_pa_mic_mw_51003 pa mic_mw 0 51003 NULL nohasharray +enable_so_cb_break_tail_afs_server_51003 cb_break_tail afs_server 0 51003 &enable_so_pa_mic_mw_51003 +enable_so_resize_size_resize_parms_51005 resize_size resize_parms 0 51005 NULL ++enable_so_soft_pp_table_size_pp_hwmgr_51014 soft_pp_table_size pp_hwmgr 0 51014 NULL +enable_so_room_ceph_pagelist_51016 room ceph_pagelist 0 51016 NULL +enable_so_sg_count_realtek_pci_sdmmc_51022 sg_count realtek_pci_sdmmc 0 51022 NULL +enable_so_num_of_queues_il_cfg_51023 num_of_queues il_cfg 0 51023 NULL @@ -202262,6 +202887,7 @@ index 0000000..56d8f55 +enable_so_mt9v032_calc_ratio_fndecl_51219 mt9v032_calc_ratio fndecl 0 51219 NULL +enable_so_vsi_oltext_vxfs_sb_info_51222 vsi_oltext vxfs_sb_info 0 51222 NULL +enable_so_mem_cgroup_count_precharge_pte_range_fndecl_51229 mem_cgroup_count_precharge_pte_range fndecl 2 51229 NULL ++enable_so_rt2x00debug_write_rf_fndecl_51232 rt2x00debug_write_rf fndecl 3 51232 NULL +enable_so_stb0899_read_regs_fndecl_51234 stb0899_read_regs fndecl 4 51234 NULL nohasharray +enable_so_pte_entry_mm_walk_51234 pte_entry mm_walk 0 51234 &enable_so_stb0899_read_regs_fndecl_51234 +enable_so_proc_set_size_fndecl_51237 proc_set_size fndecl 2 51237 NULL @@ -202348,6 +202974,7 @@ index 0000000..56d8f55 +enable_so_count_atl1_tpd_ring_51510 count atl1_tpd_ring 0 51510 NULL +enable_so_pkt_alloc_packet_data_fndecl_51515 pkt_alloc_packet_data fndecl 1 51515 NULL nohasharray +enable_so__rtw_malloc_fndecl_51515 _rtw_malloc fndecl 1 51515 &enable_so_pkt_alloc_packet_data_fndecl_51515 ++enable_so_nfp_net_rx_ring_alloc_fndecl_51524 nfp_net_rx_ring_alloc fndecl 3 51524 NULL +enable_so_size_fb_pixmap_51528 size fb_pixmap 0 51528 NULL +enable_so_index_v4l2_subdev_frame_interval_enum_51537 index v4l2_subdev_frame_interval_enum 0 51537 NULL +enable_so_mft_no__ntfs_inode_51541 mft_no _ntfs_inode 0 51541 NULL @@ -202389,7 +203016,8 @@ index 0000000..56d8f55 +enable_so_cifs_send_async_read_fndecl_51630 cifs_send_async_read fndecl 2 51630 NULL +enable_so_m25p80_read_fndecl_51631 m25p80_read fndecl 3 51631 NULL +enable_so_nodesize_btrfs_root_51633 nodesize btrfs_root 0 51633 NULL nohasharray -+enable_so_wil_vring_init_bcast_fndecl_51633 wil_vring_init_bcast fndecl 3 51633 &enable_so_nodesize_btrfs_root_51633 ++enable_so_wil_vring_init_bcast_fndecl_51633 wil_vring_init_bcast fndecl 3 51633 &enable_so_nodesize_btrfs_root_51633 nohasharray ++enable_so__iwl_dbgfs_fw_dbg_conf_write_fndecl_51633 _iwl_dbgfs_fw_dbg_conf_write fndecl 3 51633 &enable_so_wil_vring_init_bcast_fndecl_51633 +enable_so_SyS_llistxattr_fndecl_51635 SyS_llistxattr fndecl 3 51635 NULL +enable_so_SsidLength_ndis_802_11_ssid_51638 SsidLength ndis_802_11_ssid 0 51638 NULL +enable_so_remap_cell_to_cache_dirty_fndecl_51640 remap_cell_to_cache_dirty fndecl 4 51640 NULL @@ -202397,6 +203025,7 @@ index 0000000..56d8f55 +enable_so_imm_count_jit_ctx_51643 imm_count jit_ctx 0 51643 NULL +enable_so_hsu_dma_desc_size_fndecl_51647 hsu_dma_desc_size fndecl 0 51647 NULL nohasharray +enable_so_nsm_create_handle_fndecl_51647 nsm_create_handle fndecl 4 51647 &enable_so_hsu_dma_desc_size_fndecl_51647 ++enable_so_ath10k_mem_value_read_fndecl_51648 ath10k_mem_value_read fndecl 3 51648 NULL +enable_so_kernfs_dir_fop_llseek_fndecl_51649 kernfs_dir_fop_llseek fndecl 2 51649 NULL +enable_so_max_txsz_cxgbi_ddp_info_51655 max_txsz cxgbi_ddp_info 0 51655 NULL nohasharray +enable_so_tx_ring_size_gfar_priv_tx_q_51655 tx_ring_size gfar_priv_tx_q 0 51655 &enable_so_max_txsz_cxgbi_ddp_info_51655 @@ -202477,6 +203106,7 @@ index 0000000..56d8f55 +enable_so_MaxFrameSize_s_smt_os_51875 MaxFrameSize s_smt_os 0 51875 NULL +enable_so_vbi_height_em28xx_v4l2_51876 vbi_height em28xx_v4l2 0 51876 NULL +enable_so_lright_ext4_allocation_request_51877 lright ext4_allocation_request 0 51877 NULL ++enable_so_direct_entry_fndecl_51879 direct_entry fndecl 3 51879 NULL +enable_so_compat_udp_setsockopt_fndecl_51883 compat_udp_setsockopt fndecl 5 51883 NULL +enable_so_skb_headroom_port100_51893 skb_headroom port100 0 51893 NULL +enable_so_sys_select_fndecl_51896 sys_select fndecl 1 51896 NULL @@ -202545,6 +203175,7 @@ index 0000000..56d8f55 +enable_so_btrfs_next_old_leaf_fndecl_52050 btrfs_next_old_leaf fndecl 0 52050 NULL nohasharray +enable_so_section_size_nvsp_1_message_send_send_buffer_complete_52050 section_size nvsp_1_message_send_send_buffer_complete 0 52050 &enable_so_btrfs_next_old_leaf_fndecl_52050 +enable_so_cxgb_change_mtu_fndecl_52055 cxgb_change_mtu fndecl 2 52055 NULL ++enable_so__iwl_dbgfs_scan_ant_rxchain_write_fndecl_52060 _iwl_dbgfs_scan_ant_rxchain_write fndecl 3 52060 NULL +enable_so_scif_register_fndecl_52065 scif_register fndecl 3 52065 NULL +enable_so_event_rx_mismatch_read_fndecl_52069 event_rx_mismatch_read fndecl 3 52069 NULL +enable_so_lpfc_bsg_copy_data_fndecl_52084 lpfc_bsg_copy_data fndecl 0-3 52084 NULL @@ -202644,6 +203275,7 @@ index 0000000..56d8f55 +enable_so___do_replace_fndecl_52344 __do_replace fndecl 5 52344 NULL +enable_so_xpc_connect_fndecl_52346 xpc_connect fndecl 5 52346 NULL +enable_so_mac_header_sk_buff_52356 mac_header sk_buff 0 52356 NULL ++enable_so__iwl_dbgfs_fw_restart_write_fndecl_52357 _iwl_dbgfs_fw_restart_write fndecl 3 52357 NULL +enable_so_pipe_src_h_intel_crtc_state_52358 pipe_src_h intel_crtc_state 0 52358 NULL nohasharray +enable_so_blk_queue_max_hw_sectors_fndecl_52358 blk_queue_max_hw_sectors fndecl 2 52358 &enable_so_pipe_src_h_intel_crtc_state_52358 nohasharray +enable_so_rtl_read_byte_fndecl_52358 rtl_read_byte fndecl 0 52358 &enable_so_blk_queue_max_hw_sectors_fndecl_52358 @@ -202661,6 +203293,7 @@ index 0000000..56d8f55 +enable_so_ath6kl_wmi_set_ie_cmd_fndecl_52383 ath6kl_wmi_set_ie_cmd fndecl 6-2 52383 NULL nohasharray +enable_so_sg_pgoffset_sg_page_iter_52383 sg_pgoffset sg_page_iter 0 52383 &enable_so_ath6kl_wmi_set_ie_cmd_fndecl_52383 +enable_so_error_tbc_exch_mismatch_read_fndecl_52388 error_tbc_exch_mismatch_read fndecl 3 52388 NULL ++enable_so_raw_bufsize_edt_ft5x06_ts_data_52390 raw_bufsize edt_ft5x06_ts_data 0 52390 NULL +enable_so_jffs2_write_dirent_fndecl_52396 jffs2_write_dirent fndecl 5 52396 NULL +enable_so_u132_hcd_initial_input_recv_fndecl_52397 u132_hcd_initial_input_recv fndecl 4 52397 NULL +enable_so_srp_map_idb_fndecl_52402 srp_map_idb fndecl 5-0 52402 NULL @@ -202727,7 +203360,8 @@ index 0000000..56d8f55 +enable_so_end_logsuper_52574 end logsuper 0 52574 NULL +enable_so_amdgpu_ttm_tt_set_userptr_fndecl_52575 amdgpu_ttm_tt_set_userptr fndecl 2 52575 NULL nohasharray +enable_so_data_length_iscsi_r2t_info_52575 data_length iscsi_r2t_info 0 52575 &enable_so_amdgpu_ttm_tt_set_userptr_fndecl_52575 -+enable_so_device_create_groups_vargs_fndecl_52576 device_create_groups_vargs fndecl 3 52576 NULL ++enable_so_device_create_groups_vargs_fndecl_52576 device_create_groups_vargs fndecl 3 52576 NULL nohasharray ++enable_so_il4965_rs_sta_dbgfs_scale_table_write_fndecl_52576 il4965_rs_sta_dbgfs_scale_table_write fndecl 3 52576 &enable_so_device_create_groups_vargs_fndecl_52576 +enable_so___mincore_unmapped_range_fndecl_52595 __mincore_unmapped_range fndecl 1 52595 NULL +enable_so_xfs_shift_file_space_fndecl_52596 xfs_shift_file_space fndecl 2-3 52596 NULL +enable_so_cached_dev_init_fndecl_52600 cached_dev_init fndecl 2 52600 NULL @@ -202769,6 +203403,7 @@ index 0000000..56d8f55 +enable_so_fpHeight_nvidia_par_52691 fpHeight nvidia_par 0 52691 NULL nohasharray +enable_so_urb_done_max3421_hcd_52691 urb_done max3421_hcd 0 52691 &enable_so_fpHeight_nvidia_par_52691 +enable_so_max_data_link_payload_nfc_hci_dev_52699 max_data_link_payload nfc_hci_dev 0 52699 NULL ++enable_so__iwl_dbgfs_bcast_filters_macs_write_fndecl_52702 _iwl_dbgfs_bcast_filters_macs_write fndecl 3 52702 NULL +enable_so_count_vfio_pci_hot_reset_52708 count vfio_pci_hot_reset 0 52708 NULL +enable_so_gen_ie_buf_len_mwifiex_private_52710 gen_ie_buf_len mwifiex_private 0 52710 NULL +enable_so_s_je_fill_logfs_super_52713 s_je_fill logfs_super 0 52713 NULL @@ -202862,6 +203497,7 @@ index 0000000..56d8f55 +enable_so_BC_Read_Reg_IsdnCardState_53020 BC_Read_Reg IsdnCardState 0 53020 NULL +enable_so_bytesused_ivtv_buffer_53021 bytesused ivtv_buffer 0 53021 NULL +enable_so_tty_insert_flip_string_fixed_flag_fndecl_53031 tty_insert_flip_string_fixed_flag fndecl 4-0 53031 NULL ++enable_so_ni_peertxcredits_lnet_ni_53034 ni_peertxcredits lnet_ni 0 53034 NULL +enable_so_xfs_filestream_pick_ag_fndecl_53040 xfs_filestream_pick_ag fndecl 2 53040 NULL nohasharray +enable_so_nports0_adapter_info_53040 nports0 adapter_info 0 53040 &enable_so_xfs_filestream_pick_ag_fndecl_53040 +enable_so_xmit_fifo_size_serial_struct_53048 xmit_fifo_size serial_struct 0 53048 NULL @@ -202920,6 +203556,8 @@ index 0000000..56d8f55 +enable_so_xoffset_fb_var_screeninfo_53153 xoffset fb_var_screeninfo 0 53153 NULL +enable_so_fat_cont_expand_fndecl_53155 fat_cont_expand fndecl 2 53155 NULL +enable_so_sb_blocksize_xfs_sb_53160 sb_blocksize xfs_sb 0 53160 NULL ++enable_so_lpfc_debugfs_max_disc_trc_vardecl_lpfc_debugfs_c_53169 lpfc_debugfs_max_disc_trc vardecl_lpfc_debugfs.c 0 53169 NULL ++enable_so_num_tx_rings_nfp_net_53170 num_tx_rings nfp_net 0 53170 NULL +enable_so_buf_size_mwifiex_event_scan_result_53175 buf_size mwifiex_event_scan_result 0 53175 NULL +enable_so_tegra_spi_start_tx_dma_fndecl_53177 tegra_spi_start_tx_dma fndecl 0-2 53177 NULL +enable_so_offset_page_frag_53180 offset page_frag 0 53180 NULL @@ -203010,6 +203648,7 @@ index 0000000..56d8f55 +enable_so_cfs_hash_buckets_realloc_fndecl_53415 cfs_hash_buckets_realloc fndecl 4 53415 &enable_so_dib9000_firmware_download_fndecl_53415 +enable_so_vlan_dev_set_egress_priority_fndecl_53418 vlan_dev_set_egress_priority fndecl 3 53418 NULL nohasharray +enable_so_rxHeader3_edgeport_serial_53418 rxHeader3 edgeport_serial 0 53418 &enable_so_vlan_dev_set_egress_priority_fndecl_53418 ++enable_so_codec_reg_read_file_fndecl_53419 codec_reg_read_file fndecl 3 53419 NULL +enable_so_expand_stack_fndecl_53426 expand_stack fndecl 2 53426 NULL nohasharray +enable_so_nbits_nvmem_cell_info_53426 nbits nvmem_cell_info 0 53426 &enable_so_expand_stack_fndecl_53426 +enable_so_compat_sys_mbind_fndecl_53427 compat_sys_mbind fndecl 2-1-5 53427 NULL nohasharray @@ -203219,7 +203858,8 @@ index 0000000..56d8f55 +enable_so_cfpkt_add_head_fndecl_53990 cfpkt_add_head fndecl 3 53990 &enable_so_hfsplus_create_cat_fndecl_53990 +enable_so_cm_write_fndecl_53993 cm_write fndecl 3 53993 NULL +enable_so_btrfs_init_new_buffer_fndecl_53996 btrfs_init_new_buffer fndecl 3 53996 NULL -+enable_so_size_drbd_interval_54002 size drbd_interval 0 54002 NULL ++enable_so_size_drbd_interval_54002 size drbd_interval 0 54002 NULL nohasharray ++enable_so_int_hardware_entry_fndecl_54002 int_hardware_entry fndecl 3 54002 &enable_so_size_drbd_interval_54002 +enable_so_ax88179_change_mtu_fndecl_54007 ax88179_change_mtu fndecl 2 54007 NULL +enable_so_nonstatic_find_io_fndecl_54015 nonstatic_find_io fndecl 4 54015 NULL +enable_so_submit_stripe_bio_fndecl_54016 submit_stripe_bio fndecl 4 54016 NULL @@ -203229,6 +203869,7 @@ index 0000000..56d8f55 +enable_so_s_nextid_exofs_sb_info_54042 s_nextid exofs_sb_info 0 54042 NULL +enable_so_sierra_write_fndecl_54049 sierra_write fndecl 4 54049 NULL +enable_so_sci_probe_single_fndecl_54053 sci_probe_single fndecl 2 54053 NULL ++enable_so__iwl_dbgfs_uapsd_misbehaving_write_fndecl_54054 _iwl_dbgfs_uapsd_misbehaving_write fndecl 3 54054 NULL +enable_so_storvsc_ringbuffer_size_vardecl_storvsc_drv_c_54060 storvsc_ringbuffer_size vardecl_storvsc_drv.c 0 54060 NULL +enable_so_msb_update_block_fndecl_54063 msb_update_block fndecl 0-4-2 54063 NULL +enable_so_tunables_read_fndecl_54066 tunables_read fndecl 3 54066 NULL @@ -203280,7 +203921,8 @@ index 0000000..56d8f55 +enable_so_num_bytes_drm_dp_remote_dpcd_write_54181 num_bytes drm_dp_remote_dpcd_write 0 54181 NULL +enable_so_len_xfs_alloc_arg_54187 len xfs_alloc_arg 0 54187 NULL +enable_so_cpu_type_read_fndecl_54191 cpu_type_read fndecl 3 54191 NULL -+enable_so_nfs_llseek_dir_fndecl_54192 nfs_llseek_dir fndecl 2 54192 NULL ++enable_so_nfs_llseek_dir_fndecl_54192 nfs_llseek_dir fndecl 2 54192 NULL nohasharray ++enable_so__iwl_dbgfs_fw_nmi_write_fndecl_54192 _iwl_dbgfs_fw_nmi_write fndecl 3 54192 &enable_so_nfs_llseek_dir_fndecl_54192 +enable_so_tp_ep_bcm5974_config_54193 tp_ep bcm5974_config 0 54193 NULL +enable_so_current_speed_ide_drive_s_54197 current_speed ide_drive_s 0 54197 NULL +enable_so_ipw2100_set_essid_fndecl_54200 ipw2100_set_essid fndecl 3 54200 NULL @@ -203319,6 +203961,7 @@ index 0000000..56d8f55 +enable_so_key_size_crypt_config_54287 key_size crypt_config 0 54287 NULL +enable_so_fat_file_fsync_fndecl_54291 fat_file_fsync fndecl 2-3 54291 NULL +enable_so_thoff_flow_dissector_key_control_54299 thoff flow_dissector_key_control 0 54299 NULL ++enable_so_rss_key_size_i40evf_adapter_54301 rss_key_size i40evf_adapter 0 54301 NULL +enable_so_ntfs_attr_extend_initialized_fndecl_54303 ntfs_attr_extend_initialized fndecl 2 54303 NULL nohasharray +enable_so_count_ext4_new_flex_group_data_54303 count ext4_new_flex_group_data 0 54303 &enable_so_ntfs_attr_extend_initialized_fndecl_54303 +enable_so_ceph_osdc_start_request_fndecl_54305 ceph_osdc_start_request fndecl 0 54305 NULL @@ -203414,6 +204057,7 @@ index 0000000..56d8f55 +enable_so_bandlength_Kiara_table_entry_54541 bandlength Kiara_table_entry 0 54541 &enable_so_v_sync_strt_wid_crtc_54541 +enable_so_s_dev_table_count_exofs_fscb_54542 s_dev_table_count exofs_fscb 0 54542 NULL +enable_so_dvb_dmxdev_section_callback_fndecl_54550 dvb_dmxdev_section_callback fndecl 2-4 54550 NULL ++enable_so___i2c_debugfs_read_fndecl_54556 __i2c_debugfs_read fndecl 3 54556 NULL +enable_so_pages_snd_sg_buf_54557 pages snd_sg_buf 0 54557 NULL +enable_so_interval_exp_blk_integrity_54558 interval_exp blk_integrity 0 54558 NULL +enable_so_cp_nr_rings_bnxt_54565 cp_nr_rings bnxt 0 54565 NULL @@ -203514,6 +204158,7 @@ index 0000000..56d8f55 +enable_so_target_count_dm_ioctl_54826 target_count dm_ioctl 0 54826 NULL +enable_so_last_adv_data_len_discovery_state_54833 last_adv_data_len discovery_state 0 54833 NULL +enable_so_kernel_readv_fndecl_54834 kernel_readv fndecl 3 54834 NULL ++enable_so_i2c1_debugfs_write_fndecl_54837 i2c1_debugfs_write fndecl 3 54837 NULL +enable_so_ixgbe_pci_sriov_configure_fndecl_54843 ixgbe_pci_sriov_configure fndecl 2 54843 NULL +enable_so_reiserfs_readpages_fndecl_54846 reiserfs_readpages fndecl 4 54846 NULL +enable_so_blkdev_direct_IO_fndecl_54850 blkdev_direct_IO fndecl 3 54850 NULL @@ -203658,6 +204303,7 @@ index 0000000..56d8f55 +enable_so_readlen_proc_data_55289 readlen proc_data 0 55289 &enable_so_hdrlen_ipv6_rt_hdr_55289 +enable_so_c_can_read_msg_object_fndecl_55291 c_can_read_msg_object fndecl 3 55291 NULL +enable_so_sq905c_command_fndecl_55293 sq905c_command fndecl 0 55293 NULL ++enable_so_C_SYSC_kexec_load_fndecl_55294 C_SYSC_kexec_load fndecl 2 55294 NULL +enable_so_regmap_irq_chip_get_base_fndecl_55298 regmap_irq_chip_get_base fndecl 0 55298 NULL +enable_so_upd_bytes_ubi_volume_55301 upd_bytes ubi_volume 0 55301 NULL +enable_so_memcg_update_all_caches_fndecl_55303 memcg_update_all_caches fndecl 1 55303 NULL @@ -203750,8 +204396,7 @@ index 0000000..56d8f55 +enable_so_length_ipw_rx_frame_55612 length ipw_rx_frame 0 55612 NULL +enable_so_alg_trunc_len_xfrm_algo_auth_55613 alg_trunc_len xfrm_algo_auth 0 55613 NULL +enable_so_initial_width_vmw_private_55615 initial_width vmw_private 0 55615 NULL nohasharray -+enable_so_ybpp_camif_fmt_55615 ybpp camif_fmt 0 55615 &enable_so_initial_width_vmw_private_55615 nohasharray -+enable_so_x___una_u64_55615 x __una_u64 0 55615 &enable_so_ybpp_camif_fmt_55615 ++enable_so_ybpp_camif_fmt_55615 ybpp camif_fmt 0 55615 &enable_so_initial_width_vmw_private_55615 +enable_so_vmci_transport_dgram_dequeue_fndecl_55628 vmci_transport_dgram_dequeue fndecl 3 55628 NULL +enable_so_bin_string_fndecl_55631 bin_string fndecl 5-3 55631 NULL +enable_so_hfsplus_ext_read_extent_fndecl_55633 hfsplus_ext_read_extent fndecl 2 55633 NULL @@ -203780,6 +204425,7 @@ index 0000000..56d8f55 +enable_so_fbcon_resize_fndecl_55724 fbcon_resize fndecl 3-2 55724 NULL +enable_so_kvm_vcpu_gfn_to_page_fndecl_55725 kvm_vcpu_gfn_to_page fndecl 2 55725 NULL +enable_so_dst_command_fndecl_55728 dst_command fndecl 3 55728 NULL ++enable_so_mpi_from_key_fndecl_55729 mpi_from_key fndecl 0 55729 NULL +enable_so_vsi_iext_vxfs_sb_info_55734 vsi_iext vxfs_sb_info 0 55734 NULL nohasharray +enable_so_nilfs_direct_delete_and_convert_fndecl_55734 nilfs_direct_delete_and_convert fndecl 0 55734 &enable_so_vsi_iext_vxfs_sb_info_55734 +enable_so_btrfs_delalloc_reserve_metadata_fndecl_55736 btrfs_delalloc_reserve_metadata fndecl 0 55736 NULL @@ -203794,7 +204440,8 @@ index 0000000..56d8f55 +enable_so_offset_xfs_bmalloca_55767 offset xfs_bmalloca 0 55767 NULL +enable_so_s_next_psn_qib_qp_55768 s_next_psn qib_qp 0 55768 NULL +enable_so_flag_lpfc_dmabufext_55771 flag lpfc_dmabufext 0 55771 NULL -+enable_so_dump_emit_fndecl_55772 dump_emit fndecl 3 55772 NULL ++enable_so_dump_emit_fndecl_55772 dump_emit fndecl 3 55772 NULL nohasharray ++enable_so_cmd_read_size_wiimote_state_55772 cmd_read_size wiimote_state 0 55772 &enable_so_dump_emit_fndecl_55772 +enable_so_ppp_write_fndecl_55777 ppp_write fndecl 3 55777 NULL +enable_so_rx_rx_xfr_read_fndecl_55779 rx_rx_xfr_read fndecl 3 55779 NULL +enable_so_width_cx25821_channel_55782 width cx25821_channel 0 55782 NULL @@ -203814,6 +204461,7 @@ index 0000000..56d8f55 +enable_so_dr_free_blk_ocfs2_dx_root_block_55848 dr_free_blk ocfs2_dx_root_block 0 55848 NULL +enable_so_s_segment_usage_size_nilfs_super_block_55851 s_segment_usage_size nilfs_super_block 0 55851 NULL +enable_so___cfg80211_disconnected_fndecl_55853 __cfg80211_disconnected fndecl 3 55853 NULL ++enable_so_rdma_rw_init_map_wrs_fndecl_55859 rdma_rw_init_map_wrs fndecl 4 55859 NULL +enable_so_ceph_msgpool_init_fndecl_55860 ceph_msgpool_init fndecl 3-4 55860 NULL nohasharray +enable_so_cw1200_queue_init_fndecl_55860 cw1200_queue_init fndecl 4 55860 &enable_so_ceph_msgpool_init_fndecl_55860 +enable_so_do_raw_getsockopt_fndecl_55863 do_raw_getsockopt fndecl 0 55863 NULL @@ -203833,6 +204481,7 @@ index 0000000..56d8f55 +enable_so_ad7280_chain_setup_fndecl_55912 ad7280_chain_setup fndecl 0 55912 NULL +enable_so_rocker_port_kcalloc_fndecl_55915 rocker_port_kcalloc fndecl 5-4 55915 NULL +enable_so_isr_fiqs_read_fndecl_55916 isr_fiqs_read fndecl 3 55916 NULL ++enable_so__iwl_dbgfs_tof_enable_write_fndecl_55919 _iwl_dbgfs_tof_enable_write fndecl 3 55919 NULL +enable_so_mrf24j40_long_regmap_read_fndecl_55922 mrf24j40_long_regmap_read fndecl 3-5 55922 NULL +enable_so_nf_nat_mangle_udp_packet_fndecl_55926 nf_nat_mangle_udp_packet fndecl 4-6-8 55926 NULL +enable_so_change_prot_numa_fndecl_55935 change_prot_numa fndecl 3-2 55935 NULL @@ -203915,6 +204564,7 @@ index 0000000..56d8f55 +enable_so_av7110_vbi_write_fndecl_56131 av7110_vbi_write fndecl 3 56131 &enable_so_size_direct_56131 +enable_so_sl_max_ip_sf_socklist_56140 sl_max ip_sf_socklist 0 56140 NULL +enable_so_prepare_add_efi_setup_data_fndecl_56147 prepare_add_efi_setup_data fndecl 3-2 56147 NULL ++enable_so__iwl_dbgfs_low_latency_write_fndecl_56153 _iwl_dbgfs_low_latency_write fndecl 3 56153 NULL +enable_so_reiserfs_resize_fndecl_56154 reiserfs_resize fndecl 2 56154 NULL +enable_so_i2c_hid_get_raw_report_fndecl_56155 i2c_hid_get_raw_report fndecl 4 56155 NULL +enable_so_ipx_pktsize_ipxhdr_56157 ipx_pktsize ipxhdr 0 56157 NULL @@ -203957,6 +204607,7 @@ index 0000000..56d8f55 +enable_so_dt_gpio_count_fndecl_56245 dt_gpio_count fndecl 0 56245 &enable_so_cfpkt_peek_head_fndecl_56245 +enable_so_qtd_fill_fndecl_56249 qtd_fill fndecl 5-6-3-0-4 56249 NULL +enable_so_size_uvc_xu_control_query_56263 size uvc_xu_control_query 0 56263 NULL ++enable_so_size_udata_s_56266 size udata_s 0 56266 NULL +enable_so_dmreq_start_crypt_config_56268 dmreq_start crypt_config 0 56268 NULL +enable_so_qp_alloc_res_fndecl_56275 qp_alloc_res fndecl 5 56275 NULL +enable_so_vyres_crtc_56276 vyres crtc 0 56276 NULL @@ -204116,6 +204767,7 @@ index 0000000..56d8f55 +enable_so_ib_uverbs_create_cq_fndecl_56793 ib_uverbs_create_cq fndecl 4 56793 NULL +enable_so_context_id_bnx2fc_rport_56807 context_id bnx2fc_rport 0 56807 NULL nohasharray +enable_so_state_count_acpi_processor_performance_56807 state_count acpi_processor_performance 0 56807 &enable_so_context_id_bnx2fc_rport_56807 ++enable_so_write_file_bt_ant_diversity_fndecl_56808 write_file_bt_ant_diversity fndecl 3 56808 NULL +enable_so_num_pages_vmci_queue_kern_if_56812 num_pages vmci_queue_kern_if 0 56812 NULL +enable_so_di_entries_gfs2_dinode_56817 di_entries gfs2_dinode 0 56817 NULL +enable_so_dm_thin_remove_range_fndecl_56819 dm_thin_remove_range fndecl 0 56819 NULL @@ -204165,7 +204817,8 @@ index 0000000..56d8f55 +enable_so_xt_compat_target_offset_fndecl_56923 xt_compat_target_offset fndecl 0 56923 &enable_so_ip6_find_1stfragopt_fndecl_56923 +enable_so_usb_gstrings_attach_fndecl_56924 usb_gstrings_attach fndecl 3 56924 NULL +enable_so_vram_vardecl_nvidia_c_56925 vram vardecl_nvidia.c 0 56925 NULL -+enable_so_beiscsi_process_async_pdu_fndecl_56929 beiscsi_process_async_pdu fndecl 6 56929 NULL ++enable_so_beiscsi_process_async_pdu_fndecl_56929 beiscsi_process_async_pdu fndecl 6 56929 NULL nohasharray ++enable_so_nrealreaders_vardecl_rcuperf_c_56929 nrealreaders vardecl_rcuperf.c 0 56929 &enable_so_beiscsi_process_async_pdu_fndecl_56929 +enable_so_data_len_ib_mac_iocb_rsp_56930 data_len ib_mac_iocb_rsp 0 56930 NULL +enable_so_align_buffer_sz_sdhci_host_56931 align_buffer_sz sdhci_host 0 56931 NULL +enable_so_csize_jffs2_tmp_dnode_info_56933 csize jffs2_tmp_dnode_info 0 56933 NULL @@ -204226,7 +204879,6 @@ index 0000000..56d8f55 +enable_so_part_shift_vardecl_loop_c_57103 part_shift vardecl_loop.c 0 57103 NULL nohasharray +enable_so_mcs7830_get_reg_fndecl_57103 mcs7830_get_reg fndecl 3 57103 &enable_so_part_shift_vardecl_loop_c_57103 +enable_so_sync_pt_create_fndecl_57105 sync_pt_create fndecl 2 57105 NULL -+enable_so_sys_oabi_semop_fndecl_57109 sys_oabi_semop fndecl 3 57109 NULL +enable_so_wm_adsp_buffer_size_fndecl_57116 wm_adsp_buffer_size fndecl 0 57116 NULL +enable_so_total_sections_f2fs_sb_info_57118 total_sections f2fs_sb_info 0 57118 NULL +enable_so_size_nvif_notify_57130 size nvif_notify 0 57130 NULL @@ -204299,6 +204951,8 @@ index 0000000..56d8f55 +enable_so_interrupt_in_endpoint_size_ld_usb_57321 interrupt_in_endpoint_size ld_usb 0 57321 NULL +enable_so_acpi_gsi_to_irq_fndecl_57326 acpi_gsi_to_irq fndecl 1 57326 NULL +enable_so_fb_read_fndecl_57329 fb_read fndecl 3 57329 NULL ++enable_so_page_bytes_remain_capsule_info_57335 page_bytes_remain capsule_info 0 57335 NULL ++enable_so_musb_test_mode_write_fndecl_57341 musb_test_mode_write fndecl 3 57341 NULL +enable_so_ext4_expand_extra_isize_ea_fndecl_57344 ext4_expand_extra_isize_ea fndecl 2 57344 NULL +enable_so_root_hpfs_super_block_57345 root hpfs_super_block 0 57345 NULL +enable_so_align_nf_ct_ext_type_57348 align nf_ct_ext_type 0 57348 NULL @@ -204311,8 +204965,7 @@ index 0000000..56d8f55 +enable_so_dqi_giblk_ocfs2_mem_dqinfo_57374 dqi_giblk ocfs2_mem_dqinfo 0 57374 NULL +enable_so_rcount_slip_57376 rcount slip 0 57376 NULL +enable_so_kfd_pasid_alloc_fndecl_57381 kfd_pasid_alloc fndecl 0 57381 NULL -+enable_so_icl_ag_xfs_icreate_log_57387 icl_ag xfs_icreate_log 0 57387 NULL nohasharray -+enable_so_copy_from_user_fixup_fndecl_57387 copy_from_user_fixup fndecl 0 57387 &enable_so_icl_ag_xfs_icreate_log_57387 ++enable_so_icl_ag_xfs_icreate_log_57387 icl_ag xfs_icreate_log 0 57387 NULL +enable_so_rs_total_drbd_device_57388 rs_total drbd_device 0 57388 NULL +enable_so_div64_u64_rem_fndecl_57393 div64_u64_rem fndecl 0 57393 NULL +enable_so_uhid_event_from_user_fndecl_57394 uhid_event_from_user fndecl 2 57394 NULL @@ -204325,6 +204978,7 @@ index 0000000..56d8f55 +enable_so_skb_pull_fndecl_57408 skb_pull fndecl 2 57408 NULL nohasharray +enable_so_cryptlen_chachapoly_req_ctx_57408 cryptlen chachapoly_req_ctx 0 57408 &enable_so_skb_pull_fndecl_57408 +enable_so_copy_page_from_iter_iovec_fndecl_57409 copy_page_from_iter_iovec fndecl 3 57409 NULL ++enable_so__iwl_dbgfs_bt_tx_prio_write_fndecl_57418 _iwl_dbgfs_bt_tx_prio_write fndecl 3 57418 NULL +enable_so_numbered_hid_report_enum_57419 numbered hid_report_enum 0 57419 NULL +enable_so_blkdev_get_block_fndecl_57432 blkdev_get_block fndecl 2 57432 NULL +enable_so_key_size_ecryptfs_crypt_stat_57436 key_size ecryptfs_crypt_stat 0 57436 NULL @@ -204336,7 +204990,8 @@ index 0000000..56d8f55 +enable_so_diva_os_copy_to_user_fndecl_57455 diva_os_copy_to_user fndecl 4 57455 NULL +enable_so_pix_clock_mt9m032_platform_data_57458 pix_clock mt9m032_platform_data 0 57458 NULL +enable_so_cp_table_size_radeon_rlc_57462 cp_table_size radeon_rlc 0 57462 NULL -+enable_so_ib_ipath_lkey_table_size_vardecl_57463 ib_ipath_lkey_table_size vardecl 0 57463 NULL ++enable_so_ib_ipath_lkey_table_size_vardecl_57463 ib_ipath_lkey_table_size vardecl 0 57463 NULL nohasharray ++enable_so_wm_coeff_tlv_put_fndecl_57463 wm_coeff_tlv_put fndecl 3 57463 &enable_so_ib_ipath_lkey_table_size_vardecl_57463 +enable_so_r8712_usbctrl_vendorreq_fndecl_57466 r8712_usbctrl_vendorreq fndecl 6 57466 NULL +enable_so_drbd_bm_capacity_fndecl_57473 drbd_bm_capacity fndecl 0 57473 NULL +enable_so_hfs_add_extent_fndecl_57475 hfs_add_extent fndecl 4-3 57475 NULL @@ -204492,6 +205147,7 @@ index 0000000..56d8f55 +enable_so_xdi_copy_to_user_fndecl_57879 xdi_copy_to_user fndecl 4 57879 NULL +enable_so_max_devices_hpt_iop_request_get_config_57889 max_devices hpt_iop_request_get_config 0 57889 NULL +enable_so_psn_qib_swqe_57901 psn qib_swqe 0 57901 NULL ++enable_so_exynos_srom_alloc_reg_dump_fndecl_57914 exynos_srom_alloc_reg_dump fndecl 2 57914 NULL +enable_so_fat_sectors_fat_bios_param_block_57917 fat_sectors fat_bios_param_block 0 57917 NULL +enable_so_MaxXmitDataSegmentLength_iscsi_conn_ops_57926 MaxXmitDataSegmentLength iscsi_conn_ops 0 57926 NULL +enable_so_radeon_audio_update_acr_fndecl_57929 radeon_audio_update_acr fndecl 2 57929 NULL @@ -204570,7 +205226,8 @@ index 0000000..56d8f55 +enable_so_ll_rw_extents_stats_pp_seq_write_fndecl_58136 ll_rw_extents_stats_pp_seq_write fndecl 3 58136 &enable_so_n_bitrates_ieee80211_supported_band_58136 +enable_so_nvif_object_init_fndecl_58137 nvif_object_init fndecl 5 58137 NULL +enable_so_mtd_read_fndecl_58140 mtd_read fndecl 0 58140 NULL -+enable_so_pci_alloc_child_bus_fndecl_58142 pci_alloc_child_bus fndecl 3 58142 NULL ++enable_so_pci_alloc_child_bus_fndecl_58142 pci_alloc_child_bus fndecl 3 58142 NULL nohasharray ++enable_so_qsfp2_debugfs_read_fndecl_58142 qsfp2_debugfs_read fndecl 3 58142 &enable_so_pci_alloc_child_bus_fndecl_58142 +enable_so_packet_recvmsg_fndecl_58143 packet_recvmsg fndecl 3 58143 NULL +enable_so_hr_block_bytes_o2hb_region_58145 hr_block_bytes o2hb_region 0 58145 NULL +enable_so_security_inode_setattr_fndecl_58146 security_inode_setattr fndecl 0 58146 NULL nohasharray @@ -204588,6 +205245,7 @@ index 0000000..56d8f55 +enable_so_total_num_uuars_mlx5_ib_alloc_ucontext_req_v2_58191 total_num_uuars mlx5_ib_alloc_ucontext_req_v2 0 58191 NULL +enable_so_virtfn_remove_fndecl_58193 virtfn_remove fndecl 2 58193 NULL +enable_so_npages_ttm_page_pool_58200 npages ttm_page_pool 0 58200 NULL ++enable_so_lpfc_idiag_drbacc_write_fndecl_58203 lpfc_idiag_drbacc_write fndecl 3 58203 NULL +enable_so_o2net_init_msg_fndecl_58204 o2net_init_msg fndecl 2 58204 NULL nohasharray +enable_so_SyS_lgetxattr_fndecl_58204 SyS_lgetxattr fndecl 4 58204 &enable_so_o2net_init_msg_fndecl_58204 +enable_so_maxOutstanding_AdapterControlBlock_58208 maxOutstanding AdapterControlBlock 0 58208 NULL @@ -204648,7 +205306,8 @@ index 0000000..56d8f55 +enable_so_window_vardecl_tcp_cdg_c_58396 window vardecl_tcp_cdg.c 0 58396 NULL +enable_so_hci_prepare_cmd_fndecl_58399 hci_prepare_cmd fndecl 3 58399 NULL +enable_so_ip_vs_sync_buff_create_v0_fndecl_58401 ip_vs_sync_buff_create_v0 fndecl 2 58401 NULL -+enable_so_lbs_wrrf_write_fndecl_58409 lbs_wrrf_write fndecl 3 58409 NULL ++enable_so_lbs_wrrf_write_fndecl_58409 lbs_wrrf_write fndecl 3 58409 NULL nohasharray ++enable_so_orangefs_debug_write_fndecl_58409 orangefs_debug_write fndecl 3 58409 &enable_so_lbs_wrrf_write_fndecl_58409 +enable_so_amdtp_stream_init_fndecl_58410 amdtp_stream_init fndecl 7 58410 NULL +enable_so_remove_raw_fndecl_58413 remove_raw fndecl 4 58413 NULL +enable_so_vzalloc_fndecl_58414 vzalloc fndecl 1 58414 NULL nohasharray @@ -204677,6 +205336,7 @@ index 0000000..56d8f55 +enable_so_caif_seqpkt_sendmsg_fndecl_58458 caif_seqpkt_sendmsg fndecl 3 58458 NULL +enable_so_NumProtectionFields_cfi_pri_intelext_58461 NumProtectionFields cfi_pri_intelext 0 58461 NULL +enable_so_btrfs_clone_fndecl_58462 btrfs_clone fndecl 5-3-6 58462 NULL ++enable_so_pgsize_bitmap_iommu_domain_58464 pgsize_bitmap iommu_domain 0 58464 NULL +enable_so_ebcnt_vardecl_torturetest_c_58475 ebcnt vardecl_torturetest.c 0 58475 NULL +enable_so_newpart_fndecl_58478 newpart fndecl 6-4 58478 NULL +enable_so_nbchan_capidrv_contr_58481 nbchan capidrv_contr 0 58481 NULL @@ -204745,6 +205405,7 @@ index 0000000..56d8f55 +enable_so_page10_len_ses_device_58648 page10_len ses_device 0 58648 NULL +enable_so_mwifiex_alloc_dma_align_buf_fndecl_58656 mwifiex_alloc_dma_align_buf fndecl 1 58656 NULL nohasharray +enable_so_highest_bit_swap_info_struct_58656 highest_bit swap_info_struct 0 58656 &enable_so_mwifiex_alloc_dma_align_buf_fndecl_58656 ++enable_so_cfg80211_connect_bss_fndecl_58657 cfg80211_connect_bss fndecl 7-5 58657 NULL +enable_so_mxms_headerlen_fndecl_58666 mxms_headerlen fndecl 0 58666 NULL +enable_so_rx_rx_rts_timeout_read_fndecl_58667 rx_rx_rts_timeout_read fndecl 3 58667 NULL +enable_so_max_key_len_hfs_btree_58671 max_key_len hfs_btree 0 58671 NULL @@ -204799,6 +205460,7 @@ index 0000000..56d8f55 +enable_so_f2fs_replace_block_fndecl_58838 f2fs_replace_block fndecl 4 58838 NULL +enable_so_tx_internal_desc_overflow_read_fndecl_58839 tx_internal_desc_overflow_read fndecl 3 58839 NULL +enable_so_virtqueue_add_fndecl_58841 virtqueue_add fndecl 3 58841 NULL ++enable_so_kvm_debugfs_num_entries_vardecl_kvm_main_c_58842 kvm_debugfs_num_entries vardecl_kvm_main.c 0 58842 NULL +enable_so_nr_scratch_dwc3_58852 nr_scratch dwc3 0 58852 NULL +enable_so_ms_lib_read_extrablock_fndecl_58857 ms_lib_read_extrablock fndecl 4 58857 NULL +enable_so_ucs2_utf8size_fndecl_58859 ucs2_utf8size fndecl 0 58859 NULL @@ -204854,7 +205516,6 @@ index 0000000..56d8f55 +enable_so_trace_max_pages_vardecl_59000 trace_max_pages vardecl 0 59000 NULL +enable_so_private_value_snd_kcontrol_59001 private_value snd_kcontrol 0 59001 NULL nohasharray +enable_so_num_lun_nvm_id_group_59001 num_lun nvm_id_group 0 59001 &enable_so_private_value_snd_kcontrol_59001 -+enable_so_vsnprintf_fndecl_59003 vsnprintf fndecl 0 59003 NULL +enable_so_wa_urb_dequeue_fndecl_59008 wa_urb_dequeue fndecl 3 59008 NULL +enable_so_numextents_efs_inode_info_59009 numextents efs_inode_info 0 59009 NULL +enable_so_amdgpu_vram_location_fndecl_59010 amdgpu_vram_location fndecl 3 59010 NULL @@ -204967,6 +205628,7 @@ index 0000000..56d8f55 +enable_so_pcpu_nr_units_vardecl_percpu_c_59323 pcpu_nr_units vardecl_percpu.c 0 59323 NULL +enable_so_nv_getlen_fndecl_59327 nv_getlen fndecl 0-3 59327 NULL +enable_so_i2c_inb_fndecl_59328 i2c_inb fndecl 0 59328 NULL ++enable_so_pinconf_dbg_config_write_fndecl_59336 pinconf_dbg_config_write fndecl 3 59336 NULL +enable_so_stmmac_set_bfsize_fndecl_59337 stmmac_set_bfsize fndecl 0 59337 NULL +enable_so_raw_sendmsg_fndecl_59341 raw_sendmsg fndecl 3 59341 NULL +enable_so_affs_iget_fndecl_59342 affs_iget fndecl 2 59342 NULL @@ -205033,7 +205695,8 @@ index 0000000..56d8f55 +enable_so_length_acpi_pnp_device_id_59493 length acpi_pnp_device_id 0 59493 NULL +enable_so_vma_to_resize_fndecl_59495 vma_to_resize fndecl 2-3 59495 NULL +enable_so_rx_ringsz_alx_priv_59496 rx_ringsz alx_priv 0 59496 NULL -+enable_so_src_addr_width_dma_slave_config_59497 src_addr_width dma_slave_config 0 59497 NULL ++enable_so_src_addr_width_dma_slave_config_59497 src_addr_width dma_slave_config 0 59497 NULL nohasharray ++enable_so_il_dbgfs_clear_traffic_stats_write_fndecl_59497 il_dbgfs_clear_traffic_stats_write fndecl 3 59497 &enable_so_src_addr_width_dma_slave_config_59497 +enable_so_hd29l2_wr_regs_fndecl_59501 hd29l2_wr_regs fndecl 4 59501 NULL nohasharray +enable_so_pci_frontend_enable_msix_fndecl_59501 pci_frontend_enable_msix fndecl 3 59501 &enable_so_hd29l2_wr_regs_fndecl_59501 +enable_so_lastbuf_for_pio_qib_chip_specific_59509 lastbuf_for_pio qib_chip_specific 0 59509 NULL @@ -205167,6 +205830,7 @@ index 0000000..56d8f55 +enable_so_src_offset_btrfs_ioctl_clone_range_args_59876 src_offset btrfs_ioctl_clone_range_args 0 59876 NULL +enable_so_ide_scan_pio_blacklist_fndecl_59877 ide_scan_pio_blacklist fndecl 0 59877 NULL +enable_so_dx_fb_fillrect_59878 dx fb_fillrect 0 59878 NULL ++enable_so_max_ars_out_nd_cmd_ars_cap_59879 max_ars_out nd_cmd_ars_cap 0 59879 NULL +enable_so___hwahc_dev_set_key_fndecl_59883 __hwahc_dev_set_key fndecl 5 59883 NULL +enable_so_vfs_allocated_count_igb_adapter_59900 vfs_allocated_count igb_adapter 0 59900 NULL +enable_so_mos7720_write_fndecl_59901 mos7720_write fndecl 4 59901 NULL nohasharray @@ -205287,7 +205951,8 @@ index 0000000..56d8f55 +enable_so_length_squashfs_page_actor_60249 length squashfs_page_actor 0 60249 NULL +enable_so_ah_rf_banks_size_ath5k_hw_60250 ah_rf_banks_size ath5k_hw 0 60250 NULL +enable_so_dirty_bytes_extent_io_tree_60254 dirty_bytes extent_io_tree 0 60254 NULL -+enable_so_sector_size_jffs2_sb_info_60255 sector_size jffs2_sb_info 0 60255 NULL ++enable_so_sector_size_jffs2_sb_info_60255 sector_size jffs2_sb_info 0 60255 NULL nohasharray ++enable_so__iwl_dbgfs_tof_range_request_write_fndecl_60255 _iwl_dbgfs_tof_range_request_write fndecl 3 60255 &enable_so_sector_size_jffs2_sb_info_60255 +enable_so_xenvif_change_mtu_fndecl_60258 xenvif_change_mtu fndecl 2 60258 NULL +enable_so_len_mwifiex_assoc_event_60259 len mwifiex_assoc_event 0 60259 NULL +enable_so_size_of_priv_dvb_usb_adapter_properties_60261 size_of_priv dvb_usb_adapter_properties 0 60261 NULL @@ -205311,6 +205976,7 @@ index 0000000..56d8f55 +enable_so_eor_jfs_log_60327 eor jfs_log 0 60327 NULL +enable_so_rq_addrlen_svc_rqst_60328 rq_addrlen svc_rqst 0 60328 NULL +enable_so_upper_vardecl_matroxfb_base_c_60329 upper vardecl_matroxfb_base.c 0 60329 NULL ++enable_so_int_hw_irq_en_fndecl_60331 int_hw_irq_en fndecl 3 60331 NULL +enable_so_bd_add_to_bdi_fndecl_60336 bd_add_to_bdi fndecl 0-2 60336 NULL +enable_so_buf_size__IOCTL_Command_struct_60338 buf_size _IOCTL_Command_struct 0 60338 NULL +enable_so_offset_nvkm_mem_60339 offset nvkm_mem 0 60339 NULL @@ -205341,7 +206007,8 @@ index 0000000..56d8f55 +enable_so_hippi_header_fndecl_60434 hippi_header fndecl 3 60434 NULL +enable_so___i2c_hid_command_fndecl_60442 __i2c_hid_command fndecl 6-8 60442 NULL +enable_so_minimum_cx88_ctrl_60444 minimum cx88_ctrl 0 60444 NULL -+enable_so_digestsize_hash_alg_common_60446 digestsize hash_alg_common 0 60446 NULL ++enable_so_digestsize_hash_alg_common_60446 digestsize hash_alg_common 0 60446 NULL nohasharray ++enable_so_quirk_strict_duplicate_filter_write_fndecl_60446 quirk_strict_duplicate_filter_write fndecl 3 60446 &enable_so_digestsize_hash_alg_common_60446 +enable_so_count_hscx_hw_60448 count hscx_hw 0 60448 NULL +enable_so_lib80211_tkip_decrypt_fndecl_60450 lib80211_tkip_decrypt fndecl 2 60450 NULL +enable_so_maxsgentries_ctlr_info_60455 maxsgentries ctlr_info 0 60455 NULL @@ -205499,7 +206166,8 @@ index 0000000..56d8f55 +enable_so_segments_adv7511_state_edid_60947 segments adv7511_state_edid 0 60947 NULL +enable_so_ipv6_recv_rxpmtu_fndecl_60949 ipv6_recv_rxpmtu fndecl 3 60949 NULL +enable_so_efi_memmap_hi_efi_info_60951 efi_memmap_hi efi_info 0 60951 NULL -+enable_so_audit_make_reply_fndecl_60952 audit_make_reply fndecl 7 60952 NULL ++enable_so_audit_make_reply_fndecl_60952 audit_make_reply fndecl 7 60952 NULL nohasharray ++enable_so_posix_acl_xattr_set_fndecl_60952 posix_acl_xattr_set fndecl 6 60952 &enable_so_audit_make_reply_fndecl_60952 +enable_so_ocfs2_dx_dir_new_cluster_fndecl_60953 ocfs2_dx_dir_new_cluster fndecl 3 60953 NULL +enable_so_s_partition_root_udf_part_map_60954 s_partition_root udf_part_map 0 60954 NULL +enable_so_get_rdac_req_fndecl_60969 get_rdac_req fndecl 3 60969 NULL @@ -205510,6 +206178,7 @@ index 0000000..56d8f55 +enable_so_count_nvif_ioctl_sclass_v0_60980 count nvif_ioctl_sclass_v0 0 60980 &enable_so_isdn_write_fndecl_60980 +enable_so_first_block_migrate_struct_60989 first_block migrate_struct 0 60989 NULL nohasharray +enable_so_weight_dlm_member_60989 weight dlm_member 0 60989 &enable_so_first_block_migrate_struct_60989 ++enable_so_devm_create_dax_dev_fndecl_60990 devm_create_dax_dev fndecl 3 60990 NULL +enable_so_rtl8152_change_mtu_fndecl_60996 rtl8152_change_mtu fndecl 2 60996 NULL +enable_so_endp_out_zd1201_61001 endp_out zd1201 0 61001 NULL +enable_so_ocfs2_xattr_block_find_fndecl_61008 ocfs2_xattr_block_find fndecl 0 61008 NULL @@ -205559,7 +206228,7 @@ index 0000000..56d8f55 +enable_so_sel_commit_bools_write_fndecl_61166 sel_commit_bools_write fndecl 3 61166 NULL +enable_so_ftdi_elan_edset_empty_fndecl_61170 ftdi_elan_edset_empty fndecl 0 61170 NULL nohasharray +enable_so_lldd_execute_task_sas_domain_function_template_61170 lldd_execute_task sas_domain_function_template 0 61170 &enable_so_ftdi_elan_edset_empty_fndecl_61170 -+enable_so_host1x_job_alloc_fndecl_61171 host1x_job_alloc fndecl 4-2-3 61171 NULL ++enable_so_host1x_job_alloc_fndecl_61171 host1x_job_alloc fndecl 4-3-2 61171 NULL +enable_so_in_length_nd_cmd_vendor_hdr_61172 in_length nd_cmd_vendor_hdr 0 61172 NULL +enable_so_phys_memory_base__synclinkmp_info_61174 phys_memory_base _synclinkmp_info 0 61174 NULL +enable_so_pvr2_buffer_set_buffer_fndecl_61176 pvr2_buffer_set_buffer fndecl 3 61176 NULL @@ -205589,13 +206258,13 @@ index 0000000..56d8f55 +enable_so_channels_max_hdmi_spec_61238 channels_max hdmi_spec 0 61238 &enable_so_max_data_pkt_payload_size_nci_rf_intf_activated_ntf_61238 +enable_so_tipc_add_tlv_fndecl_61239 tipc_add_tlv fndecl 4 61239 NULL +enable_so_hidraw_get_report_fndecl_61242 hidraw_get_report fndecl 3 61242 NULL -+enable_so_rcar_dmac_prep_dma_cyclic_fndecl_61249 rcar_dmac_prep_dma_cyclic fndecl 4-3 61249 NULL ++enable_so_rcar_dmac_prep_dma_cyclic_fndecl_61249 rcar_dmac_prep_dma_cyclic fndecl 4-3 61249 NULL nohasharray ++enable_so_i2c2_debugfs_write_fndecl_61249 i2c2_debugfs_write fndecl 3 61249 &enable_so_rcar_dmac_prep_dma_cyclic_fndecl_61249 +enable_so_ext4_reserve_inode_write_fndecl_61253 ext4_reserve_inode_write fndecl 0 61253 NULL nohasharray +enable_so_CombinedStatusBufferLength_DAC960_Controller_61253 CombinedStatusBufferLength DAC960_Controller 0 61253 &enable_so_ext4_reserve_inode_write_fndecl_61253 +enable_so_primary_traffic_class_cm_req_msg_61255 primary_traffic_class cm_req_msg 0 61255 NULL +enable_so_b_blocknr_buffer_head_61260 b_blocknr buffer_head 0 61260 NULL -+enable_so_key_create_or_update_fndecl_61266 key_create_or_update fndecl 5 61266 NULL nohasharray -+enable_so____copy_from_user_fndecl_61266 ___copy_from_user fndecl 0 61266 &enable_so_key_create_or_update_fndecl_61266 ++enable_so_key_create_or_update_fndecl_61266 key_create_or_update fndecl 5 61266 NULL +enable_so_split_boundary_dm_origin_61269 split_boundary dm_origin 0 61269 NULL +enable_so___filemap_fdatawait_range_fndecl_61278 __filemap_fdatawait_range fndecl 0 61278 NULL +enable_so_len_ubifs_zbranch_61279 len ubifs_zbranch 0 61279 NULL @@ -205780,6 +206449,7 @@ index 0000000..56d8f55 +enable_so_num_arfs_vnic_enet_config_61794 num_arfs vnic_enet_config 0 61794 NULL +enable_so_size_snd_cs46xx_region_61796 size snd_cs46xx_region 0 61796 NULL +enable_so_vxfs_bmap_typed_fndecl_61801 vxfs_bmap_typed fndecl 0-2 61801 NULL ++enable_so___qsfp_debugfs_read_fndecl_61803 __qsfp_debugfs_read fndecl 3 61803 NULL +enable_so_imm_count_iscsi_task_61804 imm_count iscsi_task 0 61804 NULL +enable_so_fat_alloc_clusters_fndecl_61813 fat_alloc_clusters fndecl 0 61813 NULL nohasharray +enable_so_end_map_range_61813 end map_range 0 61813 &enable_so_fat_alloc_clusters_fndecl_61813 @@ -205787,6 +206457,7 @@ index 0000000..56d8f55 +enable_so_m_rsumsize_xfs_mount_61815 m_rsumsize xfs_mount 0 61815 NULL +enable_so_ttm_get_pages_fndecl_61821 ttm_get_pages fndecl 2 61821 NULL +enable_so_bnx2x_init_wr_zp_fndecl_61822 bnx2x_init_wr_zp fndecl 3 61822 NULL ++enable_so_tracing_resize_saved_cmdlines_fndecl_61823 tracing_resize_saved_cmdlines fndecl 1 61823 NULL +enable_so_mmc_switch_status_error_fndecl_61826 mmc_switch_status_error fndecl 0 61826 NULL +enable_so_SYSC_set_mempolicy_fndecl_61827 SYSC_set_mempolicy fndecl 3 61827 NULL +enable_so_txq_req_tg3_61834 txq_req tg3 0 61834 NULL nohasharray @@ -205813,6 +206484,7 @@ index 0000000..56d8f55 +enable_so_srp_alloc_iu_fndecl_61904 srp_alloc_iu fndecl 2 61904 NULL nohasharray +enable_so_MaxRecvDataSegmentLength_iscsi_conn_ops_61904 MaxRecvDataSegmentLength iscsi_conn_ops 0 61904 &enable_so_srp_alloc_iu_fndecl_61904 +enable_so_maxframe_size_fc_rport_61909 maxframe_size fc_rport 0 61909 NULL ++enable_so_mlx5_set_ports_check_fndecl_61910 mlx5_set_ports_check fndecl 3 61910 NULL +enable_so_rxsize_channel_data_61912 rxsize channel_data 0 61912 NULL +enable_so_cxd2820r_wr_regs_i2c_fndecl_61922 cxd2820r_wr_regs_i2c fndecl 5 61922 NULL +enable_so_raid_disks_mdp_superblock_1_61927 raid_disks mdp_superblock_1 0 61927 NULL @@ -205881,7 +206553,8 @@ index 0000000..56d8f55 +enable_so_task_ctx_size_pmu_62102 task_ctx_size pmu 0 62102 NULL +enable_so_yoffset_fb_var_screeninfo_62110 yoffset fb_var_screeninfo 0 62110 NULL nohasharray +enable_so_bulk_out_ep_bfusb_data_62110 bulk_out_ep bfusb_data 0 62110 &enable_so_yoffset_fb_var_screeninfo_62110 -+enable_so_tx_queue_status_read_fndecl_62113 tx_queue_status_read fndecl 3 62113 NULL ++enable_so_tx_queue_status_read_fndecl_62113 tx_queue_status_read fndecl 3 62113 NULL nohasharray ++enable_so___i2c_debugfs_write_fndecl_62113 __i2c_debugfs_write fndecl 3 62113 &enable_so_tx_queue_status_read_fndecl_62113 +enable_so_bo_offset_vmw_surface_offset_62116 bo_offset vmw_surface_offset 0 62116 NULL +enable_so_st_nci_hci_dm_vdc_measurement_value_fndecl_62123 st_nci_hci_dm_vdc_measurement_value fndecl 3 62123 NULL nohasharray +enable_so_sched_read_attr_fndecl_62123 sched_read_attr fndecl 3 62123 &enable_so_st_nci_hci_dm_vdc_measurement_value_fndecl_62123 @@ -205911,6 +206584,7 @@ index 0000000..56d8f55 +enable_so_param_count_acpi_evaluate_info_62202 param_count acpi_evaluate_info 0 62202 NULL +enable_so_inum_size_entry_62204 inum size_entry 0 62204 NULL +enable_so_locked_rate_snd_sb_62221 locked_rate snd_sb 0 62221 NULL ++enable_so_generic_file_direct_write_fndecl_62226 generic_file_direct_write fndecl 0 62226 NULL +enable_so_datainterval_snd_usb_endpoint_62227 datainterval snd_usb_endpoint 0 62227 NULL +enable_so_sense_len_request_62229 sense_len request 0 62229 NULL +enable_so_shmem_getpage_gfp_fndecl_62239 shmem_getpage_gfp fndecl 2 62239 NULL @@ -205946,6 +206620,7 @@ index 0000000..56d8f55 +enable_so_reiserfs_update_sd_size_fndecl_62345 reiserfs_update_sd_size fndecl 3 62345 NULL nohasharray +enable_so_lov_emerg_alloc_fndecl_62345 lov_emerg_alloc fndecl 1 62345 &enable_so_reiserfs_update_sd_size_fndecl_62345 +enable_so_switchdev_obj_size_fndecl_62346 switchdev_obj_size fndecl 0 62346 NULL ++enable_so_write_file_spectral_bins_fndecl_62347 write_file_spectral_bins fndecl 3 62347 NULL +enable_so_pcl_status_pcl_62348 pcl_status pcl 0 62348 NULL +enable_so_C_SYSC_select_fndecl_62350 C_SYSC_select fndecl 1 62350 NULL +enable_so_mpi_resize_fndecl_62353 mpi_resize fndecl 2 62353 NULL @@ -206007,7 +206682,8 @@ index 0000000..56d8f55 +enable_so_filemap_write_and_wait_range_fndecl_62492 filemap_write_and_wait_range fndecl 0-2-3 62492 NULL nohasharray +enable_so_svc_sock_setbufsize_fndecl_62492 svc_sock_setbufsize fndecl 2 62492 &enable_so_filemap_write_and_wait_range_fndecl_62492 +enable_so_evtchn_write_fndecl_62493 evtchn_write fndecl 3 62493 NULL -+enable_so_try_charge_fndecl_62496 try_charge fndecl 0 62496 NULL ++enable_so_try_charge_fndecl_62496 try_charge fndecl 0 62496 NULL nohasharray ++enable_so_args_count_arm_smmu_phandle_args_62496 args_count arm_smmu_phandle_args 0 62496 &enable_so_try_charge_fndecl_62496 +enable_so_vmci_transport_set_buffer_size_fndecl_62498 vmci_transport_set_buffer_size fndecl 2 62498 NULL +enable_so_de_type_gfs2_dirent_62502 de_type gfs2_dirent 0 62502 NULL +enable_so_max_enic_rfs_flw_tbl_62505 max enic_rfs_flw_tbl 0 62505 NULL @@ -206184,6 +206860,7 @@ index 0000000..56d8f55 +enable_so_rsi_sdio_host_intf_write_pkt_fndecl_63034 rsi_sdio_host_intf_write_pkt fndecl 3 63034 NULL +enable_so_size_align_rxrpc_connection_63035 size_align rxrpc_connection 0 63035 NULL +enable_so_display_width_vivid_dev_63040 display_width vivid_dev 0 63040 NULL ++enable_so_acpi_aml_write_user_fndecl_63043 acpi_aml_write_user fndecl 2-0 63043 NULL +enable_so_reset_psn_fndecl_63045 reset_psn fndecl 2 63045 NULL +enable_so_ttymajor_vardecl_synclink_cs_c_63046 ttymajor vardecl_synclink_cs.c 0 63046 NULL +enable_so_len_ixgbe_tx_buffer_63047 len ixgbe_tx_buffer 0 63047 NULL @@ -206257,7 +206934,8 @@ index 0000000..56d8f55 +enable_so_npins_intel_pinctrl_soc_data_63239 npins intel_pinctrl_soc_data 0 63239 &enable_so_tx_frag_failed_read_fndecl_63239 +enable_so_mod_len_start_info_63244 mod_len start_info 0 63244 NULL +enable_so_acpi_ut_get_resource_length_fndecl_63256 acpi_ut_get_resource_length fndecl 0 63256 NULL -+enable_so_ep_image_mts_desc_63258 ep_image mts_desc 0 63258 NULL ++enable_so_ep_image_mts_desc_63258 ep_image mts_desc 0 63258 NULL nohasharray ++enable_so_nvme_init_iod_fndecl_63258 nvme_init_iod fndecl 2 63258 &enable_so_ep_image_mts_desc_63258 +enable_so_cachefiles_daemon_write_fndecl_63260 cachefiles_daemon_write fndecl 3 63260 NULL +enable_so_pdu_write_u_fndecl_63261 pdu_write_u fndecl 3 63261 NULL nohasharray +enable_so_read_events_fndecl_63261 read_events fndecl 3 63261 &enable_so_pdu_write_u_fndecl_63261 @@ -206284,7 +206962,8 @@ index 0000000..56d8f55 +enable_so_gf100_vm_create_fndecl_63335 gf100_vm_create fndecl 3-2 63335 NULL +enable_so_bulk_out_endpointAddress_usb_serial_port_63340 bulk_out_endpointAddress usb_serial_port 0 63340 NULL +enable_so_clipcount_out_vivid_dev_63343 clipcount_out vivid_dev 0 63343 NULL -+enable_so_len_n_flags_iwl_rx_packet_63345 len_n_flags iwl_rx_packet 0 63345 NULL ++enable_so_len_n_flags_iwl_rx_packet_63345 len_n_flags iwl_rx_packet 0 63345 NULL nohasharray ++enable_so_pf_cids_qed_cdu_iids_63345 pf_cids qed_cdu_iids 0 63345 &enable_so_len_n_flags_iwl_rx_packet_63345 +enable_so_src_offset_scif_copy_work_63353 src_offset scif_copy_work 0 63353 NULL +enable_so_alloc_thread_groups_fndecl_63354 alloc_thread_groups fndecl 2 63354 NULL +enable_so_x_zoran_overlay_settings_63359 x zoran_overlay_settings 0 63359 NULL @@ -206340,6 +207019,7 @@ index 0000000..56d8f55 +enable_so_width_v4l2_pix_format_63491 width v4l2_pix_format 0 63491 NULL +enable_so_sb_spino_align_xfs_sb_63492 sb_spino_align xfs_sb 0 63492 NULL +enable_so_find_last_bit_fndecl_63495 find_last_bit fndecl 0-2 63495 NULL ++enable_so__gr_table_len_vardecl_x2apic_uv_x_c_63497 _gr_table_len vardecl_x2apic_uv_x.c 0 63497 NULL +enable_so___pcpu_size_to_slot_fndecl_63500 __pcpu_size_to_slot fndecl 0 63500 NULL +enable_so_read_data_offset_smb_version_operations_63502 read_data_offset smb_version_operations 0 63502 NULL +enable_so_ufs_nfs_get_inode_fndecl_63508 ufs_nfs_get_inode fndecl 2 63508 NULL @@ -206365,7 +207045,8 @@ index 0000000..56d8f55 +enable_so_sctp_setsockopt_del_key_fndecl_63571 sctp_setsockopt_del_key fndecl 3 63571 &enable_so_ulong_read_file_fndecl_63571 +enable_so_unmap_granularity_scsi_disk_63574 unmap_granularity scsi_disk 0 63574 NULL +enable_so_xfs_vm_readpages_fndecl_63575 xfs_vm_readpages fndecl 4 63575 NULL -+enable_so_bnep_sock_create_fndecl_63577 bnep_sock_create fndecl 3 63577 NULL ++enable_so_bnep_sock_create_fndecl_63577 bnep_sock_create fndecl 3 63577 NULL nohasharray ++enable_so__min_pnode_vardecl_x2apic_uv_x_c_63577 _min_pnode vardecl_x2apic_uv_x.c 0 63577 &enable_so_bnep_sock_create_fndecl_63577 +enable_so_num_ethernet_queues_bnx2x_63578 num_ethernet_queues bnx2x 0 63578 NULL +enable_so_xfs_vm_write_failed_fndecl_63582 xfs_vm_write_failed fndecl 3 63582 NULL +enable_so__mlx4_set_path_fndecl_63583 _mlx4_set_path fndecl 7 63583 NULL @@ -206433,6 +207114,7 @@ index 0000000..56d8f55 +enable_so_insn_size_kprobe_insn_cache_63777 insn_size kprobe_insn_cache 0 63777 NULL +enable_so___hwahc_op_set_gtk_fndecl_63781 __hwahc_op_set_gtk fndecl 4 63781 NULL +enable_so_items_priv_size_vxge_hw_mempool_63785 items_priv_size vxge_hw_mempool 0 63785 NULL ++enable_so_alloc_trace_kprobe_fndecl_63786 alloc_trace_kprobe fndecl 6 63786 NULL +enable_so_num_slices_myri10ge_priv_63789 num_slices myri10ge_priv 0 63789 NULL +enable_so_order_pmcraid_sglist_63792 order pmcraid_sglist 0 63792 NULL nohasharray +enable_so_orinoco_mic_fndecl_63792 orinoco_mic fndecl 7 63792 &enable_so_order_pmcraid_sglist_63792 nohasharray @@ -206495,15 +207177,13 @@ index 0000000..56d8f55 +enable_so_Xfacs_acpi_table_fadt_63943 Xfacs acpi_table_fadt 0 63943 NULL +enable_so_replen_compound_hdr_63944 replen compound_hdr 0 63944 NULL +enable_so_get_znodes_to_commit_fndecl_63946 get_znodes_to_commit fndecl 0 63946 NULL nohasharray -+enable_so_hdr_dwords_qib_verbs_txreq_63946 hdr_dwords qib_verbs_txreq 0 63946 &enable_so_get_znodes_to_commit_fndecl_63946 nohasharray -+enable_so_descr_size_vio_dring_register_63946 descr_size vio_dring_register 0 63946 &enable_so_hdr_dwords_qib_verbs_txreq_63946 ++enable_so_hdr_dwords_qib_verbs_txreq_63946 hdr_dwords qib_verbs_txreq 0 63946 &enable_so_get_znodes_to_commit_fndecl_63946 +enable_so_map_szl_cyttsp4_sysinfo_data_63948 map_szl cyttsp4_sysinfo_data 0 63948 NULL +enable_so_pcfg_ofs_cyttsp4_sysinfo_ofs_63956 pcfg_ofs cyttsp4_sysinfo_ofs 0 63956 NULL +enable_so_oprofilefs_str_to_user_fndecl_63957 oprofilefs_str_to_user fndecl 3 63957 NULL +enable_so_pvr2_send_request_fndecl_63959 pvr2_send_request fndecl 3-5 63959 NULL nohasharray +enable_so_add_delayed_ref_head_fndecl_63959 add_delayed_ref_head fndecl 5 63959 &enable_so_pvr2_send_request_fndecl_63959 +enable_so_write_file_beacon_fndecl_63962 write_file_beacon fndecl 3 63962 NULL -+enable_so_iommu_table_init_fndecl_63965 iommu_table_init fndecl 2 63965 NULL +enable_so_psb_gtt_alloc_range_fndecl_63966 psb_gtt_alloc_range fndecl 2-5 63966 NULL +enable_so_len_wm_coeff_ctl_63967 len wm_coeff_ctl 0 63967 NULL +enable_so_pla_ocp_read_fndecl_63976 pla_ocp_read fndecl 3 63976 NULL @@ -206551,6 +207231,7 @@ index 0000000..56d8f55 +enable_so_ncells_nvmem_config_64108 ncells nvmem_config 0 64108 NULL nohasharray +enable_so_nvme_trans_unit_serial_page_fndecl_64108 nvme_trans_unit_serial_page fndecl 4 64108 &enable_so_ncells_nvmem_config_64108 +enable_so_lmac_count_bgx_64109 lmac_count bgx 0 64109 NULL ++enable_so_btmrvl_fwdump_write_fndecl_64113 btmrvl_fwdump_write fndecl 3 64113 NULL +enable_so_fc_copy_buffer_to_sglist_fndecl_64115 fc_copy_buffer_to_sglist fndecl 0-2 64115 NULL +enable_so_compat_write_data_parport_operations_64123 compat_write_data parport_operations 0 64123 NULL +enable_so_of_property_count_strings_fndecl_64124 of_property_count_strings fndecl 0 64124 NULL @@ -206628,8 +207309,8 @@ index 0000000..56d8f55 +enable_so_r592_test_fifo_empty_fndecl_64351 r592_test_fifo_empty fndecl 0 64351 NULL +enable_so_opcount_compat_xfs_fsop_attrmulti_handlereq_64355 opcount compat_xfs_fsop_attrmulti_handlereq 0 64355 NULL +enable_so_logfs_truncate_fndecl_64356 logfs_truncate fndecl 2 64356 NULL ++enable_so__iwl_dbgfs_tof_range_abort_write_fndecl_64357 _iwl_dbgfs_tof_range_abort_write fndecl 3 64357 NULL +enable_so_cur_tx_pos_tegra_spi_data_64362 cur_tx_pos tegra_spi_data 0 64362 NULL -+enable_so_copy_to_user_fixup_fndecl_64367 copy_to_user_fixup fndecl 0 64367 NULL +enable_so_isofs_get_blocks_fndecl_64368 isofs_get_blocks fndecl 2 64368 NULL nohasharray +enable_so_hpi_instream_host_buffer_allocate_fndecl_64368 hpi_instream_host_buffer_allocate fndecl 2 64368 &enable_so_isofs_get_blocks_fndecl_64368 +enable_so_oom_score_adj_write_fndecl_64369 oom_score_adj_write fndecl 3 64369 NULL @@ -206686,6 +207367,7 @@ index 0000000..56d8f55 +enable_so_read_status_fndecl_64497 read_status fndecl 0 64497 NULL +enable_so_ext_ramdisk_size_boot_params_64498 ext_ramdisk_size boot_params 0 64498 NULL +enable_so_num_def_tx_descs_octeon_config_64501 num_def_tx_descs octeon_config 0 64501 NULL ++enable_so_ds3000_writeFW_fndecl_64503 ds3000_writeFW fndecl 0 64503 NULL +enable_so_omap_hsmmc_dma_cleanup_fndecl_64504 omap_hsmmc_dma_cleanup fndecl 2 64504 NULL +enable_so_dvb_demux_ioctl_fndecl_64510 dvb_demux_ioctl fndecl 2 64510 NULL +enable_so_fc_plogi_get_maxframe_fndecl_64511 fc_plogi_get_maxframe fndecl 0-2 64511 NULL @@ -206693,6 +207375,7 @@ index 0000000..56d8f55 +enable_so_insize_cros_ec_command_64521 insize cros_ec_command 0 64521 NULL +enable_so_hdr_len_st_proto_s_64523 hdr_len st_proto_s 0 64523 NULL +enable_so_tun_alloc_skb_fndecl_64531 tun_alloc_skb fndecl 4-3-2 64531 NULL ++enable_so_partition_create_desc_fndecl_64535 partition_create_desc fndecl 3 64535 NULL +enable_so_txq_cnt_tg3_64539 txq_cnt tg3 0 64539 NULL +enable_so_cfg80211_process_disassoc_fndecl_64540 cfg80211_process_disassoc fndecl 3 64540 NULL +enable_so_fw_dump_tmplt_size_scsi_qla_host_64541 fw_dump_tmplt_size scsi_qla_host 0 64541 NULL @@ -206834,6 +207517,7 @@ index 0000000..56d8f55 +enable_so_rd_size_uhid_create_req_64916 rd_size uhid_create_req 0 64916 NULL +enable_so_dma_attach_fndecl_64917 dma_attach fndecl 8-7-10-5-6 64917 NULL +enable_so_roccat_read_fndecl_64918 roccat_read fndecl 3 64918 NULL ++enable_so_piothreshold_vardecl_64919 piothreshold vardecl 0 64919 NULL +enable_so_nl80211_send_mlme_event_fndecl_64920 nl80211_send_mlme_event fndecl 4 64920 NULL +enable_so_ath10k_wmi_tlv_op_gen_bcn_tmpl_fndecl_64938 ath10k_wmi_tlv_op_gen_bcn_tmpl fndecl 8 64938 NULL nohasharray +enable_so_sq_max_wqes_per_wr_mlx4_ib_qp_64938 sq_max_wqes_per_wr mlx4_ib_qp 0 64938 &enable_so_ath10k_wmi_tlv_op_gen_bcn_tmpl_fndecl_64938 @@ -206862,6 +207546,7 @@ index 0000000..56d8f55 +enable_so_actual_size_saa7164_user_buffer_65010 actual_size saa7164_user_buffer 0 65010 NULL +enable_so_compat_sys_process_vm_writev_fndecl_65017 compat_sys_process_vm_writev fndecl 5-3 65017 NULL +enable_so_cmd_len_sg_io_hdr_65018 cmd_len sg_io_hdr 0 65018 NULL ++enable_so_print_page_owner_fndecl_65020 print_page_owner fndecl 2 65020 NULL +enable_so_dfs_file_write_fndecl_65023 dfs_file_write fndecl 3 65023 NULL +enable_so_intr_size_usb_pcwd_private_65024 intr_size usb_pcwd_private 0 65024 NULL +enable_so_au8522_rc_read_fndecl_65026 au8522_rc_read fndecl 5 65026 NULL @@ -206917,7 +207602,8 @@ index 0000000..56d8f55 +enable_so_dma_txsize_vardecl_stmmac_main_c_65161 dma_txsize vardecl_stmmac_main.c 0 65161 &enable_so_nexthdrlen_lowpan_nhc_65161 +enable_so_mwifiex_cmd_append_vsie_tlv_fndecl_65164 mwifiex_cmd_append_vsie_tlv fndecl 0 65164 NULL +enable_so_ccp_get_dm_area_fndecl_65170 ccp_get_dm_area fndecl 4 65170 NULL -+enable_so___ext4_block_zero_page_range_fndecl_65173 __ext4_block_zero_page_range fndecl 3 65173 NULL ++enable_so___ext4_block_zero_page_range_fndecl_65173 __ext4_block_zero_page_range fndecl 3 65173 NULL nohasharray ++enable_so__iwl_dbgfs_max_amsdu_len_write_fndecl_65173 _iwl_dbgfs_max_amsdu_len_write fndecl 3 65173 &enable_so___ext4_block_zero_page_range_fndecl_65173 +enable_so_crb_read_netxen_adapter_65178 crb_read netxen_adapter 0 65178 NULL +enable_so_xfs_rtget_summary_fndecl_65179 xfs_rtget_summary fndecl 4-3 65179 NULL +enable_so_usb_gadget_get_string_fndecl_65180 usb_gadget_get_string fndecl 0 65180 NULL @@ -206961,12 +207647,14 @@ index 0000000..56d8f55 +enable_so_update_stat_data_fndecl_65289 update_stat_data fndecl 3 65289 NULL +enable_so_hpfs_translate_name_fndecl_65290 hpfs_translate_name fndecl 3 65290 NULL +enable_so_wear_eb_count_vardecl_nandsim_c_65291 wear_eb_count vardecl_nandsim.c 0 65291 NULL -+enable_so_usb_stor_probe2_fndecl_65298 usb_stor_probe2 fndecl 0 65298 NULL ++enable_so_usb_stor_probe2_fndecl_65298 usb_stor_probe2 fndecl 0 65298 NULL nohasharray ++enable_so_rt2x00debug_write_rfcsr_fndecl_65298 rt2x00debug_write_rfcsr fndecl 3 65298 &enable_so_usb_stor_probe2_fndecl_65298 +enable_so_txfifo_size_lpuart_port_65300 txfifo_size lpuart_port 0 65300 NULL nohasharray +enable_so_ntfs_bmap_fndecl_65300 ntfs_bmap fndecl 2 65300 &enable_so_txfifo_size_lpuart_port_65300 +enable_so_memory_lseek_fndecl_65306 memory_lseek fndecl 2 65306 NULL +enable_so_in_param_mlx4_vhcr_65311 in_param mlx4_vhcr 0 65311 NULL -+enable_so_mt312_read_fndecl_65312 mt312_read fndecl 4 65312 NULL ++enable_so_mt312_read_fndecl_65312 mt312_read fndecl 4 65312 NULL nohasharray ++enable_so_rockchip_clk_init_fndecl_65312 rockchip_clk_init fndecl 3 65312 &enable_so_mt312_read_fndecl_65312 +enable_so_max_pfn_vardecl_65317 max_pfn vardecl 0 65317 NULL +enable_so_ExtPageLength__MPI2_CONFIG_REPLY_65319 ExtPageLength _MPI2_CONFIG_REPLY 0 65319 NULL +enable_so_data_length_iscsi_scsi_req_65321 data_length iscsi_scsi_req 0 65321 NULL nohasharray @@ -207034,7 +207722,8 @@ index 0000000..56d8f55 +enable_so_cts_cbc_encrypt_fndecl_65526 cts_cbc_encrypt fndecl 5 65526 &enable_so__recv_fndecl_65526 +enable_so_write_page_nocow_fndecl_65527 write_page_nocow fndecl 2 65527 NULL +enable_so_size_mei_msg_data_65529 size mei_msg_data 0 65529 NULL -+enable_so_connector_write_fndecl_65534 connector_write fndecl 3 65534 NULL ++enable_so_connector_write_fndecl_65534 connector_write fndecl 3 65534 NULL nohasharray ++enable_so_bcm2835_dma_prep_dma_memcpy_fndecl_65534 bcm2835_dma_prep_dma_memcpy fndecl 4 65534 &enable_so_connector_write_fndecl_65534 diff --git a/scripts/gcc-plugins/size_overflow_plugin/size_overflow_hash_aux.data b/scripts/gcc-plugins/size_overflow_plugin/size_overflow_hash_aux.data new file mode 100644 index 0000000..74e91b2 @@ -211866,10 +212555,10 @@ index fdebd66..a349e33 100755 -e 's@^#include <linux/compiler.h>@@' \ -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \ diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c -index 638b143e..0dd7e2b 100644 +index 1f22a18..1c1b79c 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c -@@ -93,7 +93,7 @@ static inline int is_arm_mapping_symbol(const char *str) +@@ -92,7 +92,7 @@ static inline int is_arm_mapping_symbol(const char *str) } static int check_symbol_range(const char *sym, unsigned long long addr, @@ -211878,7 +212567,7 @@ index 638b143e..0dd7e2b 100644 { size_t i; struct addr_range *ar; -@@ -184,7 +184,7 @@ static int read_symbol(FILE *in, struct sym_entry *s) +@@ -183,7 +183,7 @@ static int read_symbol(FILE *in, struct sym_entry *s) } static int symbol_in_range(struct sym_entry *s, struct addr_range *ranges, @@ -211924,10 +212613,10 @@ index aed678e..1a703de 100644 struct symbol *sym = current_entry->sym; diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c -index 25cf0c2..eb178ce 100644 +index 2432298..faeeb2e 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c -@@ -956,7 +956,7 @@ const char *sym_escape_string_value(const char *in) +@@ -970,7 +970,7 @@ const char *sym_escape_string_value(const char *in) struct sym_match { struct symbol *sym; @@ -211936,7 +212625,7 @@ index 25cf0c2..eb178ce 100644 }; /* Compare matched symbols as thus: -@@ -978,8 +978,8 @@ static int sym_rel_comp(const void *sym1, const void *sym2) +@@ -992,8 +992,8 @@ static int sym_rel_comp(const void *sym1, const void *sym2) * exactly; if this is the case, we can't decide which comes first, * and we fallback to sorting alphabetically. */ @@ -211948,10 +212637,10 @@ index 25cf0c2..eb178ce 100644 return -1; if (!exact1 && exact2) diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh -index 49d61ad..69ee2cf 100755 +index f0f6d9d..9728575 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh -@@ -184,7 +184,7 @@ else +@@ -180,7 +180,7 @@ else fi; # final build of init/ @@ -212208,10 +212897,10 @@ index 71b4a8a..dcb89c5 100644 rm -f $(2) $(objtree)/.scmversion diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index 6c3b038..4bac93f 100755 +index 86e56fe..4d4418a 100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb -@@ -326,6 +326,7 @@ fi +@@ -329,6 +329,7 @@ fi (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" @@ -212220,7 +212909,7 @@ index 6c3b038..4bac93f 100755 mkdir -p "$destdir" (cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) diff --git a/scripts/package/mkspec b/scripts/package/mkspec -index b6de63c..a6d2224 100755 +index 57673ba..c722dc4 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec @@ -120,22 +120,33 @@ echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}" @@ -212266,7 +212955,7 @@ index b6de63c..a6d2224 100755 echo "fi" echo "" echo "%preun" -@@ -144,10 +155,10 @@ echo "new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initr +@@ -149,10 +160,10 @@ echo "/sbin/update-bootloader --remove $KERNELRELEASE" echo "fi" echo "" echo "%files" @@ -212279,7 +212968,7 @@ index b6de63c..a6d2224 100755 echo "/lib/firmware/$KERNELRELEASE" echo "/boot/*" echo "" -@@ -157,9 +168,11 @@ echo "/usr/include" +@@ -162,9 +173,11 @@ echo "/usr/include" echo "" if ! $PREBUILT; then echo "%files devel" @@ -212355,10 +213044,10 @@ index f72f48f..769a657 100755 # Find all available archs find_all_archs() diff --git a/security/Kconfig b/security/Kconfig -index e4523789..ed95c0f 100644 +index 176758c..1222b4a 100644 --- a/security/Kconfig +++ b/security/Kconfig -@@ -4,6 +4,1020 @@ +@@ -4,6 +4,1021 @@ menu "Security options" @@ -213309,6 +213998,7 @@ index e4523789..ed95c0f 100644 + bool "Prevent various integer overflows in function size parameters" + default y if GRKERNSEC_CONFIG_AUTO + depends on GCC_PLUGINS ++ depends on !SPARC64 && !ARM64 + help + By saying Y here the kernel recomputes expressions of function + arguments marked by a size_overflow attribute with double integer @@ -213379,7 +214069,7 @@ index e4523789..ed95c0f 100644 source security/keys/Kconfig config SECURITY_DMESG_RESTRICT -@@ -104,7 +1118,7 @@ config INTEL_TXT +@@ -104,7 +1119,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 @@ -213389,12 +214079,12 @@ index e4523789..ed95c0f 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 913f377..6e392d5 100644 +index d186674..84037da 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) int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry, - struct path *new_dir, struct dentry *new_dentry) + const struct path *new_dir, struct dentry *new_dentry) { - struct path link = { new_dir->mnt, new_dentry }; - struct path target = { new_dir->mnt, old_dentry }; @@ -213417,10 +214107,10 @@ index c28b0f2..3b9fee0 100644 struct dentry *dents[AAFS_NS_SIZEOF]; diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c -index 5ee8201..53d479f 100644 +index 7798e16..1079224 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c -@@ -176,7 +176,7 @@ static int common_perm_dir_dentry(int op, struct path *dir, +@@ -176,7 +176,7 @@ static int common_perm_dir_dentry(int op, const struct path *dir, struct dentry *dentry, u32 mask, struct path_cond *cond) { @@ -213429,16 +214119,7 @@ index 5ee8201..53d479f 100644 return common_perm(op, &path, mask, cond); } -@@ -193,7 +193,7 @@ static int common_perm_dir_dentry(int op, struct path *dir, - static int common_perm_mnt_dentry(int op, struct vfsmount *mnt, - struct dentry *dentry, u32 mask) - { -- struct path path = { mnt, dentry }; -+ struct path path = { .mnt = mnt, .dentry = dentry }; - struct path_cond cond = { d_backing_inode(dentry)->i_uid, - d_backing_inode(dentry)->i_mode - }; -@@ -315,8 +315,8 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry, +@@ -306,8 +306,8 @@ static int apparmor_path_rename(const struct path *old_dir, struct dentry *old_d profile = aa_current_profile(); if (!unconfined(profile)) { @@ -213449,7 +214130,7 @@ index 5ee8201..53d479f 100644 struct path_cond cond = { d_backing_inode(old_dentry)->i_uid, d_backing_inode(old_dentry)->i_mode }; -@@ -679,11 +679,11 @@ static const struct kernel_param_ops param_ops_aalockpolicy = { +@@ -656,11 +656,11 @@ static const struct kernel_param_ops param_ops_aalockpolicy = { .get = param_get_aalockpolicy }; @@ -213465,7 +214146,7 @@ index 5ee8201..53d479f 100644 /* Flag values, also controllable via /sys/module/apparmor/parameters * We define special types as we want to do additional mediation. -@@ -793,7 +793,7 @@ static int param_get_aauint(char *buffer, const struct kernel_param *kp) +@@ -770,7 +770,7 @@ static int param_get_aauint(char *buffer, const struct kernel_param *kp) return param_get_uint(buffer, kp); } @@ -213474,7 +214155,7 @@ index 5ee8201..53d479f 100644 { if (!capable(CAP_MAC_ADMIN)) return -EPERM; -@@ -804,7 +804,7 @@ static int param_get_audit(char *buffer, struct kernel_param *kp) +@@ -781,7 +781,7 @@ static int param_get_audit(char *buffer, struct kernel_param *kp) return sprintf(buffer, "%s", audit_mode_names[aa_g_audit]); } @@ -213483,7 +214164,7 @@ index 5ee8201..53d479f 100644 { int i; if (!capable(CAP_MAC_ADMIN)) -@@ -826,7 +826,7 @@ static int param_set_audit(const char *val, struct kernel_param *kp) +@@ -803,7 +803,7 @@ static int param_set_audit(const char *val, struct kernel_param *kp) return -EINVAL; } @@ -213492,7 +214173,7 @@ index 5ee8201..53d479f 100644 { if (!capable(CAP_MAC_ADMIN)) return -EPERM; -@@ -837,7 +837,7 @@ static int param_get_mode(char *buffer, struct kernel_param *kp) +@@ -814,7 +814,7 @@ static int param_get_mode(char *buffer, struct kernel_param *kp) return sprintf(buffer, "%s", aa_profile_mode_names[aa_g_profile_mode]); } @@ -213524,7 +214205,7 @@ index 705c287..81257f1 100644 /* freed below */ name = kmalloc(strlen(parent->base.hname) + 2 + 7 + 8, GFP_KERNEL); diff --git a/security/commoncap.c b/security/commoncap.c -index 48071ed..b805e0f 100644 +index e7fadde..7efafa2 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -438,6 +438,32 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data @@ -213571,7 +214252,7 @@ index 48071ed..b805e0f 100644 if (bprm->cap_effective) return 1; diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h -index 5d0f611..89bfac7 100644 +index d3a939b..44e8d75 100644 --- a/security/integrity/ima/ima.h +++ b/security/integrity/ima/ima.h @@ -129,8 +129,8 @@ int ima_init_template(void); @@ -213586,7 +214267,7 @@ index 5d0f611..89bfac7 100644 }; extern struct ima_h_table ima_htable; diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c -index 370e42d..00dafb8 100644 +index 5a2218f..a277bd0 100644 --- a/security/integrity/ima/ima_api.c +++ b/security/integrity/ima/ima_api.c @@ -137,7 +137,7 @@ void ima_add_violation(struct file *file, const unsigned char *filename, @@ -213631,10 +214312,10 @@ index 552705d..9920f4fb 100644 hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]); return 0; diff --git a/security/keys/internal.h b/security/keys/internal.h -index 5105c2c..a5010e6 100644 +index a705a7d..898c675 100644 --- a/security/keys/internal.h +++ b/security/keys/internal.h -@@ -90,12 +90,16 @@ extern void key_type_put(struct key_type *ktype); +@@ -91,12 +91,16 @@ extern void key_type_put(struct key_type *ktype); extern int __key_link_begin(struct key *keyring, const struct keyring_index_key *index_key, @@ -213653,7 +214334,7 @@ index 5105c2c..a5010e6 100644 extern key_ref_t find_key_to_update(key_ref_t keyring_ref, const struct keyring_index_key *index_key); -@@ -191,7 +195,7 @@ struct request_key_auth { +@@ -192,7 +196,7 @@ struct request_key_auth { void *callout_info; size_t callout_len; pid_t pid; @@ -213663,10 +214344,10 @@ index 5105c2c..a5010e6 100644 extern struct key_type key_type_request_key_auth; extern struct key *request_key_auth_new(struct key *target, diff --git a/security/keys/key.c b/security/keys/key.c -index af7f682..9c7e4ae6 100644 +index 346fbf2..84458b1 100644 --- a/security/keys/key.c +++ b/security/keys/key.c -@@ -283,7 +283,7 @@ struct key *key_alloc(struct key_type *type, const char *desc, +@@ -287,7 +287,7 @@ struct key *key_alloc(struct key_type *type, const char *desc, atomic_set(&key->usage, 1); init_rwsem(&key->sem); @@ -213675,7 +214356,7 @@ index af7f682..9c7e4ae6 100644 key->index_key.type = type; key->user = user; key->quotalen = quotalen; -@@ -1079,7 +1079,9 @@ int register_key_type(struct key_type *ktype) +@@ -1101,7 +1101,9 @@ int register_key_type(struct key_type *ktype) struct key_type *p; int ret; @@ -213686,7 +214367,7 @@ index af7f682..9c7e4ae6 100644 ret = -EEXIST; down_write(&key_types_sem); -@@ -1091,7 +1093,7 @@ int register_key_type(struct key_type *ktype) +@@ -1113,7 +1115,7 @@ int register_key_type(struct key_type *ktype) } /* store the type */ @@ -213695,7 +214376,7 @@ index af7f682..9c7e4ae6 100644 pr_notice("Key type %s registered\n", ktype->name); ret = 0; -@@ -1113,7 +1115,7 @@ EXPORT_SYMBOL(register_key_type); +@@ -1135,7 +1137,7 @@ EXPORT_SYMBOL(register_key_type); void unregister_key_type(struct key_type *ktype) { down_write(&key_types_sem); @@ -213704,7 +214385,7 @@ index af7f682..9c7e4ae6 100644 downgrade_write(&key_types_sem); key_gc_keytype(ktype); pr_notice("Key type %s unregistered\n", ktype->name); -@@ -1131,10 +1133,10 @@ void __init key_init(void) +@@ -1153,10 +1155,10 @@ void __init key_init(void) 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); /* add the special key types */ @@ -213720,10 +214401,10 @@ index af7f682..9c7e4ae6 100644 /* record the root user tracking */ rb_link_node(&root_key_user.node, diff --git a/security/keys/keyring.c b/security/keys/keyring.c -index f931ccf..ed9cd36 100644 +index c91e4e0..d3193f6 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c -@@ -1071,8 +1071,6 @@ static int keyring_detect_cycle(struct key *A, struct key *B) +@@ -1095,8 +1095,6 @@ static int keyring_detect_cycle(struct key *A, struct key *B) int __key_link_begin(struct key *keyring, const struct keyring_index_key *index_key, struct assoc_array_edit **_edit) @@ -213732,7 +214413,7 @@ index f931ccf..ed9cd36 100644 { struct assoc_array_edit *edit; int ret; -@@ -1172,8 +1170,6 @@ void __key_link(struct key *key, struct assoc_array_edit **_edit) +@@ -1196,8 +1194,6 @@ void __key_link(struct key *key, struct assoc_array_edit **_edit) void __key_link_end(struct key *keyring, const struct keyring_index_key *index_key, struct assoc_array_edit *edit) @@ -213806,10 +214487,10 @@ index 1450f85..a91e0bc 100644 } rtnl_unlock(); diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c -index 2367b10..a0c3c51 100644 +index 7041a58..223f21f 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, +@@ -692,7 +692,7 @@ int tomoyo_path_number_perm(const u8 type, const struct path *path, { struct tomoyo_request_info r; struct tomoyo_obj_info obj = { @@ -213836,7 +214517,7 @@ index 2367b10..a0c3c51 100644 }; int error; struct tomoyo_path_info buf; -@@ -843,7 +843,7 @@ int tomoyo_mkdev_perm(const u8 operation, struct path *path, +@@ -843,7 +843,7 @@ int tomoyo_mkdev_perm(const u8 operation, const struct path *path, { struct tomoyo_request_info r; struct tomoyo_obj_info obj = { @@ -213845,7 +214526,7 @@ index 2367b10..a0c3c51 100644 }; int error = -ENOMEM; struct tomoyo_path_info buf; -@@ -890,8 +890,8 @@ int tomoyo_path2_perm(const u8 operation, struct path *path1, +@@ -890,8 +890,8 @@ int tomoyo_path2_perm(const u8 operation, const struct path *path1, struct tomoyo_path_info buf2; struct tomoyo_request_info r; struct tomoyo_obj_info obj = { @@ -213857,7 +214538,7 @@ index 2367b10..a0c3c51 100644 int idx; diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c -index 390c646..f2f8db3 100644 +index 14b53fb..8829296 100644 --- a/security/tomoyo/mount.c +++ b/security/tomoyo/mount.c @@ -118,6 +118,10 @@ static int tomoyo_mount_acl(struct tomoyo_request_info *r, @@ -213872,20 +214553,20 @@ index 390c646..f2f8db3 100644 if (!fstype) { error = -ENODEV; diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c -index cbf3df4..22b11df 100644 +index 75c9987..b9569d4 100644 --- a/security/tomoyo/tomoyo.c +++ b/security/tomoyo/tomoyo.c -@@ -165,7 +165,7 @@ static int tomoyo_path_truncate(struct path *path) +@@ -165,7 +165,7 @@ static int tomoyo_path_truncate(const struct path *path) */ - static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry) + static int tomoyo_path_unlink(const struct path *parent, struct dentry *dentry) { - struct path path = { parent->mnt, dentry }; + struct path path = { .mnt = parent->mnt, .dentry = dentry }; return tomoyo_path_perm(TOMOYO_TYPE_UNLINK, &path, NULL); } -@@ -181,7 +181,7 @@ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry) - static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry, +@@ -181,7 +181,7 @@ static int tomoyo_path_unlink(const struct path *parent, struct dentry *dentry) + static int tomoyo_path_mkdir(const struct path *parent, struct dentry *dentry, umode_t mode) { - struct path path = { parent->mnt, dentry }; @@ -213893,17 +214574,17 @@ index cbf3df4..22b11df 100644 return tomoyo_path_number_perm(TOMOYO_TYPE_MKDIR, &path, mode & S_IALLUGO); } -@@ -196,7 +196,7 @@ static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry, +@@ -196,7 +196,7 @@ static int tomoyo_path_mkdir(const struct path *parent, struct dentry *dentry, */ - static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry) + static int tomoyo_path_rmdir(const struct path *parent, struct dentry *dentry) { - struct path path = { parent->mnt, dentry }; + struct path path = { .mnt = parent->mnt, .dentry = dentry }; return tomoyo_path_perm(TOMOYO_TYPE_RMDIR, &path, NULL); } -@@ -212,7 +212,7 @@ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry) - static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry, +@@ -212,7 +212,7 @@ static int tomoyo_path_rmdir(const struct path *parent, struct dentry *dentry) + static int tomoyo_path_symlink(const struct path *parent, struct dentry *dentry, const char *old_name) { - struct path path = { parent->mnt, dentry }; @@ -213911,8 +214592,8 @@ index cbf3df4..22b11df 100644 return tomoyo_path_perm(TOMOYO_TYPE_SYMLINK, &path, old_name); } -@@ -229,7 +229,7 @@ static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry, - static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry, +@@ -229,7 +229,7 @@ static int tomoyo_path_symlink(const struct path *parent, struct dentry *dentry, + static int tomoyo_path_mknod(const struct path *parent, struct dentry *dentry, umode_t mode, unsigned int dev) { - struct path path = { parent->mnt, dentry }; @@ -213920,8 +214601,8 @@ index cbf3df4..22b11df 100644 int type = TOMOYO_TYPE_CREATE; const unsigned int perm = mode & S_IALLUGO; -@@ -268,8 +268,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, +@@ -268,8 +268,8 @@ static int tomoyo_path_mknod(const struct path *parent, struct dentry *dentry, + static int tomoyo_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) { - struct path path1 = { new_dir->mnt, old_dentry }; @@ -213931,8 +214612,8 @@ index cbf3df4..22b11df 100644 return tomoyo_path2_perm(TOMOYO_TYPE_LINK, &path1, &path2); } -@@ -288,8 +288,8 @@ static int tomoyo_path_rename(struct path *old_parent, - struct path *new_parent, +@@ -288,8 +288,8 @@ static int tomoyo_path_rename(const struct path *old_parent, + const struct path *new_parent, struct dentry *new_dentry) { - struct path path1 = { old_parent->mnt, old_dentry }; @@ -213942,7 +214623,7 @@ index cbf3df4..22b11df 100644 return tomoyo_path2_perm(TOMOYO_TYPE_RENAME, &path1, &path2); } -@@ -417,7 +417,7 @@ static int tomoyo_sb_mount(const char *dev_name, struct path *path, +@@ -417,7 +417,7 @@ static int tomoyo_sb_mount(const char *dev_name, const struct path *path, */ static int tomoyo_sb_umount(struct vfsmount *mnt, int flags) { @@ -213964,10 +214645,10 @@ index 90c605e..bf3a29a 100644 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 cb6ed10..fb00554 100644 +index 0309f21..0c9bdfb 100644 --- a/security/yama/yama_lsm.c +++ b/security/yama/yama_lsm.c -@@ -357,7 +357,7 @@ static struct security_hook_list yama_hooks[] = { +@@ -425,7 +425,7 @@ static struct security_hook_list yama_hooks[] = { static int yama_dointvec_minmax(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -214109,7 +214790,7 @@ index 1f64ab0..26a7233 100644 if (err < 0) return err; diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c -index 3a9b66c..2b38b21 100644 +index bb12615..b5e4ff9 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -1867,8 +1867,9 @@ EXPORT_SYMBOL(snd_pcm_lib_ioctl); @@ -214124,7 +214805,7 @@ index 3a9b66c..2b38b21 100644 unsigned long flags; diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c -index 9106d8e..e7e2e3ca 100644 +index c61fd50f7..3081340 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3014,11 +3014,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, @@ -214496,10 +215177,10 @@ index bebddc6..f5976be 100644 EXPORT_SYMBOL_GPL(amdtp_am824_midi_trigger); diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c -index ed29026..933d2ae 100644 +index 00060c4..9ba6f37 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c -@@ -344,7 +344,7 @@ static void update_pcm_pointers(struct amdtp_stream *s, +@@ -350,7 +350,7 @@ static void update_pcm_pointers(struct amdtp_stream *s, ptr = s->pcm_buffer_pointer + frames; if (ptr >= pcm->runtime->buffer_size) ptr -= pcm->runtime->buffer_size; @@ -214508,7 +215189,7 @@ index ed29026..933d2ae 100644 s->pcm_period_pointer += frames; if (s->pcm_period_pointer >= pcm->runtime->period_size) { -@@ -811,7 +811,7 @@ EXPORT_SYMBOL(amdtp_stream_pcm_pointer); +@@ -833,7 +833,7 @@ EXPORT_SYMBOL(amdtp_stream_pcm_pointer); void amdtp_stream_update(struct amdtp_stream *s) { /* Precomputing. */ @@ -214518,10 +215199,10 @@ index ed29026..933d2ae 100644 CIP_SID_MASK; } diff --git a/sound/firewire/amdtp-stream.h b/sound/firewire/amdtp-stream.h -index 8775704..8fea566 100644 +index c1bc7fa..40d7cbc 100644 --- a/sound/firewire/amdtp-stream.h +++ b/sound/firewire/amdtp-stream.h -@@ -215,7 +215,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s) +@@ -207,7 +207,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s) static inline void amdtp_stream_pcm_trigger(struct amdtp_stream *s, struct snd_pcm_substream *pcm) { @@ -214531,7 +215212,7 @@ index 8775704..8fea566 100644 static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc) diff --git a/sound/firewire/digi00x/amdtp-dot.c b/sound/firewire/digi00x/amdtp-dot.c -index 0ac92ab..a2081aa 100644 +index b3cffd0..f17b591 100644 --- a/sound/firewire/digi00x/amdtp-dot.c +++ b/sound/firewire/digi00x/amdtp-dot.c @@ -365,7 +365,7 @@ void amdtp_dot_midi_trigger(struct amdtp_stream *s, unsigned int port, @@ -215007,10 +215688,10 @@ index 4c26076..a13f370 100644 chip->pci = pci; chip->irq = -1; diff --git a/sound/soc/codecs/cx20442.c b/sound/soc/codecs/cx20442.c -index d6f4abb..5d59f0c 100644 +index fb3885f..7c89556 100644 --- a/sound/soc/codecs/cx20442.c +++ b/sound/soc/codecs/cx20442.c -@@ -263,6 +263,12 @@ static int v253_hangup(struct tty_struct *tty) +@@ -264,6 +264,12 @@ static int v253_hangup(struct tty_struct *tty) return 0; } @@ -215023,7 +215704,7 @@ index d6f4abb..5d59f0c 100644 /* Line discipline .receive_buf() */ static void v253_receive(struct tty_struct *tty, const unsigned char *cp, char *fp, int count) -@@ -280,7 +286,7 @@ static void v253_receive(struct tty_struct *tty, +@@ -281,7 +287,7 @@ static void v253_receive(struct tty_struct *tty, /* Set up codec driver access to modem controls */ cx20442->control_data = tty; @@ -215104,31 +215785,23 @@ index 35f0469..7c25cd5 100644 if (!pdata) diff --git a/sound/soc/intel/skylake/skl-sst-dsp.h b/sound/soc/intel/skylake/skl-sst-dsp.h -index b6e310d..c562dcd 100644 +index deabe73..fd16886 100644 --- a/sound/soc/intel/skylake/skl-sst-dsp.h +++ b/sound/soc/intel/skylake/skl-sst-dsp.h -@@ -121,14 +121,14 @@ struct skl_dsp_fw_ops { - int (*load_mod)(struct sst_dsp *ctx, u16 mod_id, char *mod_name); +@@ -121,7 +121,7 @@ struct skl_dsp_fw_ops { + int (*load_mod)(struct sst_dsp *ctx, u16 mod_id, u8 *mod_name); int (*unload_mod)(struct sst_dsp *ctx, u16 mod_id); -}; +} __no_const; struct skl_dsp_loader_ops { - int (*alloc_dma_buf)(struct device *dev, - struct snd_dma_buffer *dmab, size_t size); - int (*free_dma_buf)(struct device *dev, - struct snd_dma_buffer *dmab); --}; -+} __no_const; - - struct skl_load_module_info { - u16 mod_id; + int stream_tag; diff --git a/sound/soc/soc-ac97.c b/sound/soc/soc-ac97.c -index 7e0acd8..b4b2acb 100644 +index bc4a55b..ce6b925 100644 --- a/sound/soc/soc-ac97.c +++ b/sound/soc/soc-ac97.c -@@ -416,8 +416,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops, +@@ -414,8 +414,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops, if (ret) return ret; @@ -215373,10 +216046,10 @@ index 0a578fe..b81f62d 100644 }) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index 7cb1224..a08f426 100644 +index 48bd520..88f2088 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c -@@ -90,12 +90,17 @@ LIST_HEAD(vm_list); +@@ -93,12 +93,17 @@ LIST_HEAD(vm_list); static cpumask_var_t cpus_hardware_enabled; static int kvm_usage_count; @@ -215396,7 +216069,7 @@ index 7cb1224..a08f426 100644 struct dentry *kvm_debugfs_dir; EXPORT_SYMBOL_GPL(kvm_debugfs_dir); -@@ -843,7 +848,7 @@ int __kvm_set_memory_region(struct kvm *kvm, +@@ -902,7 +907,7 @@ int __kvm_set_memory_region(struct kvm *kvm, /* We can read the guest memory with __xxx_user() later on. */ if ((id < KVM_USER_MEM_SLOTS) && ((mem->userspace_addr & (PAGE_SIZE - 1)) || @@ -215405,7 +216078,7 @@ index 7cb1224..a08f426 100644 (void __user *)(unsigned long)mem->userspace_addr, mem->memory_size))) goto out; -@@ -1905,9 +1910,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached); +@@ -1964,9 +1969,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached); int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len) { @@ -215425,7 +216098,7 @@ index 7cb1224..a08f426 100644 } EXPORT_SYMBOL_GPL(kvm_clear_guest_page); -@@ -2246,7 +2259,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) +@@ -2317,7 +2330,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) return 0; } @@ -215434,7 +216107,7 @@ index 7cb1224..a08f426 100644 .release = kvm_vcpu_release, .unlocked_ioctl = kvm_vcpu_ioctl, #ifdef CONFIG_KVM_COMPAT -@@ -2960,7 +2973,7 @@ out: +@@ -3035,7 +3048,7 @@ out: } #endif @@ -215443,7 +216116,7 @@ index 7cb1224..a08f426 100644 .release = kvm_vm_release, .unlocked_ioctl = kvm_vm_ioctl, #ifdef CONFIG_KVM_COMPAT -@@ -3031,7 +3044,7 @@ out: +@@ -3113,7 +3126,7 @@ out: return r; } @@ -215452,7 +216125,7 @@ index 7cb1224..a08f426 100644 .unlocked_ioctl = kvm_dev_ioctl, .compat_ioctl = kvm_dev_ioctl, .llseek = noop_llseek, -@@ -3057,7 +3070,7 @@ static void hardware_enable_nolock(void *junk) +@@ -3139,7 +3152,7 @@ static void hardware_enable_nolock(void *junk) if (r) { cpumask_clear_cpu(cpu, cpus_hardware_enabled); @@ -215461,7 +216134,7 @@ index 7cb1224..a08f426 100644 pr_info("kvm: enabling virtualization on CPU%d failed\n", cpu); } } -@@ -3112,10 +3125,10 @@ static int hardware_enable_all(void) +@@ -3194,10 +3207,10 @@ static int hardware_enable_all(void) kvm_usage_count++; if (kvm_usage_count == 1) { @@ -215474,7 +216147,7 @@ index 7cb1224..a08f426 100644 hardware_disable_all_nolock(); r = -EBUSY; } -@@ -3569,7 +3582,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3752,7 +3765,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, @@ -215483,7 +216156,7 @@ index 7cb1224..a08f426 100644 if (!kvm_vcpu_cache) { r = -ENOMEM; goto out_free_3; -@@ -3579,9 +3592,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3762,9 +3775,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, if (r) goto out_free; @@ -215495,7 +216168,7 @@ index 7cb1224..a08f426 100644 r = misc_register(&kvm_dev); if (r) { -@@ -3591,9 +3606,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3774,9 +3789,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, register_syscore_ops(&kvm_syscore_ops); diff --git a/4.6.5/4425_grsec_remove_EI_PAX.patch b/4.7.0/4425_grsec_remove_EI_PAX.patch index c988c9a..ba92792 100644 --- a/4.6.5/4425_grsec_remove_EI_PAX.patch +++ b/4.7.0/4425_grsec_remove_EI_PAX.patch @@ -8,7 +8,7 @@ X-Gentoo-Bug-URL: https://bugs.gentoo.org/445600 diff -Nuar linux-3.7.1-hardened.orig/security/Kconfig linux-3.7.1-hardened/security/Kconfig --- linux-3.7.1-hardened.orig/security/Kconfig 2012-12-26 08:39:29.000000000 -0500 +++ linux-3.7.1-hardened/security/Kconfig 2012-12-26 09:05:44.000000000 -0500 -@@ -280,7 +280,7 @@ +@@ -277,7 +277,7 @@ config PAX_EI_PAX bool 'Use legacy ELF header marking' diff --git a/4.6.5/4427_force_XATTR_PAX_tmpfs.patch b/4.7.0/4427_force_XATTR_PAX_tmpfs.patch index 4ee3f0c..b4714fc 100644 --- a/4.6.5/4427_force_XATTR_PAX_tmpfs.patch +++ b/4.7.0/4427_force_XATTR_PAX_tmpfs.patch @@ -6,15 +6,15 @@ namespace supported on tmpfs so that the PaX markings survive emerge. diff -Naur a/mm/shmem.c b/mm/shmem.c --- a/mm/shmem.c 2016-04-29 19:56:25.306101147 -0400 +++ b/mm/shmem.c 2016-04-29 19:59:44.126104490 -0400 -@@ -2665,7 +2665,6 @@ +@@ -2657,7 +2657,6 @@ return simple_xattr_set(&info->xattrs, name, value, size, flags); } -#ifdef CONFIG_PAX_XATTR_PAX_FLAGS static int shmem_user_xattr_handler_set(const struct xattr_handler *handler, - struct dentry *dentry, const char *name, - const void *value, size_t size, int flags) -@@ -2680,7 +2679,6 @@ + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, +@@ -2673,7 +2672,6 @@ name = xattr_full_name(handler, name); return simple_xattr_set(&info->xattrs, name, value, size, flags); } @@ -22,7 +22,7 @@ diff -Naur a/mm/shmem.c b/mm/shmem.c static const struct xattr_handler shmem_security_xattr_handler = { .prefix = XATTR_SECURITY_PREFIX, -@@ -2694,13 +2692,11 @@ +@@ -2687,13 +2685,11 @@ .set = shmem_xattr_handler_set, }; @@ -36,7 +36,7 @@ diff -Naur a/mm/shmem.c b/mm/shmem.c static const struct xattr_handler *shmem_xattr_handlers[] = { #ifdef CONFIG_TMPFS_POSIX_ACL -@@ -2710,9 +2706,7 @@ +@@ -2703,9 +2699,7 @@ &shmem_security_xattr_handler, &shmem_trusted_xattr_handler, diff --git a/4.6.5/4430_grsec-remove-localversion-grsec.patch b/4.7.0/4430_grsec-remove-localversion-grsec.patch index 31cf878..31cf878 100644 --- a/4.6.5/4430_grsec-remove-localversion-grsec.patch +++ b/4.7.0/4430_grsec-remove-localversion-grsec.patch diff --git a/4.6.5/4435_grsec-mute-warnings.patch b/4.7.0/4435_grsec-mute-warnings.patch index b7564e4..8929222 100644 --- a/4.6.5/4435_grsec-mute-warnings.patch +++ b/4.7.0/4435_grsec-mute-warnings.patch @@ -32,7 +32,7 @@ Acked-by: Christian Heim <phreak@gentoo.org> diff -Naur linux-4.0.2-hardened.orig/Makefile linux-4.0.2-hardened/Makefile --- linux-4.0.2-hardened.orig/Makefile 2015-05-09 21:08:19.243113731 -0400 +++ linux-4.0.2-hardened/Makefile 2015-05-09 21:10:37.775120037 -0400 -@@ -298,7 +298,7 @@ +@@ -302,7 +302,7 @@ HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 diff --git a/4.6.5/4440_grsec-remove-protected-paths.patch b/4.7.0/4440_grsec-remove-protected-paths.patch index 741546d..741546d 100644 --- a/4.6.5/4440_grsec-remove-protected-paths.patch +++ b/4.7.0/4440_grsec-remove-protected-paths.patch diff --git a/4.6.5/4450_grsec-kconfig-default-gids.patch b/4.7.0/4450_grsec-kconfig-default-gids.patch index ccf0abd..e892c8a 100644 --- a/4.6.5/4450_grsec-kconfig-default-gids.patch +++ b/4.7.0/4450_grsec-kconfig-default-gids.patch @@ -73,7 +73,7 @@ diff -Naur a/grsecurity/Kconfig b/grsecurity/Kconfig diff -Nuar a/security/Kconfig b/security/Kconfig --- a/security/Kconfig 2012-10-13 09:51:35.000000000 -0400 +++ b/security/Kconfig 2012-10-13 09:52:59.000000000 -0400 -@@ -208,7 +208,7 @@ +@@ -205,7 +205,7 @@ config GRKERNSEC_PROC_GID int "GID exempted from /proc restrictions" @@ -82,7 +82,7 @@ diff -Nuar a/security/Kconfig b/security/Kconfig help Setting this GID determines which group will be exempted from grsecurity's /proc restrictions, allowing users of the specified -@@ -219,7 +219,7 @@ +@@ -216,7 +216,7 @@ config GRKERNSEC_TPE_UNTRUSTED_GID int "GID for TPE-untrusted users" depends on GRKERNSEC_CONFIG_SERVER && GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT @@ -91,7 +91,7 @@ diff -Nuar a/security/Kconfig b/security/Kconfig help Setting this GID determines which group untrusted users should be added to. These users will be placed under grsecurity's Trusted Path -@@ -231,7 +231,7 @@ +@@ -228,7 +228,7 @@ config GRKERNSEC_TPE_TRUSTED_GID int "GID for TPE-trusted users" depends on GRKERNSEC_CONFIG_SERVER && GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT @@ -100,7 +100,7 @@ diff -Nuar a/security/Kconfig b/security/Kconfig help Setting this GID determines what group TPE restrictions will be *disabled* for. If the sysctl option is enabled, a sysctl option -@@ -240,7 +240,7 @@ +@@ -237,7 +237,7 @@ config GRKERNSEC_SYMLINKOWN_GID int "GID for users with kernel-enforced SymlinksIfOwnerMatch" depends on GRKERNSEC_CONFIG_SERVER diff --git a/4.6.5/4465_selinux-avc_audit-log-curr_ip.patch b/4.7.0/4465_selinux-avc_audit-log-curr_ip.patch index 7248385..7248385 100644 --- a/4.6.5/4465_selinux-avc_audit-log-curr_ip.patch +++ b/4.7.0/4465_selinux-avc_audit-log-curr_ip.patch diff --git a/4.6.5/4470_disable-compat_vdso.patch b/4.7.0/4470_disable-compat_vdso.patch index fd822fe..0f82d7e 100644 --- a/4.6.5/4470_disable-compat_vdso.patch +++ b/4.7.0/4470_disable-compat_vdso.patch @@ -26,7 +26,7 @@ Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138 diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig --- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100 +++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100 -@@ -2077,29 +2077,8 @@ +@@ -2052,29 +2052,8 @@ config COMPAT_VDSO def_bool n diff --git a/4.6.5/4475_emutramp_default_on.patch b/4.7.0/4475_emutramp_default_on.patch index feb8c7b..2db58ab 100644 --- a/4.6.5/4475_emutramp_default_on.patch +++ b/4.7.0/4475_emutramp_default_on.patch @@ -10,7 +10,7 @@ See bug: diff -Naur linux-3.9.2-hardened.orig/security/Kconfig linux-3.9.2-hardened/security/Kconfig --- linux-3.9.2-hardened.orig/security/Kconfig 2013-05-18 08:53:41.000000000 -0400 +++ linux-3.9.2-hardened/security/Kconfig 2013-05-18 09:17:57.000000000 -0400 -@@ -440,7 +440,7 @@ +@@ -437,7 +437,7 @@ config PAX_EMUTRAMP bool "Emulate trampolines" @@ -19,7 +19,7 @@ diff -Naur linux-3.9.2-hardened.orig/security/Kconfig linux-3.9.2-hardened/secur depends on (PAX_PAGEEXEC || PAX_SEGMEXEC) && (PARISC || X86) help There are some programs and libraries that for one reason or -@@ -463,6 +463,12 @@ +@@ -460,6 +460,12 @@ utilities to disable CONFIG_PAX_PAGEEXEC and CONFIG_PAX_SEGMEXEC for the affected files. |