Push to branch refs/heads/wrapfs: 8c49eaa0ab9c3d3444051fff34ca88f1a4062c08 --> abf23cac580bd29656b630b7226ede59d8351401
Documentation/admin-guide/kernel-parameters.txt | 4 + Documentation/arm64/silicon-errata.txt | 44 +- Documentation/devicetree/bindings/rng/omap_rng.txt | 3 +- Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 + .../devicetree/bindings/watchdog/samsung-wdt.txt | 9 +- Documentation/process/stable-kernel-rules.rst | 2 +- Makefile | 18 +- arch/arc/include/asm/atomic.h | 3 +- arch/arc/mm/cache.c | 3 + arch/arm/boot/dts/am57xx-idk-common.dtsi | 14 +- arch/arm/boot/dts/at91-sama5d2_xplained.dts | 2 + arch/arm/boot/dts/at91-sama5d4_xplained.dts | 2 + arch/arm/boot/dts/bcm5301x.dtsi | 4 +- arch/arm/boot/dts/bcm958522er.dts | 1 + arch/arm/boot/dts/bcm958525er.dts | 1 + arch/arm/boot/dts/bcm958525xmc.dts | 1 + arch/arm/boot/dts/bcm958622hr.dts | 1 + arch/arm/boot/dts/bcm958623hr.dts | 1 + arch/arm/boot/dts/bcm958625hr.dts | 1 + arch/arm/boot/dts/bcm988312hr.dts | 1 + arch/arm/boot/dts/imx6sx-udoo-neo.dtsi | 5 - arch/arm/boot/dts/qcom-ipq8064.dtsi | 4 +- arch/arm/boot/dts/sama5d2.dtsi | 2 +- arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts | 2 +- arch/arm/configs/multi_v7_defconfig | 1 + arch/arm/configs/qcom_defconfig | 2 + arch/arm/include/asm/kvm_mmu.h | 9 +- arch/arm/include/asm/uaccess.h | 44 +- arch/arm/kernel/armksyms.c | 4 +- arch/arm/kernel/smccc-call.S | 14 +- arch/arm/kvm/mmu.c | 23 +- arch/arm/kvm/psci.c | 8 +- arch/arm/lib/getuser.S | 2 +- arch/arm/mach-at91/pm.c | 18 +- arch/arm/mach-omap2/omap-headsmp.S | 3 +- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 20 + arch/arm/mach-pxa/ezx.c | 56 +- arch/arm64/Kconfig | 10 + arch/arm64/boot/dts/renesas/r8a7795.dtsi | 1 + arch/arm64/include/asm/kvm_emulate.h | 6 + arch/arm64/include/asm/kvm_mmu.h | 3 +- arch/arm64/include/asm/pgtable.h | 15 +- arch/arm64/kernel/arm64ksyms.c | 4 +- arch/arm64/kernel/asm-offsets.c | 7 +- arch/arm64/kernel/cpufeature.c | 6 +- arch/arm64/kernel/kaslr.c | 10 +- arch/arm64/kernel/smccc-call.S | 23 +- arch/arm64/kernel/topology.c | 2 - arch/arm64/kvm/hyp/tlb.c | 64 ++- arch/arm64/kvm/sys_regs.c | 8 +- arch/arm64/mm/dma-mapping.c | 9 +- arch/arm64/mm/fault.c | 42 +- arch/arm64/mm/mmu.c | 34 +- arch/arm64/net/bpf_jit_comp.c | 8 +- arch/c6x/kernel/ptrace.c | 41 -- arch/h8300/kernel/ptrace.c | 8 +- arch/metag/include/asm/uaccess.h | 15 +- arch/metag/kernel/ptrace.c | 19 +- arch/metag/lib/usercopy.c | 312 ++++------- arch/mips/Kconfig | 3 +- arch/mips/bcm47xx/buttons.c | 10 +- arch/mips/cavium-octeon/octeon-memcpy.S | 20 +- arch/mips/configs/ip22_defconfig | 4 +- arch/mips/configs/ip27_defconfig | 3 +- arch/mips/configs/lemote2f_defconfig | 2 +- arch/mips/configs/malta_defconfig | 4 +- arch/mips/configs/malta_kvm_defconfig | 4 +- arch/mips/configs/malta_kvm_guest_defconfig | 4 +- arch/mips/configs/maltaup_xpa_defconfig | 4 +- arch/mips/configs/nlm_xlp_defconfig | 2 +- arch/mips/configs/nlm_xlr_defconfig | 2 +- arch/mips/include/asm/checksum.h | 2 + arch/mips/include/asm/irq.h | 12 + arch/mips/include/asm/mach-ip27/spaces.h | 6 +- arch/mips/include/asm/spinlock.h | 8 +- arch/mips/include/asm/stackframe.h | 7 + arch/mips/kernel/asm-offsets.c | 1 + arch/mips/kernel/cevt-r4k.c | 2 +- arch/mips/kernel/cpu-probe.c | 2 +- arch/mips/kernel/elf.c | 2 +- arch/mips/kernel/genex.S | 85 ++- arch/mips/kernel/irq.c | 11 + arch/mips/kernel/kgdb.c | 48 +- arch/mips/kernel/mips-r2-to-r6-emul.c | 12 +- arch/mips/kernel/process.c | 166 ++++-- arch/mips/kernel/ptrace.c | 3 +- arch/mips/kernel/traps.c | 17 +- arch/mips/lantiq/xway/sysctrl.c | 10 +- arch/mips/mm/c-r4k.c | 2 + arch/mips/mm/sc-ip22.c | 54 +- arch/mips/mm/tlbex.c | 25 +- arch/mips/pic32/pic32mzda/Makefile | 5 +- arch/mips/ralink/prom.c | 9 +- arch/mips/ralink/rt288x.c | 10 - arch/mips/ralink/rt305x.c | 11 - arch/mips/ralink/rt3883.c | 14 +- arch/mips/ralink/timer.c | 14 - arch/mips/sgi-ip22/Platform | 2 +- arch/nios2/kernel/prom.c | 7 + arch/nios2/kernel/setup.c | 3 + arch/parisc/include/asm/cacheflush.h | 23 +- arch/parisc/include/asm/uaccess.h | 139 +++-- arch/parisc/kernel/cache.c | 22 + arch/parisc/kernel/module.c | 8 + arch/parisc/kernel/parisc_ksyms.c | 10 - arch/parisc/kernel/process.c | 4 + arch/parisc/lib/Makefile | 2 +- arch/parisc/lib/fixup.S | 98 ---- arch/parisc/lib/lusercopy.S | 319 +++++++++++ arch/parisc/lib/memcpy.c | 461 +-------------- arch/parisc/mm/fault.c | 17 + arch/powerpc/Kconfig | 4 +- arch/powerpc/boot/zImage.lds.S | 1 + arch/powerpc/crypto/crc32c-vpmsum_glue.c | 5 +- arch/powerpc/include/asm/mmu.h | 1 + arch/powerpc/include/asm/nohash/pgtable.h | 2 +- arch/powerpc/include/asm/reg.h | 2 +- arch/powerpc/kernel/Makefile | 2 +- arch/powerpc/kernel/align.c | 27 +- arch/powerpc/kernel/cpu_setup_power.S | 4 + arch/powerpc/kernel/entry_64.S | 6 +- arch/powerpc/kernel/hw_breakpoint.c | 4 +- arch/powerpc/kernel/idle_book3s.S | 20 +- arch/powerpc/kernel/misc_64.S | 4 +- arch/powerpc/kernel/nvram_64.c | 1 + arch/powerpc/kernel/setup_64.c | 9 + arch/powerpc/kvm/book3s_hv.c | 3 +- arch/powerpc/lib/sstep.c | 20 - arch/powerpc/mm/hash_native_64.c | 7 +- arch/powerpc/mm/mmu_context_iommu.c | 2 +- arch/powerpc/perf/core-book3s.c | 2 + arch/powerpc/perf/isa207-common.c | 101 +++- arch/powerpc/perf/isa207-common.h | 1 + arch/powerpc/perf/power9-pmu.c | 8 +- arch/powerpc/platforms/powernv/opal-wrappers.S | 2 +- arch/powerpc/sysdev/xics/icp-opal.c | 10 + arch/powerpc/sysdev/xics/xics-common.c | 17 +- arch/s390/boot/compressed/misc.c | 35 +- arch/s390/include/asm/pgtable.h | 2 + arch/s390/include/asm/processor.h | 3 +- arch/s390/include/asm/uaccess.h | 2 +- arch/s390/kernel/crash_dump.c | 6 +- arch/s390/kernel/setup.c | 8 +- arch/s390/kernel/topology.c | 2 +- arch/s390/kvm/kvm-s390.c | 3 + arch/s390/mm/pgtable.c | 19 +- arch/sparc/include/asm/pgtable_64.h | 15 +- arch/sparc/kernel/head_64.S | 6 + arch/sparc/kernel/ptrace_64.c | 2 +- arch/sparc/lib/GENbzero.S | 2 +- arch/sparc/lib/NGbzero.S | 2 +- arch/sparc/mm/init_64.c | 2 +- arch/x86/boot/boot.h | 2 +- arch/x86/entry/vdso/vdso32-setup.c | 11 +- arch/x86/events/core.c | 4 +- arch/x86/events/intel/lbr.c | 3 + arch/x86/events/intel/pt.c | 6 + arch/x86/events/intel/rapl.c | 2 +- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/kvm_page_track.h | 1 + arch/x86/include/asm/pkeys.h | 15 +- arch/x86/include/asm/pmem.h | 42 +- arch/x86/include/asm/tlbflush.h | 2 +- arch/x86/include/asm/xen/events.h | 11 + arch/x86/kernel/apic/io_apic.c | 2 + arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 2 +- arch/x86/kernel/cpu/intel_rdt_schemata.c | 2 +- arch/x86/kernel/cpu/mcheck/mce-genpool.c | 2 +- arch/x86/kernel/cpu/mcheck/mce-internal.h | 2 +- arch/x86/kernel/cpu/mcheck/mce.c | 24 +- arch/x86/kernel/cpu/mcheck/mce_amd.c | 2 +- arch/x86/kernel/ftrace.c | 12 + arch/x86/kernel/head64.c | 1 + arch/x86/kernel/kprobes/common.h | 2 +- arch/x86/kernel/kprobes/core.c | 6 +- arch/x86/kernel/kprobes/opt.c | 2 +- arch/x86/kernel/pci-calgary_64.c | 2 +- arch/x86/kernel/reboot.c | 16 + arch/x86/kernel/signal_compat.c | 4 +- arch/x86/kernel/tsc.c | 2 + arch/x86/kernel/unwind_frame.c | 36 +- arch/x86/kernel/vm86_32.c | 5 +- arch/x86/kvm/cpuid.c | 6 - arch/x86/kvm/page_track.c | 8 + arch/x86/kvm/vmx.c | 41 +- arch/x86/kvm/x86.c | 13 + arch/x86/lib/memcpy_64.S | 2 +- arch/x86/mm/gup.c | 8 +- arch/x86/mm/init.c | 41 +- arch/x86/mm/kasan_init_64.c | 1 + arch/x86/mm/kaslr.c | 4 +- arch/x86/pci/xen.c | 25 +- arch/x86/platform/efi/quirks.c | 4 + arch/x86/platform/goldfish/goldfish.c | 14 +- .../intel-mid/device_libs/platform_mrfld_wdt.c | 2 +- arch/x86/um/ptrace_64.c | 2 +- arch/x86/xen/apic.c | 2 +- arch/x86/xen/enlighten.c | 21 +- arch/x86/xen/mmu.c | 7 +- arch/x86/xen/smp.c | 2 + arch/x86/xen/time.c | 5 + arch/xtensa/include/asm/page.h | 13 + arch/xtensa/kernel/setup.c | 4 +- block/bio.c | 12 +- block/blk-core.c | 39 +- block/blk-integrity.c | 22 +- block/blk-mq.c | 11 +- block/partition-generic.c | 1 - crypto/Kconfig | 1 + crypto/Makefile | 2 + crypto/ahash.c | 79 ++- crypto/algif_aead.c | 169 +++++- crypto/algif_hash.c | 2 +- crypto/lrw.c | 23 +- crypto/testmgr.h | 2 +- crypto/xts.c | 37 +- drivers/Makefile | 1 + drivers/acpi/Makefile | 1 - drivers/acpi/acpi_platform.c | 8 +- drivers/acpi/button.c | 2 +- drivers/acpi/ec.c | 62 +- drivers/acpi/glue.c | 12 +- drivers/acpi/internal.h | 4 +- drivers/acpi/nfit/core.c | 20 +- drivers/acpi/power.c | 1 + drivers/acpi/scan.c | 19 +- drivers/acpi/sleep.c | 19 + drivers/ata/ahci_da850.c | 33 +- drivers/auxdisplay/img-ascii-lcd.c | 1 + drivers/bcma/main.c | 4 + drivers/block/loop.c | 32 +- drivers/block/zram/zram_drv.c | 6 +- drivers/bluetooth/ath3k.c | 2 + drivers/bluetooth/btusb.c | 1 + drivers/bluetooth/hci_bcm.c | 5 +- drivers/bluetooth/hci_intel.c | 13 +- drivers/char/Kconfig | 5 +- drivers/char/hw_random/amd-rng.c | 42 +- drivers/char/hw_random/geode-rng.c | 50 +- drivers/char/hw_random/omap-rng.c | 16 +- drivers/char/ipmi/ipmi_ssif.c | 4 +- drivers/char/mem.c | 82 ++- drivers/char/ppdev.c | 11 +- drivers/char/random.c | 84 +-- drivers/char/tpm/tpm-chip.c | 8 +- drivers/char/tpm/tpm-interface.c | 53 +- drivers/char/tpm/tpm.h | 5 + drivers/char/tpm/tpm2-cmd.c | 2 +- drivers/char/tpm/tpm_tis.c | 4 +- drivers/char/tpm/tpm_tis_core.c | 6 +- drivers/char/tpm/tpm_tis_core.h | 2 +- drivers/char/virtio_console.c | 12 +- drivers/clk/Makefile | 2 + drivers/clk/rockchip/clk-rk3036.c | 2 +- drivers/clk/sunxi-ng/ccu-sun6i-a31.c | 2 +- drivers/clk/sunxi-ng/ccu_mp.c | 8 + drivers/cpufreq/cpufreq.c | 29 +- drivers/cpuidle/sysfs.c | 12 + drivers/crypto/caam/caamhash.c | 25 +- drivers/crypto/caam/caampkc.c | 2 +- drivers/crypto/caam/ctrl.c | 3 +- drivers/crypto/ccp/ccp-dev-v3.c | 120 ++-- drivers/crypto/ccp/ccp-dev-v5.c | 115 ++-- drivers/crypto/ccp/ccp-dev.c | 5 +- drivers/crypto/ccp/ccp-dev.h | 13 +- drivers/crypto/ccp/ccp-dmaengine.c | 42 ++ drivers/crypto/ccp/ccp-pci.c | 2 + drivers/crypto/s5p-sss.c | 130 +++-- drivers/crypto/vmx/aes_cbc.c | 47 +- drivers/crypto/vmx/aes_xts.c | 32 +- drivers/dax/Kconfig | 1 + drivers/dax/dax.c | 83 +-- drivers/devfreq/devfreq.c | 34 +- drivers/devfreq/governor.h | 2 + drivers/devfreq/governor_passive.c | 6 + drivers/dma-buf/dma-buf.c | 3 + drivers/dma/ipu/ipu_irq.c | 2 +- drivers/firmware/efi/arm-runtime.c | 1 + drivers/firmware/efi/libstub/gop.c | 6 +- drivers/firmware/qcom_scm-64.c | 13 +- drivers/gpio/gpiolib-acpi.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 3 +- drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 + drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 330 +++++------ drivers/gpu/drm/amd/amdgpu/si_dpm.c | 10 + drivers/gpu/drm/armada/Makefile | 2 + drivers/gpu/drm/ast/ast_drv.h | 6 +- drivers/gpu/drm/ast/ast_main.c | 264 +++++---- drivers/gpu/drm/ast/ast_post.c | 55 +- drivers/gpu/drm/drm_atomic_helper.c | 13 +- drivers/gpu/drm/drm_edid.c | 9 +- drivers/gpu/drm/drm_fb_helper.c | 9 +- drivers/gpu/drm/drm_fops.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 7 +- drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c | 2 +- drivers/gpu/drm/i915/gvt/execlist.c | 3 +- drivers/gpu/drm/i915/gvt/handlers.c | 2 +- drivers/gpu/drm/i915/gvt/kvmgt.c | 6 +- drivers/gpu/drm/i915/gvt/sched_policy.c | 4 +- drivers/gpu/drm/i915/i915_drv.c | 9 +- drivers/gpu/drm/i915/i915_drv.h | 4 +- drivers/gpu/drm/i915/i915_gem.c | 25 +- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 52 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 21 +- drivers/gpu/drm/i915/i915_gem_internal.c | 37 +- drivers/gpu/drm/i915/i915_gem_request.c | 7 +- drivers/gpu/drm/i915/i915_gem_shrinker.c | 2 +- drivers/gpu/drm/i915/i915_gem_stolen.c | 5 + drivers/gpu/drm/i915/i915_irq.c | 152 ++--- drivers/gpu/drm/i915/i915_pci.c | 1 + drivers/gpu/drm/i915/intel_display.c | 33 +- drivers/gpu/drm/i915/intel_dp.c | 10 +- drivers/gpu/drm/i915/intel_drv.h | 2 + drivers/gpu/drm/i915/intel_fbdev.c | 10 +- drivers/gpu/drm/i915/intel_hdmi.c | 24 +- drivers/gpu/drm/i915/intel_hotplug.c | 14 +- drivers/gpu/drm/i915/intel_lrc.c | 3 +- drivers/gpu/drm/i915/intel_lspcon.c | 5 +- drivers/gpu/drm/i915/intel_opregion.c | 13 +- drivers/gpu/drm/i915/intel_pm.c | 23 +- drivers/gpu/drm/i915/intel_uncore.c | 13 +- drivers/gpu/drm/imx/imx-tve.c | 7 +- drivers/gpu/drm/mga/mga_dma.c | 20 +- drivers/gpu/drm/mga/mga_drv.c | 37 -- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 + drivers/gpu/drm/mxsfb/mxsfb_drv.c | 4 +- drivers/gpu/drm/nouveau/nv50_display.c | 10 +- drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 32 +- drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.c | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv44.c | 2 +- drivers/gpu/drm/radeon/radeon_bios.c | 66 ++- drivers/gpu/drm/radeon/radeon_ttm.c | 4 +- drivers/gpu/drm/sti/sti_gdp.c | 12 +- drivers/gpu/drm/ttm/ttm_bo.c | 4 +- drivers/gpu/drm/ttm/ttm_bo_vm.c | 12 + drivers/gpu/drm/ttm/ttm_object.c | 10 +- drivers/gpu/drm/vc4/vc4_crtc.c | 13 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 11 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 79 ++- drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 31 +- drivers/hid/hid-sony.c | 2 + drivers/hid/wacom_sys.c | 16 +- drivers/hid/wacom_wac.c | 5 +- drivers/hv/channel.c | 38 +- drivers/hv/channel_mgmt.c | 36 +- drivers/hv/connection.c | 17 +- drivers/hv/hv.c | 15 +- drivers/hv/hv_fcopy.c | 4 + drivers/hv/hv_kvp.c | 4 + drivers/hv/hv_snapshot.c | 4 + drivers/hv/hyperv_vmbus.h | 2 +- drivers/hv/ring_buffer.c | 7 + drivers/hwmon/it87.c | 65 ++- drivers/hwtracing/coresight/coresight-etm-perf.c | 1 + drivers/hwtracing/coresight/coresight-stm.c | 2 +- drivers/hwtracing/intel_th/core.c | 4 +- drivers/i2c/busses/i2c-bcm2835.c | 4 +- drivers/i2c/i2c-mux.c | 2 + drivers/iio/adc/ti_am335x_adc.c | 13 +- .../iio/common/hid-sensors/hid-sensor-trigger.c | 6 +- drivers/iio/counter/104-quad-8.c | 2 +- drivers/iio/gyro/bmg160_core.c | 12 + drivers/iio/industrialio-core.c | 7 +- drivers/iio/magnetometer/ak8974.c | 4 +- drivers/iio/pressure/mpl115.c | 1 + drivers/iio/pressure/mpl3115.c | 4 +- drivers/iio/pressure/st_pressure_core.c | 1 + drivers/infiniband/core/cma.c | 3 + drivers/infiniband/core/sysfs.c | 2 +- drivers/infiniband/core/verbs.c | 8 +- drivers/infiniband/hw/hfi1/ruc.c | 26 +- drivers/infiniband/hw/hfi1/verbs.c | 4 +- drivers/infiniband/hw/hfi1/verbs.h | 6 +- drivers/infiniband/hw/mlx4/main.c | 1 + drivers/infiniband/hw/mlx4/mcg.c | 3 +- drivers/infiniband/hw/mlx5/main.c | 14 +- drivers/infiniband/hw/mlx5/srq.c | 11 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 12 +- drivers/infiniband/ulp/ipoib/ipoib_fs.c | 3 + drivers/infiniband/ulp/ipoib/ipoib_main.c | 80 ++- drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 3 - drivers/infiniband/ulp/srp/ib_srp.c | 61 +- drivers/infiniband/ulp/srp/ib_srp.h | 1 + drivers/input/joystick/iforce/iforce-usb.c | 3 + drivers/input/joystick/xpad.c | 2 + drivers/input/misc/cm109.c | 4 + drivers/input/misc/ims-pcu.c | 4 + drivers/input/misc/yealink.c | 4 + drivers/input/mouse/alps.c | 72 ++- drivers/input/mouse/alps.h | 11 + drivers/input/mouse/elan_i2c_core.c | 20 +- drivers/input/mouse/elantech.c | 8 + drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/input/tablet/hanwang.c | 3 + drivers/input/tablet/kbtab.c | 3 + drivers/input/touchscreen/sur40.c | 3 + drivers/iommu/exynos-iommu.c | 8 +- drivers/iommu/intel-iommu.c | 5 +- drivers/irqchip/irq-gic-v3-its.c | 16 + drivers/irqchip/irq-imx-gpcv2.c | 2 + drivers/isdn/gigaset/bas-gigaset.c | 3 + drivers/leds/leds-ktd2692.c | 8 +- drivers/md/dm-cache-target.c | 6 +- drivers/md/dm-crypt.c | 8 +- drivers/md/dm-era-target.c | 8 +- drivers/md/dm-ioctl.c | 2 +- drivers/md/dm-raid.c | 14 +- drivers/md/dm-round-robin.c | 67 +-- drivers/md/dm-rq.c | 6 +- drivers/md/dm-stats.c | 1 + drivers/md/dm-thin.c | 1 + drivers/md/dm-verity-fec.c | 18 +- drivers/md/dm-verity-fec.h | 4 + drivers/md/dm.c | 58 ++ drivers/md/linear.c | 39 +- drivers/md/linear.h | 1 + drivers/md/raid1.c | 2 + drivers/md/raid10.c | 21 +- drivers/md/raid5.c | 3 +- drivers/media/dvb-frontends/cxd2820r_core.c | 2 +- drivers/media/media-device.c | 2 +- drivers/media/pci/dm1105/Kconfig | 2 +- drivers/media/platform/am437x/am437x-vpfe.c | 2 +- drivers/media/rc/lirc_dev.c | 4 +- drivers/media/rc/rc-main.c | 7 +- drivers/media/rc/serial_ir.c | 115 ++-- drivers/media/usb/dvb-usb-v2/dvb_usb_core.c | 9 +- drivers/media/usb/dvb-usb/cxusb.c | 15 +- drivers/media/usb/dvb-usb/dvb-usb-firmware.c | 33 +- drivers/media/usb/dvb-usb/dw2102.c | 244 ++++---- drivers/media/usb/uvc/uvc_queue.c | 2 +- drivers/memory/atmel-ebi.c | 27 +- drivers/misc/cxl/cxl.h | 3 + drivers/misc/cxl/main.c | 2 +- drivers/misc/cxl/pci.c | 9 + drivers/misc/cxl/vphb.c | 61 +- drivers/misc/mei/bus-fixup.c | 14 +- drivers/misc/mei/init.c | 8 +- drivers/misc/mei/main.c | 48 +- drivers/mmc/core/block.c | 1 + drivers/mmc/core/mmc.c | 2 +- drivers/mmc/host/dw_mmc.c | 23 +- drivers/mmc/host/sdhci-acpi.c | 5 +- drivers/mmc/host/sdhci-esdhc-imx.c | 1 + drivers/mmc/host/sdhci-of-arasan.c | 14 +- drivers/mmc/host/sdhci-of-at91.c | 30 +- drivers/mmc/host/sdhci-of-esdhc.c | 18 +- drivers/mmc/host/sdhci-pci-core.c | 4 + drivers/mmc/host/sdhci.c | 10 +- drivers/mmc/host/ushc.c | 3 + drivers/mtd/maps/pmcmsp-flash.c | 4 +- drivers/mtd/nand/Kconfig | 1 + drivers/mtd/nand/fsl_ifc_nand.c | 8 +- drivers/mtd/ubi/upd.c | 8 +- drivers/net/bonding/bond_main.c | 1 + drivers/net/can/ifi_canfd/ifi_canfd.c | 2 +- drivers/net/can/usb/gs_usb.c | 57 +- drivers/net/can/usb/usb_8dev.c | 9 +- drivers/net/ethernet/amd/xgbe/xgbe-common.h | 30 +- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 22 +- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 116 ++-- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 24 + drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 +- drivers/net/ethernet/broadcom/genet/bcmmii.c | 15 - drivers/net/ethernet/cadence/macb.c | 18 +- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +- drivers/net/ethernet/marvell/mvpp2.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 4 + drivers/net/ethernet/mellanox/mlx5/core/en.h | 7 +- .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 1 + .../ethernet/mellanox/mlx5/core/en_fs_ethtool.c | 1 + drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 48 +- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 - drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 18 +- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 75 ++- drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 5 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 6 + .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 58 +- drivers/net/ethernet/mellanox/mlx5/core/lag.c | 5 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 +- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 30 +- drivers/net/ethernet/renesas/sh_eth.c | 122 ++-- drivers/net/ethernet/ti/Kconfig | 2 +- drivers/net/geneve.c | 4 +- drivers/net/macsec.c | 27 +- drivers/net/macvlan.c | 11 +- drivers/net/phy/dp83640.c | 2 - drivers/net/phy/mdio-mux-bcm-iproc.c | 5 +- drivers/net/phy/phy.c | 42 +- drivers/net/team/team.c | 1 + drivers/net/tun.c | 18 +- drivers/net/usb/qmi_wwan.c | 3 + drivers/net/vrf.c | 9 +- drivers/net/vxlan.c | 28 +- drivers/net/wireless/ath/ath10k/core.c | 14 +- drivers/net/wireless/ath/ath10k/hw.c | 2 +- drivers/net/wireless/ath/ath5k/mac80211-ops.c | 3 +- drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 4 +- drivers/net/wireless/ath/ath9k/ath9k.h | 1 + drivers/net/wireless/ath/ath9k/init.c | 1 + drivers/net/wireless/ath/ath9k/mac.c | 44 +- drivers/net/wireless/ath/ath9k/mac.h | 1 + drivers/net/wireless/ath/ath9k/main.c | 27 +- .../wireless/broadcom/brcm80211/brcmfmac/core.c | 23 +- .../net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 8 +- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- drivers/net/wireless/intel/iwlwifi/iwl-6000.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 13 +- drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c | 2 + drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c | 15 +- drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 23 +- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 3 +- drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 33 +- drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 80 +-- drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 2 +- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 16 +- drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 23 +- drivers/net/wireless/marvell/mwifiex/11n_aggr.c | 19 +- drivers/net/wireless/marvell/mwifiex/debugfs.c | 3 +- drivers/net/wireless/marvell/mwifiex/main.c | 16 +- drivers/net/wireless/marvell/mwifiex/pcie.c | 38 +- drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 2 - drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 17 +- drivers/net/wireless/realtek/rtlwifi/pci.h | 4 +- .../net/wireless/realtek/rtlwifi/rtl8192ee/hw.c | 2 +- .../net/wireless/realtek/rtlwifi/rtl8821ae/hw.c | 2 +- drivers/net/wireless/realtek/rtlwifi/usb.c | 18 + drivers/net/wireless/realtek/rtlwifi/usb.h | 3 +- drivers/nvdimm/btt_devs.c | 2 +- drivers/nvdimm/bus.c | 6 + drivers/nvdimm/claim.c | 33 +- drivers/nvdimm/dax_devs.c | 2 +- drivers/nvdimm/dimm_devs.c | 77 +-- drivers/nvdimm/namespace_devs.c | 18 +- drivers/nvdimm/nd.h | 1 + drivers/nvdimm/pfn_devs.c | 8 +- drivers/nvdimm/pmem.c | 37 +- drivers/nvdimm/region_devs.c | 20 +- drivers/nvme/host/core.c | 6 +- drivers/nvme/host/pci.c | 4 +- drivers/parport/share.c | 6 +- drivers/pci/host/pci-hyperv.c | 8 +- drivers/pci/host/pci-thunder-pem.c | 64 ++- drivers/pci/host/pci-xgene.c | 7 +- drivers/pci/host/pcie-altera.c | 10 +- drivers/pci/host/pcie-iproc-bcma.c | 24 +- drivers/pci/host/pcie-iproc-platform.c | 19 +- drivers/pci/host/pcie-iproc.h | 1 + drivers/pci/hotplug/pnv_php.c | 54 +- drivers/pci/quirks.c | 100 +++- drivers/phy/Kconfig | 1 + drivers/phy/phy-qcom-ufs.c | 11 +- drivers/pinctrl/qcom/pinctrl-msm.c | 4 - drivers/platform/goldfish/pdev_bus.c | 13 +- drivers/platform/x86/acer-wmi.c | 22 +- drivers/platform/x86/asus-wmi.c | 23 +- drivers/platform/x86/intel_pmc_core.c | 6 +- drivers/power/reset/Kconfig | 2 +- drivers/power/reset/at91-poweroff.c | 54 +- drivers/power/reset/at91-sama5d2_shdwc.c | 49 +- drivers/power/supply/bq24190_charger.c | 182 +++--- drivers/power/supply/lp8788-charger.c | 2 +- drivers/pwm/pwm-pca9685.c | 11 - drivers/pwm/pwm-rockchip.c | 40 +- drivers/regulator/core.c | 5 +- drivers/remoteproc/qcom_mdt_loader.c | 7 +- drivers/reset/core.c | 2 +- drivers/rtc/Kconfig | 2 +- drivers/rtc/rtc-sun6i.c | 30 +- drivers/rtc/rtc-tegra.c | 28 +- drivers/s390/block/dcssblk.c | 2 +- drivers/s390/cio/ioasm.c | 8 +- drivers/s390/cio/qdio_thinint.c | 8 +- drivers/scsi/Kconfig | 2 +- drivers/scsi/aacraid/src.c | 21 +- drivers/scsi/device_handler/scsi_dh_alua.c | 38 +- drivers/scsi/libiscsi.c | 26 +- drivers/scsi/libsas/sas_ata.c | 2 +- drivers/scsi/lpfc/lpfc_hw4.h | 2 + drivers/scsi/lpfc/lpfc_init.c | 1 + drivers/scsi/lpfc/lpfc_sli.c | 9 +- drivers/scsi/mpt3sas/mpt3sas_base.h | 3 - drivers/scsi/mpt3sas/mpt3sas_scsih.c | 19 +- drivers/scsi/qedi/qedi_debugfs.c | 16 +- drivers/scsi/qedi/qedi_fw.c | 4 +- drivers/scsi/qedi/qedi_gbl.h | 8 +- drivers/scsi/qedi/qedi_iscsi.c | 12 +- drivers/scsi/qla2xxx/qla_attr.c | 4 +- drivers/scsi/qla2xxx/qla_def.h | 6 +- drivers/scsi/qla2xxx/qla_init.c | 1 + drivers/scsi/qla2xxx/qla_isr.c | 7 +- drivers/scsi/qla2xxx/qla_mid.c | 14 +- drivers/scsi/qla2xxx/qla_os.c | 27 +- drivers/scsi/qla2xxx/qla_target.c | 14 +- drivers/scsi/scsi_dh.c | 22 +- drivers/scsi/scsi_lib.c | 42 +- drivers/scsi/scsi_priv.h | 3 - drivers/scsi/sd.c | 40 +- drivers/scsi/sg.c | 6 + drivers/scsi/smartpqi/smartpqi_init.c | 8 +- drivers/scsi/sr.c | 6 +- drivers/scsi/storvsc_drv.c | 59 +- drivers/spi/spi-armada-3700.c | 1 - drivers/spi/spi-s3c64xx.c | 2 +- drivers/staging/android/ashmem.c | 1 + drivers/staging/comedi/drivers/jr3_pci.c | 13 +- drivers/staging/emxx_udc/emxx_udc.c | 4 +- drivers/staging/gdm724x/gdm_mux.c | 3 +- drivers/staging/greybus/loopback.c | 9 +- drivers/staging/lustre/lnet/selftest/rpc.c | 2 +- drivers/staging/lustre/lustre/llite/lproc_llite.c | 27 +- .../staging/lustre/lustre/ptlrpc/pack_generic.c | 1 + drivers/staging/rtl8188eu/core/rtw_recv.c | 3 + drivers/staging/rtl8712/rtl871x_recv.c | 7 +- drivers/staging/vt6656/usbpipe.c | 31 +- drivers/staging/wilc1000/linux_wlan.c | 3 +- drivers/staging/wlan-ng/p80211netdev.c | 2 +- drivers/target/iscsi/iscsi_target.c | 1 + drivers/target/iscsi/iscsi_target_configfs.c | 1 + drivers/target/iscsi/iscsi_target_login.c | 1 + drivers/target/iscsi/iscsi_target_parameters.c | 16 - drivers/target/iscsi/iscsi_target_util.c | 12 +- drivers/target/target_core_device.c | 10 +- drivers/target/target_core_fabric_configfs.c | 5 + drivers/target/target_core_file.c | 3 +- drivers/target/target_core_pscsi.c | 47 +- drivers/target/target_core_sbc.c | 15 +- drivers/target/target_core_tpg.c | 7 +- drivers/target/target_core_transport.c | 31 +- drivers/target/target_core_user.c | 92 ++- drivers/tty/n_hdlc.c | 132 ++--- drivers/tty/pty.c | 7 +- drivers/tty/serial/8250/8250_omap.c | 17 +- drivers/tty/serial/8250/8250_pci.c | 13 + drivers/tty/serial/atmel_serial.c | 8 + drivers/tty/serial/msm_serial.c | 1 + drivers/tty/serial/mxs-auart.c | 2 +- drivers/tty/serial/omap-serial.c | 9 +- drivers/tty/serial/samsung.c | 15 +- drivers/usb/chipidea/ci.h | 3 - drivers/usb/chipidea/ci_hdrc_msm.c | 4 +- drivers/usb/chipidea/core.c | 32 -- drivers/usb/chipidea/otg.c | 80 ++- drivers/usb/class/cdc-wdm.c | 103 +--- drivers/usb/class/usbtmc.c | 18 +- drivers/usb/core/config.c | 10 + drivers/usb/core/driver.c | 21 + drivers/usb/core/file.c | 9 +- drivers/usb/core/hcd.c | 7 +- drivers/usb/core/hub.c | 13 +- drivers/usb/core/quirks.c | 8 + drivers/usb/dwc2/core.c | 2 +- drivers/usb/dwc3/dwc3-omap.c | 1 + drivers/usb/dwc3/gadget.c | 26 +- drivers/usb/dwc3/gadget.h | 14 +- drivers/usb/dwc3/host.c | 21 +- drivers/usb/gadget/Kconfig | 1 + drivers/usb/gadget/function/f_acm.c | 4 +- drivers/usb/gadget/function/f_fs.c | 15 +- drivers/usb/gadget/function/f_hid.c | 188 +++++-- drivers/usb/gadget/function/f_uvc.c | 9 +- drivers/usb/gadget/udc/core.c | 45 +- drivers/usb/gadget/udc/dummy_hcd.c | 2 + drivers/usb/gadget/udc/fsl_udc_core.c | 10 +- drivers/usb/host/ehci-exynos.c | 2 + drivers/usb/host/ohci-at91.c | 4 +- drivers/usb/host/ohci-exynos.c | 2 + drivers/usb/host/xhci-dbg.c | 2 +- drivers/usb/host/xhci-hub.c | 6 + drivers/usb/host/xhci-mem.c | 13 +- drivers/usb/host/xhci-pci.c | 3 + drivers/usb/host/xhci-plat.c | 9 +- drivers/usb/host/xhci-ring.c | 3 + drivers/usb/host/xhci.h | 4 + drivers/usb/misc/idmouse.c | 3 + drivers/usb/misc/iowarrior.c | 21 +- drivers/usb/misc/lvstest.c | 4 + drivers/usb/misc/usbtest.c | 1 + drivers/usb/misc/uss720.c | 5 + drivers/usb/musb/da8xx.c | 6 +- drivers/usb/musb/musb_core.c | 2 +- drivers/usb/musb/musb_cppi41.c | 23 +- drivers/usb/serial/ark3116.c | 38 +- drivers/usb/serial/ch341.c | 27 +- drivers/usb/serial/console.c | 1 + drivers/usb/serial/cp210x.c | 2 + drivers/usb/serial/digi_acceleport.c | 52 +- drivers/usb/serial/ftdi_sio.c | 39 +- drivers/usb/serial/ftdi_sio_ids.h | 6 + drivers/usb/serial/io_edgeport.c | 48 +- drivers/usb/serial/io_ti.c | 8 +- drivers/usb/serial/keyspan_pda.c | 19 +- drivers/usb/serial/mct_u232.c | 6 +- drivers/usb/serial/mos7840.c | 4 +- drivers/usb/serial/omninet.c | 6 - drivers/usb/serial/opticon.c | 2 +- drivers/usb/serial/option.c | 17 +- drivers/usb/serial/qcserial.c | 2 + drivers/usb/serial/quatech2.c | 24 +- drivers/usb/serial/safe_serial.c | 5 + drivers/usb/serial/spcp8x5.c | 8 +- drivers/usb/serial/ssu100.c | 31 +- drivers/usb/serial/ti_usb_3410_5052.c | 12 +- drivers/usb/storage/unusual_devs.h | 14 + drivers/usb/wusbcore/wa-hc.c | 3 + drivers/uwb/hwa-rc.c | 3 + drivers/uwb/i1480/dfu/usb.c | 3 + drivers/vfio/vfio.c | 8 +- drivers/vfio/vfio_iommu_type1.c | 110 ++-- drivers/video/console/fbcon.c | 67 ++- drivers/video/fbdev/efifb.c | 66 ++- drivers/video/fbdev/xen-fbfront.c | 4 +- drivers/virtio/virtio_balloon.c | 6 + drivers/vme/vme.c | 15 + drivers/w1/masters/ds2490.c | 142 +++-- drivers/w1/w1.c | 1 + drivers/watchdog/s3c2410_wdt.c | 21 +- drivers/xen/events/events_base.c | 26 +- drivers/xen/platform-pci.c | 13 +- drivers/xen/xen-acpi-processor.c | 34 +- fs/9p/acl.c | 2 + fs/afs/mntpt.c | 2 +- fs/autofs4/waitq.c | 4 +- fs/block_dev.c | 12 +- fs/btrfs/inode.c | 19 +- fs/ceph/addr.c | 1 + fs/ceph/inode.c | 22 +- fs/ceph/mds_client.c | 5 +- fs/ceph/xattr.c | 3 + fs/cifs/cifs_dfs_ref.c | 7 +- fs/cifs/cifs_unicode.c | 6 + fs/cifs/cifs_unicode.h | 5 +- fs/cifs/cifsfs.c | 15 +- fs/cifs/cifsglob.h | 13 +- fs/cifs/cifssmb.c | 7 + fs/cifs/connect.c | 27 +- fs/cifs/file.c | 16 +- fs/cifs/ioctl.c | 4 + fs/cifs/misc.c | 2 +- fs/cifs/smb1ops.c | 10 + fs/cifs/smb2misc.c | 49 +- fs/cifs/smb2ops.c | 5 + fs/cifs/smb2pdu.c | 33 +- fs/cifs/smb2proto.h | 7 + fs/cifs/smb2transport.c | 58 +- fs/cifs/transport.c | 2 + fs/crypto/crypto.c | 10 +- fs/crypto/fname.c | 2 +- fs/crypto/fscrypt_private.h | 4 - fs/crypto/keyinfo.c | 52 +- fs/crypto/policy.c | 87 ++- fs/dax.c | 66 +-- fs/debugfs/inode.c | 8 +- fs/ext4/extents.c | 27 +- fs/ext4/inline.c | 80 +-- fs/ext4/inode.c | 48 +- fs/ext4/mballoc.c | 7 + fs/ext4/namei.c | 6 +- fs/ext4/super.c | 11 +- fs/ext4/xattr.c | 95 ++-- fs/ext4/xattr.h | 32 ++ fs/f2fs/dir.c | 34 +- fs/f2fs/extent_cache.c | 5 +- fs/f2fs/f2fs.h | 4 + fs/f2fs/gc.c | 22 +- fs/f2fs/inode.c | 2 +- fs/f2fs/namei.c | 20 +- fs/f2fs/segment.c | 2 + fs/f2fs/segment.h | 9 + fs/f2fs/super.c | 74 ++- fs/fat/inode.c | 13 +- fs/fuse/file.c | 1 + fs/gfs2/glock.c | 5 + fs/gfs2/incore.h | 2 +- fs/jbd2/journal.c | 24 +- fs/jbd2/revoke.c | 1 + fs/jbd2/transaction.c | 4 +- fs/mount.h | 1 - fs/namei.c | 3 - fs/namespace.c | 127 +++-- fs/nfs/flexfilelayout/flexfilelayout.c | 13 +- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 + fs/nfs/namespace.c | 2 +- fs/nfs/nfs42proc.c | 63 ++- fs/nfs/nfs4namespace.c | 2 +- fs/nfs/nfs4proc.c | 32 +- fs/nfs/nfs4xdr.c | 2 +- fs/nfsd/nfs3xdr.c | 13 +- fs/nfsd/nfsproc.c | 1 + fs/nfsd/nfssvc.c | 36 ++ fs/nfsd/nfsxdr.c | 10 +- fs/nfsd/vfs.c | 59 +- fs/orangefs/devorangefs-req.c | 14 +- fs/orangefs/inode.c | 3 +- fs/orangefs/namei.c | 2 - fs/orangefs/orangefs-debugfs.c | 15 +- fs/orangefs/orangefs-dev-proto.h | 3 +- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/super.c | 41 +- fs/orangefs/xattr.c | 26 +- fs/overlayfs/dir.c | 2 +- fs/pnode.c | 61 +- fs/pnode.h | 2 + fs/proc/task_mmu.c | 9 +- fs/pstore/platform.c | 10 +- fs/super.c | 13 +- fs/sysfs/file.c | 6 +- fs/timerfd.c | 17 +- fs/ubifs/dir.c | 10 +- fs/xattr.c | 2 +- fs/xfs/libxfs/xfs_bmap.c | 211 ++++--- fs/xfs/libxfs/xfs_bmap_btree.c | 6 +- fs/xfs/libxfs/xfs_btree.c | 3 +- fs/xfs/libxfs/xfs_btree.h | 2 +- fs/xfs/libxfs/xfs_da_btree.c | 6 +- fs/xfs/libxfs/xfs_da_btree.h | 2 +- fs/xfs/libxfs/xfs_dir2_node.c | 51 +- fs/xfs/libxfs/xfs_ialloc.c | 3 +- fs/xfs/libxfs/xfs_inode_fork.c | 9 +- fs/xfs/xfs_aops.c | 65 +-- fs/xfs/xfs_bmap_util.c | 72 +-- fs/xfs/xfs_bmap_util.h | 3 +- fs/xfs/xfs_buf_item.c | 1 + fs/xfs/xfs_extent_busy.c | 13 +- fs/xfs/xfs_file.c | 26 +- fs/xfs/xfs_icache.c | 61 +- fs/xfs/xfs_icache.h | 2 - fs/xfs/xfs_inode.c | 53 +- fs/xfs/xfs_iomap.c | 43 +- fs/xfs/xfs_mount.c | 27 +- fs/xfs/xfs_reflink.c | 151 ++++- fs/xfs/xfs_reflink.h | 6 +- fs/xfs/xfs_super.c | 2 +- fs/xfs/xfs_trace.h | 10 +- include/acpi/platform/acenv.h | 2 +- include/acpi/platform/acintel.h | 87 +++ include/crypto/algapi.h | 7 +- include/crypto/internal/hash.h | 10 + include/drm/drmP.h | 1 + include/drm/i915_pciids.h | 11 +- include/drm/ttm/ttm_object.h | 5 +- include/linux/arm-smccc.h | 52 +- include/linux/ccp.h | 2 +- include/linux/ceph/osdmap.h | 2 +- include/linux/cgroup.h | 21 + include/linux/compat.h | 4 +- include/linux/dax.h | 1 - include/linux/dccp.h | 1 + include/linux/debugfs.h | 3 +- include/linux/devfreq.h | 3 + include/linux/errqueue.h | 2 + include/linux/f2fs_fs.h | 6 + include/linux/fsl_ifc.h | 8 +- include/linux/genhd.h | 2 - include/linux/hyperv.h | 1 + include/linux/iio/sw_device.h | 2 +- include/linux/intel-iommu.h | 14 +- include/linux/kvm_host.h | 4 +- include/linux/libnvdimm.h | 2 + include/linux/lockd/lockd.h | 3 +- include/linux/log2.h | 13 +- include/linux/memcontrol.h | 6 + include/linux/mmzone.h | 2 +- include/linux/mount.h | 3 + include/linux/netdevice.h | 29 +- include/linux/pci_ids.h | 2 + include/linux/phy.h | 1 + include/linux/ptr_ring.h | 36 +- include/linux/random.h | 1 - include/linux/sched.h | 4 + include/linux/uio.h | 6 +- include/linux/usb/chipidea.h | 2 + include/linux/usb/quirks.h | 6 + include/linux/user_namespace.h | 2 +- include/net/addrconf.h | 2 + include/net/ip6_route.h | 1 + include/rdma/ib_sa.h | 6 +- include/scsi/libiscsi.h | 1 + include/scsi/scsi_device.h | 5 + include/soc/at91/at91sam9_ddrsdr.h | 3 + include/target/target_core_base.h | 2 + include/trace/events/syscalls.h | 1 + include/uapi/linux/fs.h | 1 + include/uapi/linux/ipv6_route.h | 2 +- include/uapi/linux/packet_diag.h | 2 +- include/xen/xen.h | 3 +- init/main.c | 1 - ipc/shm.c | 13 +- kernel/audit.c | 622 +++++++++++++-------- kernel/audit.h | 9 +- kernel/auditsc.c | 6 +- kernel/bpf/verifier.c | 37 +- kernel/cgroup.c | 9 +- kernel/cgroup_pids.c | 2 +- kernel/cpu.c | 28 +- kernel/events/core.c | 16 +- kernel/futex.c | 24 +- kernel/kthread.c | 3 + kernel/locking/rwsem-spinlock.c | 15 +- kernel/membarrier.c | 4 + kernel/memremap.c | 6 + kernel/module.c | 1 + kernel/padata.c | 7 +- kernel/printk/printk.c | 2 +- kernel/ptrace.c | 14 +- kernel/sched/deadline.c | 3 +- kernel/sched/rt.c | 3 +- kernel/signal.c | 11 +- kernel/time/tick-broadcast.c | 15 +- kernel/time/timekeeping_debug.c | 4 +- kernel/trace/ftrace.c | 29 +- kernel/trace/ring_buffer.c | 24 +- kernel/trace/trace.c | 13 +- kernel/trace/trace.h | 2 + kernel/trace/trace_benchmark.c | 4 +- kernel/ucount.c | 18 +- lib/iov_iter.c | 63 +++ lib/syscall.c | 1 + lib/test_bpf.c | 45 ++ mm/backing-dev.c | 9 +- mm/filemap.c | 7 +- mm/huge_memory.c | 3 +- mm/hugetlb.c | 6 +- mm/kasan/quarantine.c | 9 +- mm/memcontrol.c | 11 +- mm/mempolicy.c | 20 +- mm/migrate.c | 2 +- mm/mlock.c | 9 +- mm/page_alloc.c | 7 +- mm/percpu.c | 5 +- mm/rmap.c | 4 +- mm/truncate.c | 20 +- mm/vmpressure.c | 10 +- mm/vmscan.c | 81 ++- mm/workingset.c | 4 +- mm/zsmalloc.c | 2 +- net/9p/client.c | 4 + net/bluetooth/hci_sock.c | 3 +- net/bridge/br_forward.c | 3 +- net/bridge/br_input.c | 1 + net/bridge/br_netfilter_hooks.c | 21 - net/ceph/messenger.c | 6 + net/ceph/osd_client.c | 3 +- net/ceph/osdmap.c | 1 - net/core/datagram.c | 34 +- net/core/dev.c | 116 +++- net/core/neighbour.c | 3 +- net/core/net-sysfs.c | 6 +- net/core/netclassid_cgroup.c | 32 +- net/core/netpoll.c | 10 +- net/core/rtnetlink.c | 2 +- net/core/secure_seq.c | 29 +- net/core/skbuff.c | 76 ++- net/core/sock.c | 16 +- net/dccp/ccids/ccid2.c | 1 + net/dccp/input.c | 13 +- net/dccp/ipv4.c | 3 +- net/dccp/ipv6.c | 8 +- net/dccp/minisocks.c | 25 +- net/ipv4/af_inet.c | 4 +- net/ipv4/fib_frontend.c | 9 +- net/ipv4/ip_sockglue.c | 17 +- net/ipv4/ping.c | 5 +- net/ipv4/raw.c | 3 + net/ipv4/route.c | 4 +- net/ipv4/tcp.c | 1 + net/ipv4/tcp_cong.c | 11 +- net/ipv4/tcp_input.c | 12 +- net/ipv4/tcp_ipv4.c | 10 +- net/ipv4/tcp_lp.c | 6 +- net/ipv4/tcp_minisocks.c | 2 + net/ipv4/tcp_output.c | 19 +- net/ipv4/tcp_timer.c | 6 +- net/ipv6/addrconf.c | 33 +- net/ipv6/datagram.c | 10 +- net/ipv6/exthdrs.c | 5 +- net/ipv6/ip6_fib.c | 2 + net/ipv6/ip6_offload.c | 4 +- net/ipv6/ip6_output.c | 13 +- net/ipv6/ip6_tunnel.c | 34 +- net/ipv6/ip6_vti.c | 4 + net/ipv6/ip6mr.c | 13 +- net/ipv6/netfilter/nf_conntrack_reasm.c | 1 + net/ipv6/raw.c | 5 +- net/ipv6/route.c | 43 +- net/ipv6/seg6.c | 3 + net/ipv6/tcp_ipv6.c | 8 +- net/ipv6/udp.c | 2 +- net/irda/irqueue.c | 34 +- net/kcm/kcmsock.c | 6 +- net/l2tp/l2tp_core.c | 8 +- net/l2tp/l2tp_core.h | 3 +- net/l2tp/l2tp_debugfs.c | 10 +- net/l2tp/l2tp_ip.c | 7 +- commit abf23cac580bd29656b630b7226ede59d8351401 Merge: 8c49eaa 17a4d48 Author: Rohit Kumar <rokku...@cs.stonybrook.edu> Date: Wed May 16 18:47:14 2018 -0400 Merge branch 'master' into wrapfs commit 17a4d48033813f2ba893d6918fa2931afcd9af02 Author: Greg Kroah-Hartman <gre...@linuxfoundation.org> Date: Sat May 20 14:38:27 2017 +0200 Linux 4.10.17 commit 291e716bb382710d0685d6d1c8c1ac02551e70f8 Author: Kees Cook <keesc...@chromium.org> Date: Mon Mar 6 12:42:12 2017 -0800 pstore: Shut down worker when unregistering commit 6330d5534786d5315d56d558aa6d20740f97d80a upstream. When built as a module and running with update_ms >= 0, pstore will Oops during module unload since the work timer is still running. This makes sure the worker is stopped before unloading. Signed-off-by: Kees Cook <keesc...@chromium.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit e5590e3d92754b85629d2a06d70bb5b09c2165c9 Author: Ankit Kumar <an...@linux.vnet.ibm.com> Date: Thu Apr 27 17:03:13 2017 +0530 pstore: Fix flags to enable dumps on powerpc commit 041939c1ec54208b42f5cd819209173d52a29d34 upstream. After commit c950fd6f201a kernel registers pstore write based on flag set. Pstore write for powerpc is broken as flags(PSTORE_FLAGS_DMESG) is not set for powerpc architecture. On panic, kernel doesn't write message to /fs/pstore/dmesg*(Entry doesn't gets created at all). This patch enables pstore write for powerpc architecture by setting PSTORE_FLAGS_DMESG flag. Fixes: c950fd6f201a ("pstore: Split pstore fragile flags") Signed-off-by: Ankit Kumar <an...@linux.vnet.ibm.com> Signed-off-by: Kees Cook <keesc...@chromium.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit e3d4daa7f6d47aeb7fd3ea95abc2937092d301eb Author: Dan Williams <dan.j.willi...@intel.com> Date: Thu May 4 19:54:42 2017 -0700 libnvdimm, pfn: fix 'npfns' vs section alignment commit d5483feda85a8f39ee2e940e279547c686aac30c upstream. Fix failures to create namespaces due to the vmem_altmap not advertising enough free space to store the memmap. WARNING: CPU: 15 PID: 8022 at arch/x86/mm/init_64.c:656 arch_add_memory+0xde/0xf0 [..] Call Trace: dump_stack+0x63/0x83 __warn+0xcb/0xf0 warn_slowpath_null+0x1d/0x20 arch_add_memory+0xde/0xf0 devm_memremap_pages+0x244/0x440 pmem_attach_disk+0x37e/0x490 [nd_pmem] nd_pmem_probe+0x7e/0xa0 [nd_pmem] nvdimm_bus_probe+0x71/0x120 [libnvdimm] driver_probe_device+0x2bb/0x460 bind_store+0x114/0x160 drv_attr_store+0x25/0x30 In commit 658922e57b84 "libnvdimm, pfn: fix memmap reservation sizing" we arranged for the capacity to be allocated, but failed to also update the 'npfns' parameter. This leads to cases where there is enough capacity reserved to hold all the allocated sections, but vmemmap_populate_hugepages() still encounters -ENOMEM from altmap_alloc_block_buf(). This fix is a stop-gap until we can teach the core memory hotplug implementation to permit sub-section hotplug. Fixes: 658922e57b84 ("libnvdimm, pfn: fix memmap reservation sizing") Reported-by: Anisha Allada <anisha.all...@intel.com> Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 116ada1a98ab84bf5d1405cc69f83357fa99b36a Author: Dan Williams <dan.j.willi...@intel.com> Date: Fri Apr 28 22:05:14 2017 -0700 libnvdimm: fix nvdimm_bus_lock() vs device_lock() ordering commit 452bae0aede774f87bf56c28b6dd50b72c78986c upstream. A debug patch to turn the standard device_lock() into something that lockdep can analyze yielded the following: ====================================================== [ INFO: possible circular locking dependency detected ] 4.11.0-rc4+ #106 Tainted: G O ------------------------------------------------------- lt-libndctl/1898 is trying to acquire lock: (&dev->nvdimm_mutex/3){+.+.+.}, at: [<ffffffffc023c948>] nd_attach_ndns+0x178/0x1b0 [libnvdimm] but task is already holding lock: (&nvdimm_bus->reconfig_mutex){+.+.+.}, at: [<ffffffffc022e0b1>] nvdimm_bus_lock+0x21/0x30 [libnvdimm] which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&nvdimm_bus->reconfig_mutex){+.+.+.}: lock_acquire+0xf6/0x1f0 __mutex_lock+0x88/0x980 mutex_lock_nested+0x1b/0x20 nvdimm_bus_lock+0x21/0x30 [libnvdimm] nvdimm_namespace_capacity+0x1b/0x40 [libnvdimm] nvdimm_namespace_common_probe+0x230/0x510 [libnvdimm] nd_pmem_probe+0x14/0x180 [nd_pmem] nvdimm_bus_probe+0xa9/0x260 [libnvdimm] -> #0 (&dev->nvdimm_mutex/3){+.+.+.}: __lock_acquire+0x1107/0x1280 lock_acquire+0xf6/0x1f0 __mutex_lock+0x88/0x980 mutex_lock_nested+0x1b/0x20 nd_attach_ndns+0x178/0x1b0 [libnvdimm] nd_namespace_store+0x308/0x3c0 [libnvdimm] namespace_store+0x87/0x220 [libnvdimm] In this case '&dev->nvdimm_mutex/3' mirrors '&dev->mutex'. Fix this by replacing the use of device_lock() with nvdimm_bus_lock() to protect nd_{attach,detach}_ndns() operations. Fixes: 8c2f7e8658df ("libnvdimm: infrastructure for btt devices") Reported-by: Yi Zhang <yiz...@redhat.com> Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit f92a2fe7cdb163e482a7d69826c03e621ac6b11e Author: Toshi Kani <toshi.k...@hpe.com> Date: Tue Apr 25 17:04:13 2017 -0600 libnvdimm, pmem: fix a NULL pointer BUG in nd_pmem_notify commit b2518c78ce76896f0f8f7940bf02104b227e1709 upstream. The following BUG was observed when nd_pmem_notify() was called for a BTT device. The use of a pmem_device pointer is not valid with BTT. BUG: unable to handle kernel NULL pointer dereference at 0000000000000030 IP: nd_pmem_notify+0x30/0xf0 [nd_pmem] Call Trace: nd_device_notify+0x40/0x50 child_notify+0x10/0x20 device_for_each_child+0x50/0x90 nd_region_notify+0x20/0x30 nd_device_notify+0x40/0x50 nvdimm_region_notify+0x27/0x30 acpi_nfit_scrub+0x341/0x590 [nfit] process_one_work+0x197/0x450 worker_thread+0x4e/0x4a0 kthread+0x109/0x140 Fix nd_pmem_notify() by setting nd_region and badblocks pointers properly for BTT. Cc: Vishal Verma <vishal.l.ve...@intel.com> Fixes: 719994660c24 ("libnvdimm: async notification support") Signed-off-by: Toshi Kani <toshi.k...@hpe.com> Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 72393c00f00ada1afeca1895af5cf177a04f4033 Author: Dan Williams <dan.j.willi...@intel.com> Date: Mon Apr 24 15:43:05 2017 -0700 libnvdimm, region: fix flush hint detection crash commit bc042fdfbb92b5b13421316b4548e2d6e98eed37 upstream. In the case where a dimm does not have any associated flush hints the ndrd->flush_wpq array may be uninitialized leading to crashes with the following signature: BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 IP: region_visible+0x10f/0x160 [libnvdimm] Call Trace: internal_create_group+0xbe/0x2f0 sysfs_create_groups+0x40/0x80 device_add+0x2d8/0x650 nd_async_device_register+0x12/0x40 [libnvdimm] async_run_entry_fn+0x39/0x170 process_one_work+0x212/0x6c0 ? process_one_work+0x197/0x6c0 worker_thread+0x4e/0x4a0 kthread+0x10c/0x140 ? process_one_work+0x6c0/0x6c0 ? kthread_create_on_node+0x60/0x60 ret_from_fork+0x31/0x40 Reviewed-by: Jeff Moyer <jmo...@redhat.com> Fixes: f284a4f23752 ("libnvdimm: introduce nvdimm_flush() and nvdimm_has_flush()") Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit b821a605977e0d79b6c45a99549c3f40bd8e5082 Author: Joeseph Chang <joech...@codeaurora.org> Date: Mon Mar 27 20:22:09 2017 -0600 ipmi: Fix kernel panic at ipmi_ssif_thread() commit 6de65fcfdb51835789b245203d1bfc8d14cb1e06 upstream. msg_written_handler() may set ssif_info->multi_data to NULL when using ipmitool to write fru. Before setting ssif_info->multi_data to NULL, add new local pointer "data_to_send" and store correct i2c data pointer to it to fix NULL pointer kernel panic and incorrect ssif_info->multi_pos. Signed-off-by: Joeseph Chang <joech...@codeaurora.org> Signed-off-by: Corey Minyard <cminy...@mvista.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit c8e4805dd6341ac32ab9d2dcbd09499eb6530c33 Author: Johan Hovold <jo...@kernel.org> Date: Wed Mar 29 18:15:28 2017 +0200 Bluetooth: hci_intel: add missing tty-device sanity check commit dcb9cfaa5ea9aa0ec08aeb92582ccfe3e4c719a9 upstream. Make sure to check the tty-device pointer before looking up the sibling platform device to avoid dereferencing a NULL-pointer when the tty is one end of a Unix98 pty. Fixes: 74cdad37cd24 ("Bluetooth: hci_intel: Add runtime PM support") Fixes: 1ab1f239bf17 ("Bluetooth: hci_intel: Add support for platform driver") Cc: Loic Poulain <loic.poul...@intel.com> Signed-off-by: Johan Hovold <jo...@kernel.org> Signed-off-by: Marcel Holtmann <mar...@holtmann.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit a8620f066675e0e2bc9feb9698a83bd67f288b52 Author: Johan Hovold <jo...@kernel.org> Date: Wed Mar 29 18:15:27 2017 +0200 Bluetooth: hci_bcm: add missing tty-device sanity check commit 95065a61e9bf25fb85295127fba893200c2bbbd8 upstream. Make sure to check the tty-device pointer before looking up the sibling platform device to avoid dereferencing a NULL-pointer when the tty is one end of a Unix98 pty. Fixes: 0395ffc1ee05 ("Bluetooth: hci_bcm: Add PM for BCM devices") Cc: Frederic Danis <frederic.da...@linux.intel.com> Signed-off-by: Johan Hovold <jo...@kernel.org> Signed-off-by: Marcel Holtmann <mar...@holtmann.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 9a3054df3cf62e9988f81291f9e2fc1b493aedac Author: Szymon Janc <szymon.j...@codecoup.pl> Date: Mon Apr 24 18:25:04 2017 -0700 Bluetooth: Fix user channel for 32bit userspace on 64bit kernel commit ab89f0bdd63a3721f7cd3f064f39fc4ac7ca14d4 upstream. Running 32bit userspace on 64bit kernel results in MSG_CMSG_COMPAT being defined as 0x80000000. This results in sendmsg failure if used from 32bit userspace running on 64bit kernel. Fix this by accounting for MSG_CMSG_COMPAT in flags check in hci_sock_sendmsg. Signed-off-by: Szymon Janc <szymon.j...@codecoup.pl> Signed-off-by: Marko Kiiskila <ma...@runtime.io> Signed-off-by: Marcel Holtmann <mar...@holtmann.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 58d4794410293a11878c4bd0d9d1b169efcbc060 Author: Wang YanQing <udkni...@gmail.com> Date: Wed Feb 22 19:37:08 2017 +0800 tty: pty: Fix ldisc flush after userspace become aware of the data already commit 77dae6134440420bac334581a3ccee94cee1c054 upstream. While using emacs, cat or others' commands in konsole with recent kernels, I have met many times that CTRL-C freeze konsole. After konsole freeze I can't type anything, then I have to open a new one, it is very annoying. See bug report: https://bugs.kde.org/show_bug.cgi?id=175283 The platform in that bug report is Solaris, but now the pty in linux has the same problem or the same behavior as Solaris :) It has high possibility to trigger the problem follow steps below: Note: In my test, BigFile is a text file whose size is bigger than 1G 1:open konsole 1:cat BigFile 2:CTRL-C After some digging, I find out the reason is that commit 1d1d14da12e7 ("pty: Fix buffer flush deadlock") changes the behavior of pty_flush_buffer. Thread A Thread B -------- -------- 1:n_tty_poll return POLLIN 2:CTRL-C trigger pty_flush_buffer tty_buffer_flush n_tty_flush_buffer 3:attempt to check count of chars: ioctl(fd, TIOCINQ, &available) available is equal to 0 4:read(fd, buffer, avaiable) return 0 5:konsole close fd Yes, I know we could use the same patch included in the BUG report as a workaround for linux platform too. But I think the data in ldisc is belong to application of another side, we shouldn't clear it when we want to flush write buffer of this side in pty_flush_buffer. So I think it is better to disable ldisc flush in pty_flush_buffer, because its new hehavior bring no benefit except that it mess up the behavior between POLLIN, and TIOCINQ or FIONREAD. Also I find no flush_buffer function in others' tty driver has the same behavior as current pty_flush_buffer. Fixes: 1d1d14da12e7 ("pty: Fix buffer flush deadlock") Signed-off-by: Wang YanQing <udkni...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 9e3b9909bce302b128a076f60f32448b3cfaf0a4 Author: Johan Hovold <jo...@kernel.org> Date: Mon Apr 10 11:21:39 2017 +0200 serial: omap: suspend device on probe errors commit 77e6fe7fd2b7cba0bf2f2dc8cde51d7b9a35bf74 upstream. Make sure to actually suspend the device before returning after a failed (or deferred) probe. Note that autosuspend must be disabled before runtime pm is disabled in order to balance the usage count due to a negative autosuspend delay as well as to make the final put suspend the device synchronously. Fixes: 388bc2622680 ("omap-serial: Fix the error handling in the omap_serial probe") Cc: Shubhrajyoti D <shubhrajy...@ti.com> Signed-off-by: Johan Hovold <jo...@kernel.org> Acked-by: Tony Lindgren <t...@atomide.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit c1ce1f427e0a62b96b2e5a73ddb5766eb5c90bcb Author: Johan Hovold <jo...@kernel.org> Date: Mon Apr 10 11:21:38 2017 +0200 serial: omap: fix runtime-pm handling on unbind commit 099bd73dc17ed77aa8c98323e043613b6e8f54fc upstream. An unbalanced and misplaced synchronous put was used to suspend the device on driver unbind, something which with a likewise misplaced pm_runtime_disable leads to external aborts when an open port is being removed. Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa024010 ... [<c046e760>] (serial_omap_set_mctrl) from [<c046a064>] (uart_update_mctrl+0x50/0x60) [<c046a064>] (uart_update_mctrl) from [<c046a400>] (uart_shutdown+0xbc/0x138) [<c046a400>] (uart_shutdown) from [<c046bd2c>] (uart_hangup+0x94/0x190) [<c046bd2c>] (uart_hangup) from [<c045b760>] (__tty_hangup+0x404/0x41c) [<c045b760>] (__tty_hangup) from [<c045b794>] (tty_vhangup+0x1c/0x20) [<c045b794>] (tty_vhangup) from [<c046ccc8>] (uart_remove_one_port+0xec/0x260) [<c046ccc8>] (uart_remove_one_port) from [<c046ef4c>] (serial_omap_remove+0x40/0x60) [<c046ef4c>] (serial_omap_remove) from [<c04845e8>] (platform_drv_remove+0x34/0x4c) Fix this up by resuming the device before deregistering the port and by suspending and disabling runtime pm only after the port has been removed. Also make sure to disable autosuspend before disabling runtime pm so that the usage count is balanced and device actually suspended before returning. Note that due to a negative autosuspend delay being set in probe, the unbalanced put would actually suspend the device on first driver unbind, while rebinding and again unbinding would result in a negative power.usage_count. Fixes: 7e9c8e7dbf3b ("serial: omap: make sure to suspend device before remove") Cc: Felipe Balbi <ba...@kernel.org> Cc: Santosh Shilimkar <santosh.shilim...@ti.com> Signed-off-by: Johan Hovold <jo...@kernel.org> Acked-by: Tony Lindgren <t...@atomide.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 2578dd75ad123860d92e2bfc8ab539451587822c Author: Marek Szyprowski <m.szyprow...@samsung.com> Date: Mon Apr 3 08:20:59 2017 +0200 serial: samsung: Use right device for DMA-mapping calls commit 768d64f491a530062ddad50e016fb27125f8bd7c upstream. Driver should provide its own struct device for all DMA-mapping calls instead of extracting device pointer from DMA engine channel. Although this is harmless from the driver operation perspective on ARM architecture, it is always good to use the DMA mapping API in a proper way. This patch fixes following DMA API debug warning: WARNING: CPU: 0 PID: 0 at lib/dma-debug.c:1241 check_sync+0x520/0x9f4 samsung-uart 12c20000.serial: DMA-API: device driver tries to sync DMA memory it has not allocated [device address=0x000000006df0f580] [size=64 bytes] Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.11.0-rc1-00137-g07ca963 #51 Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [<c011aaa4>] (unwind_backtrace) from [<c01127c0>] (show_stack+0x20/0x24) [<c01127c0>] (show_stack) from [<c06ba5d8>] (dump_stack+0x84/0xa0) [<c06ba5d8>] (dump_stack) from [<c0139528>] (__warn+0x14c/0x180) [<c0139528>] (__warn) from [<c01395a4>] (warn_slowpath_fmt+0x48/0x50) [<c01395a4>] (warn_slowpath_fmt) from [<c0729058>] (check_sync+0x520/0x9f4) [<c0729058>] (check_sync) from [<c072967c>] (debug_dma_sync_single_for_device+0x88/0xc8) [<c072967c>] (debug_dma_sync_single_for_device) from [<c0803c10>] (s3c24xx_serial_start_tx_dma+0x100/0x2f8) [<c0803c10>] (s3c24xx_serial_start_tx_dma) from [<c0804338>] (s3c24xx_serial_tx_chars+0x198/0x33c) Reported-by: Seung-Woo Kim <sw0312....@samsung.com> Fixes: 62c37eedb74c8 ("serial: samsung: add dma reqest/release functions") Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnier...@samsung.com> Reviewed-by: Krzysztof Kozlowski <k...@kernel.org> Reviewed-by: Shuah Khan <shua...@osg.samsung.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit a78ddcd2a858ea3968afa284d964329a4d7f74c2 Author: Eric Biggers <ebigg...@google.com> Date: Fri Apr 7 10:58:37 2017 -0700 fscrypt: fix context consistency check when key(s) unavailable commit 272f98f6846277378e1758a49a49d7bf39343c02 upstream. To mitigate some types of offline attacks, filesystem encryption is designed to enforce that all files in an encrypted directory tree use the same encryption policy (i.e. the same encryption context excluding the nonce). However, the fscrypt_has_permitted_context() function which enforces this relies on comparing struct fscrypt_info's, which are only available when we have the encryption keys. This can cause two incorrect behaviors: 1. If we have the parent directory's key but not the child's key, or vice versa, then fscrypt_has_permitted_context() returned false, causing applications to see EPERM or ENOKEY. This is incorrect if the encryption contexts are in fact consistent. Although we'd normally have either both keys or neither key in that case since the master_key_descriptors would be the same, this is not guaranteed because keys can be added or removed from keyrings at any time. 2. If we have neither the parent's key nor the child's key, then fscrypt_has_permitted_context() returned true, causing applications to see no error (or else an error for some other reason). This is incorrect if the encryption contexts are in fact inconsistent, since in that case we should deny access. To fix this, retrieve and compare the fscrypt_contexts if we are unable to set up both fscrypt_infos. While this slightly hurts performance when accessing an encrypted directory tree without the key, this isn't a case we really need to be optimizing for; access *with* the key is much more important. Furthermore, the performance hit is barely noticeable given that we are already retrieving the fscrypt_context and doing two keyring searches in fscrypt_get_encryption_info(). If we ever actually wanted to optimize this case we might start by caching the fscrypt_contexts. Signed-off-by: Eric Biggers <ebigg...@google.com> Signed-off-by: Theodore Ts'o <ty...@mit.edu> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 659ccd97668ab6c8b6bdf8665bc7ae8635559d62 Author: Jaegeuk Kim <jaeg...@kernel.org> Date: Tue Apr 11 19:01:26 2017 -0700 f2fs: fix fs corruption due to zero inode page commit 9bb02c3627f46e50246bf7ab957b56ffbef623cb upstream. This patch fixes the following scenario. - f2fs_create/f2fs_mkdir - write_checkpoint - f2fs_mark_inode_dirty_sync - block_operations - f2fs_lock_all - f2fs_sync_inode_meta - f2fs_unlock_all - sync_inode_metadata - f2fs_lock_op - f2fs_write_inode - update_inode_page - get_node_page return -ENOENT - new_inode_page - fill_node_footer - f2fs_mark_inode_dirty_sync - ... - f2fs_unlock_op - f2fs_inode_synced - f2fs_lock_all - do_checkpoint In this checkpoint, we can get an inode page which contains zeros having valid node footer only. Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 717946b469cfafc9f31ebfcefa34a18ff369fc2e Author: Jan Kara <j...@suse.cz> Date: Fri May 12 15:46:50 2017 -0700 mm: fix data corruption due to stale mmap reads commit cd656375f94632d7b5af57bf67b7b5c0270c591c upstream. Currently, we didn't invalidate page tables during invalidate_inode_pages2() for DAX. That could result in e.g. 2MiB zero page being mapped into page tables while there were already underlying blocks allocated and thus data seen through mmap were different from data seen by read(2). The following sequence reproduces the problem: - open an mmap over a 2MiB hole - read from a 2MiB hole, faulting in a 2MiB zero page - write to the hole with write(3p). The write succeeds but we incorrectly leave the 2MiB zero page mapping intact. - via the mmap, read the data that was just written. Since the zero page mapping is still intact we read back zeroes instead of the new data. Fix the problem by unconditionally calling invalidate_inode_pages2_range() in dax_iomap_actor() for new block allocations and by properly invalidating page tables in invalidate_inode_pages2_range() for DAX mappings. Fixes: c6dcf52c23d2d3fb5235cec42d7dd3f786b87d55 Link: http://lkml.kernel.org/r/20170510085419.27601-3-j...@suse.cz Signed-off-by: Jan Kara <j...@suse.cz> Signed-off-by: Ross Zwisler <ross.zwis...@linux.intel.com> Cc: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Andrew Morton <a...@linux-foundation.org> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 35223d76e2cf6366be1d281548f099c345ace3f1 Author: Ross Zwisler <ross.zwis...@linux.intel.com> Date: Fri May 12 15:46:47 2017 -0700 dax: prevent invalidation of mapped DAX entries commit 4636e70bb0a8b871998b6841a2e4b205cf2bc863 upstream. Patch series "mm,dax: Fix data corruption due to mmap inconsistency", v4. This series fixes data corruption that can happen for DAX mounts when page faults race with write(2) and as a result page tables get out of sync with block mappings in the filesystem and thus data seen through mmap is different from data seen through read(2). The series passes testing with t_mmap_stale test program from Ross and also other mmap related tests on DAX filesystem. This patch (of 4): dax_invalidate_mapping_entry() currently removes DAX exceptional entries only if they are clean and unlocked. This is done via: invalidate_mapping_pages() invalidate_exceptional_entry() dax_invalidate_mapping_entry() However, for page cache pages removed in invalidate_mapping_pages() there is an additional criteria which is that the page must not be mapped. This is noted in the comments above invalidate_mapping_pages() and is checked in invalidate_inode_page(). For DAX entries this means that we can can end up in a situation where a DAX exceptional entry, either a huge zero page or a regular DAX entry, could end up mapped but without an associated radix tree entry. This is inconsistent with the rest of the DAX code and with what happens in the page cache case. We aren't able to unmap the DAX exceptional entry because according to its comments invalidate_mapping_pages() isn't allowed to block, and unmap_mapping_range() takes a write lock on the mapping->i_mmap_rwsem. Since we essentially never have unmapped DAX entries to evict from the radix tree, just remove dax_invalidate_mapping_entry(). Fixes: c6dcf52c23d2 ("mm: Invalidate DAX radix tree entries only if appropriate") Link: http://lkml.kernel.org/r/20170510085419.27601-2-j...@suse.cz Signed-off-by: Ross Zwisler <ross.zwis...@linux.intel.com> Signed-off-by: Jan Kara <j...@suse.cz> Reported-by: Jan Kara <j...@suse.cz> Cc: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Andrew Morton <a...@linux-foundation.org> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit fa7043b3a2e0ab086b28639b3ac260477798bc9e Author: Dan Williams <dan.j.willi...@intel.com> Date: Sun Apr 30 06:57:01 2017 -0700 device-dax: fix sysfs attribute deadlock commit 565851c972b50612f3a4542e26879ffb3e906fc2 upstream. Usage of device_lock() for dax_region attributes is unnecessary and deadlock prone. It's unnecessary because the order of registration / un-registration guarantees that drvdata is always valid. It's deadlock prone because it sets up this situation: ndctl D 0 2170 2082 0x00000000 Call Trace: __schedule+0x31f/0x980 schedule+0x3d/0x90 schedule_preempt_disabled+0x15/0x20 __mutex_lock+0x402/0x980 ? __mutex_lock+0x158/0x980 ? align_show+0x2b/0x80 [dax] ? kernfs_seq_start+0x2f/0x90 mutex_lock_nested+0x1b/0x20 align_show+0x2b/0x80 [dax] dev_attr_show+0x20/0x50 ndctl D 0 2186 2079 0x00000000 Call Trace: __schedule+0x31f/0x980 schedule+0x3d/0x90 __kernfs_remove+0x1f6/0x340 ? kernfs_remove_by_name_ns+0x45/0xa0 ? remove_wait_queue+0x70/0x70 kernfs_remove_by_name_ns+0x45/0xa0 remove_files.isra.1+0x35/0x70 sysfs_remove_group+0x44/0x90 sysfs_remove_groups+0x2e/0x50 dax_region_unregister+0x25/0x40 [dax] devm_action_release+0xf/0x20 release_nodes+0x16d/0x2b0 devres_release_all+0x3c/0x60 device_release_driver_internal+0x17d/0x220 device_release_driver+0x12/0x20 unbind_store+0x112/0x160 ndctl/2170 is trying to acquire the device_lock() to read an attribute, and ndctl/2186 is holding the device_lock() while trying to drain all active attribute readers. Thanks to Yi Zhang for the reproduction script. Fixes: d7fe1a67f658 ("dax: add region 'id', 'size', and 'align' attributes") Reported-by: Yi Zhang <yiz...@redhat.com> Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit e1a19ef5291902ec413abdd4037ee27bf6a35594 Author: Dan Williams <dan.j.willi...@intel.com> Date: Fri Mar 17 12:48:09 2017 -0600 device-dax: fix cdev leak commit ed01e50acdd3e4a640cf9ebd28a7e810c3ceca97 upstream. If device_add() fails, cleanup the cdev. Otherwise, we leak a kobj_map() with a stale device number. As Jason points out, there is a small possibility that userspace has opened and mapped the device in the time between cdev_add() and the device_add() failure. We need a new kill_dax_dev() helper to invalidate any established mappings. Fixes: ba09c01d2fa8 ("dax: convert to the cdev api") Reported-by: Jason Gunthorpe <jguntho...@obsidianresearch.com> Signed-off-by: Dan Williams <dan.j.willi...@intel.com> Signed-off-by: Logan Gunthorpe <log...@deltatee.com> Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 81845f52017951b6623618d68f79a7530073f2d0 Author: NeilBrown <ne...@suse.com> Date: Thu Apr 6 12:06:37 2017 +1000 md/raid1: avoid reusing a resync bio after error handling. commit 0c9d5b127f695818c2c5a3868c1f28ca2969e905 upstream. fix_sync_read_error() modifies a bio on a newly faulty device by setting bi_end_io to end_sync_write. This ensure that put_buf() will still call rdev_dec_pending() as required, but makes sure that subsequent code in fix_sync_read_error() doesn't try to read from the device. Unfortunately this interacts badly with sync_request_write() which assumes that any bio with bi_end_io set to non-NULL other than end_sync_read is safe to write to. As the device is now faulty it doesn't make sense to write. As the bio was recently used for a read, it is "dirty" and not suitable for immediate submission. In particular, ->bi_next might be non-NULL, which will cause generic_make_request() to complain. Break this interaction by refusing to write to devices which are marked as Faulty. Reported-and-tested-by: Michael Wang <yun.w...@profitbricks.com> Fixes: 2e52d449bcec ("md/raid1: add failfast handling for reads.") Signed-off-by: NeilBrown <ne...@suse.com> Signed-off-by: Shaohua Li <s...@fb.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 23ebf6aa650dab9c3e08f9c65b8d4a29beae7d43 Author: Jason A. Donenfeld <ja...@zx2c4.com> Date: Fri Apr 7 02:33:30 2017 +0200 padata: free correct variable commit 07a77929ba672d93642a56dc2255dd21e6e2290b upstream. The author meant to free the variable that was just allocated, instead of the one that failed to be allocated, but made a simple typo. This patch rectifies that. Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com> Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 586aa5a6537f0f5f67487ec3f535488e77bbba82 Author: Amir Goldstein <amir7...@gmail.com> Date: Mon Apr 24 22:26:40 2017 +0300 ovl: do not set overlay.opaque on non-dir create commit 4a99f3c83dc493c8ea84693d78cd792839c8aa64 upstream. The optimization for opaque dir create was wrongly being applied also to non-dir create. Fixes: 97c684cc9110 ("ovl: create directories inside merged parent opaque") Signed-off-by: Amir Goldstein <amir7...@gmail.com> Signed-off-by: Miklos Szeredi <mszer...@redhat.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit cf95696518f5ffdf98b64df850fe6bcf208f4a4f Author: Björn Jacke <b...@sernet.de> Date: Fri May 5 04:36:16 2017 +0200 CIFS: add misssing SFM mapping for doublequote commit 85435d7a15294f9f7ef23469e6aaf7c5dfcc54f0 upstream. SFM is mapping doublequote to 0xF020 Without this patch creating files with doublequote fails to Windows/Mac Signed-off-by: Bjoern Jacke <bja...@samba.org> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 582fb96084c3d7ccc8e294c9586ddd346cf5c864 Author: David Disseldorp <dd...@suse.de> Date: Thu May 4 00:41:13 2017 +0200 cifs: fix CIFS_IOC_GET_MNT_INFO oops commit d8a6e505d6bba2250852fbc1c1c86fe68aaf9af3 upstream. An open directory may have a NULL private_data pointer prior to readdir. Fixes: 0de1f4c6f6c0 ("Add way to query server fs info for smb3") Signed-off-by: David Disseldorp <dd...@suse.de> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 4452b80eaef8c4ed9a9d52f98cad40287a2f62eb Author: Rabin Vincent <rab...@axis.com> Date: Wed May 3 17:54:01 2017 +0200 CIFS: fix oplock break deadlocks commit 3998e6b87d4258a70df358296d6f1c7234012bfe upstream. When the final cifsFileInfo_put() is called from cifsiod and an oplock break work is queued, lockdep complains loudly: ============================================= [ INFO: possible recursive locking detected ] 4.11.0+ #21 Not tainted --------------------------------------------- kworker/0:2/78 is trying to acquire lock: ("cifsiod"){++++.+}, at: flush_work+0x215/0x350 but task is already holding lock: ("cifsiod"){++++.+}, at: process_one_work+0x255/0x8e0 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock("cifsiod"); lock("cifsiod"); *** DEADLOCK *** May be due to missing lock nesting notation 2 locks held by kworker/0:2/78: #0: ("cifsiod"){++++.+}, at: process_one_work+0x255/0x8e0 #1: ((&wdata->work)){+.+...}, at: process_one_work+0x255/0x8e0 stack backtrace: CPU: 0 PID: 78 Comm: kworker/0:2 Not tainted 4.11.0+ #21 Workqueue: cifsiod cifs_writev_complete Call Trace: dump_stack+0x85/0xc2 __lock_acquire+0x17dd/0x2260 ? match_held_lock+0x20/0x2b0 ? trace_hardirqs_off_caller+0x86/0x130 ? mark_lock+0xa6/0x920 lock_acquire+0xcc/0x260 ? lock_acquire+0xcc/0x260 ? flush_work+0x215/0x350 flush_work+0x236/0x350 ? flush_work+0x215/0x350 ? destroy_worker+0x170/0x170 __cancel_work_timer+0x17d/0x210 ? ___preempt_schedule+0x16/0x18 cancel_work_sync+0x10/0x20 cifsFileInfo_put+0x338/0x7f0 cifs_writedata_release+0x2a/0x40 ? cifs_writedata_release+0x2a/0x40 cifs_writev_complete+0x29d/0x850 ? preempt_count_sub+0x18/0xd0 process_one_work+0x304/0x8e0 worker_thread+0x9b/0x6a0 kthread+0x1b2/0x200 ? process_one_work+0x8e0/0x8e0 ? kthread_create_on_node+0x40/0x40 ret_from_fork+0x31/0x40 This is a real warning. Since the oplock is queued on the same workqueue this can deadlock if there is only one worker thread active for the workqueue (which will be the case during memory pressure when the rescuer thread is handling it). Furthermore, there is at least one other kind of hang possible due to the oplock break handling if there is only worker. (This can be reproduced without introducing memory pressure by having passing 1 for the max_active parameter of cifsiod.) cifs_oplock_break() can wait indefintely in the filemap_fdatawait() while the cifs_writev_complete() work is blocked: sysrq: SysRq : Show Blocked State task PC stack pid father kworker/0:1 D 0 16 2 0x00000000 Workqueue: cifsiod cifs_oplock_break Call Trace: __schedule+0x562/0xf40 ? mark_held_locks+0x4a/0xb0 schedule+0x57/0xe0 io_schedule+0x21/0x50 wait_on_page_bit+0x143/0x190 ? add_to_page_cache_lru+0x150/0x150 __filemap_fdatawait_range+0x134/0x190 ? do_writepages+0x51/0x70 filemap_fdatawait_range+0x14/0x30 filemap_fdatawait+0x3b/0x40 cifs_oplock_break+0x651/0x710 ? preempt_count_sub+0x18/0xd0 process_one_work+0x304/0x8e0 worker_thread+0x9b/0x6a0 kthread+0x1b2/0x200 ? process_one_work+0x8e0/0x8e0 ? kthread_create_on_node+0x40/0x40 ret_from_fork+0x31/0x40 dd D 0 683 171 0x00000000 Call Trace: __schedule+0x562/0xf40 ? mark_held_locks+0x29/0xb0 schedule+0x57/0xe0 io_schedule+0x21/0x50 wait_on_page_bit+0x143/0x190 ? add_to_page_cache_lru+0x150/0x150 __filemap_fdatawait_range+0x134/0x190 ? do_writepages+0x51/0x70 filemap_fdatawait_range+0x14/0x30 filemap_fdatawait+0x3b/0x40 filemap_write_and_wait+0x4e/0x70 cifs_flush+0x6a/0xb0 filp_close+0x52/0xa0 __close_fd+0xdc/0x150 SyS_close+0x33/0x60 entry_SYSCALL_64_fastpath+0x1f/0xbe Showing all locks held in the system: 2 locks held by kworker/0:1/16: #0: ("cifsiod"){.+.+.+}, at: process_one_work+0x255/0x8e0 #1: ((&cfile->oplock_break)){+.+.+.}, at: process_one_work+0x255/0x8e0 Showing busy workqueues and worker pools: workqueue cifsiod: flags=0xc pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/1 in-flight: 16:cifs_oplock_break delayed: cifs_writev_complete, cifs_echo_request pool 0: cpus=0 node=0 flags=0x0 nice=0 hung=0s workers=3 idle: 750 3 Fix these problems by creating a a new workqueue (with a rescuer) for the oplock break work. Signed-off-by: Rabin Vincent <rab...@axis.com> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit cd01b999953bc9f7239429eb6dcabe1ae1f50e45 Author: David Disseldorp <dd...@suse.de> Date: Wed May 3 17:39:08 2017 +0200 cifs: fix CIFS_ENUMERATE_SNAPSHOTS oops commit 6026685de33b0db5b2b6b0e9b41b3a1a3261033c upstream. As with 618763958b22, an open directory may have a NULL private_data pointer prior to readdir. CIFS_ENUMERATE_SNAPSHOTS must check for this before dereference. Fixes: 834170c85978 ("Enable previous version support") Signed-off-by: David Disseldorp <dd...@suse.de> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit 6ec05086dca927ba9574840e0e92ea9c92c439e6 Author: David Disseldorp <dd...@suse.de> Date: Wed May 3 17:39:09 2017 +0200 cifs: fix leak in FSCTL_ENUM_SNAPS response handling commit 0e5c795592930d51fd30d53a2e7b73cba022a29b upstream. The server may respond with success, and an output buffer less than sizeof(struct smb_snapshot_array) in length. Do not leak the output buffer in this case. Fixes: 834170c85978 ("Enable previous version support") Signed-off-by: David Disseldorp <dd...@suse.de> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit b1b295efad9f32d7eae9eed06752d0872112e550 Author: Björn Jacke <b...@sernet.de> Date: Wed May 3 23:47:44 2017 +0200 CIFS: fix mapping of SFM_SPACE and SFM_PERIOD commit b704e70b7cf48f9b67c07d585168e102dfa30bb4 upstream. - trailing space maps to 0xF028 - trailing period maps to 0xF029 This fix corrects the mapping of file names which have a trailing character that would otherwise be illegal (period or space) but is allowed by POSIX. Signed-off-by: Bjoern Jacke <bja...@samba.org> Signed-off-by: Steve French <smfre...@gmail.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> commit ae6c2182b8536fafe21c2dcf747eacd20d867ade Author: Steve French <smfre...@gmail.com> Date: Wed May 3 21:12:20 2017 -0500 SMB3: Work around mount failure when using SMB3 dialect to Macs commit 7db0a6efdc3e990cdfd4b24820d010e9eb7890ad upstream. Macs send the maximum buffer size in response on ioctl to validate negotiate security information, which causes us to fail the mount diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index be7c0d9..18eefa8 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -1201,6 +1201,10 @@ When zero, profiling data is discarded and associated debugfs files are removed at module unload time. + goldfish [X86] Enable the goldfish android emulator platform. + Don't use this when you are not running on the + android emulator + gpt [EFI] Forces disk with valid GPT signature but invalid Protective MBR to be treated as GPT. If the primary GPT is corrupted, it enables the backup/alternate diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt index 405da11..d11af52 100644 --- a/Documentation/arm64/silicon-errata.txt +++ b/Documentation/arm64/silicon-errata.txt @@ -42,24 +42,26 @@ file acts as a registry of software workarounds in the Linux Kernel and will be updated when new workarounds are committed and backported to stable kernels. -| Implementor | Component | Erratum ID | Kconfig | -+----------------+-----------------+-----------------+-------------------------+ -| ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 | -| ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 | -| ARM | Cortex-A53 | #824069 | ARM64_ERRATUM_824069 | -| ARM | Cortex-A53 | #819472 | ARM64_ERRATUM_819472 | -| ARM | Cortex-A53 | #845719 | ARM64_ERRATUM_845719 | -| ARM | Cortex-A53 | #843419 | ARM64_ERRATUM_843419 | -| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 | -| ARM | Cortex-A57 | #852523 | N/A | -| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 | -| ARM | Cortex-A72 | #853709 | N/A | -| ARM | MMU-500 | #841119,#826419 | N/A | -| | | | | -| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 | -| Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 | -| Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | -| Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | -| Cavium | ThunderX SMMUv2 | #27704 | N/A | -| | | | | -| Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | +| Implementor | Component | Erratum ID | Kconfig | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 | +| ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 | +| ARM | Cortex-A53 | #824069 | ARM64_ERRATUM_824069 | +| ARM | Cortex-A53 | #819472 | ARM64_ERRATUM_819472 | +| ARM | Cortex-A53 | #845719 | ARM64_ERRATUM_845719 | +| ARM | Cortex-A53 | #843419 | ARM64_ERRATUM_843419 | +| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 | +| ARM | Cortex-A57 | #852523 | N/A | +| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 | +| ARM | Cortex-A72 | #853709 | N/A | +| ARM | MMU-500 | #841119,#826419 | N/A | +| | | | | +| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 | +| Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 | +| Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | +| Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | +| Cavium | ThunderX SMMUv2 | #27704 | N/A | +| | | | | +| Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | +| | | | | +| Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 | diff --git a/Documentation/devicetree/bindings/rng/omap_rng.txt b/Documentation/devicetree/bindings/rng/omap_rng.txt index 4714772..9cf7876 100644 --- a/Documentation/devicetree/bindings/rng/omap_rng.txt +++ b/Documentation/devicetree/bindings/rng/omap_rng.txt @@ -12,7 +12,8 @@ Required properties: - reg : Offset and length of the register set for the module - interrupts : the interrupt number for the RNG module. Used for "ti,omap4-rng" and "inside-secure,safexcel-eip76" -- clocks: the trng clock source +- clocks: the trng clock source. Only mandatory for the + "inside-secure,safexcel-eip76" compatible. Example: /* AM335x */ diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt index 0b7d857..2d80b60 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt @@ -27,6 +27,7 @@ Required properties: Optional properties: - clocks: reference to a clock - usb3-lpm-capable: determines if platform is USB3 LPM capable + - quirk-broken-port-ped: set if the controller has broken port disable mechanism Example: usb@f0931000 { diff --git a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt index 8f3d96a..1f6e101 100644 --- a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt @@ -6,10 +6,11 @@ occurred. Required properties: - compatible : should be one among the following - (a) "samsung,s3c2410-wdt" for Exynos4 and previous SoCs - (b) "samsung,exynos5250-wdt" for Exynos5250 - (c) "samsung,exynos5420-wdt" for Exynos5420 - (c) "samsung,exynos7-wdt" for Exynos7 + - "samsung,s3c2410-wdt" for S3C2410 + - "samsung,s3c6410-wdt" for S3C6410, S5PV210 and Exynos4 + - "samsung,exynos5250-wdt" for Exynos5250 + - "samsung,exynos5420-wdt" for Exynos5420 + - "samsung,exynos7-wdt" for Exynos7 - reg : base physical address of the controller and length of memory mapped region. diff --git a/Documentation/process/stable-kernel-rules.rst b/Documentation/process/stable-kernel-rules.rst index 11ec2d9..61e9c78 100644 --- a/Documentation/process/stable-kernel-rules.rst +++ b/Documentation/process/stable-kernel-rules.rst @@ -124,7 +124,7 @@ specified in the following format in the sign-off area: .. code-block:: none - Cc: <sta...@vger.kernel.org> # 3.3.x- + Cc: <sta...@vger.kernel.org> # 3.3.x The tag has the meaning of: diff --git a/Makefile b/Makefile index 503dae1..2e8b04b 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = 4 PATCHLEVEL = 10 -SUBLEVEL = 0 -EXTRAVERSION = -rc8 +SUBLEVEL = 17 +EXTRAVERSION = NAME = Fearless Coyote # *DOCUMENTATION* @@ -370,7 +370,7 @@ LDFLAGS_MODULE = CFLAGS_KERNEL = AFLAGS_KERNEL = LDFLAGS_vmlinux = -CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized +CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,) CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,) @@ -651,6 +651,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \ # Tell gcc to never replace conditional load with a non-conditional one KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) +# check for 'asm goto' +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y) + KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO + KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO +endif + include scripts/Makefile.gcc-plugins ifdef CONFIG_READABLE_ASM @@ -796,12 +802,6 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types) # use the deterministic mode of AR if available KBUILD_ARFLAGS := $(call ar-option,D) -# check for 'asm goto' -ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y) - KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO - KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO -endif - include scripts/Makefile.kasan include scripts/Makefile.extrawarn include scripts/Makefile.ubsan diff --git a/arch/arc/include/asm/atomic.h b/arch/arc/include/asm/atomic.h index b65930a..54b54da 100644 --- a/arch/arc/include/asm/atomic.h +++ b/arch/arc/include/asm/atomic.h @@ -17,10 +17,11 @@ #include <asm/barrier.h> #include <asm/smp.h> +#define ATOMIC_INIT(i) { (i) } + #ifndef CONFIG_ARC_PLAT_EZNPS #define atomic_read(v) READ_ONCE((v)->counter) -#define ATOMIC_INIT(i) { (i) } #ifdef CONFIG_ARC_HAS_LLSC diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c index d408fa2..9285629 100644 --- a/arch/arc/mm/cache.c +++ b/arch/arc/mm/cache.c @@ -633,6 +633,9 @@ noinline static void slc_entire_op(const int op) write_aux_reg(ARC_REG_SLC_INVALIDATE, 1); + /* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */ + read_aux_reg(r); + /* Important to wait for flush to complete */ while (read_aux_reg(r) & SLC_CTRL_BUSY); } diff --git a/arch/arm/boot/dts/am57xx-idk-common.dtsi b/arch/arm/boot/dts/am57xx-idk-common.dtsi index 814a720..d0a55b8 100644 --- a/arch/arm/boot/dts/am57xx-idk-common.dtsi +++ b/arch/arm/boot/dts/am57xx-idk-common.dtsi @@ -311,6 +311,13 @@ /* ID & VBUS GPIOs provided in board dts */ }; }; + + tpic2810: tpic2810@60 { + compatible = "ti,tpic2810"; + reg = <0x60>; + gpio-controller; + #gpio-cells = <2>; + }; }; &mcspi3 { @@ -326,13 +333,6 @@ spi-max-frequency = <1000000>; spi-cpol; }; - - tpic2810: tpic2810@60 { - compatible = "ti,tpic2810"; - reg = <0x60>; - gpio-controller; - #gpio-cells = <2>; - }; }; &uart3 { diff --git a/arch/arm/boot/dts/at91-sama5d2_xplained.dts b/arch/arm/boot/dts/at91-sama5d2_xplained.dts index 0b9a59d..30fac04 100644 --- a/arch/arm/boot/dts/at91-sama5d2_xplained.dts +++ b/arch/arm/boot/dts/at91-sama5d2_xplained.dts @@ -148,6 +148,8 @@ uart1: serial@f8020000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1_default>; + atmel,use-dma-rx; + atmel,use-dma-tx; status = "okay"; }; diff --git a/arch/arm/boot/dts/at91-sama5d4_xplained.dts b/arch/arm/boot/dts/at91-sama5d4_xplained.dts index ed7fce2..44d1171 100644 --- a/arch/arm/boot/dts/at91-sama5d4_xplained.dts +++ b/arch/arm/boot/dts/at91-sama5d4_xplained.dts @@ -110,6 +110,8 @@ }; usart3: serial@fc00c000 { + atmel,use-dma-rx; + atmel,use-dma-tx; status = "okay"; }; diff --git a/arch/arm/boot/dts/bcm5301x.dtsi b/arch/arm/boot/dts/bcm5301x.dtsi index f09a2bb..4b60492 100644 --- a/arch/arm/boot/dts/bcm5301x.dtsi +++ b/arch/arm/boot/dts/bcm5301x.dtsi @@ -66,14 +66,14 @@ timer@20200 { compatible = "arm,cortex-a9-global-timer"; reg = <0x20200 0x100>; - interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>; clocks = <&periph_clk>; }; local-timer@20600 { compatible = "arm,cortex-a9-twd-timer"; reg = <0x20600 0x100>; - interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>; clocks = <&periph_clk>; }; diff --git a/arch/arm/boot/dts/bcm958522er.dts b/arch/arm/boot/dts/bcm958522er.dts index a21b0fd..417f657 100644 --- a/arch/arm/boot/dts/bcm958522er.dts +++ b/arch/arm/boot/dts/bcm958522er.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm958525er.dts b/arch/arm/boot/dts/bcm958525er.dts index be7f2f8..5279b76 100644 --- a/arch/arm/boot/dts/bcm958525er.dts +++ b/arch/arm/boot/dts/bcm958525er.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm958525xmc.dts b/arch/arm/boot/dts/bcm958525xmc.dts index 959cde9..872882b 100644 --- a/arch/arm/boot/dts/bcm958525xmc.dts +++ b/arch/arm/boot/dts/bcm958525xmc.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 31 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm958622hr.dts b/arch/arm/boot/dts/bcm958622hr.dts index ad2aa87..a340e1d 100644 --- a/arch/arm/boot/dts/bcm958622hr.dts +++ b/arch/arm/boot/dts/bcm958622hr.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm958623hr.dts b/arch/arm/boot/dts/bcm958623hr.dts index 4ceb8fe..226b652 100644 --- a/arch/arm/boot/dts/bcm958623hr.dts +++ b/arch/arm/boot/dts/bcm958623hr.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm958625hr.dts b/arch/arm/boot/dts/bcm958625hr.dts index 4420025..a1658d0 100644 --- a/arch/arm/boot/dts/bcm958625hr.dts +++ b/arch/arm/boot/dts/bcm958625hr.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/bcm988312hr.dts b/arch/arm/boot/dts/bcm988312hr.dts index 104afe9..ed05e33 100644 --- a/arch/arm/boot/dts/bcm988312hr.dts +++ b/arch/arm/boot/dts/bcm988312hr.dts @@ -55,6 +55,7 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + open-source; priority = <200>; }; }; diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi index 2b65d26..caea6f0 100644 --- a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi +++ b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi @@ -77,11 +77,6 @@ }; }; -&cpu0 { - arm-supply = <&sw1a_reg>; - soc-supply = <&sw1c_reg>; -}; - &fec1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet1>; diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi index 2e37557..76f4e89 100644 --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi @@ -65,13 +65,13 @@ cxo_board { compatible = "fixed-clock"; #clock-cells = <0>; - clock-frequency = <19200000>; + clock-frequency = <25000000>; }; pxo_board { compatible = "fixed-clock"; #clock-cells = <0>; - clock-frequency = <27000000>; + clock-frequency = <25000000>; }; sleep_clk: sleep_clk { diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi index ceb9783..ff7eae8 100644 --- a/arch/arm/boot/dts/sama5d2.dtsi +++ b/arch/arm/boot/dts/sama5d2.dtsi @@ -266,7 +266,7 @@ }; usb1: ohci@00400000 { - compatible = "atmel,sama5d2-ohci", "usb-ohci"; + compatible = "atmel,at91rm9200-ohci", "usb-ohci"; reg = <0x00400000 0x100000>; interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>; clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>; diff --git a/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts index 73c05da..e00539a 100644 --- a/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts +++ b/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts @@ -167,7 +167,7 @@ reg = <8>; label = "cpu"; ethernet = <&gmac>; - phy-mode = "rgmii"; + phy-mode = "rgmii-txid"; fixed-link { speed = <1000>; full-duplex; diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig index 028d2b7..f57ec51 100644 --- a/arch/arm/configs/multi_v7_defconfig +++ b/arch/arm/configs/multi_v7_defconfig @@ -824,6 +824,7 @@ CONFIG_QCOM_SMSM=y CONFIG_QCOM_WCNSS_CTRL=m CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_COMMON_CLK_QCOM=y +CONFIG_QCOM_CLK_RPM=y CONFIG_CHROME_PLATFORMS=y CONFIG_STAGING_BOARD=y CONFIG_CROS_EC_CHARDEV=m diff --git a/arch/arm/configs/qcom_defconfig b/arch/arm/configs/qcom_defconfig index 8c3a010..c73299b 100644 --- a/arch/arm/configs/qcom_defconfig +++ b/arch/arm/configs/qcom_defconfig @@ -157,6 +157,8 @@ CONFIG_DMADEVICES=y CONFIG_QCOM_BAM_DMA=y CONFIG_STAGING=y CONFIG_COMMON_CLK_QCOM=y +CONFIG_QCOM_CLK_RPM=y +CONFIG_QCOM_CLK_SMD_RPM=y CONFIG_APQ_MMCC_8084=y CONFIG_IPQ_LCC_806X=y CONFIG_MSM_GCC_8660=y diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h index 74a44727..a58bbaa 100644 --- a/arch/arm/include/asm/kvm_mmu.h +++ b/arch/arm/include/asm/kvm_mmu.h @@ -150,18 +150,12 @@ static inline void __coherent_cache_guest_page(struct kvm_vcpu *vcpu, * and iterate over the range. */ - bool need_flush = !vcpu_has_cache_enabled(vcpu) || ipa_uncached; - VM_BUG_ON(size & ~PAGE_MASK); - if (!need_flush && !icache_is_pipt()) - goto vipt_cache; - while (size) { void *va = kmap_atomic_pfn(pfn); - if (need_flush) - kvm_flush_dcache_to_poc(va, PAGE_SIZE); + kvm_flush_dcache_to_poc(va, PAGE_SIZE); if (icache_is_pipt()) __cpuc_coherent_user_range((unsigned long)va, @@ -173,7 +167,6 @@ static inline void __coherent_cache_guest_page(struct kvm_vcpu *vcpu, kunmap_atomic(va); } -vipt_cache: if (!icache_is_pipt() && !icache_is_vivt_asid_tagged()) { /* any kind of VIPT cache */ __flush_icache_all(); diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 1f59ea05..b7e0125 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -478,11 +478,10 @@ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); static inline unsigned long __must_check -__copy_from_user(void *to, const void __user *from, unsigned long n) +__arch_copy_from_user(void *to, const void __user *from, unsigned long n) { unsigned int __ua_flags; - check_object_size(to, n, false); __ua_flags = uaccess_save_and_enable(); n = arm_copy_from_user(to, from, n); uaccess_restore(__ua_flags); @@ -495,18 +494,15 @@ extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n); static inline unsigned long __must_check -__copy_to_user(void __user *to, const void *from, unsigned long n) +__arch_copy_to_user(void __user *to, const void *from, unsigned long n) { #ifndef CONFIG_UACCESS_WITH_MEMCPY unsigned int __ua_flags; - - check_object_size(from, n, true); __ua_flags = uaccess_save_and_enable(); n = arm_copy_to_user(to, from, n); uaccess_restore(__ua_flags); return n; #else - check_object_size(from, n, true); return arm_copy_to_user(to, from, n); #endif } @@ -526,25 +522,49 @@ __clear_user(void __user *addr, unsigned long n) } #else -#define __copy_from_user(to, from, n) (memcpy(to, (void __force *)from, n), 0) -#define __copy_to_user(to, from, n) (memcpy((void __force *)to, from, n), 0) +#define __arch_copy_from_user(to, from, n) \ + (memcpy(to, (void __force *)from, n), 0) +#define __arch_copy_to_user(to, from, n) \ + (memcpy((void __force *)to, from, n), 0) #define __clear_user(addr, n) (memset((void __force *)addr, 0, n), 0) #endif -static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) +static inline unsigned long __must_check +__copy_from_user(void *to, const void __user *from, unsigned long n) +{ + check_object_size(to, n, false); + return __arch_copy_from_user(to, from, n); +} + +static inline unsigned long __must_check +copy_from_user(void *to, const void __user *from, unsigned long n) { unsigned long res = n; + + check_object_size(to, n, false); + if (likely(access_ok(VERIFY_READ, from, n))) - res = __copy_from_user(to, from, n); + res = __arch_copy_from_user(to, from, n); if (unlikely(res)) memset(to + (n - res), 0, res); return res; } -static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) +static inline unsigned long __must_check +__copy_to_user(void __user *to, const void *from, unsigned long n) { + check_object_size(from, n, true); + + return __arch_copy_to_user(to, from, n); +} + +static inline unsigned long __must_check +copy_to_user(void __user *to, const void *from, unsigned long n) +{ + check_object_size(from, n, true); + if (access_ok(VERIFY_WRITE, to, n)) - n = __copy_to_user(to, from, n); + n = __arch_copy_to_user(to, from, n); return n; } diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 7e45f69..8e8d20c 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c @@ -178,6 +178,6 @@ EXPORT_SYMBOL(__pv_offset); #endif #ifdef CONFIG_HAVE_ARM_SMCCC -EXPORT_SYMBOL(arm_smccc_smc); -EXPORT_SYMBOL(arm_smccc_hvc); +EXPORT_SYMBOL(__arm_smccc_smc); +EXPORT_SYMBOL(__arm_smccc_hvc); #endif diff --git a/arch/arm/kernel/smccc-call.S b/arch/arm/kernel/smccc-call.S index 2e48b67..e5d4306 100644 --- a/arch/arm/kernel/smccc-call.S +++ b/arch/arm/kernel/smccc-call.S @@ -46,17 +46,19 @@ UNWIND( .fnend) /* * void smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2, * unsigned long a3, unsigned long a4, unsigned long a5, - * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) + * unsigned long a6, unsigned long a7, struct arm_smccc_res *res, + * struct arm_smccc_quirk *quirk) */ -ENTRY(arm_smccc_smc) +ENTRY(__arm_smccc_smc) SMCCC SMCCC_SMC -ENDPROC(arm_smccc_smc) +ENDPROC(__arm_smccc_smc) /* * void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2, * unsigned long a3, unsigned long a4, unsigned long a5, - * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) + * unsigned long a6, unsigned long a7, struct arm_smccc_res *res, + * struct arm_smccc_quirk *quirk) */ -ENTRY(arm_smccc_hvc) +ENTRY(__arm_smccc_hvc) SMCCC SMCCC_HVC -ENDPROC(arm_smccc_hvc) +ENDPROC(__arm_smccc_hvc) diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c index a5265ed..2fd5c13 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c @@ -292,11 +292,18 @@ static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size) phys_addr_t addr = start, end = start + size; phys_addr_t next; + assert_spin_locked(&kvm->mmu_lock); pgd = kvm->arch.pgd + stage2_pgd_index(addr); do { next = stage2_pgd_addr_end(addr, end); if (!stage2_pgd_none(*pgd)) unmap_stage2_puds(kvm, pgd, addr, next); + /* + * If the range is too large, release the kvm->mmu_lock + * to prevent starvation and lockup detector warnings. + */ + if (next != end) + cond_resched_lock(&kvm->mmu_lock); } while (pgd++, addr = next, addr != end); } @@ -803,6 +810,7 @@ void stage2_unmap_vm(struct kvm *kvm) int idx; idx = srcu_read_lock(&kvm->srcu); + down_read(¤t->mm->mmap_sem); spin_lock(&kvm->mmu_lock); slots = kvm_memslots(kvm); @@ -810,6 +818,7 @@ void stage2_unmap_vm(struct kvm *kvm) stage2_unmap_memslot(kvm, memslot); spin_unlock(&kvm->mmu_lock); + up_read(¤t->mm->mmap_sem); srcu_read_unlock(&kvm->srcu, idx); } @@ -829,7 +838,10 @@ void kvm_free_stage2_pgd(struct kvm *kvm) if (kvm->arch.pgd == NULL) return; + spin_lock(&kvm->mmu_lock); unmap_stage2_range(kvm, 0, KVM_PHYS_SIZE); + spin_unlock(&kvm->mmu_lock); + /* Free the HW pgd, one page at a time */ free_pages_exact(kvm->arch.pgd, S2_PGD_SIZE); kvm->arch.pgd = NULL; @@ -1804,6 +1816,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, (KVM_PHYS_SIZE >> PAGE_SHIFT)) return -EFAULT; + down_read(¤t->mm->mmap_sem); /* * A memory region could potentially cover multiple VMAs, and any holes * between them, so iterate over all of them to find out if we can map @@ -1847,8 +1860,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, pa += vm_start - vma->vm_start; /* IO region dirty page logging not allowed */ - if (memslot->flags & KVM_MEM_LOG_DIRTY_PAGES) - return -EINVAL; + if (memslot->flags & KVM_MEM_LOG_DIRTY_PAGES) { + ret = -EINVAL; + goto out; + } ret = kvm_phys_addr_ioremap(kvm, gpa, pa, vm_end - vm_start, @@ -1860,7 +1875,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, } while (hva < reg_end); if (change == KVM_MR_FLAGS_ONLY) - return ret; + goto out; spin_lock(&kvm->mmu_lock); if (ret) @@ -1868,6 +1883,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, else stage2_flush_memslot(kvm, memslot); spin_unlock(&kvm->mmu_lock); +out: + up_read(¤t->mm->mmap_sem); return ret; } diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c index c2b1315..a08d7a9 100644 --- a/arch/arm/kvm/psci.c +++ b/arch/arm/kvm/psci.c @@ -208,9 +208,10 @@ int kvm_psci_version(struct kvm_vcpu *vcpu) static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) { - int ret = 1; + struct kvm *kvm = vcpu->kvm; unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0); unsigned long val; + int ret = 1; switch (psci_fn) { case PSCI_0_2_FN_PSCI_VERSION: @@ -230,7 +231,9 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) break; case PSCI_0_2_FN_CPU_ON: case PSCI_0_2_FN64_CPU_ON: + mutex_lock(&kvm->lock); val = kvm_psci_vcpu_on(vcpu); + mutex_unlock(&kvm->lock); break; case PSCI_0_2_FN_AFFINITY_INFO: case PSCI_0_2_FN64_AFFINITY_INFO: @@ -279,6 +282,7 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) { + struct kvm *kvm = vcpu->kvm; unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0); unsigned long val; @@ -288,7 +292,9 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) val = PSCI_RET_SUCCESS; break; case KVM_PSCI_FN_CPU_ON: + mutex_lock(&kvm->lock); val = kvm_psci_vcpu_on(vcpu); + mutex_unlock(&kvm->lock); break; default: val = PSCI_RET_NOT_SUPPORTED; diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S index 8ecfd15..df73914 100644 --- a/arch/arm/lib/getuser.S +++ b/arch/arm/lib/getuser.S @@ -67,7 +67,7 @@ ENTRY(__get_user_4) ENDPROC(__get_user_4) ENTRY(__get_user_8) - check_uaccess r0, 8, r1, r2, __get_user_bad + check_uaccess r0, 8, r1, r2, __get_user_bad8 #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(ldr) r2, [r0] 6: TUSER(ldr) r3, [r0, #4] diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index b4332b7..31dde8b 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -289,6 +289,22 @@ static void at91_ddr_standby(void) at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); } +static void sama5d3_ddr_standby(void) +{ + u32 lpr0; + u32 saved_lpr0; + + saved_lpr0 = at91_ramc_read(0, AT91_DDRSDRC_LPR); + lpr0 = saved_lpr0 & ~AT91_DDRSDRC_LPCB; + lpr0 |= AT91_DDRSDRC_LPCB_POWER_DOWN; + + at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr0); + + cpu_do_idle(); + + at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0); +} + /* We manage both DDRAM/SDRAM controllers, we need more than one value to * remember. */ @@ -323,7 +339,7 @@ static const struct of_device_id const ramc_ids[] __initconst = { { .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby }, { .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby }, { .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby }, - { .compatible = "atmel,sama5d3-ddramc", .data = at91_ddr_standby }, + { .compatible = "atmel,sama5d3-ddramc", .data = sama5d3_ddr_standby }, { /*sentinel*/ } }; diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S index fe36ce2..4c6f14c 100644 --- a/arch/arm/mach-omap2/omap-headsmp.S +++ b/arch/arm/mach-omap2/omap-headsmp.S @@ -17,6 +17,7 @@ #include <linux/linkage.h> #include <linux/init.h> +#include <asm/assembler.h> #include "omap44xx.h" @@ -66,7 +67,7 @@ wait_2: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0 cmp r0, r4 bne wait_2 ldr r12, =API_HYP_ENTRY - adr r0, hyp_boot + badr r0, hyp_boot smc #0 hyp_boot: b omap_secondary_startup diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 56f917e..507ff07 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -2112,11 +2112,20 @@ static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = { }; /* L4 CORE -> SR1 interface */ +static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = { + { + .pa_start = OMAP34XX_SR1_BASE, + .pa_end = OMAP34XX_SR1_BASE + SZ_1K - 1, + .flags = ADDR_TYPE_RT, + }, + { }, +}; static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap34xx_sr1_hwmod, .clk = "sr_l4_ick", + .addr = omap3_sr1_addr_space, .user = OCP_USER_MPU, }; @@ -2124,15 +2133,25 @@ static struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap36xx_sr1_hwmod, .clk = "sr_l4_ick", + .addr = omap3_sr1_addr_space, .user = OCP_USER_MPU, }; /* L4 CORE -> SR1 interface */ +static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = { + { + .pa_start = OMAP34XX_SR2_BASE, + .pa_end = OMAP34XX_SR2_BASE + SZ_1K - 1, + .flags = ADDR_TYPE_RT, + }, + { }, +}; static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap34xx_sr2_hwmod, .clk = "sr_l4_ick", + .addr = omap3_sr2_addr_space, .user = OCP_USER_MPU, }; @@ -2140,6 +2159,7 @@ static struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap36xx_sr2_hwmod, .clk = "sr_l4_ick", + .addr = omap3_sr2_addr_space, .user = OCP_USER_MPU, }; diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c index 0b8300e..a057cf9 100644 --- a/arch/arm/mach-pxa/ezx.c +++ b/arch/arm/mach-pxa/ezx.c @@ -696,32 +696,7 @@ static struct pxa27x_keypad_platform_data e2_keypad_platform_data = { }; #endif /* CONFIG_MACH_EZX_E2 */ -#ifdef CONFIG_MACH_EZX_A780 -/* gpio_keys */ -static struct gpio_keys_button a780_buttons[] = { - [0] = { - .code = SW_LID, - .gpio = GPIO12_A780_FLIP_LID, - .active_low = 0, - .desc = "A780 flip lid", - .type = EV_SW, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data a780_gpio_keys_platform_data = { - .buttons = a780_buttons, - .nbuttons = ARRAY_SIZE(a780_buttons), -}; - -static struct platform_device a780_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &a780_gpio_keys_platform_data, - }, -}; - +#if defined(CONFIG_MACH_EZX_A780) || defined(CONFIG_MACH_EZX_A910) /* camera */ static struct regulator_consumer_supply camera_dummy_supplies[] = { REGULATOR_SUPPLY("vdd", "0-005d"), @@ -750,6 +725,35 @@ static struct platform_device camera_supply_dummy_device = { .platform_data = &camera_dummy_config, }, }; +#endif + +#ifdef CONFIG_MACH_EZX_A780 +/* gpio_keys */ +static struct gpio_keys_button a780_buttons[] = { + [0] = { + .code = SW_LID, + .gpio = GPIO12_A780_FLIP_LID, + .active_low = 0, + .desc = "A780 flip lid", + .type = EV_SW, + .wakeup = 1, + }, +}; + +static struct gpio_keys_platform_data a780_gpio_keys_platform_data = { + .buttons = a780_buttons, + .nbuttons = ARRAY_SIZE(a780_buttons), +}; + +static struct platform_device a780_gpio_keys = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &a780_gpio_keys_platform_data, + }, +}; + +/* camera */ static int a780_camera_reset(struct device *dev) { gpio_set_value(GPIO19_GEN1_CAM_RST, 0); diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 1117421..51634f7 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -479,6 +479,16 @@ config CAVIUM_ERRATUM_27456 If unsure, say Y. +config QCOM_QDF2400_ERRATUM_0065 + bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size" + default y + help + On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports + ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have + been indicated as 16Bytes (0xf), not 8Bytes (0x7). + + If unsure, say Y. + endmenu diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi index bbf594b..bb8709a 100644 --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi @@ -563,6 +563,7 @@ phy-mode = "rgmii-id"; #address-cells = <1>; #size-cells = <0>; + status = "disabled"; }; can0: can@e6c30000 { diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h index f5ea0ba..fe39e68 100644 --- a/arch/arm64/include/asm/kvm_emulate.h +++ b/arch/arm64/include/asm/kvm_emulate.h @@ -240,6 +240,12 @@ static inline u8 kvm_vcpu_trap_get_fault_type(const struct kvm_vcpu *vcpu) return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC_TYPE; }
_______________________________________________ unionfs-cvs mailing list: http://unionfs.filesystems.org/ unionfs-cvs@fsl.cs.sunysb.edu http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs