Linux 5.4.102
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.102 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/filesystems/seq_file.txt | 6 Makefile | 2 arch/arm/boot/compressed/head.S | 4 arch/arm/boot/dts/armada-388-helios4.dts | 28 arch/arm/boot/dts/aspeed-g4.dtsi | 1 arch/arm/boot/dts/aspeed-g5.dtsi | 1 arch/arm/boot/dts/exynos3250-artik5.dtsi | 2 arch/arm/boot/dts/exynos3250-monk.dts | 2 arch/arm/boot/dts/exynos3250-rinato.dts | 2 arch/arm/boot/dts/exynos5250-spring.dts | 2 arch/arm/boot/dts/exynos5420-arndale-octa.dts | 2 arch/arm/boot/dts/exynos5422-odroid-core.dtsi | 2 arch/arm/boot/dts/omap443x.dtsi | 2 arch/arm/mach-ixp4xx/Kconfig | 1 arch/arm64/Kconfig | 2 arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts | 5 arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi | 1 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 6 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 7 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi | 2 arch/arm64/boot/dts/exynos/exynos7-espresso.dts | 2 arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | 2 arch/arm64/boot/dts/mediatek/mt7622.dtsi | 2 arch/arm64/boot/dts/qcom/msm8916.dtsi | 4 arch/arm64/crypto/aes-glue.c | 4 arch/arm64/crypto/sha1-ce-glue.c | 1 arch/arm64/crypto/sha2-ce-glue.c | 2 arch/arm64/crypto/sha3-ce-glue.c | 4 arch/arm64/crypto/sha512-ce-glue.c | 2 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kernel/head.S | 1 arch/arm64/kernel/machine_kexec_file.c | 4 arch/arm64/kernel/probes/uprobes.c | 2 arch/mips/include/asm/asm.h | 18 arch/mips/kernel/vmlinux.lds.S | 2 arch/mips/lantiq/irq.c | 2 arch/mips/mm/c-r4k.c | 2 arch/powerpc/Kconfig | 2 arch/powerpc/kernel/entry_32.S | 3 arch/powerpc/kernel/head_8xx.S | 2 arch/powerpc/kernel/prom_init.c | 12 arch/powerpc/kvm/powerpc.c | 8 arch/powerpc/platforms/pseries/dlpar.c | 7 arch/s390/kernel/vtime.c | 3 arch/sparc/Kconfig | 2 arch/sparc/lib/memset.S | 1 arch/um/kernel/tlb.c | 12 arch/x86/crypto/aesni-intel_glue.c | 28 arch/x86/include/asm/virtext.h | 17 arch/x86/kernel/reboot.c | 29 arch/x86/kvm/svm.c | 2 arch/x86/kvm/vmx/vmx.c | 2 arch/x86/kvm/x86.c | 38 arch/x86/kvm/x86.h | 2 arch/x86/mm/pat.c | 3 block/bfq-iosched.c | 1 block/blk-settings.c | 12 block/bsg.c | 4 certs/blacklist.c | 2 crypto/ecdh_helper.c | 3 drivers/acpi/acpi_configfs.c | 7 drivers/acpi/property.c | 44 drivers/amba/bus.c | 20 drivers/ata/ahci_brcm.c | 14 drivers/auxdisplay/ht16k33.c | 3 drivers/base/regmap/regmap-sdw.c | 4 drivers/base/swnode.c | 8 drivers/block/floppy.c | 27 drivers/bluetooth/btqcomsmd.c | 27 drivers/bluetooth/btusb.c | 20 drivers/bluetooth/hci_ldisc.c | 7 drivers/bluetooth/hci_serdev.c | 4 drivers/char/hw_random/timeriomem-rng.c | 2 drivers/char/random.c | 2 drivers/char/tpm/tpm_tis_core.c | 50 drivers/clk/clk-ast2600.c | 37 drivers/clk/meson/clk-pll.c | 10 drivers/clk/qcom/gcc-msm8998.c | 100 - drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 10 drivers/clocksource/Kconfig | 1 drivers/clocksource/mxs_timer.c | 5 drivers/cpufreq/brcmstb-avs-cpufreq.c | 24 drivers/cpufreq/intel_pstate.c | 5 drivers/crypto/bcm/cipher.c | 2 drivers/crypto/bcm/cipher.h | 4 drivers/crypto/bcm/util.c | 2 drivers/crypto/chelsio/chtls/chtls_cm.h | 3 drivers/crypto/sunxi-ss/sun4i-ss-cipher.c | 139 +- drivers/crypto/sunxi-ss/sun4i-ss.h | 2 drivers/crypto/talitos.c | 28 drivers/crypto/talitos.h | 1 drivers/dma/fsldma.c | 6 drivers/dma/hsu/pci.c | 21 drivers/dma/owl-dma.c | 1 drivers/gpio/gpio-pcf857x.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 2 drivers/gpu/drm/amd/amdgpu/soc15.c | 2 drivers/gpu/drm/amd/display/dc/bios/command_table.c | 61 drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c | 14 drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c | 1 drivers/gpu/drm/amd/display/dc/dce/dce_transform.c | 8 drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c | 22 drivers/gpu/drm/drm_fb_helper.c | 15 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c | 22 drivers/gpu/drm/gma500/psb_drv.c | 2 drivers/gpu/drm/i915/display/intel_hdmi.c | 6 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 2 drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c | 2 drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h | 1 drivers/gpu/drm/nouveau/nouveau_chan.c | 1 drivers/gpu/drm/nouveau/nouveau_connector.c | 1 drivers/gpu/drm/scheduler/sched_main.c | 3 drivers/gpu/drm/sun4i/sun4i_tcon.c | 21 drivers/gpu/drm/sun4i/sun4i_tcon.h | 1 drivers/hid/hid-core.c | 3 drivers/hid/hid-logitech-dj.c | 1 drivers/hid/wacom_wac.c | 7 drivers/hsi/controllers/omap_ssi_core.c | 2 drivers/hv/channel_mgmt.c | 3 drivers/i2c/busses/i2c-bcm-iproc.c | 231 ++- drivers/i2c/busses/i2c-brcmstb.c | 2 drivers/i2c/busses/i2c-qcom-geni.c | 59 drivers/infiniband/core/cm.c | 8 drivers/infiniband/core/user_mad.c | 17 drivers/infiniband/hw/hns/hns_roce_device.h | 2 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 7 drivers/infiniband/hw/hns/hns_roce_main.c | 3 drivers/infiniband/hw/mlx5/devx.c | 4 drivers/infiniband/hw/mlx5/main.c | 3 drivers/infiniband/sw/rxe/rxe_net.c | 5 drivers/infiniband/sw/rxe/rxe_recv.c | 27 drivers/infiniband/sw/siw/siw.h | 2 drivers/infiniband/sw/siw/siw_main.c | 2 drivers/infiniband/sw/siw/siw_qp.c | 271 ++- drivers/infiniband/sw/siw/siw_qp_rx.c | 26 drivers/infiniband/sw/siw/siw_qp_tx.c | 4 drivers/infiniband/sw/siw/siw_verbs.c | 20 drivers/input/joydev.c | 7 drivers/input/joystick/xpad.c | 1 drivers/input/serio/i8042-x86ia64io.h | 4 drivers/input/touchscreen/elo.c | 4 drivers/input/touchscreen/raydium_i2c_ts.c | 3 drivers/input/touchscreen/sur40.c | 1 drivers/md/bcache/bcache.h | 3 drivers/md/bcache/btree.c | 21 drivers/md/bcache/journal.c | 4 drivers/md/bcache/super.c | 20 drivers/md/dm-core.h | 4 drivers/md/dm-crypt.c | 1 drivers/md/dm-era-target.c | 93 - drivers/md/dm-writecache.c | 18 drivers/md/dm.c | 60 drivers/media/i2c/ov5670.c | 3 drivers/media/pci/cx25821/cx25821-core.c | 4 drivers/media/pci/intel/ipu3/ipu3-cio2.c | 2 drivers/media/pci/saa7134/saa7134-empress.c | 5 drivers/media/pci/smipcie/smipcie-ir.c | 46 drivers/media/platform/aspeed-video.c | 6 drivers/media/platform/pxa_camera.c | 3 drivers/media/platform/qcom/camss/camss-video.c | 1 drivers/media/platform/vsp1/vsp1_drv.c | 4 drivers/media/rc/mceusb.c | 2 drivers/media/tuners/qm1d1c0042.c | 4 drivers/media/usb/dvb-usb-v2/lmedm04.c | 2 drivers/media/usb/em28xx/em28xx-core.c | 6 drivers/media/usb/tm6000/tm6000-dvb.c | 4 drivers/media/usb/uvc/uvc_v4l2.c | 18 drivers/memory/mtk-smi.c | 4 drivers/memory/ti-aemif.c | 8 drivers/mfd/bd9571mwv.c | 6 drivers/mfd/wm831x-auxadc.c | 3 drivers/misc/cardreader/rts5227.c | 5 drivers/misc/eeprom/eeprom_93xx46.c | 1 drivers/misc/mei/hbm.c | 2 drivers/misc/vmw_vmci/vmci_queue_pair.c | 5 drivers/mmc/host/renesas_sdhi_internal_dmac.c | 4 drivers/mmc/host/sdhci-esdhc-imx.c | 3 drivers/mmc/host/sdhci-sprd.c | 6 drivers/mmc/host/usdhi6rol0.c | 4 drivers/mtd/parsers/afs.c | 4 drivers/mtd/parsers/parser_imagetag.c | 4 drivers/mtd/spi-nor/cadence-quadspi.c | 2 drivers/mtd/spi-nor/hisi-sfc.c | 4 drivers/mtd/spi-nor/spi-nor.c | 15 drivers/net/ethernet/amd/xgbe/xgbe-common.h | 14 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 1 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 3 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 39 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h | 3 drivers/net/ethernet/chelsio/cxgb4/sge.c | 11 drivers/net/ethernet/ibm/ibmvnic.c | 16 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 16 drivers/net/ethernet/intel/i40e/i40e_main.c | 50 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 9 drivers/net/ethernet/marvell/mvneta.c | 9 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 1 drivers/net/ethernet/realtek/r8169_main.c | 4 drivers/net/ethernet/sun/sunvnet_common.c | 23 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 26 drivers/net/gtp.c | 5 drivers/net/vxlan.c | 11 drivers/net/wireless/ath/ath10k/snoc.c | 5 drivers/net/wireless/ath/ath9k/debug.c | 5 drivers/net/wireless/broadcom/b43/phy_n.c | 2 drivers/net/xen-netback/interface.c | 8 drivers/nvmem/core.c | 5 drivers/of/fdt.c | 12 drivers/pci/controller/dwc/pcie-qcom.c | 4 drivers/pci/setup-res.c | 6 drivers/pci/syscall.c | 10 drivers/phy/rockchip/phy-rockchip-emmc.c | 8 drivers/power/reset/at91-sama5d2_shdwc.c | 2 drivers/pwm/pwm-rockchip.c | 1 drivers/regulator/axp20x-regulator.c | 7 drivers/regulator/core.c | 6 drivers/regulator/qcom-rpmh-regulator.c | 2 drivers/regulator/s5m8767.c | 15 drivers/rtc/Kconfig | 1 drivers/s390/virtio/virtio_ccw.c | 4 drivers/scsi/bnx2fc/Kconfig | 1 drivers/soc/aspeed/aspeed-lpc-snoop.c | 30 drivers/soundwire/cadence_master.c | 8 drivers/spi/spi-atmel.c | 2 drivers/spi/spi-pxa2xx-pci.c | 27 drivers/spi/spi-s3c24xx-fiq.S | 9 drivers/spi/spi-stm32.c | 4 drivers/spi/spi-synquacer.c | 4 drivers/spmi/spmi-pmic-arb.c | 5 drivers/staging/gdm724x/gdm_usb.c | 10 drivers/staging/media/imx/imx-media-csc-scaler.c | 4 drivers/staging/media/imx/imx-media-dev.c | 7 drivers/staging/mt7621-dma/Makefile | 2 drivers/staging/mt7621-dma/hsdma-mt7621.c | 762 +++++++++++ drivers/staging/mt7621-dma/mtk-hsdma.c | 762 ----------- drivers/staging/rtl8188eu/os_dep/usb_intf.c | 1 drivers/staging/rtl8723bs/os_dep/wifi_regd.c | 2 drivers/target/iscsi/cxgbit/cxgbit_target.c | 3 drivers/usb/dwc2/hcd.c | 15 drivers/usb/dwc2/hcd_intr.c | 14 drivers/usb/dwc3/gadget.c | 19 drivers/usb/gadget/function/u_audio.c | 17 drivers/usb/musb/musb_core.c | 31 drivers/usb/serial/ftdi_sio.c | 5 drivers/usb/serial/mos7720.c | 4 drivers/usb/serial/mos7840.c | 4 drivers/usb/serial/option.c | 3 drivers/vfio/vfio_iommu_type1.c | 46 drivers/video/fbdev/Kconfig | 2 drivers/virt/vboxguest/vboxguest_utils.c | 18 drivers/watchdog/mei_wdt.c | 1 drivers/watchdog/qcom-wdt.c | 13 fs/affs/namei.c | 4 fs/btrfs/block-group.c | 19 fs/btrfs/ctree.c | 7 fs/btrfs/free-space-cache.c | 6 fs/btrfs/relocation.c | 4 fs/debugfs/inode.c | 5 fs/erofs/xattr.c | 10 fs/erofs/zmap.c | 10 fs/ext4/namei.c | 7 fs/f2fs/data.c | 2 fs/f2fs/file.c | 7 fs/f2fs/inline.c | 4 fs/gfs2/bmap.c | 6 fs/gfs2/lock_dlm.c | 8 fs/isofs/dir.c | 1 fs/isofs/namei.c | 1 fs/jffs2/summary.c | 3 fs/jfs/jfs_dmap.c | 2 fs/nfsd/nfsctl.c | 14 fs/ocfs2/cluster/heartbeat.c | 8 fs/pstore/platform.c | 4 fs/quota/quota_v2.c | 11 fs/ubifs/auth.c | 2 fs/ubifs/super.c | 4 include/acpi/acexcep.h | 10 include/asm-generic/vmlinux.lds.h | 7 include/linux/bpf.h | 3 include/linux/device-mapper.h | 5 include/linux/filter.h | 2 include/linux/icmpv6.h | 48 include/linux/ipv6.h | 1 include/linux/kexec.h | 5 include/linux/key.h | 1 include/linux/rcupdate.h | 2 include/linux/rmap.h | 3 include/net/act_api.h | 1 include/net/icmp.h | 10 include/net/tcp.h | 9 kernel/bpf/bpf_lru_list.c | 7 kernel/debug/kdb/kdb_private.h | 2 kernel/kexec_file.c | 5 kernel/module.c | 21 kernel/printk/printk_safe.c | 16 kernel/rcu/tree.c | 8 kernel/rcu/tree_plugin.h | 5 kernel/sched/fair.c | 2 kernel/sched/idle.c | 1 kernel/seccomp.c | 2 kernel/tracepoint.c | 80 - mm/compaction.c | 27 mm/hugetlb.c | 10 mm/memory.c | 16 net/bluetooth/a2mp.c | 3 net/bluetooth/hci_core.c | 6 net/core/filter.c | 13 net/ipv4/icmp.c | 34 net/ipv6/icmp.c | 19 net/ipv6/ip6_icmp.c | 46 net/mac80211/mesh_hwmp.c | 2 net/qrtr/tun.c | 12 net/sched/act_api.c | 2 net/sched/cls_api.c | 1 net/xfrm/xfrm_interface.c | 6 security/commoncap.c | 12 security/integrity/evm/evm_crypto.c | 7 security/integrity/ima/ima_kexec.c | 3 security/integrity/ima/ima_mok.c | 5 security/keys/key.c | 2 security/keys/trusted.c | 2 sound/pci/hda/hda_intel.c | 2 sound/pci/hda/patch_realtek.c | 11 sound/soc/codecs/cpcap.c | 12 sound/soc/codecs/cs42l56.c | 3 sound/soc/generic/simple-card-utils.c | 13 sound/soc/sof/debug.c | 2 sound/usb/pcm.c | 2 tools/objtool/check.c | 12 tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json | 2 tools/perf/tests/sample-parsing.c | 2 tools/perf/util/event.c | 2 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 14 tools/perf/util/intel-pt-decoder/intel-pt-decoder.h | 1 tools/perf/util/intel-pt.c | 16 tools/testing/selftests/powerpc/eeh/eeh-basic.sh | 2 337 files changed, 3226 insertions(+), 1994 deletions(-)
Adrian Hunter (2):
perf intel-pt: Fix missing CYC processing in PSB perf intel-pt: Fix premature IPC
Ahmad Fatoum (1):
nvmem: core: skip child nodes not matching binding
Al Viro (1):
sparc32: fix a user-triggerable oops in clear_user()
Alain Volmat (1):
spi: stm32: properly handle 0 byte transfer
Alex Deucher (1):
drm/amdgpu: Set reference clock to 100Mhz on Renoir (v2)
Alex Williamson (1):
vfio/type1: Use follow_pte()
Alexander Lobakin (2):
MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section
MIPS: properly stop .eh_frame generation
Alexander Usyskin (2):
mei: hbm: call mei_set_devstate() on hbm stop response
watchdog: mei_wdt: request stop on unregister
Amey Narkhede (1):
staging: gdm724x: Fix DMA from stack
Andre Przywara (7):
arm64: dts: allwinner: A64: properly connect USB PHY to port 0
arm64: dts: allwinner: H6: properly connect USB PHY to port 0
arm64: dts: allwinner: Drop non-removable from SoPine/LTS SD card
arm64: dts: allwinner: H6: Allow up to 150 MHz MMC bus frequency
arm64: dts: allwinner: A64: Limit MMC2 bus frequency to 150 MHz
clk: sunxi-ng: h6: Fix CEC clock
clk: sunxi-ng: h6: Fix clock divider range on some clocks
Andrea Parri (Microsoft) (1):
Drivers: hv: vmbus: Avoid use-after-free in vmbus_onoffer_rescind()
Andreas Gruenbacher (1):
gfs2: Recursive gfs2_quota_hold in gfs2_iomap_end
Andrey Grodzovsky (1):
drm/sched: Cancel and flush all outstanding jobs before finish.
Andrii Nakryiko (2):
bpf: Add bpf_patch_call_args prototype to include/linux/bpf.h
bpf: Avoid warning when re-casting __bpf_call_base into __bpf_call_base_args
Andy Shevchenko (1):
spi: pxa2xx: Fix the controller numbering for Wildcat Point
AngeloGioacchino Del Regno (1):
clk: qcom: gcc-msm8998: Fix Alpha PLL type for all GPLLs
Ansuel Smith (1):
PCI: qcom: Use PHY_REFCLK_USE_PAD only for ipq8064
Ard Biesheuvel (4):
PCI: Decline to resize resources if boot config must be preserved
crypto: arm64/aes-ce - really hide slower algos when faster ones are enabled
crypto: arm64/sha - add missing module aliases
crypto: aesni - prevent misaligned buffers on the stack
Arnaldo Carvalho de Melo (1):
perf tools: Fix DSO filtering when not finding a map for a sampled address
Arnd Bergmann (2):
ARM: s3c: fix fiq for clang IAS clocksource/drivers/ixp4xx: Select TIMER_OF when needed
Aswath Govindraju (2):
misc: eeprom_93xx46: Fix module alias to enable module autoprobe
misc: eeprom_93xx46: Add module alias to avoid breaking support for non device tree users
Ayush Sawal (1):
cxgb4/chtls/cxgbit: Keeping the max ofld immediate data size same in cxgb4 and ulds
Bard Liao (1):
regmap: sdw: use _no_pm functions in regmap_read/write
Bartosz Golaszewski (1):
rtc: s5m: select REGMAP_I2C
Bernard Metzler (1):
RDMA/siw: Fix handling of zero-sized Read and Receive Queues.
Bob Pearson (3):
RDMA/rxe: Fix coding error in rxe_recv.c RDMA/rxe: Fix coding error in rxe_rcv_mcast_pkt RDMA/rxe: Correct skb on loopback path
Bob Peterson (1):
gfs2: Don't skip dlm unlock if glock has an lvb
Chao Yu (1):
f2fs: fix out-of-repair __setattr_copy()
Chen Yu (1):
cpufreq: intel_pstate: Get per-CPU max freq via MSR_HWP_CAPABILITIES if available
Chen-Yu Tsai (1):
staging: rtl8723bs: wifi_regd.c: Fix incorrect number of regulatory rules
Chenyang Li (1):
drm/amdgpu: Fix macro name _AMDGPU_TRACE_H_ in preprocessor if condition
Chris Ruehl (1):
phy: rockchip-emmc: emmc_phy_init() always return 0
Christophe JAILLET (10):
Bluetooth: btqcomsmd: Fix a resource leak in error handling paths in the probe function
cpufreq: brcmstb-avs-cpufreq: Free resources in error path
cpufreq: brcmstb-avs-cpufreq: Fix resource leaks in ->remove()
media: vsp1: Fix an error handling path in the probe function
media: cx25821: Fix a bug when reallocating some dma memory
dmaengine: fsldma: Fix a resource leak in the remove function
dmaengine: fsldma: Fix a resource leak in an error handling path of the probe function
dmaengine: owl-dma: Fix a resource leak in the remove function
mmc: sdhci-sprd: Fix some resource leaks in the remove function
mmc: usdhi6rol0: Fix a resource leak in the error handling path of the probe
Christophe Leroy (4):
crypto: talitos - Work around SEC6 ERRATA (AES-CTR mode data size error) powerpc/47x: Disable 256k page size
powerpc/8xx: Fix software emulation interrupt
powerpc/32s: Add missing call to kuep_lock on syscall entry
Christopher William Snowhill (1):
Bluetooth: Fix initializing response id after clearing struct
Chuhong Yuan (2):
drm/fb-helper: Add missed unlocks in setcmap_legacy() net/mlx4_core: Add missed mlx4_free_cmd_mailbox()
Claire Chang (1):
Bluetooth: hci_uart: Fix a race for write_work scheduling
Claudiu Beznea (1):
power: reset: at91-sama5d2_shdwc: fix wkupdbc mask
Colin Ian King (3):
mac80211: fix potential overflow when multiplying to u32 integers
b43: N-PHY: Fix the update of coef for the PHY revision >= 3case fs/jfs: fix potential integer overflow on shift of a int
Corentin Labbe (5):
crypto: sun4i-ss - linearize buffers content must be kept
crypto: sun4i-ss - fix kmap usage
crypto: sun4i-ss - checking sg length is not sufficient
crypto: sun4i-ss - handle BigEndian for cipher
crypto: sun4i-ss - initialize need_fallback
Cornelia Huck (1):
virtio/s390: implement virtio-ccw revision 2 correctly
Cédric Le Goater (2):
KVM: PPC: Make the VMX instruction emulation routines static powerpc/prom: Fix "ibm,arch-vec-5-platform-support" scan
Dan Carpenter (13):
gma500: clean up error handling in init
media: camss: missing error code in msm_video_register()
ASoC: cs42l56: fix up error handling in probe
mtd: parser: imagetag: fix error codes in bcm963xx_parse_imagetag_partitions() drm/amdgpu: Prevent shift wrapping in amdgpu_read_mask()
mfd: wm831x-auxadc: Prevent use after free in wm831x_auxadc_read_irq()
Input: sur40 - fix an error code in sur40_probe()
Input: elo - fix an error code in elo_connect()
nvmem: core: Fix a resource leak on error in nvmem_add_cells_from_of()
ocfs2: fix a use after free on error
Input: joydev - prevent potential read overflow in ioctl
USB: serial: mos7840: fix error code in mos7840_write()
USB: serial: mos7720: fix error code in mos7720_write()
Daniel Scally (1):
media: software_node: Fix refcounts in software_node_get_next_child()
Daniele Alessandrelli (1):
crypto: ecdh_helper - Ensure 'len >= secret.len' in decode_key()
David Howells (1):
certs: Fix blacklist flag type confusion
Dehe Gu (1):
f2fs: fix a wrong condition in __submit_bio
Dinghao Liu (5):
media: em28xx: Fix use-after-free in em28xx_alloc_urbs
media: media/pci: Fix memleak in empress_init
media: tm6000: Fix memleak in tm6000_start_stream
evm: Fix memleak in init_desc
ubifs: Fix memleak in ubifs_init_authentication
Edwin Peer (1):
bnxt_en: reverse order of TX disable and carrier off
Eric Biggers (1):
random: fix the RNDRESEEDCRNG ioctl
Eric Dumazet (2):
tcp: fix SO_RCVLOWAT related hangs under mem pressure
ipv6: icmp6: avoid indirect call for icmpv6_send()
Eric W. Biederman (1):
capabilities: Don't allow writing ambiguous v3 file capabilities
Ezequiel Garcia (2):
media: imx: Unregister csc/scaler only if registered
media: imx: Fix csc/scaler unregister
Fangrui Song (1):
module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for undefined symbols
Ferry Toth (1):
dmaengine: hsu: disable spurious interrupt
Filipe Laíns (1):
HID: logitech-dj: add support for keyboard events in eQUAD step 4 Gaming
Filipe Manana (1):
btrfs: fix extent buffer leak on failure to copy root
Florian Fainelli (1):
ata: ahci_brcm: Add back regulators management
Frank Li (1):
mmc: sdhci-esdhc-imx: fix kernel panic when remove module
Frank Wunderlich (1):
dts64: mt7622: fix slow sd card access
Frantisek Hrbata (1):
drm/nouveau: bail out of nouveau_channel_new if channel init fails
Frederic Weisbecker (2):
rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers rcu/nocb: Perform deferred wake up before last idle's need_resched() check
Gao Xiang (1):
erofs: initialized fields can only be observed after bit is set
Geert Uytterhoeven (1):
auxdisplay: ht16k33: Fix refresh rate handling
Giulio Benetti (1):
drm/sun4i: tcon: fix inverted DCLK polarity
Greg Kroah-Hartman (3):
debugfs: be more robust at handling improper input in debugfs_lookup()
debugfs: do not attempt to create a new file before the filesystem is initalized Linux 5.4.102
Guenter Roeck (3):
usb: dwc2: Do not update data length if it is 0 on inbound transfers
usb: dwc2: Abort transaction after errors with unknown reason
usb: dwc2: Make "trimming xfer length" a debug message
Hans de Goede (2):
virt: vbox: Do not use wait_event_interruptible when called from kernel context
regulator: core: Avoid debugfs: Directory ... already present! error
He Zhe (1):
arm64: uprobe: Return EOPNOTSUPP for AARCH32 instruction probing
Heiko Carstens (1):
s390/vtime: fix inline assembly clobber list
Heiner Kallweit (2):
PCI: Align checking of syscall user config accessors
r8169: fix jumbo packet handling on RTL8168e
Hui Wang (1):
ASoC: SOF: debug: Fix a potential issue on string buffer termination
Ilya Lipnitskiy (1):
staging/mt7621-dma: mtk-hsdma.c->hsdma-mt7621.c
Iskren Chernev (1):
drm/msm/mdp5: Fix wait-for-commit for cmd panels
J. Bruce Fields (1):
nfsd: register pernet ops last, unregister first
Jack Pham (1):
usb: gadget: u_audio: Free requests only after callback
Jacopo Mondi (1):
media: i2c: ov5670: Fix PIXEL_RATE minimum value
Jae Hyun Yoo (1):
soc: aspeed: snoop: Add clock control logic
James Bottomley (2):
tpm_tis: Fix check_locality for correct locality acquisition
tpm_tis: Clean up locality release
James Reynolds (1):
media: mceusb: Fix potential out-of-bounds shift
Jan Henrik Weinstock (1):
hwrng: timeriomem - Fix cooldown period calculation
Jan Kara (2):
bfq: Avoid false bfq queue merging
quota: Fix memory leak when handling corrupted quota file
Jarkko Sakkinen (1):
KEYS: trusted: Fix migratable=1 failing
Jason A. Donenfeld (6):
icmp: introduce helper for nat'd source address in network device context
icmp: allow icmpv6_ndo_send to work with CONFIG_IPV6=n
gtp: use icmp_ndo_send helper
sunvnet: use icmp_ndo_send helper
xfrm: interface: use icmp_ndo_send helper
net: icmp: pass zeroed opts from icmp{,v6}_ndo_send before sending
Jason Gerecke (1):
HID: wacom: Ignore attempts to overwrite the touch_max value from HID
Jesper Dangaard Brouer (1):
bpf: Fix bpf_fib_lookup helper MTU check for SKB ctx
Jialin Zhang (1):
drm/gma500: Fix error return code in psb_driver_load()
Jiri Bohac (1):
pstore: Fix typo in compression option name
Jiri Kosina (1):
floppy: reintroduce O_NDELAY fix
Jiri Olsa (1):
crypto: bcm - Rename struct device_private to bcm_device_private
Joe Perches (1):
media: lmedm04: Fix misuse of comma
Johan Hovold (1):
USB: serial: ftdi_sio: fix FTX sub-integer prescaler
Johannes Berg (1):
um: mm: check more comprehensively for stub changes
John Garry (1):
perf vendor events arm64: Fix Ampere eMag event typo
John Wang (1):
ARM: dts: aspeed: Add LCLK to lpc-snoop
Jonathan Marek (1):
regulator: qcom-rpmh: fix pm8009 ldo7
Jorgen Hansen (1):
VMCI: Use set_page_dirty_lock() when unregistering guest memory
Josef Bacik (3):
btrfs: abort the transaction if we fail to inc ref in btrfs_copy_root
btrfs: fix reloc root leak with 0 ref reloc roots on recovery
btrfs: splice remaining dirty_bg's onto the transaction dirty bg list
Josh Poimboeuf (2):
objtool: Fix error handling for STD/CLD warnings
objtool: Fix ".cold" section suffix check for newer versions of GCC
Juergen Gross (1):
xen/netback: fix spurious event detection for common event case
Jupeng Zhong (1):
Bluetooth: btusb: Fix memory leak in btusb_mtk_wmt_recv
Kai Krakow (3):
Revert "bcache: Kill btree_io_wq"
bcache: Give btree_io_wq correct semantics again
bcache: Move journal work to new flush wq
Kai Vehmanen (1):
ALSA: hda: Add another CometLake-H PCI ID
Kamal Heib (1):
RDMA/siw: Fix calculation of tx_valid_cpus size
KarimAllah Ahmed (1):
fdt: Properly handle "no-map" field in the memory region
Karol Herbst (1):
drm/nouveau/kms: handle mDP connectors
Keqian Zhu (1):
vfio/iommu_type1: Fix some sanity checks in detach group
Konrad Dybcio (1):
drm/msm/dsi: Correct io_start for MSM8994 (20nm PHY)
Krzysztof Kozlowski (9):
ARM: dts: exynos: correct PMIC interrupt trigger level on Artik 5
ARM: dts: exynos: correct PMIC interrupt trigger level on Monk
ARM: dts: exynos: correct PMIC interrupt trigger level on Rinato
ARM: dts: exynos: correct PMIC interrupt trigger level on Spring
ARM: dts: exynos: correct PMIC interrupt trigger level on Arndale Octa
ARM: dts: exynos: correct PMIC interrupt trigger level on Odroid XU3 family
arm64: dts: exynos: correct PMIC interrupt trigger level on TM2
arm64: dts: exynos: correct PMIC interrupt trigger level on Espresso
regulator: s5m8767: Drop regulators OF node reference
Lakshmi Ramasubramanian (2):
ima: Free IMA measurement buffer on error
ima: Free IMA measurement buffer after kexec syscall
Lang Cheng (1):
RDMA/hns: Fixes missing error code of CMDQ
Laurent Pinchart (1):
media: uvcvideo: Accept invalid bFormatIndex and bFrameIndex values
Lech Perczak (1):
USB: serial: option: update interface mapping for ZTE P685M
Leon Romanovsky (1):
ipv6: silence compilation warning for non-IPV6 builds
Lijun Pan (2):
ibmvnic: add memory barrier to protect long term buffer
ibmvnic: skip send_request_unmap for timeout reset
Linus Lüssing (1):
ath9k: fix data bus crash when setting nf_override via debugfs
Luo Meng (1):
media: qm1d1c0042: fix error return code in qm1d1c0042_init()
Manivannan Sadhasivam (1):
mtd: parsers: afs: Fix freeing the part name memory in failure
Marc Zyngier (1):
arm64: Add missing ISB after invalidating TLB in __primary_switch
Marco Elver (1):
bpf_lru_list: Read double-checked variable once without lock
Marcos Paulo de Souza (1):
Input: i8042 - add ASUS Zenbook Flip to noselftest list
Marek Behún (1):
arm64: dts: armada-3720-turris-mox: rename u-boot mtd partition to a53-firmware
Mario Kleiner (2):
drm/amd/display: Fix 10/12 bpc setup in DCE output bit depth reduction. drm/amd/display: Fix HDMI deep color output for DCE 6-11.
Martin Blumenstingl (3):
clk: meson: clk-pll: fix initializing the old rate (fallback) for a PLL
clk: meson: clk-pll: make "ret" a signed integer
clk: meson: clk-pll: propagate the error from meson_clk_pll_set_rate()
Martin Kaiser (1):
staging: rtl8188eu: Add Edimax EW-7811UN V2 to device table
Masahisa Kojima (1):
spi: spi-synquacer: fix set_cs handling
Mateusz Palczewski (4):
i40e: Add zero-initialization of AQ command structures
i40e: Fix overwriting flow control settings during driver loading
i40e: Fix addition of RX filters after enabling FW LLDP agent
i40e: Fix add TC filter for IPv6
Maxim Kiselev (1):
gpio: pcf857x: Fix missing first interrupt
Maxim Levitsky (1):
kvm: x86: replace kvm_spec_ctrl_test_value with runtime test on the host
Maxime Chevallier (1):
net: mvneta: Remove per-cpu queue mapping for Armada 3700
Maxime Ripard (1):
i2c: brcmstb: Fix brcmstd_send_i2c_cmd condition
Maximilian Luz (1):
ACPICA: Fix exception code class checks
Miaohe Lin (3):
mm/memory.c: fix potential pte_unmap_unlock pte error mm/hugetlb: fix potential double free in hugetlb_register_node() error path mm/rmap: fix potential pte_unmap on an not mapped pte
Mike Kravetz (2):
hugetlb: fix update_and_free_page contig page struct assumption
hugetlb: fix copy_huge_page_from_user contig page struct assumption
Mikulas Patocka (3):
blk-settings: align max_sectors on "logical_block_size" boundary
dm: fix deadlock when swapping to encrypted device
dm writecache: fix writing beyond end of underlying device when shrinking
Muchun Song (1):
printk: fix deadlock when kernel panic
Namhyung Kim (1):
perf test: Fix unaligned access in sample parsing test
Nathan Chancellor (2):
MIPS: c-r4k: Fix section mismatch for loongson2_sc_init
MIPS: lantiq: Explicitly compare LTQ_EBU_PCC_ISTAT against 0
Nathan Lynch (1):
powerpc/pseries/dlpar: handle ibm, configure-connector delay status
NeilBrown (2):
seq_file: document how per-entry resources are managed.
x86: fix seq_file iteration for pat/memtype.c
Nick Desaulniers (1):
vmlinux.lds.h: add DWARF v5 sections
Nicolas Boichat (1):
of/fdt: Make sure no-map does not remove already reserved regions
Nikos Tsironis (7):
dm era: Recover committed writeset after crash
dm era: Verify the data block size hasn't changed
dm era: Fix bitset memory leaks
dm era: Use correct value size in equality function of writeset tree dm era: Reinitialize bitset cache before digesting a new writeset dm era: only resize metadata in preresume
dm era: Update in-core bitset after committing the metadata
Olivier Crête (1):
Input: xpad - add support for PowerA Enhanced Wired Controller for Xbox Series X|S
Pan Bian (10):
Bluetooth: drop HCI device reference before return
Bluetooth: Put HCI device if inquiry procedure interrupts
memory: ti-aemif: Drop child node when jumping out loop
bsg: free the request before return error code
regulator: axp20x: Fix reference cout leak
regulator: s5m8767: Fix reference count leak
spi: atmel: Put allocated master before return
isofs: release buffer head before return
mtd: spi-nor: hisi-sfc: Put child node np on error path fs/affs: release old buffer head on error path
Parav Pandit (2):
IB/mlx5: Return appropriate error code instead of ENOMEM IB/cm: Avoid a loop when device has 255 ports
Paul Cercueil (2):
usb: musb: Fix runtime PM race in musb_queue_resume_work
seccomp: Add missing return in non-void function
Pavel Machek (1):
media: ipu3-cio2: Fix mbus_code processing in cio2_subdev_set_fmt()
PeiSen Hou (1):
ALSA: hda/realtek: modify EAPD in the ALC886
Pierre-Louis Bossart (1):
soundwire: cadence: fix ACK/NAK handling
Po-Hsu Lin (1):
selftests/powerpc: Make the test check in eeh-basic.sh posix compliant
Pratyush Yadav (1):
spi: cadence-quadspi: Abort read if dummy cycles required are too many
Qais Yousef (1):
sched/eas: Don't update misfit status if the task is pinned
Qinglang Miao (1):
ACPI: configfs: add missing check after configfs_register_default_group()
Rafael J. Wysocki (1):
ACPI: property: Fix fwnode string properties matching
Rakesh Pillai (1):
ath10k: Fix error handling in case of CE pipe init failure
Randy Dunlap (4):
fbdev: aty: SPARC64 requires FB_ATY_CT
HID: core: detect and skip invalid inputs to snto32()
sparc64: only select COMPAT_BINFMT_ELF if BINFMT_ELF is set
scsi: bnx2fc: Fix Kconfig warning & CNIC build errors
Rayagonda Kokatanur (3):
i2c: iproc: handle only slave interrupts which are enabled
i2c: iproc: update slave isr mask (ISR_MASK_SLAVE)
i2c: iproc: handle master read request
Ricky Wu (1):
misc: rtsx: init of rts522a add OCP power off when no card is present
Robert Hancock (1):
net: axienet: Handle deferred probe on clock properly
Rodrigo Siqueira (1):
drm/amd/display: Add vupdate_no_lock interrupts for DCN2.1
Roja Rani Yarubandi (1):
i2c: qcom-geni: Store DMA mapping data in geni_i2c_dev struct
Rosen Penev (2):
ARM: dts: armada388-helios4: assign pinctrl to LEDs
ARM: dts: armada388-helios4: assign pinctrl to each fan
Ryan Chen (1):
clk: aspeed: Fix APLL calculate formula from ast2600-A2
Sabyrzhan Tasbolatov (1):
drivers/misc/vmw_vmci: restrict too big queue size in qp_host_alloc_queue
Sai Prakash Ranjan (1):
watchdog: qcom: Remove incorrect usage of QCOM_WDT_ENABLE_IRQ
Sameer Pujar (1):
ASoC: simple-card-utils: Fix device module clock
Sean Christopherson (2):
x86/virt: Eat faults on VMXOFF in reboot flows x86/reboot: Force all cpus to exit VMX root if VMX is supported
Sean Young (1):
media: smipcie: fix interrupt handling and IR timeout
Sebastian Reichel (1):
ASoC: cpcap: fix microphone timeslot mask
Shay Drory (2):
IB/umad: Return EIO in case of when device disassociated IB/umad: Return EPOLLERR in case of when device disassociated
Shyam Sundar S K (4):
net: amd-xgbe: Reset the PHY rx data path when mailbox command timeout
net: amd-xgbe: Fix NETDEV WATCHDOG transmit queue timeout warning
net: amd-xgbe: Reset link when the link never comes back
net: amd-xgbe: Fix network fluctuations when using 1G BELFUSE SFP
Simon South (1):
pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare()
Slawomir Laba (1):
i40e: Fix flow for IPv6 next header (extension header)
Steven Rostedt (VMware) (1):
tracepoint: Do not fail unregistering a probe due to memory failure
Subbaraman Narayanamurthy (1):
spmi: spmi-pmic-arb: Fix hw_irq overflow
Sukadev Bhattiprolu (1):
ibmvnic: Set to CLOSED state even on error
Sumit Garg (1):
kdb: Make memory allocations more robust
Suzuki K Poulose (1):
arm64: Extend workaround for erratum 1024718 to all versions of Cortex-A55
Sylwester Dziedziuch (1):
i40e: Fix VFs not created
Taehee Yoo (1):
vxlan: move debug check after netdev unregister
Takahiro Kuwano (4):
mtd: spi-nor: sfdp: Fix last erase region marking
mtd: spi-nor: sfdp: Fix wrong erase type bitmask for overlaid region
mtd: spi-nor: core: Fix erase type discovery for overlaid region
mtd: spi-nor: core: Add erase size check for erase command initialization
Takashi Iwai (1):
ALSA: usb-audio: Fix PCM buffer allocation in non-vmalloc mode
Takeshi Misawa (1):
net: qrtr: Fix memory leak in qrtr_tun_open
Takeshi Saito (1):
mmc: renesas_sdhi_internal_dmac: Fix DMA buffer alignment from 8 to 128-bytes
Theodore Ts'o (1):
ext4: fix potential htree index checksum corruption
Thinh Nguyen (2):
usb: dwc3: gadget: Fix setting of DEPCFG.bInterval_m1
usb: dwc3: gadget: Fix dep->interval for fullspeed interrupt
Tom Rix (3):
media: pxa_camera: declare variable when DEBUG is defined
jffs2: fix use after free in jffs2_sum_write_data() clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined
Tony Lindgren (1):
ARM: dts: Configure missing thermal interrupt for 4430
Uwe Kleine-König (1):
amba: Fix resource leak for drivers without .remove
Ville Syrjälä (1):
drm/i915: Reject 446-480MHz HDMI clock on GLK
Vincent Knecht (1):
arm64: dts: msm8916: Fix reserved and rfsa nodes unit address
Vlad Buslov (1):
net: sched: fix police ext initialization
Vladimir Murzin (1):
ARM: 9046/1: decompressor: Do not clear SCTLR.nTLSMD for ARMv7+ cores
Wang ShaoBo (1):
ubifs: Fix error return code in alloc_wbufs()
Weihang Li (1):
RDMA/hns: Fix type of sq_signal_bits
Wenpeng Liang (1):
RDMA/hns: Fixed wrong judgments in the goto branch
Wonhyuk Yang (1):
mm/compaction: fix misbehaviors of fast_find_migrateblock()
Yi Chen (1):
f2fs: fix to avoid inconsistent quota data
Yishai Hadas (1):
RDMA/mlx5: Use the correct obj_id upon DEVX TIR creation
Yoshihiro Shimoda (1):
mfd: bd9571mwv: Use devm_mfd_add_devices()
Zhang Changzhong (1):
media: aspeed: fix error return code in aspeed_video_setup_video()
Zhang Qilong (2):
memory: mtk-smi: Fix PM usage counter unbalance in mtk_smi ops
HSI: Fix PM usage counter unbalance in ssi_hw_init
Zhihao Cheng (1):
btrfs: clarify error returns values in __load_free_space_cache
jeffrey.lin (1):
Input: raydium_ts_i2c - do not send zero length
qiuguorui1 (1):
arm64: kexec_file: fix memory leakage in create_dtb() when fdt_open_into() fails
Greg Kroah-Hartman
maintainerDocumentation/filesystems/seq_file.txt +6 -0
@@ -192,6 +192,12 @@ between the calls to start() and stop(), so holding a lock during that time is a reasonable thing to do. The seq_file code will also avoid taking any other locks while the iterator is active. +The iterater value returned by start() or next() is guaranteed to be +passed to a subsequent next() or stop() call. This allows resources +such as locks that were taken to be reliably released. There is *no* +guarantee that the iterator will be passed to show(), though in practice +it often will be. + Formatted output
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 101 +SUBLEVEL = 102 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/compressed/head.S +2 -2
@@ -1142,9 +1142,9 @@ __armv4_mmu_cache_off: __armv7_mmu_cache_off: mrc p15, 0, r0, c1, c0 #ifdef CONFIG_MMU - bic r0, r0, #0x000d + bic r0, r0, #0x0005 #else - bic r0, r0, #0x000c + bic r0, r0, #0x0004 #endif mcr p15, 0, r0, c1, c0 @ turn MMU and cache off mov r12, lr
arch/arm/boot/dts/armada-388-helios4.dts +22 -6
@@ -70,6 +70,9 @@ system-leds { compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&helios_system_led_pins>; + status-led { label = "helios4:green:status"; gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
@@ -86,6 +89,9 @@ io-leds { compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&helios_io_led_pins>; + sata1-led { label = "helios4:green:ata1"; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
@@ -121,11 +127,15 @@ fan1: j10-pwm { compatible = "pwm-fan"; pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ + pinctrl-names = "default"; + pinctrl-0 = <&helios_fan1_pins>; }; fan2: j17-pwm { compatible = "pwm-fan"; pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ + pinctrl-names = "default"; + pinctrl-0 = <&helios_fan2_pins>; }; usb2_phy: usb2-phy {
@@ -291,16 +301,22 @@ "mpp39", "mpp40"; marvell,function = "sd0"; }; - helios_led_pins: helios-led-pins { - marvell,pins = "mpp24", "mpp25", - "mpp49", "mpp50", + helios_system_led_pins: helios-system-led-pins { + marvell,pins = "mpp24", "mpp25"; + marvell,function = "gpio"; + }; + helios_io_led_pins: helios-io-led-pins { + marvell,pins = "mpp49", "mpp50", "mpp52", "mpp53", "mpp54"; marvell,function = "gpio"; }; - helios_fan_pins: helios-fan-pins { - marvell,pins = "mpp41", "mpp43", - "mpp48", "mpp55"; + helios_fan1_pins: helios_fan1_pins { + marvell,pins = "mpp41", "mpp43"; + marvell,function = "gpio"; + }; + helios_fan2_pins: helios_fan2_pins { + marvell,pins = "mpp48", "mpp55"; marvell,function = "gpio"; }; microsom_spi1_cs_pins: spi1-cs-pins {
arch/arm/boot/dts/aspeed-g4.dtsi +1 -0
@@ -371,6 +371,7 @@ compatible = "aspeed,ast2400-ibt-bmc"; reg = <0xc0 0x18>; interrupts = <8>; + clocks = <&syscon ASPEED_CLK_GATE_LCLK>; status = "disabled"; }; };
arch/arm/boot/dts/aspeed-g5.dtsi +1 -0
@@ -464,6 +464,7 @@ compatible = "aspeed,ast2500-ibt-bmc"; reg = <0xc0 0x18>; interrupts = <8>; + clocks = <&syscon ASPEED_CLK_GATE_LCLK>; status = "disabled"; }; };
arch/arm/boot/dts/exynos3250-artik5.dtsi +1 -1
@@ -75,7 +75,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx3>; - interrupts = <5 IRQ_TYPE_NONE>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps14_irq>; reg = <0x66>;
arch/arm/boot/dts/exynos3250-monk.dts +1 -1
@@ -195,7 +195,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; wakeup-source;
arch/arm/boot/dts/exynos3250-rinato.dts +1 -1
@@ -260,7 +260,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; wakeup-source;
arch/arm/boot/dts/exynos5250-spring.dts +1 -1
@@ -108,7 +108,7 @@ compatible = "samsung,s5m8767-pmic"; reg = <0x66>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>; wakeup-source;
arch/arm/boot/dts/exynos5420-arndale-octa.dts +1 -1
@@ -349,7 +349,7 @@ reg = <0x66>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps11_irq>;
arch/arm/boot/dts/exynos5422-odroid-core.dtsi +1 -1
@@ -141,7 +141,7 @@ samsung,s2mps11-acokb-ground; interrupt-parent = <&gpx0>; - interrupts = <4 IRQ_TYPE_EDGE_FALLING>; + interrupts = <4 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps11_irq>;
arch/arm/boot/dts/omap443x.dtsi +2 -0
@@ -33,10 +33,12 @@ }; ocp { + /* 4430 has only gpio_86 tshut and no talert interrupt */ bandgap: bandgap@4a002260 { reg = <0x4a002260 0x4 0x4a00232C 0x4>; compatible = "ti,omap4430-bandgap"; + gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; #thermal-sensor-cells = <0>; };
arch/arm/mach-ixp4xx/Kconfig +0 -1
@@ -13,7 +13,6 @@ config MACH_IXP4XX_OF select I2C select I2C_IOP3XX select PCI - select TIMER_OF select USE_OF help Say 'Y' here to support Device Tree-based IXP4xx platforms.
arch/arm64/Kconfig +1 -1
@@ -489,7 +489,7 @@ config ARM64_ERRATUM_1024718 help This option adds a workaround for ARM Cortex-A55 Erratum 1024718. - Affected Cortex-A55 cores (r0p0, r0p1, r1p0) could cause incorrect + Affected Cortex-A55 cores (all revisions) could cause incorrect update of the hardware dirty bit when the DBM/AP bits are updated without a break-before-make. The workaround is to disable the usage of hardware DBM locally on the affected cores. CPUs not affected by
arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts +1 -4
@@ -103,8 +103,6 @@ }; &ehci0 { - phys = <&usbphy 0>; - phy-names = "usb"; status = "okay"; };
@@ -142,6 +140,7 @@ pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>; vmmc-supply = <®_dcdc1>; vqmmc-supply = <®_eldo1>; + max-frequency = <200000000>; bus-width = <8>; non-removable; cap-mmc-hw-reset;
@@ -150,8 +149,6 @@ }; &ohci0 { - phys = <&usbphy 0>; - phy-names = "usb"; status = "okay"; };
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi +0 -1
@@ -55,7 +55,6 @@ pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; vmmc-supply = <®_dcdc1>; - non-removable; disable-wp; bus-width = <4>; cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +5 -1
@@ -476,7 +476,7 @@ resets = <&ccu RST_BUS_MMC2>; reset-names = "ahb"; interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; - max-frequency = <200000000>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>;
@@ -530,6 +530,8 @@ <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>, <&ccu RST_BUS_EHCI0>; + phys = <&usbphy 0>; + phy-names = "usb"; status = "disabled"; };
@@ -540,6 +542,8 @@ clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>; + phys = <&usbphy 0>; + phy-names = "usb"; status = "disabled"; };
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +7 -0
@@ -332,6 +332,7 @@ interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>;
@@ -348,6 +349,7 @@ interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>;
@@ -364,6 +366,7 @@ interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>;
@@ -533,6 +536,8 @@ <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>, <&ccu RST_BUS_EHCI0>; + phys = <&usb2phy 0>; + phy-names = "usb"; status = "disabled"; };
@@ -543,6 +548,8 @@ clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>; + phys = <&usb2phy 0>; + phy-names = "usb"; status = "disabled"; };
arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi +1 -1
@@ -389,7 +389,7 @@ s2mps13-pmic@66 { compatible = "samsung,s2mps13-pmic"; interrupt-parent = <&gpa0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; samsung,s2mps11-wrstbi-ground;
arch/arm64/boot/dts/exynos/exynos7-espresso.dts +1 -1
@@ -90,7 +90,7 @@ s2mps15_pmic@66 { compatible = "samsung,s2mps15-pmic"; reg = <0x66>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; interrupt-parent = <&gpa0>; pinctrl-names = "default"; pinctrl-0 = <&pmic_irq>;
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +1 -1
@@ -202,7 +202,7 @@ }; partition@20000 { - label = "u-boot"; + label = "a53-firmware"; reg = <0x20000 0x160000>; };
arch/arm64/boot/dts/mediatek/mt7622.dtsi +2 -0
@@ -698,6 +698,8 @@ clocks = <&pericfg CLK_PERI_MSDC30_1_PD>, <&topckgen CLK_TOP_AXI_SEL>; clock-names = "source", "hclk"; + resets = <&pericfg MT7622_PERI_MSDC1_SW_RST>; + reset-names = "hrst"; status = "disabled"; };
arch/arm64/boot/dts/qcom/msm8916.dtsi +2 -2
@@ -53,7 +53,7 @@ no-map; }; - reserved@8668000 { + reserved@86680000 { reg = <0x0 0x86680000 0x0 0x80000>; no-map; };
@@ -66,7 +66,7 @@ qcom,client-id = <1>; }; - rfsa@867e00000 { + rfsa@867e0000 { reg = <0x0 0x867e0000 0x0 0x20000>; no-map; };
arch/arm64/crypto/aes-glue.c +2 -2
@@ -55,7 +55,7 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions");#define aes_mac_update neon_aes_mac_updateMODULE_DESCRIPTION ("AES-ECB/CBC/CTR/XTS using ARMv8 NEON" );#endif -#if defined(USE_V8_CRYPTO_EXTENSIONS ) || !defined(CONFIG_CRYPTO_AES_ARM64_BS ) +#if defined(USE_V8_CRYPTO_EXTENSIONS ) || !IS_ENABLED (CONFIG_CRYPTO_AES_ARM64_BS )MODULE_ALIAS_CRYPTO ("ecb(aes)" );MODULE_ALIAS_CRYPTO ("cbc(aes)" );MODULE_ALIAS_CRYPTO ("ctr(aes)" );
@@ -668,7 +668,7 @@ static int __maybe_unused xts_decrypt(struct skcipher_request *req) }static struct skcipher_alg aes_algs[] = { { -#if defined(USE_V8_CRYPTO_EXTENSIONS) || !defined(CONFIG_CRYPTO_AES_ARM64_BS) +#if defined(USE_V8_CRYPTO_EXTENSIONS) || !IS_ENABLED(CONFIG_CRYPTO_AES_ARM64_BS) .base = { .cra_name ="__ecb(aes)" , .cra_driver_name ="__ecb-aes-" MODE ,
arch/arm64/crypto/sha1-ce-glue.c +1 -0
@@ -19,6 +19,7 @@MODULE_DESCRIPTION ("SHA1 secure hash using ARMv8 Crypto Extensions" );MODULE_AUTHOR ("Ard Biesheuvel <[email protected]>" );MODULE_LICENSE ("GPL v2" ); +MODULE_ALIAS_CRYPTO ("sha1" );struct sha1_ce_state {struct sha1_state sst;
arch/arm64/crypto/sha2-ce-glue.c +2 -0
@@ -19,6 +19,8 @@MODULE_DESCRIPTION ("SHA-224/SHA-256 secure hash using ARMv8 Crypto Extensions" );MODULE_AUTHOR ("Ard Biesheuvel <[email protected]>" );MODULE_LICENSE ("GPL v2" ); +MODULE_ALIAS_CRYPTO ("sha224" ); +MODULE_ALIAS_CRYPTO ("sha256" );struct sha256_ce_state {struct sha256_state sst;
arch/arm64/crypto/sha3-ce-glue.c +4 -0
@@ -23,6 +23,10 @@MODULE_DESCRIPTION ("SHA3 secure hash using ARMv8 Crypto Extensions" );MODULE_AUTHOR ("Ard Biesheuvel <[email protected]>" );MODULE_LICENSE ("GPL v2" ); +MODULE_ALIAS_CRYPTO ("sha3-224" ); +MODULE_ALIAS_CRYPTO ("sha3-256" ); +MODULE_ALIAS_CRYPTO ("sha3-384" ); +MODULE_ALIAS_CRYPTO ("sha3-512" ); asmlinkage void sha3_ce_transform(u64 *st, const u8 *data, int blocks,int md_len);
arch/arm64/crypto/sha512-ce-glue.c +2 -0
@@ -23,6 +23,8 @@MODULE_DESCRIPTION ("SHA-384/SHA-512 secure hash using ARMv8 Crypto Extensions" );MODULE_AUTHOR ("Ard Biesheuvel <[email protected]>" );MODULE_LICENSE ("GPL v2" ); +MODULE_ALIAS_CRYPTO ("sha384" ); +MODULE_ALIAS_CRYPTO ("sha512" ); asmlinkage void sha512_ce_transform(struct sha512_state *sst, u8 const *src,int blocks);
arch/arm64/kernel/cpufeature.c +1 -1
@@ -1092,7 +1092,7 @@ static bool cpu_has_broken_dbm(void)/* List of CPUs which have broken DBM support. */ static const struct midr_range cpus[] = { #ifdef CONFIG_ARM64_ERRATUM_1024718 -MIDR_RANGE (MIDR_CORTEX_A55 ,0 ,0 ,1 ,0 ),// A55 r0p0 -r1p0 +MIDR_ALL_VERSIONS (MIDR_CORTEX_A55 ), #endif {}, };
arch/arm64/kernel/head.S +1 -0
@@ -970,6 +970,7 @@ __primary_switch: tlbi vmalle1 // Remove any stale TLB entries dsb nsh + isb msr sctlr_el1, x19 // re-enable the MMU isb
arch/arm64/kernel/machine_kexec_file.c +3 -1
@@ -150,8 +150,10 @@ static int create_dtb(struct kimage *image,/* duplicate a device tree blob */ ret =fdt_open_into (initial_boot_params, buf, buf_size); -if (ret) +if (ret) { +vfree (buf);return -EINVAL ; + } ret =setup_dtb (image, initrd_load_addr, initrd_len, cmdline, buf);
arch/arm64/kernel/probes/uprobes.c +1 -1
@@ -38,7 +38,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,/* TODO: Currently we do not support AARCH32 instruction probing */ if (mm->context.flags &MMCF_AARCH32 ) -return -ENOTSUPP ; +return -EOPNOTSUPP ;else if (!IS_ALIGNED (addr,AARCH64_INSN_SIZE ))return -EINVAL ;
arch/mips/include/asm/asm.h +18 -0
@@ -20,10 +20,27 @@#include <asm/sgidefs.h> #include <asm/asm-eva.h> +#ifndef __VDSO__ +/* +* Emit CFI data in .debug_frame sections, not .eh_frame sections. +* We don't do DWARF unwinding at runtime, so only the offline DWARF +* information is useful to anyone. Note we should change this if we +* ever decide to enable DWARF unwinding at runtime. +*/ +#define CFI_SECTIONS .cfi_sections .debug_frame +#else +/* +* For the vDSO, emit both runtime unwind information and debug +* symbols for the .dbg file. +*/ +#define CFI_SECTIONS +#endif +/* * LEAF - declare leaf routine */ #define LEAF (symbol) \ + CFI_SECTIONS; \ .globl symbol; \ .align 2; \ .type symbol, @function; \
@@ -36,6 +53,7 @@ symbol: .frame sp, 0, ra; \* NESTED - declare nested routine entry point */ #define NESTED (symbol, framesize, rpc) \ + CFI_SECTIONS; \ .globl symbol; \ .align 2; \ .type symbol, @function; \
arch/mips/kernel/vmlinux.lds.S +1 -1
@@ -93,6 +93,7 @@ SECTIONS INIT_TASK_DATA(THREAD_SIZE) NOSAVE_DATA + PAGE_ALIGNED_DATA(PAGE_SIZE) CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT) READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT) DATA_DATA
@@ -225,6 +226,5 @@ SECTIONS *(.options) *(.pdr) *(.reginfo) - *(.eh_frame) } }
arch/mips/lantiq/irq.c +1 -1
@@ -302,7 +302,7 @@ static void ltq_hw_irq_handler(struct irq_desc *desc)generic_handle_irq (irq_linear_revmap (ltq_domain, hwirq));/* if this is a EBU irq, we need to ack it or get a deadlock */ -if ((irq ==LTQ_ICU_EBU_IRQ ) && (module ==0 ) &<Q_EBU_PCC_ISTAT ) +if (irq ==LTQ_ICU_EBU_IRQ && !module &<Q_EBU_PCC_ISTAT !=0 )ltq_ebu_w32 (ltq_ebu_r32 (LTQ_EBU_PCC_ISTAT ) |0x10 ,LTQ_EBU_PCC_ISTAT ); }
arch/mips/mm/c-r4k.c +1 -1
@@ -1560,7 +1560,7 @@ static int probe_scache(void)return 1 ; } -static void __init loongson2_sc_init (void ) +static void loongson2_sc_init (void ) {struct cpuinfo_mips *c = ¤t_cpu_data;
arch/powerpc/Kconfig +1 -1
@@ -723,7 +723,7 @@ config PPC_64K_PAGES config PPC_256K_PAGES bool "256k page size" - depends on 44x && !STDBINUTILS + depends on 44x && !STDBINUTILS && !PPC_47x help Make the page size 256k.
arch/powerpc/kernel/entry_32.S +3 -0
@@ -336,6 +336,9 @@ trace_syscall_entry_irq_off: .globl transfer_to_syscall transfer_to_syscall: +#ifdef CONFIG_PPC_BOOK3S_32 + kuep_lock r11, r12 +#endif #ifdef CONFIG_TRACE_IRQFLAGS andi. r12,r9,MSR_EE beq- trace_syscall_entry_irq_off
arch/powerpc/kernel/head_8xx.S +1 -1
@@ -191,7 +191,7 @@ SystemCall: /* On the MPC8xx, this is a software emulation interrupt. It occurs * for all unimplemented and illegal instructions. */ - EXCEPTION(0x1000, SoftEmu, program_check_exception, EXC_XFER_STD) + EXCEPTION(0x1000, SoftEmu, emulation_assist_interrupt, EXC_XFER_STD) /* Called from DataStoreTLBMiss when perf TLB misses events are activated */ #ifdef CONFIG_PERF_EVENTS
arch/powerpc/kernel/prom_init.c +4 -8
@@ -1305,14 +1305,10 @@ static void __init prom_check_platform_support(void)if (prop_len >sizeof (vec))prom_printf ("WARNING: ibm,arch-vec-5-platform-support longer than expected (len: %d)\n" , prop_len); -prom_getprop (prom.chosen,"ibm,arch-vec-5-platform-support" , - &vec,sizeof (vec)); -for (i =0 ; i <sizeof (vec); i +=2 ) { -prom_debug ("%d: index = 0x%x val = 0x%x\n" , i /2 - , vec[i] - , vec[i +1 ]); -prom_parse_platform_support (vec[i], vec[i +1 ], - &supported); +prom_getprop (prom.chosen,"ibm,arch-vec-5-platform-support" , &vec,sizeof (vec)); +for (i =0 ; i < prop_len; i +=2 ) { +prom_debug ("%d: index = 0x%x val = 0x%x\n" , i /2 , vec[i], vec[i +1 ]); +prom_parse_platform_support (vec[i], vec[i +1 ], &supported); } }
arch/powerpc/kvm/powerpc.c +4 -4
@@ -1513,7 +1513,7 @@ int kvmppc_handle_vmx_load(struct kvm_run *run, struct kvm_vcpu *vcpu,return emulated; } -int kvmppc_get_vmx_dword (struct kvm_vcpu *vcpu,int index,u64 *val) +static int kvmppc_get_vmx_dword (struct kvm_vcpu *vcpu,int index,u64 *val) {union kvmppc_one_reg reg;int vmx_offset =0 ;
@@ -1531,7 +1531,7 @@ int kvmppc_get_vmx_dword(struct kvm_vcpu *vcpu, int index, u64 *val)return result; } -int kvmppc_get_vmx_word (struct kvm_vcpu *vcpu,int index,u64 *val) +static int kvmppc_get_vmx_word (struct kvm_vcpu *vcpu,int index,u64 *val) {union kvmppc_one_reg reg;int vmx_offset =0 ;
@@ -1549,7 +1549,7 @@ int kvmppc_get_vmx_word(struct kvm_vcpu *vcpu, int index, u64 *val)return result; } -int kvmppc_get_vmx_hword (struct kvm_vcpu *vcpu,int index,u64 *val) +static int kvmppc_get_vmx_hword (struct kvm_vcpu *vcpu,int index,u64 *val) {union kvmppc_one_reg reg;int vmx_offset =0 ;
@@ -1567,7 +1567,7 @@ int kvmppc_get_vmx_hword(struct kvm_vcpu *vcpu, int index, u64 *val)return result; } -int kvmppc_get_vmx_byte (struct kvm_vcpu *vcpu,int index,u64 *val) +static int kvmppc_get_vmx_byte (struct kvm_vcpu *vcpu,int index,u64 *val) {union kvmppc_one_reg reg;int vmx_offset =0 ;
arch/powerpc/platforms/pseries/dlpar.c +3 -4
@@ -127,7 +127,6 @@ void dlpar_free_cc_nodes(struct device_node *dn)#define NEXT_PROPERTY 3#define PREV_PARENT 4#define MORE_MEMORY 5 -#define CALL_AGAIN -2#define ERR_CFG_USE -9003 struct device_node *dlpar_configure_connector(__be32 drc_index,
@@ -168,6 +167,9 @@ struct device_node *dlpar_configure_connector(__be32 drc_index,spin_unlock (&rtas_data_buf_lock); +if (rtas_busy_delay (rc)) +continue ; +switch (rc) {case COMPLETE :break ;
@@ -216,9 +218,6 @@ struct device_node *dlpar_configure_connector(__be32 drc_index, last_dn = last_dn->parent;break ; -case CALL_AGAIN : -break ; -case MORE_MEMORY :case ERR_CFG_USE :default :
arch/s390/kernel/vtime.c +2 -1
@@ -136,7 +136,8 @@ static int do_account_vtime(struct task_struct *tsk)" stck %1" /* Store current tod clock value */ #endif : "=Q" (S390_lowcore.last_update_timer), - "=Q" (S390_lowcore.last_update_clock)); +"=Q" (S390_lowcore.last_update_clock) + : : "cc"); clock = S390_lowcore.last_update_clock - clock; timer -= S390_lowcore.last_update_timer;
arch/sparc/Kconfig +1 -1
@@ -524,7 +524,7 @@ config COMPAT bool depends on SPARC64 default y - select COMPAT_BINFMT_ELF + select COMPAT_BINFMT_ELF if BINFMT_ELF select HAVE_UID16 select ARCH_WANT_OLD_COMPAT_IPC select COMPAT_OLD_SIGACTION
arch/sparc/lib/memset.S +1 -0
@@ -142,6 +142,7 @@ __bzero: ZERO_LAST_BLOCKS(%o0, 0x48, %g2) ZERO_LAST_BLOCKS(%o0, 0x08, %g2) 13: + EXT(12b, 13b, 21f) be 8f andcc %o1, 4, %g0
arch/um/kernel/tlb.c +11 -1
@@ -126,6 +126,9 @@ static int add_mmap(unsigned long virt, unsigned long phys, unsigned long len,struct host_vm_op *last;int fd =-1 , ret =0 ; +if (virt + len >STUB_START && virt <STUB_END ) +return -EINVAL ; +if (hvc->userspace) fd =phys_mapping (phys, &offset);else
@@ -163,7 +166,7 @@ static int add_munmap(unsigned long addr, unsigned long len,struct host_vm_op *last;int ret =0 ; -if ((addr >=STUB_START ) && (addr <STUB_END )) +if (addr + len >STUB_START && addr <STUB_END )return -EINVAL ;if (hvc->index !=0 ) {
@@ -193,6 +196,9 @@ static int add_mprotect(unsigned long addr, unsigned long len,struct host_vm_op *last;int ret =0 ; +if (addr + len >STUB_START && addr <STUB_END ) +return -EINVAL ; +if (hvc->index !=0 ) { last = &hvc->ops[hvc->index -1 ]; if ((last->type == MPROTECT) &&
@@ -433,6 +439,10 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long address)struct mm_id *mm_id; address &=PAGE_MASK ; + +if (address >=STUB_START && address <STUB_END ) + goto kill; + pgd =pgd_offset (mm, address);if (!pgd_present (*pgd)) goto kill;
arch/x86/crypto/aesni-intel_glue.c +16 -12
@@ -707,7 +707,8 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req,struct crypto_aead *tfm =crypto_aead_reqtfm (req);unsigned long auth_tag_len =crypto_aead_authsize (tfm);const struct aesni_gcm_tfm_s *gcm_tfm = aesni_gcm_tfm; - struct gcm_context_data data AESNI_ALIGN_ATTR; +u8 databuf[sizeof (struct gcm_context_data ) + (AESNI_ALIGN -8 )]__aligned(8) ; +struct gcm_context_data *data =PTR_ALIGN ((void *)databuf,AESNI_ALIGN );struct scatter_walk dst_sg_walk = {};unsigned long left = req->cryptlen;unsigned long len, srclen, dstlen;
@@ -760,8 +761,7 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req, }kernel_fpu_begin (); - gcm_tfm->init (aes_ctx, &data, iv, - hash_subkey, assoc, assoclen); + gcm_tfm->init (aes_ctx, data, iv, hash_subkey, assoc, assoclen);if (req->src != req->dst) {while (left) { src =scatterwalk_map (&src_sg_walk);
@@ -771,10 +771,10 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req, len =min (srclen, dstlen);if (len) {if (enc) - gcm_tfm->enc_update (aes_ctx, &data, + gcm_tfm->enc_update (aes_ctx, data, dst, src, len);else - gcm_tfm->dec_update (aes_ctx, &data, + gcm_tfm->dec_update (aes_ctx, data, dst, src, len); } left -= len;
@@ -792,10 +792,10 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req, len =scatterwalk_clamp (&src_sg_walk, left);if (len) {if (enc) - gcm_tfm->enc_update (aes_ctx, &data, + gcm_tfm->enc_update (aes_ctx, data, src, src, len);else - gcm_tfm->dec_update (aes_ctx, &data, + gcm_tfm->dec_update (aes_ctx, data, src, src, len); } left -= len;
@@ -804,7 +804,7 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req,scatterwalk_done (&src_sg_walk,1 , left); } } - gcm_tfm->finalize (aes_ctx, &data, authTag, auth_tag_len); + gcm_tfm->finalize (aes_ctx, data, authTag, auth_tag_len);kernel_fpu_end ();if (!assocmem)
@@ -853,7 +853,8 @@ static int helper_rfc4106_encrypt(struct aead_request *req)struct crypto_aead *tfm =crypto_aead_reqtfm (req);struct aesni_rfc4106_gcm_ctx *ctx =aesni_rfc4106_gcm_ctx_get (tfm);void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); +u8 ivbuf[16 + (AESNI_ALIGN -8 )]__aligned(8) ; +u8 *iv =PTR_ALIGN (&ivbuf[0 ],AESNI_ALIGN );unsigned int i;__be32 counter =cpu_to_be32 (1 );
@@ -880,7 +881,8 @@ static int helper_rfc4106_decrypt(struct aead_request *req)struct crypto_aead *tfm =crypto_aead_reqtfm (req);struct aesni_rfc4106_gcm_ctx *ctx =aesni_rfc4106_gcm_ctx_get (tfm);void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); +u8 ivbuf[16 + (AESNI_ALIGN -8 )]__aligned(8) ; +u8 *iv =PTR_ALIGN (&ivbuf[0 ],AESNI_ALIGN );unsigned int i;if (unlikely (req->assoclen !=16 && req->assoclen !=20 ))
@@ -1010,7 +1012,8 @@ static int generic_gcmaes_encrypt(struct aead_request *req)struct crypto_aead *tfm =crypto_aead_reqtfm (req);struct generic_gcmaes_ctx *ctx =generic_gcmaes_ctx_get (tfm);void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); +u8 ivbuf[16 + (AESNI_ALIGN -8 )]__aligned(8) ; +u8 *iv =PTR_ALIGN (&ivbuf[0 ],AESNI_ALIGN );__be32 counter =cpu_to_be32 (1 );memcpy (iv, req->iv,12 );
@@ -1026,7 +1029,8 @@ static int generic_gcmaes_decrypt(struct aead_request *req)struct crypto_aead *tfm =crypto_aead_reqtfm (req);struct generic_gcmaes_ctx *ctx =generic_gcmaes_ctx_get (tfm);void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); +u8 ivbuf[16 + (AESNI_ALIGN -8 )]__aligned(8) ; +u8 *iv =PTR_ALIGN (&ivbuf[0 ],AESNI_ALIGN );memcpy (iv, req->iv,12 ); *((__be32 *)(iv+12 )) = counter;
arch/x86/include/asm/virtext.h +12 -5
@@ -30,15 +30,22 @@ static inline int cpu_has_vmx(void) } -/** Disable VMX on the current CPU +/** +* cpu_vmxoff() - Disable VMX on the current CPU * -* vmxoff causes a undefined-opcode exception if vmxon was not run -* on the CPU previously. Only call this function if you know VMX -* is enabled. +* Disable VMX and clear CR4.VMXE (even if VMXOFF faults) +* +* Note, VMXOFF causes a #UD if the CPU is !post-VMXON, but it's impossible to +* atomically track post-VMXON state, e.g. this may be called in NMI context. +* Eat all faults as all other faults on VMXOFF faults are mode related, i.e. +* faults are guaranteed to be due to the !post-VMXON check unless the CPU is +* magically in RM, VM86, compat mode, or at CPL>0. */ static inline void cpu_vmxoff (void ) { - asmvolatile ("vmxoff" ); +asm_volatile_goto ("1: vmxoff\n\t" + _ASM_EXTABLE(1b, %l[fault]) :::: fault); +fault:cr4_clear_bits (X86_CR4_VMXE ); }
arch/x86/kernel/reboot.c +10 -19
@@ -538,29 +538,20 @@ static void emergency_vmx_disable_all(void)local_irq_disable ();/* -* We need to disable VMX on all CPUs before rebooting, otherwise -* we risk hanging up the machine, because the CPU ignore INIT -* signals when VMX is enabled. +* Disable VMX on all CPUs before rebooting, otherwise we risk hanging +* the machine, because the CPU blocks INIT when it's in VMX root. * -* We can't take any locks and we may be on an inconsistent -* state, so we use NMIs as IPIs to tell the other CPUs to disable -* VMX and halt. +* We can't take any locks and we may be on an inconsistent state, so +* use NMIs as IPIs to tell the other CPUs to exit VMX root and halt. * -* For safety, we will avoid running the nmi_shootdown_cpus() -* stuff unnecessarily, but we don't have a way to check -* if other CPUs have VMX enabled. So we will call it only if the -* CPU we are running on has VMX enabled. -* -* We will miss cases where VMX is not enabled on all CPUs. This -* shouldn't do much harm because KVM always enable VMX on all -* CPUs anyway. But we can miss it on the small window where KVM -* is still enabling VMX. +* Do the NMI shootdown even if VMX if off on _this_ CPU, as that +* doesn't prevent a different CPU from being in VMX root operation. */ -if (cpu_has_vmx () &&cpu_vmx_enabled ()) { -/* Disable VMX on this CPU. */ -cpu_vmxoff (); +if (cpu_has_vmx ()) { +/* Safely force _this_ CPU out of VMX root operation. */ +__cpu_emergency_vmxoff (); -/* Halt and disable VMX on the other CPUs */ +/* Halt and exit VMX root operation on the other CPUs. */ nmi_shootdown_cpus (vmxoff_nmi); }
arch/x86/kvm/svm.c +1 -1
@@ -4327,7 +4327,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) !guest_has_spec_ctrl_msr(vcpu))return 1 ; -if (data & ~kvm_spec_ctrl_valid_bits (vcpu)) +if (kvm_spec_ctrl_test_value (data))return 1 ; svm->spec_ctrl = data;
arch/x86/kvm/vmx/vmx.c +1 -1
@@ -1974,7 +1974,7 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) !guest_has_spec_ctrl_msr(vcpu))return 1 ; -if (data & ~kvm_spec_ctrl_valid_bits (vcpu)) +if (kvm_spec_ctrl_test_value (data))return 1 ; vmx->spec_ctrl = data;
arch/x86/kvm/x86.c +21 -17
@@ -10374,28 +10374,32 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu) }EXPORT_SYMBOL_GPL (kvm_arch_no_poll); -u64 kvm_spec_ctrl_valid_bits (struct kvm_vcpu *vcpu) + +int kvm_spec_ctrl_test_value (u64 value) { -uint64_t bits =SPEC_CTRL_IBRS |SPEC_CTRL_STIBP |SPEC_CTRL_SSBD ; +/* +* test that setting IA32_SPEC_CTRL to given value +* is allowed by the host processor +*/ + +u64 saved_value; +unsigned long flags; +int ret =0 ; -/* The STIBP bit doesn't fault even if it's not advertised */ -if (!guest_cpuid_has (vcpu,X86_FEATURE_SPEC_CTRL ) && - !guest_cpuid_has (vcpu,X86_FEATURE_AMD_IBRS )) - bits &= ~(SPEC_CTRL_IBRS |SPEC_CTRL_STIBP ); -if (!boot_cpu_has (X86_FEATURE_SPEC_CTRL ) && - !boot_cpu_has (X86_FEATURE_AMD_IBRS )) - bits &= ~(SPEC_CTRL_IBRS |SPEC_CTRL_STIBP ); +local_irq_save (flags); -if (!guest_cpuid_has (vcpu,X86_FEATURE_SPEC_CTRL_SSBD ) && - !guest_cpuid_has (vcpu,X86_FEATURE_AMD_SSBD )) - bits &= ~SPEC_CTRL_SSBD ; -if (!boot_cpu_has (X86_FEATURE_SPEC_CTRL_SSBD ) && - !boot_cpu_has (X86_FEATURE_AMD_SSBD )) - bits &= ~SPEC_CTRL_SSBD ; +if (rdmsrl_safe (MSR_IA32_SPEC_CTRL , &saved_value)) + ret =1 ; +else if (wrmsrl_safe (MSR_IA32_SPEC_CTRL , value)) + ret =1 ; +else +wrmsrl (MSR_IA32_SPEC_CTRL , saved_value); -return bits; +local_irq_restore (flags); + +return ret; } -EXPORT_SYMBOL_GPL (kvm_spec_ctrl_valid_bits); +EXPORT_SYMBOL_GPL (kvm_spec_ctrl_test_value);EXPORT_TRACEPOINT_SYMBOL_GPL (kvm_exit);EXPORT_TRACEPOINT_SYMBOL_GPL (kvm_fast_mmio);
arch/x86/kvm/x86.h +1 -1
@@ -368,6 +368,6 @@ static inline bool kvm_pat_valid(u64 data)void kvm_load_guest_xcr0 (struct kvm_vcpu *vcpu);void kvm_put_guest_xcr0 (struct kvm_vcpu *vcpu); -u64 kvm_spec_ctrl_valid_bits (struct kvm_vcpu *vcpu); +int kvm_spec_ctrl_test_value (u64 value);#endif
arch/x86/mm/pat.c +2 -1
@@ -1132,12 +1132,14 @@ static void *memtype_seq_start(struct seq_file *seq, loff_t *pos)static void *memtype_seq_next (struct seq_file *seq,void *v,loff_t *pos) { +kfree (v); ++*pos;return memtype_get_idx (*pos); }static void memtype_seq_stop (struct seq_file *seq,void *v) { +kfree (v); }static int memtype_seq_show (struct seq_file *seq,void *v)
@@ -1146,7 +1148,6 @@ static int memtype_seq_show(struct seq_file *seq, void *v)seq_printf (seq,"%s @ 0x%Lx-0x%Lx\n" ,cattr_name (print_entry->type), print_entry->start, print_entry->end); -kfree (print_entry);return 0 ; }
block/bfq-iosched.c +1 -0
@@ -2937,6 +2937,7 @@ static void __bfq_set_in_service_queue(struct bfq_data *bfqd, } bfqd->in_service_queue = bfqq; + bfqd->in_serv_last_pos =0 ; }/*
block/blk-settings.c +12 -0
@@ -473,6 +473,14 @@ void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b) }EXPORT_SYMBOL (blk_queue_stack_limits); +static unsigned int blk_round_down_sectors (unsigned int sectors,unsigned int lbs) +{ + sectors =round_down (sectors, lbs >>SECTOR_SHIFT ); +if (sectors <PAGE_SIZE >>SECTOR_SHIFT ) + sectors =PAGE_SIZE >>SECTOR_SHIFT ; +return sectors; +} +/** * blk_stack_limits - adjust queue_limits for stacked devices * @t: the stacking driver limits (top device)
@@ -586,6 +594,10 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, ret =-1 ; } + t->max_sectors =blk_round_down_sectors (t->max_sectors, t->logical_block_size); + t->max_hw_sectors =blk_round_down_sectors (t->max_hw_sectors, t->logical_block_size); + t->max_dev_sectors =blk_round_down_sectors (t->max_dev_sectors, t->logical_block_size); +/* Discard alignment and granularity */ if (b->discard_granularity) { alignment =queue_limit_discard_alignment (b, start);
block/bsg.c +3 -1
@@ -157,8 +157,10 @@ static int bsg_sg_io(struct request_queue *q, fmode_t mode, void __user *uarg)return PTR_ERR (rq); ret = q->bsg_dev.ops->fill_hdr (rq, &hdr, mode); -if (ret) +if (ret) { +blk_put_request (rq);return ret; + } rq->timeout =msecs_to_jiffies (hdr.timeout);if (!rq->timeout)
certs/blacklist.c +1 -1
@@ -153,7 +153,7 @@ static int __init blacklist_init(void)KEY_USR_VIEW |KEY_USR_READ |KEY_USR_SEARCH ,KEY_ALLOC_NOT_IN_QUOTA | -KEY_FLAG_KEEP , +KEY_ALLOC_SET_KEEP , NULL, NULL);if (IS_ERR (blacklist_keyring))panic ("Can't allocate system blacklist keyring\n" );
crypto/ecdh_helper.c +3 -0
@@ -67,6 +67,9 @@ int crypto_ecdh_decode_key(const char *buf, unsigned int len,if (secret.type !=CRYPTO_KPP_SECRET_TYPE_ECDH )return -EINVAL ; +if (unlikely (len < secret.len)) +return -EINVAL ; + ptr =ecdh_unpack_data (¶ms->curve_id, ptr,sizeof (params->curve_id)); ptr =ecdh_unpack_data (¶ms->key_size, ptr,sizeof (params->key_size));if (secret.len !=crypto_ecdh_key_len (params))
drivers/acpi/acpi_configfs.c +6 -1
@@ -267,7 +267,12 @@ static int __init acpi_configfs_init(void) acpi_table_group =configfs_register_default_group (root,"table" , &acpi_tables_type); -return PTR_ERR_OR_ZERO (acpi_table_group); +if (IS_ERR (acpi_table_group)) { +configfs_unregister_subsystem (&acpi_configfs); +return PTR_ERR (acpi_table_group); + } + +return 0 ; }module_init (acpi_configfs_init);
drivers/acpi/property.c +33 -11
87 lines not on this page · raw message
drivers/amba/bus.c +12 -8
@@ -299,10 +299,11 @@ static int amba_remove(struct device *dev) {struct amba_device *pcdev =to_amba_device (dev);struct amba_driver *drv =to_amba_driver (dev->driver); -int ret; +int ret =0 ;pm_runtime_get_sync (dev); - ret = drv->remove (pcdev); +if (drv->remove) + ret = drv->remove (pcdev);pm_runtime_put_noidle (dev);/* Undo the runtime PM settings in amba_probe() */
@@ -319,7 +320,9 @@ static int amba_remove(struct device *dev)static void amba_shutdown (struct device *dev) {struct amba_driver *drv =to_amba_driver (dev->driver); - drv->shutdown (to_amba_device (dev)); + +if (drv->shutdown) + drv->shutdown (to_amba_device (dev)); }/**
@@ -332,12 +335,13 @@ static void amba_shutdown(struct device *dev)*/ int amba_driver_register (struct amba_driver *drv) { - drv->drv.bus = &amba_bustype; +if (!drv->probe) +return -EINVAL ; -#define SETFN (fn) if (drv->fn) drv->drv.fn = amba_##fn -SETFN (probe); -SETFN (remove); -SETFN (shutdown); + drv->drv.bus = &amba_bustype; + drv->drv.probe = amba_probe; + drv->drv.remove = amba_remove; + drv->drv.shutdown = amba_shutdown;return driver_register (&drv->drv); }
drivers/ata/ahci_brcm.c +13 -1
@@ -361,6 +361,10 @@ static int brcm_ahci_resume(struct device *dev)if (ret)return ret; + ret =ahci_platform_enable_regulators (hpriv); +if (ret) + goto out_disable_clks; +brcm_sata_init (priv);brcm_sata_phys_enable (priv);brcm_sata_alpm_init (hpriv);
@@ -390,6 +394,8 @@ static int brcm_ahci_resume(struct device *dev)ahci_platform_disable_phys (hpriv); out_disable_phys:brcm_sata_phys_disable (priv); +ahci_platform_disable_regulators (hpriv); +out_disable_clks:ahci_platform_disable_clks (hpriv);return ret; }
@@ -463,6 +469,10 @@ static int brcm_ahci_probe(struct platform_device *pdev)if (ret) goto out_reset; + ret =ahci_platform_enable_regulators (hpriv); +if (ret) + goto out_disable_clks; +/* Must be first so as to configure endianness including that * of the standard AHCI register space. */
@@ -472,7 +482,7 @@ static int brcm_ahci_probe(struct platform_device *pdev) priv->port_mask =brcm_ahci_get_portmask (hpriv, priv);if (!priv->port_mask) { ret = -ENODEV ; - goto out_disable_clks; + goto out_disable_regulators; }/* Must be done before ahci_platform_enable_phys() */
@@ -497,6 +507,8 @@ static int brcm_ahci_probe(struct platform_device *pdev)ahci_platform_disable_phys (hpriv); out_disable_phys:brcm_sata_phys_disable (priv); +out_disable_regulators: +ahci_platform_disable_regulators (hpriv); out_disable_clks:ahci_platform_disable_clks (hpriv); out_reset:
drivers/auxdisplay/ht16k33.c +1 -2
@@ -117,8 +117,7 @@ static void ht16k33_fb_queue(struct ht16k33_priv *priv) {struct ht16k33_fbdev *fbdev = &priv->fbdev; -schedule_delayed_work (&fbdev->work, -msecs_to_jiffies (HZ / fbdev->refresh_rate)); +schedule_delayed_work (&fbdev->work,HZ / fbdev->refresh_rate); }/*
drivers/base/regmap/regmap-sdw.c +2 -2
@@ -12,7 +12,7 @@ static int regmap_sdw_write(void *context, unsigned int reg, unsigned int val)struct device *dev = context;struct sdw_slave *slave =dev_to_sdw_dev (dev); -return sdw_write (slave, reg, val); +return sdw_write_no_pm (slave, reg, val); }static int regmap_sdw_read (void *context,unsigned int reg,unsigned int *val)
@@ -21,7 +21,7 @@ static int regmap_sdw_read(void *context, unsigned int reg, unsigned int *val)struct sdw_slave *slave =dev_to_sdw_dev (dev);int read; - read =sdw_read (slave, reg); + read =sdw_read_no_pm (slave, reg);if (read <0 )return read;
drivers/base/swnode.c +6 -2
@@ -534,14 +534,18 @@ software_node_get_next_child(const struct fwnode_handle *fwnode,struct swnode *c =to_swnode (child);if (!p ||list_empty (&p->children) || - (c &&list_is_last (&c->entry, &p->children))) + (c &&list_is_last (&c->entry, &p->children))) { +fwnode_handle_put (child);return NULL ; + }if (c) c =list_next_entry (c, entry);else c = list_first_entry(&p->children, struct swnode, entry); -return &c->fwnode; + +fwnode_handle_put (child); +return fwnode_handle_get (&c->fwnode); } static struct fwnode_handle *
drivers/block/floppy.c +14 -13
@@ -4063,21 +4063,22 @@ static int floppy_open(struct block_device *bdev, fmode_t mode)if (UFDCS ->rawcmd ==1 )UFDCS ->rawcmd =2 ; -if (!(mode &FMODE_NDELAY )) { -if (mode & (FMODE_READ |FMODE_WRITE )) { -UDRS ->last_checked =0 ; -clear_bit (FD_OPEN_SHOULD_FAIL_BIT , &UDRS ->flags); -check_disk_change (bdev); -if (test_bit (FD_DISK_CHANGED_BIT , &UDRS ->flags)) - goto out; -if (test_bit (FD_OPEN_SHOULD_FAIL_BIT , &UDRS ->flags)) - goto out; - } - res = -EROFS ; -if ((mode &FMODE_WRITE ) && - !test_bit (FD_DISK_WRITABLE_BIT , &UDRS ->flags)) +if (mode & (FMODE_READ |FMODE_WRITE )) { +UDRS ->last_checked =0 ; +clear_bit (FD_OPEN_SHOULD_FAIL_BIT , &UDRS ->flags); +check_disk_change (bdev); +if (test_bit (FD_DISK_CHANGED_BIT , &UDRS ->flags)) + goto out; +if (test_bit (FD_OPEN_SHOULD_FAIL_BIT , &UDRS ->flags)) goto out; } + + res = -EROFS ; + +if ((mode &FMODE_WRITE ) && + !test_bit (FD_DISK_WRITABLE_BIT , &UDRS ->flags)) + goto out; +mutex_unlock (&open_lock);mutex_unlock (&floppy_mutex);return 0 ;
drivers/bluetooth/btqcomsmd.c +19 -8
@@ -142,12 +142,16 @@ static int btqcomsmd_probe(struct platform_device *pdev) btq->cmd_channel =qcom_wcnss_open_channel (wcnss,"APPS_RIVA_BT_CMD" , btqcomsmd_cmd_callback, btq); -if (IS_ERR (btq->cmd_channel)) -return PTR_ERR (btq->cmd_channel); +if (IS_ERR (btq->cmd_channel)) { + ret =PTR_ERR (btq->cmd_channel); + goto destroy_acl_channel; + } hdev =hci_alloc_dev (); -if (!hdev) -return -ENOMEM ; +if (!hdev) { + ret = -ENOMEM ; + goto destroy_cmd_channel; + }hci_set_drvdata (hdev, btq); btq->hdev = hdev;
@@ -161,14 +165,21 @@ static int btqcomsmd_probe(struct platform_device *pdev) hdev->set_bdaddr = qca_set_bdaddr_rome; ret =hci_register_dev (hdev); -if (ret <0 ) { -hci_free_dev (hdev); -return ret; - } +if (ret <0 ) + goto hci_free_dev;platform_set_drvdata (pdev, btq);return 0 ; + +hci_free_dev: +hci_free_dev (hdev); +destroy_cmd_channel: +rpmsg_destroy_ept (btq->cmd_channel); +destroy_acl_channel: +rpmsg_destroy_ept (btq->acl_channel); + +return ret; }static int btqcomsmd_remove (struct platform_device *pdev)
drivers/bluetooth/btusb.c +10 -10
@@ -2568,7 +2568,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb) skb =bt_skb_alloc (HCI_WMT_MAX_EVENT_SIZE ,GFP_ATOMIC );if (!skb) { hdev->stat.err_rx++; - goto err_out; +return ; }hci_skb_pkt_type (skb) =HCI_EVENT_PKT ;
@@ -2586,13 +2586,18 @@ static void btusb_mtk_wmt_recv(struct urb *urb)*/ if (test_bit (BTUSB_TX_WAIT_VND_EVT , &data->flags)) { data->evt_skb =skb_clone (skb,GFP_ATOMIC ); -if (!data->evt_skb) - goto err_out; +if (!data->evt_skb) { +kfree_skb (skb); +return ; + } } err =hci_recv_frame (hdev, skb); -if (err <0 ) - goto err_free_skb; +if (err <0 ) { +kfree_skb (data->evt_skb); + data->evt_skb =NULL ; +return ; + }if (test_and_clear_bit (BTUSB_TX_WAIT_VND_EVT , &data->flags)) {
@@ -2601,11 +2606,6 @@ static void btusb_mtk_wmt_recv(struct urb *urb)wake_up_bit (&data->flags,BTUSB_TX_WAIT_VND_EVT ); } -err_out: -return ; -err_free_skb: -kfree_skb (data->evt_skb); - data->evt_skb =NULL ;return ; }else if (urb->status == -ENOENT ) {/* Avoid suspend failed when usb_kill_urb */
drivers/bluetooth/hci_ldisc.c +3 -4
@@ -127,10 +127,9 @@ int hci_uart_tx_wakeup(struct hci_uart *hu)if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) goto no_schedule; -if (test_and_set_bit (HCI_UART_SENDING , &hu->tx_state)) { -set_bit (HCI_UART_TX_WAKEUP , &hu->tx_state); +set_bit (HCI_UART_TX_WAKEUP , &hu->tx_state); +if (test_and_set_bit (HCI_UART_SENDING , &hu->tx_state)) goto no_schedule; - }BT_DBG ("" );
@@ -174,10 +173,10 @@ static void hci_uart_write_work(struct work_struct *work)kfree_skb (skb); } +clear_bit (HCI_UART_SENDING , &hu->tx_state);if (test_bit (HCI_UART_TX_WAKEUP , &hu->tx_state)) goto restart; -clear_bit (HCI_UART_SENDING , &hu->tx_state);wake_up_bit (&hu->tx_state,HCI_UART_SENDING ); }
drivers/bluetooth/hci_serdev.c +2 -2
@@ -85,9 +85,9 @@ static void hci_uart_write_work(struct work_struct *work)hci_uart_tx_complete (hu,hci_skb_pkt_type (skb));kfree_skb (skb); } - }while (test_bit (HCI_UART_TX_WAKEUP , &hu->tx_state)); -clear_bit (HCI_UART_SENDING , &hu->tx_state); +clear_bit (HCI_UART_SENDING , &hu->tx_state); + }while (test_bit (HCI_UART_TX_WAKEUP , &hu->tx_state)); }/* ------- Interface to HCI layer ------ */
drivers/char/hw_random/timeriomem-rng.c +1 -1
@@ -69,7 +69,7 @@ static int timeriomem_rng_read(struct hwrng *hwrng, void *data,*/ if (retval >0 )usleep_range (period_us, - period_us +min (1 , period_us /100 )); + period_us +max (1 , period_us /100 )); *(u32 *)data =readl (priv->io_base); retval +=sizeof (u32);
drivers/char/random.c +1 -1
@@ -2149,7 +2149,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)return -EPERM ;if (crng_init <2 )return -ENODATA ; -crng_reseed (&primary_crng,NULL ); +crng_reseed (&primary_crng, &input_pool); crng_global_init_time = jiffies -1 ;return 0 ;default :
drivers/char/tpm/tpm_tis_core.c +3 -47
68 lines not on this page · raw message
drivers/clk/clk-ast2600.c +27 -10
@@ -17,7 +17,8 @@#define ASPEED_G6_NUM_CLKS 67 -#define ASPEED_G6_SILICON_REV 0x004 +#define ASPEED_G6_SILICON_REV 0x014 +#define CHIP_REVISION_ID GENMASK(23, 16)#define ASPEED_G6_RESET_CTRL 0x040#define ASPEED_G6_RESET_CTRL2 0x050
@@ -189,18 +190,34 @@ static struct clk_hw *ast2600_calc_pll(const char *name, u32 val)static struct clk_hw *ast2600_calc_apll (const char *name,u32 val) {unsigned int mult, div; +u32 chip_id =readl (scu_g6_base +ASPEED_G6_SILICON_REV ); -if (val &BIT (20 )) { -/* Pass through mode */ - mult = div =1 ; +if (((chip_id &CHIP_REVISION_ID ) >>16 ) >=2 ) { +if (val &BIT (24 )) { +/* Pass through mode */ + mult = div =1 ; + }else { +/* F = 25Mhz * [(m + 1) / (n + 1)] / (p + 1) */ +u32 m = val &0x1fff ; +u32 n = (val >>13 ) &0x3f ; +u32 p = (val >>19 ) &0xf ; + + mult = (m +1 ); + div = (n +1 ) * (p +1 ); + } }else { -/* F = 25Mhz * (2-od) * [(m + 2) / (n + 1)] */ -u32 m = (val >>5 ) &0x3f ; -u32 od = (val >>4 ) &0x1 ; -u32 n = val &0xf ; +if (val &BIT (20 )) { +/* Pass through mode */ + mult = div =1 ; + }else { +/* F = 25Mhz * (2-od) * [(m + 2) / (n + 1)] */ +u32 m = (val >>5 ) &0x3f ; +u32 od = (val >>4 ) &0x1 ; +u32 n = val &0xf ; - mult = (2 - od) * (m +2 ); - div = n +1 ; + mult = (2 - od) * (m +2 ); + div = n +1 ; + } }return clk_hw_register_fixed_factor (NULL , name,"clkin" ,0 , mult, div);
drivers/clk/meson/clk-pll.c +6 -4
@@ -363,13 +363,14 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate, {struct clk_regmap *clk =to_clk_regmap (hw);struct meson_clk_pll_data *pll =meson_clk_pll_data (clk); -unsigned int enabled, m, n, frac =0 , ret; +unsigned int enabled, m, n, frac =0 ;unsigned long old_rate; +int ret;if (parent_rate ==0 || rate ==0 )return -EINVAL ; - old_rate = rate; + old_rate =clk_hw_get_rate (hw); ret =meson_clk_get_pll_settings (rate, parent_rate, &m, &n, pll);if (ret)
@@ -391,7 +392,8 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,if (!enabled)return 0 ; -if (meson_clk_pll_enable (hw)) { + ret =meson_clk_pll_enable (hw); +if (ret) {pr_warn ("%s: pll did not lock, trying to restore old rate %lu\n" , __func__, old_rate);/*
@@ -403,7 +405,7 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,meson_clk_pll_set_rate (hw, old_rate, parent_rate); } -return 0 ; +return ret; }/*
drivers/clk/qcom/gcc-msm8998.c +50 -50
341 lines not on this page · raw message
drivers/clk/sunxi-ng/ccu-sun50i-h6.c +5 -5
@@ -228,7 +228,7 @@ static const char * const psi_ahb1_ahb2_parents[] = { "osc24M", "osc32k", static SUNXI_CCU_MP_WITH_MUX(psi_ahb1_ahb2_clk, "psi-ahb1-ahb2", psi_ahb1_ahb2_parents,0x510 , -0 ,5 ,/* M */ +0 ,2 ,/* M */ 8 ,2 ,/* P */ 24 ,2 ,/* mux */ 0);
@@ -237,19 +237,19 @@ static const char * const ahb3_apb1_apb2_parents[] = { "osc24M", "osc32k","psi-ahb1-ahb2" , "pll-periph0" }; static SUNXI_CCU_MP_WITH_MUX(ahb3_clk, "ahb3", ahb3_apb1_apb2_parents, 0x51c, -0 ,5 ,/* M */ +0 ,2 ,/* M */ 8 ,2 ,/* P */ 24 ,2 ,/* mux */ 0); static SUNXI_CCU_MP_WITH_MUX(apb1_clk, "apb1", ahb3_apb1_apb2_parents, 0x520, -0 ,5 ,/* M */ +0 ,2 ,/* M */ 8 ,2 ,/* P */ 24 ,2 ,/* mux */ 0); static SUNXI_CCU_MP_WITH_MUX(apb2_clk, "apb2", ahb3_apb1_apb2_parents, 0x524, -0 ,5 ,/* M */ +0 ,2 ,/* M */ 8 ,2 ,/* P */ 24 ,2 ,/* mux */ 0);
@@ -673,7 +673,7 @@ static struct ccu_mux hdmi_cec_clk = { .common = { .reg = 0xb10, - .features = CCU_FEATURE_VARIABLE_PREDIV, + .features = CCU_FEATURE_FIXED_PREDIV, .hw.init = CLK_HW_INIT_PARENTS("hdmi-cec", hdmi_cec_parents, &ccu_mux_ops,
drivers/clocksource/Kconfig +1 -0
@@ -79,6 +79,7 @@ config IXP4XX_TIMER bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST depends on HAS_IOMEM select CLKSRC_MMIO + select TIMER_OF if OF help Enables support for the Intel XScale IXP4xx SoC timer.
drivers/clocksource/mxs_timer.c +1 -4
@@ -138,10 +138,7 @@ static void mxs_irq_clear(char *state)/* Clear pending interrupt */ timrot_irq_acknowledge (); - -#ifdef DEBUG - pr_info("%s: changing mode to %s\n", __func__, state) -#endif /* DEBUG */ +pr_debug ("%s: changing mode to %s\n" , __func__, state); }static int mxs_shutdown (struct clock_event_device *evt)
drivers/cpufreq/brcmstb-avs-cpufreq.c +17 -7
@@ -566,6 +566,16 @@ static int brcm_avs_prepare_init(struct platform_device *pdev)return ret; } +static void brcm_avs_prepare_uninit (struct platform_device *pdev) +{ +struct private_data *priv; + + priv =platform_get_drvdata (pdev); + +iounmap (priv->avs_intr_base); +iounmap (priv->base); +} +static int brcm_avs_cpufreq_init (struct cpufreq_policy *policy) {struct cpufreq_frequency_table *freq_table;
@@ -701,21 +711,21 @@ static int brcm_avs_cpufreq_probe(struct platform_device *pdev) brcm_avs_driver.driver_data = pdev; -return cpufreq_register_driver (&brcm_avs_driver); + ret =cpufreq_register_driver (&brcm_avs_driver); +if (ret) +brcm_avs_prepare_uninit (pdev); + +return ret; }static int brcm_avs_cpufreq_remove (struct platform_device *pdev) { -struct private_data *priv;int ret; ret =cpufreq_unregister_driver (&brcm_avs_driver); -if (ret) -return ret; +WARN_ON (ret); - priv =platform_get_drvdata (pdev); -iounmap (priv->base); -iounmap (priv->avs_intr_base); +brcm_avs_prepare_uninit (pdev);return 0 ; }
drivers/cpufreq/intel_pstate.c +3 -2
@@ -1566,11 +1566,9 @@ static void intel_pstate_max_within_limits(struct cpudata *cpu)static void intel_pstate_get_cpu_pstates (struct cpudata *cpu) { cpu->pstate.min_pstate = pstate_funcs.get_min (); - cpu->pstate.max_pstate = pstate_funcs.get_max (); cpu->pstate.max_pstate_physical = pstate_funcs.get_max_physical (); cpu->pstate.turbo_pstate = pstate_funcs.get_turbo (); cpu->pstate.scaling = pstate_funcs.get_scaling (); - cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling;if (hwp_active && !hwp_mode_bdw) {unsigned int phy_max, current_max;
@@ -1578,9 +1576,12 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)intel_pstate_get_hwp_max (cpu->cpu, &phy_max, ¤t_max); cpu->pstate.turbo_freq = phy_max * cpu->pstate.scaling; cpu->pstate.turbo_pstate = phy_max; + cpu->pstate.max_pstate =HWP_GUARANTEED_PERF (READ_ONCE (cpu->hwp_cap_cached)); }else { cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * cpu->pstate.scaling; + cpu->pstate.max_pstate = pstate_funcs.get_max (); } + cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling;if (pstate_funcs.get_aperf_mperf_shift) cpu->aperf_mperf_shift = pstate_funcs.get_aperf_mperf_shift ();
drivers/crypto/bcm/cipher.c +1 -1
@@ -41,7 +41,7 @@/* ================= Device Structure ================== */ -struct device_private iproc_priv; +struct bcm_device_private iproc_priv;/* ==================== Parameters ===================== */
drivers/crypto/bcm/cipher.h +2 -2
@@ -418,7 +418,7 @@ struct spu_hw {u32 num_chan; }; -struct device_private { +struct bcm_device_private {struct platform_device *pdev;struct spu_hw spu;
@@ -465,6 +465,6 @@ struct device_private { struct mbox_chan **mbox; }; -extern struct device_private iproc_priv; +extern struct bcm_device_private iproc_priv;#endif
drivers/crypto/bcm/util.c +1 -1
@@ -348,7 +348,7 @@ char *spu_alg_name(enum spu_cipher_alg alg, enum spu_cipher_mode mode)static ssize_t spu_debugfs_read (struct file *filp,char __user *ubuf,size_t count,loff_t *offp) { -struct device_private *ipriv; +struct bcm_device_private *ipriv;char *buf;ssize_t ret, out_offset, out_count;int i;
drivers/crypto/chelsio/chtls/chtls_cm.h +0 -3
@@ -50,9 +50,6 @@#define MIN_RCV_WND (24 * 1024U)#define LOOPBACK (x) (((x) & htonl(0xff000000)) == htonl(0x7f000000)) -/* ulp_mem_io + ulptx_idata + payload + padding */ -#define MAX_IMM_ULPTX_WR_LEN (32 + 8 + 256 + 8) -/* for TX: a skb must have a headroom of at least TX_HEADER_LEN bytes */ #define TX_HEADER_LEN \ (sizeof(struct fw_ofld_tx_data_wr) + sizeof(struct sge_opaque_hdr))
drivers/crypto/sunxi-ss/sun4i-ss-cipher.c +78 -61
288 lines not on this page · raw message
drivers/crypto/sunxi-ss/sun4i-ss.h +2 -0
@@ -138,6 +138,8 @@ struct sun4i_ss_ctx {struct reset_control *reset;struct device *dev;struct resource *res; +char buf[4 *SS_RX_MAX ];/* buffer for linearize SG src */ +char bufo[4 *SS_TX_MAX ];/* buffer for linearize SG dst */ spinlock_t slock;/* control the use of the device */ #ifdef CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG u32 seed[SS_SEED_LEN /BITS_PER_LONG ];
drivers/crypto/talitos.c +16 -12
@@ -1097,11 +1097,12 @@ static void ipsec_esp_decrypt_hwauth_done(struct device *dev,*/ static int sg_to_link_tbl_offset (struct scatterlist *sg,int sg_count,unsigned int offset,int datalen,int elen, -struct talitos_ptr *link_tbl_ptr) +struct talitos_ptr *link_tbl_ptr,int align) {int n_sg = elen ? sg_count +1 : sg_count;int count =0 ;int cryptlen = datalen + elen; +int padding =ALIGN (cryptlen, align) - cryptlen;while (cryptlen && sg && n_sg--) {unsigned int len =sg_dma_len (sg);
@@ -1125,7 +1126,7 @@ static int sg_to_link_tbl_offset(struct scatterlist *sg, int sg_count, offset += datalen; }to_talitos_ptr (link_tbl_ptr + count, -sg_dma_address (sg) + offset, len,0 ); +sg_dma_address (sg) + offset,sg_next (sg) ? len : len + padding,0 );to_talitos_ptr_ext_set (link_tbl_ptr + count,0 ,0 ); count++; cryptlen -= len;
@@ -1148,10 +1149,11 @@ static int talitos_sg_map_ext(struct device *dev, struct scatterlist *src, unsigned int len, struct talitos_edesc *edesc, struct talitos_ptr *ptr, int sg_count, unsigned int offset, int tbl_off, int elen, - bool force) + bool force, int align) { struct talitos_private *priv = dev_get_drvdata(dev);bool is_sec1 =has_ftr_sec1 (priv); +int aligned_len =ALIGN (len, align);if (!src) {to_talitos_ptr (ptr,0 ,0 , is_sec1);
@@ -1159,22 +1161,22 @@ static int talitos_sg_map_ext(struct device *dev, struct scatterlist *src, }to_talitos_ptr_ext_set (ptr, elen, is_sec1);if (sg_count ==1 && !force) { -to_talitos_ptr (ptr,sg_dma_address (src) + offset, len, is_sec1); +to_talitos_ptr (ptr,sg_dma_address (src) + offset, aligned_len, is_sec1);return sg_count; }if (is_sec1) { -to_talitos_ptr (ptr, edesc->dma_link_tbl + offset, len, is_sec1); +to_talitos_ptr (ptr, edesc->dma_link_tbl + offset, aligned_len, is_sec1);return sg_count; } sg_count =sg_to_link_tbl_offset (src, sg_count, offset, len, elen, - &edesc->link_tbl[tbl_off]); + &edesc->link_tbl[tbl_off], align);if (sg_count ==1 && !force) {/* Only one segment now, so no link tbl needed*/ copy_talitos_ptr (ptr, &edesc->link_tbl[tbl_off], is_sec1);return sg_count; }to_talitos_ptr (ptr, edesc->dma_link_tbl + - tbl_off *sizeof (struct talitos_ptr ), len, is_sec1); + tbl_off *sizeof (struct talitos_ptr ), aligned_len, is_sec1);to_talitos_ptr_ext_or (ptr,DESC_PTR_LNKTBL_JUMP , is_sec1);return sg_count;
@@ -1186,7 +1188,7 @@ static int talitos_sg_map(struct device *dev, struct scatterlist *src, unsigned int offset, int tbl_off) {return talitos_sg_map_ext (dev, src, len, edesc, ptr, sg_count, offset, - tbl_off,0 , false); + tbl_off,0 , false,1 ); }/*
@@ -1255,7 +1257,7 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq, ret =talitos_sg_map_ext (dev, areq->src, cryptlen, edesc, &desc->ptr[4 ], sg_count, areq->assoclen, tbl_off, elen, - false); + false,1 );if (ret >1 ) { tbl_off += ret;
@@ -1275,7 +1277,7 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq, elen =0 ; ret =talitos_sg_map_ext (dev, areq->dst, cryptlen, edesc, &desc->ptr[5 ], sg_count, areq->assoclen, tbl_off, elen, - is_ipsec_esp && !encrypt); + is_ipsec_esp && !encrypt,1 ); tbl_off += ret;if (!encrypt && is_ipsec_esp) {
@@ -1583,6 +1585,8 @@ static int common_nonsnoop(struct talitos_edesc *edesc,bool sync_needed = false;struct talitos_private *priv =dev_get_drvdata (dev);bool is_sec1 =has_ftr_sec1 (priv); +bool is_ctr = (desc->hdr &DESC_HDR_SEL0_MASK ) ==DESC_HDR_SEL0_AESU && + (desc->hdr &DESC_HDR_MODE0_AESU_MASK ) ==DESC_HDR_MODE0_AESU_CTR ;/* first DWORD empty */
@@ -1603,8 +1607,8 @@ static int common_nonsnoop(struct talitos_edesc *edesc,/* * cipher in */ - sg_count =talitos_sg_map (dev, areq->src, cryptlen, edesc, - &desc->ptr[3 ], sg_count,0 ,0 ); + sg_count =talitos_sg_map_ext (dev, areq->src, cryptlen, edesc, &desc->ptr[3 ], + sg_count,0 ,0 ,0 , false, is_ctr ?16 :1 );if (sg_count >1 ) sync_needed = true;
drivers/crypto/talitos.h +1 -0
@@ -344,6 +344,7 @@ static inline bool has_ftr_sec1(struct talitos_private *priv)/* primary execution unit mode (MODE0) and derivatives */ #define DESC_HDR_MODE0_ENCRYPT cpu_to_be32(0x00100000) +#define DESC_HDR_MODE0_AESU_MASK cpu_to_be32(0x00600000)#define DESC_HDR_MODE0_AESU_CBC cpu_to_be32(0x00200000)#define DESC_HDR_MODE0_AESU_CTR cpu_to_be32(0x00600000)#define DESC_HDR_MODE0_DEU_CBC cpu_to_be32(0x00400000)
drivers/dma/fsldma.c +6 -0
@@ -1214,6 +1214,7 @@ static int fsldma_of_probe(struct platform_device *op) {struct fsldma_device *fdev;struct device_node *child; +unsigned int i;int err; fdev =kzalloc (sizeof (*fdev),GFP_KERNEL );
@@ -1292,6 +1293,10 @@ static int fsldma_of_probe(struct platform_device *op)return 0 ; out_free_fdev: +for (i =0 ; i <FSL_DMA_MAX_CHANS_PER_DEVICE ; i++) { +if (fdev->chan[i]) +fsl_dma_chan_remove (fdev->chan[i]); + }irq_dispose_mapping (fdev->irq);iounmap (fdev->regs); out_free:
@@ -1314,6 +1319,7 @@ static int fsldma_of_remove(struct platform_device *op)if (fdev->chan[i])fsl_dma_chan_remove (fdev->chan[i]); } +irq_dispose_mapping (fdev->irq);iounmap (fdev->regs);kfree (fdev);
drivers/dma/hsu/pci.c +11 -10
@@ -26,22 +26,12 @@static irqreturn_t hsu_pci_irq (int irq,void *dev) {struct hsu_dma_chip *chip = dev; -struct pci_dev *pdev =to_pci_dev (chip->dev);u32 dmaisr;u32 status;unsigned short i;int ret =0 ;int err; -/* -* On Intel Tangier B0 and Anniedale the interrupt line, disregarding -* to have different numbers, is shared between HSU DMA and UART IPs. -* Thus on such SoCs we are expecting that IRQ handler is called in -* UART driver only. -*/ -if (pdev->device ==PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA ) -return IRQ_HANDLED ; - dmaisr =readl (chip->regs +HSU_PCI_DMAISR );for (i =0 ; i < chip->hsu->nr_channels; i++) {if (dmaisr &0x1 ) {
@@ -105,6 +95,17 @@ static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)if (ret) goto err_register_irq; +/* +* On Intel Tangier B0 and Anniedale the interrupt line, disregarding +* to have different numbers, is shared between HSU DMA and UART IPs. +* Thus on such SoCs we are expecting that IRQ handler is called in +* UART driver only. Instead of handling the spurious interrupt +* from HSU DMA here and waste CPU time and delay HSU UART interrupt +* handling, disable the interrupt entirely. +*/ +if (pdev->device ==PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA ) +disable_irq_nosync (chip->irq); +pci_set_drvdata (pdev, chip);return 0 ;
drivers/dma/owl-dma.c +1 -0
@@ -1201,6 +1201,7 @@ static int owl_dma_remove(struct platform_device *pdev)owl_dma_free (od);clk_disable_unprepare (od->clk); +dma_pool_destroy (od->lli_pool);return 0 ; }
drivers/gpio/gpio-pcf857x.c +1 -1
@@ -332,7 +332,7 @@ static int pcf857x_probe(struct i2c_client *client,* reset state. Otherwise it flags pins to be driven low. */ gpio->out = ~n_latch; - gpio->status = gpio->out; + gpio->status = gpio->read (gpio->client); status =devm_gpiochip_add_data (&client->dev, &gpio->chip, gpio);if (status <0 )
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +3 -3
@@ -870,7 +870,7 @@ static ssize_t amdgpu_get_pp_dpm_sclk(struct device *dev,static ssize_t amdgpu_read_mask (const char *buf,size_t count,uint32_t *mask) {int ret; -long level; +unsigned long level;char *sub_str =NULL ;char *tmp;char buf_cpy[AMDGPU_MASK_BUF_MAX +1 ];
@@ -886,8 +886,8 @@ static ssize_t amdgpu_read_mask(const char *buf, size_t count, uint32_t *mask)while (tmp[0 ]) { sub_str =strsep (&tmp, delimiter);if (strlen (sub_str)) { - ret =kstrtol (sub_str,0 , &level); -if (ret) + ret =kstrtoul (sub_str,0 , &level); +if (ret || level >31 )return -EINVAL ; *mask |=1 << level; }else
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +1 -1
@@ -21,7 +21,7 @@* */ -#if !defined(_AMDGPU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ ) +#if !defined(_AMDGPU_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ )#define _AMDGPU_TRACE_H_#include <linux/stringify.h>
drivers/gpu/drm/amd/amdgpu/soc15.c +2 -0
@@ -276,6 +276,8 @@ static u32 soc15_get_xclk(struct amdgpu_device *adev) {u32 reference_clock = adev->clock.spll.reference_freq; +if (adev->asic_type ==CHIP_RENOIR ) +return 10000 ;if (adev->asic_type ==CHIP_RAVEN )return reference_clock /4 ;
drivers/gpu/drm/amd/display/dc/bios/command_table.c +61 -0
85 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c +14 -0
@@ -871,6 +871,20 @@ static bool dce110_program_pix_clk( bp_pc_params.flags.SET_EXTERNAL_REF_DIV_SRC = pll_settings->use_external_clk; +switch (pix_clk_params->color_depth) { +case COLOR_DEPTH_101010 : + bp_pc_params.color_depth =TRANSMITTER_COLOR_DEPTH_30 ; +break ; +case COLOR_DEPTH_121212 : + bp_pc_params.color_depth =TRANSMITTER_COLOR_DEPTH_36 ; +break ; +case COLOR_DEPTH_161616 : + bp_pc_params.color_depth =TRANSMITTER_COLOR_DEPTH_48 ; +break ; +default : +break ; + } +if (clk_src->bios->funcs->set_pixel_clock ( clk_src->bios, &bp_pc_params) !=BP_RESULT_OK )return false;
drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c +1 -0
@@ -563,6 +563,7 @@ static void dce110_stream_encoder_hdmi_set_stream_attribute( cntl.enable_dp_audio = enable_audio; cntl.pixel_clock = actual_pix_clk_khz; cntl.lanes_number =LANE_COUNT_FOUR ; + cntl.color_depth = crtc_timing->display_color_depth;if (enc110->base.bp->funcs->encoder_control ( enc110->base.bp, &cntl) !=BP_RESULT_OK )
drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +4 -4
@@ -429,12 +429,12 @@ static void set_clamp( clamp_max =0x3FC0 ;break ;case COLOR_DEPTH_101010 : -/* 10bit MSB aligned on 14 bit bus '11 1111 1111 1100' */ - clamp_max =0x3FFC ; +/* 10bit MSB aligned on 14 bit bus '11 1111 1111 0000' */ + clamp_max =0x3FF0 ;break ;case COLOR_DEPTH_121212 : -/* 12bit MSB aligned on 14 bit bus '11 1111 1111 1111' */ - clamp_max =0x3FFF ; +/* 12bit MSB aligned on 14 bit bus '11 1111 1111 1100' */ + clamp_max =0x3FFC ;break ;default : clamp_max =0x3FC0 ;
drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c +22 -0
@@ -168,6 +168,11 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = { .ack = NULL }; +static const struct irq_source_info_funcs vupdate_no_lock_irq_info_funcs = { + .set =NULL , + .ack =NULL +}; +#undef BASE_INNER#define BASE_INNER (seg) DMU_BASE__INST0_SEG ## seg
@@ -230,6 +235,17 @@ static const struct irq_source_info_funcs vblank_irq_info_funcs = { .funcs = &vblank_irq_info_funcs\ } +/* vupdate_no_lock_int_entry maps to DC_IRQ_SOURCE_VUPDATEx, to match semantic +* of DCE's DC_IRQ_SOURCE_VUPDATEx. +*/ +#define vupdate_no_lock_int_entry (reg_num)\ + [DC_IRQ_SOURCE_VUPDATE1 + reg_num] = {\ + IRQ_REG_ENTRY(OTG, reg_num,\ + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_INT_EN,\ + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_EVENT_CLEAR),\ + .funcs = &vupdate_no_lock_irq_info_funcs\ + } +#define vblank_int_entry (reg_num)\ [DC_IRQ_SOURCE_VBLANK1 + reg_num] = {\ IRQ_REG_ENTRY(OTG, reg_num,\
@@ -338,6 +354,12 @@ irq_source_info_dcn21[DAL_IRQ_SOURCES_NUMBER] = {vupdate_int_entry (3 ),vupdate_int_entry (4 ),vupdate_int_entry (5 ), +vupdate_no_lock_int_entry (0 ), +vupdate_no_lock_int_entry (1 ), +vupdate_no_lock_int_entry (2 ), +vupdate_no_lock_int_entry (3 ), +vupdate_no_lock_int_entry (4 ), +vupdate_no_lock_int_entry (5 ),vblank_int_entry (0 ),vblank_int_entry (1 ), vblank_int_entry(2),
drivers/gpu/drm/drm_fb_helper.c +10 -5
@@ -965,11 +965,15 @@ static int setcmap_legacy(struct fb_cmap *cmap, struct fb_info *info)drm_modeset_lock_all (fb_helper->dev);drm_client_for_each_modeset (modeset, &fb_helper->client) { crtc = modeset->crtc; -if (!crtc->funcs->gamma_set || !crtc->gamma_size) -return -EINVAL ; +if (!crtc->funcs->gamma_set || !crtc->gamma_size) { + ret = -EINVAL ; + goto out; + } -if (cmap->start + cmap->len > crtc->gamma_size) -return -EINVAL ; +if (cmap->start + cmap->len > crtc->gamma_size) { + ret = -EINVAL ; + goto out; + } r = crtc->gamma_store; g = r + crtc->gamma_size;
@@ -982,8 +986,9 @@ static int setcmap_legacy(struct fb_cmap *cmap, struct fb_info *info) ret = crtc->funcs->gamma_set (crtc, r, g, b, crtc->gamma_size,NULL );if (ret) -return ret; + goto out; } +out:drm_modeset_unlock_all (fb_helper->dev);return ret;
drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c +13 -9
@@ -279,11 +279,8 @@ int oaktrail_hdmi_i2c_init(struct pci_dev *dev) hdmi_dev =pci_get_drvdata (dev); i2c_dev =kzalloc (sizeof (struct hdmi_i2c_dev ),GFP_KERNEL ); -if (i2c_dev ==NULL ) { -DRM_ERROR ("Can't allocate interface\n" ); - ret = -ENOMEM ; - goto exit; - } +if (!i2c_dev) +return -ENOMEM ; i2c_dev->adap = &oaktrail_hdmi_i2c_adapter; i2c_dev->status =I2C_STAT_INIT ;
@@ -300,16 +297,23 @@ int oaktrail_hdmi_i2c_init(struct pci_dev *dev) oaktrail_hdmi_i2c_adapter.name, hdmi_dev);if (ret) {DRM_ERROR ("Failed to request IRQ for I2C controller\n" ); - goto err; + goto free_dev; }/* Adapter registration */ ret =i2c_add_numbered_adapter (&oaktrail_hdmi_i2c_adapter); -return ret; +if (ret) { +DRM_ERROR ("Failed to add I2C adapter\n" ); + goto free_irq; + } -err: +return 0 ; + +free_irq: +free_irq (dev->irq, hdmi_dev); +free_dev:kfree (i2c_dev); -exit: +return ret; }
drivers/gpu/drm/gma500/psb_drv.c +2 -0
@@ -313,6 +313,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)if (ret) goto out_err; + ret = -ENOMEM ; + dev_priv->mmu =psb_mmu_driver_init (dev,1 ,0 ,0 );if (!dev_priv->mmu) goto out_err;
drivers/gpu/drm/i915/display/intel_hdmi.c +5 -1
@@ -2129,7 +2129,11 @@ hdmi_port_clock_valid(struct intel_hdmi *hdmi,if (clock >hdmi_port_clock_limit (hdmi, respect_downstream_limits, force_dvi))return MODE_CLOCK_HIGH ; -/* BXT DPLL can't generate 223-240 MHz */ +/* GLK DPLL can't generate 446-480 MHz */ +if (IS_GEMINILAKE (dev_priv) && clock >446666 && clock <480000 ) +return MODE_CLOCK_RANGE ; + +/* BXT/GLK DPLL can't generate 223-240 MHz */ if (IS_GEN9_LP (dev_priv) && clock >223333 && clock <240000 )return MODE_CLOCK_RANGE ;
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +1 -1
@@ -1099,7 +1099,7 @@ static void mdp5_crtc_pp_done_irq(struct mdp_irq *irq, uint32_t irqstatus) struct mdp5_crtc *mdp5_crtc = container_of(irq, struct mdp5_crtc, pp_done); -complete (&mdp5_crtc->pp_completion); +complete_all (&mdp5_crtc->pp_completion); }static void mdp5_crtc_wait_for_pp_done (struct drm_crtc *crtc)
drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c +1 -1
@@ -139,7 +139,7 @@ const struct msm_dsi_phy_cfg dsi_phy_20nm_cfgs = { .disable = dsi_20nm_phy_disable, .init = msm_dsi_phy_init_common, }, - .io_start = { 0xfd998300, 0xfd9a0300 }, + .io_start = { 0xfd998500, 0xfd9a0500 }, .num_dsi_phy = 2, };
drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h +1 -0
@@ -14,6 +14,7 @@ enum dcb_connector_type {DCB_CONNECTOR_LVDS_SPWG =0x41 ,DCB_CONNECTOR_DP =0x46 , DCB_CONNECTOR_eDP =0x47 , + DCB_CONNECTOR_mDP =0x48 ,DCB_CONNECTOR_HDMI_0 =0x60 ,DCB_CONNECTOR_HDMI_1 =0x61 , DCB_CONNECTOR_HDMI_C = 0x63,
drivers/gpu/drm/nouveau/nouveau_chan.c +1 -0
@@ -497,6 +497,7 @@ nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,if (ret) {NV_PRINTK (err, cli,"channel failed to initialise, %d\n" , ret);nouveau_channel_del (pchan); + goto done; } ret =nouveau_svmm_join ((*pchan)->vmm->svmm, (*pchan)->inst);
drivers/gpu/drm/nouveau/nouveau_connector.c +1 -0
@@ -1240,6 +1240,7 @@ drm_conntype_from_dcb(enum dcb_connector_type dcb)case DCB_CONNECTOR_DMS59_DP0 :case DCB_CONNECTOR_DMS59_DP1 :case DCB_CONNECTOR_DP : +case DCB_CONNECTOR_mDP :case DCB_CONNECTOR_USB_C :return DRM_MODE_CONNECTOR_DisplayPort;case DCB_CONNECTOR_eDP :return DRM_MODE_CONNECTOR_eDP;case DCB_CONNECTOR_HDMI_0 :
drivers/gpu/drm/scheduler/sched_main.c +3 -0
@@ -851,6 +851,9 @@ void drm_sched_fini(struct drm_gpu_scheduler *sched)if (sched->thread)kthread_stop (sched->thread); +/* Confirm no work left behind accessing device structures */ +cancel_delayed_work_sync (&sched->work_tdr); + sched->ready = false; }EXPORT_SYMBOL (drm_sched_fini);
drivers/gpu/drm/sun4i/sun4i_tcon.c +2 -19
@@ -545,30 +545,13 @@ static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon,if (info->bus_flags &DRM_BUS_FLAG_DE_LOW ) val |=SUN4I_TCON0_IO_POL_DE_NEGATIVE ; -/* -* On A20 and similar SoCs, the only way to achieve Positive Edge -* (Rising Edge), is setting dclk clock phase to 2/3(240°). -* By default TCON works in Negative Edge(Falling Edge), -* this is why phase is set to 0 in that case. -* Unfortunately there's no way to logically invert dclk through -* IO_POL register. -* The only acceptable way to work, triple checked with scope, -* is using clock phase set to 0° for Negative Edge and set to 240° -* for Positive Edge. -* On A33 and similar SoCs there would be a 90° phase option, -* but it divides also dclk by 2. -* Following code is a way to avoid quirks all around TCON -* and DOTCLOCK drivers. -*/ -if (info->bus_flags &DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE ) -clk_set_phase (tcon->dclk,240 ); -if (info->bus_flags &DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE ) -clk_set_phase (tcon->dclk,0 ); + val |=SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE ;regmap_update_bits (tcon->regs,SUN4I_TCON0_IO_POL_REG ,SUN4I_TCON0_IO_POL_HSYNC_POSITIVE |SUN4I_TCON0_IO_POL_VSYNC_POSITIVE | +SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE |SUN4I_TCON0_IO_POL_DE_NEGATIVE , val);
drivers/gpu/drm/sun4i/sun4i_tcon.h +1 -0
@@ -113,6 +113,7 @@#define SUN4I_TCON0_IO_POL_REG 0x88#define SUN4I_TCON0_IO_POL_DCLK_PHASE (phase) ((phase & 3) << 28)#define SUN4I_TCON0_IO_POL_DE_NEGATIVE BIT(27) +#define SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE BIT(26)#define SUN4I_TCON0_IO_POL_HSYNC_POSITIVE BIT(25)#define SUN4I_TCON0_IO_POL_VSYNC_POSITIVE BIT(24)
drivers/hid/hid-core.c +3 -0
@@ -1300,6 +1300,9 @@ EXPORT_SYMBOL_GPL(hid_open_report);static s32 snto32 (__u32 value,unsigned n) { +if (!value || !n) +return 0 ; +switch (n) {case 8 :return ((__s8 )value);case 16 :return ((__s16 )value);
drivers/hid/hid-logitech-dj.c +1 -0
@@ -980,6 +980,7 @@ static void logi_hidpp_recv_queue_notif(struct hid_device *hdev,case 0x07 : device_type ="eQUAD step 4 Gaming" ;logi_hidpp_dev_conn_notif_equad (hdev, hidpp_report, &workitem); + workitem.reports_supported |=STD_KEYBOARD ;break ;case 0x08 : device_type ="eQUAD step 4 for gamepads" ;
drivers/hid/wacom_wac.c +6 -1
@@ -2600,7 +2600,12 @@ static void wacom_wac_finger_event(struct hid_device *hdev, wacom_wac->is_invalid_bt_frame = !value;return ;case HID_DG_CONTACTMAX : - features->touch_max = value; +if (!features->touch_max) { + features->touch_max = value; + }else { +hid_warn (hdev,"%s: ignoring attempt to overwrite non-zero touch_max " +"%d -> %d\n" , __func__, features->touch_max, value); + }return ; }
drivers/hsi/controllers/omap_ssi_core.c +1 -1
@@ -424,7 +424,7 @@ static int ssi_hw_init(struct hsi_controller *ssi)struct omap_ssi_controller *omap_ssi =hsi_controller_drvdata (ssi);int err; - err =pm_runtime_get_sync (ssi->device.parent); + err =pm_runtime_resume_and_get (ssi->device.parent);if (err <0 ) {dev_err (&ssi->device,"runtime PM failed %d\n" , err);return err;
drivers/hv/channel_mgmt.c +1 -2
@@ -1101,8 +1101,7 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)vmbus_device_unregister (channel->device_obj);put_device (dev); } - } -if (channel->primary_channel !=NULL ) { + }else if (channel->primary_channel !=NULL ) {/* * Sub-channel is being rescinded. Following is the channel * close sequence when initiated from the driveri (refer to
drivers/i2c/busses/i2c-bcm-iproc.c +181 -50
108 lines not on this page · raw message
drivers/i2c/busses/i2c-qcom-geni.c +43 -16
59 lines not on this page · raw message
drivers/infiniband/hw/hns/hns_roce_device.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_main.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/sw/siw/siw_qp.c +142 -129
271 lines not on this page · raw message
drivers/input/touchscreen/raydium_i2c_ts.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/md/dm-era-target.c +60 -33
93 lines not on this page · raw message
drivers/md/dm.c +60 -0
60 lines not on this page · raw message
drivers/media/pci/cx25821/cx25821-core.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/intel/ipu3/ipu3-cio2.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7134/saa7134-empress.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/smipcie/smipcie-ir.c +26 -20
46 lines not on this page · raw message
drivers/media/platform/qcom/camss/camss-video.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/misc/vmw_vmci/vmci_queue_pair.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/mmc/host/renesas_sdhi_internal_dmac.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-common.h +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +38 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/sge.c +8 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +9 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +14 -36
50 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_txrx.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/sun/sunvnet_common.c +4 -19
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +12 -14
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/phy_n.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-emmc.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/power/reset/at91-sama5d2_shdwc.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/regulator/qcom-rpmh-regulator.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/media/imx/imx-media-csc-scaler.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/staging/media/imx/imx-media-dev.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/staging/mt7621-dma/hsdma-mt7621.c new file +762 -0
762 lines not on this page · raw message
drivers/staging/mt7621-dma/mtk-hsdma.c deleted +0 -762
762 lines not on this page · raw message
drivers/staging/rtl8188eu/os_dep/usb_intf.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/os_dep/wifi_regd.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/target/iscsi/cxgbit/cxgbit_target.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/vfio/vfio_iommu_type1.c +21 -25
46 lines not on this page · raw message
drivers/virt/vboxguest/vboxguest_utils.c +12 -6
Lines of this file are not shown. View the raw message.
include/linux/icmpv6.h +46 -2
48 lines not on this page · raw message
kernel/tracepoint.c +64 -16
80 lines not on this page · raw message
net/ipv6/ip6_icmp.c +41 -5
46 lines not on this page · raw message
tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json +1 -1
Lines of this file are not shown. View the raw message.
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +13 -1
Lines of this file are not shown. View the raw message.
tools/perf/util/intel-pt-decoder/intel-pt-decoder.h +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/eeh/eeh-basic.sh +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.