Linux 5.4.198
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.198 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/ABI/testing/sysfs-ata | 11 Documentation/conf.py | 2 Documentation/devicetree/bindings/gpio/gpio-altera.txt | 5 Documentation/hwmon/hwmon-kernel-api.rst | 2 Makefile | 2 arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 - arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 arch/arm/boot/dts/ox820.dtsi | 2 arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 arch/arm/mach-hisi/platsmp.c | 4 arch/arm/mach-mediatek/Kconfig | 1 arch/arm/mach-omap1/clock.c | 2 arch/arm/mach-pxa/cm-x300.c | 8 arch/arm/mach-pxa/magician.c | 2 arch/arm/mach-pxa/tosa.c | 4 arch/arm/mach-vexpress/dcscb.c | 1 arch/arm64/Kconfig.platforms | 1 arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 arch/arm64/kernel/sys_compat.c | 2 arch/arm64/net/bpf_jit_comp.c | 1 arch/m68k/Kconfig.cpu | 2 arch/m68k/Kconfig.machine | 1 arch/m68k/include/asm/pgtable_no.h | 3 arch/mips/include/asm/mach-ip27/cpu-feature-overrides.h | 1 arch/mips/kernel/mips-cpc.c | 1 arch/openrisc/include/asm/timex.h | 1 arch/openrisc/kernel/head.S | 9 arch/powerpc/include/asm/page.h | 7 arch/powerpc/kernel/fadump.c | 8 arch/powerpc/kernel/idle.c | 2 arch/powerpc/kernel/ptrace.c | 21 + arch/powerpc/perf/isa207-common.c | 3 arch/powerpc/platforms/4xx/cpm.c | 2 arch/powerpc/platforms/8xx/cpm1.c | 1 arch/powerpc/platforms/powernv/opal-fadump.c | 94 +++--- arch/powerpc/platforms/powernv/opal-fadump.h | 10 arch/powerpc/platforms/powernv/ultravisor.c | 1 arch/powerpc/sysdev/dart_iommu.c | 6 arch/powerpc/sysdev/fsl_rio.c | 2 arch/powerpc/sysdev/xics/icp-opal.c | 1 arch/s390/crypto/aes_s390.c | 4 arch/s390/include/asm/preempt.h | 15 - arch/s390/mm/gmap.c | 14 arch/um/drivers/chan_user.c | 9 arch/um/include/asm/thread_info.h | 2 arch/um/kernel/exec.c | 2 arch/um/kernel/process.c | 2 arch/um/kernel/ptrace.c | 8 arch/um/kernel/signal.c | 4 arch/x86/entry/vdso/vma.c | 2 arch/x86/events/amd/ibs.c | 18 + arch/x86/events/intel/core.c | 2 arch/x86/include/asm/acenv.h | 14 arch/x86/include/asm/cpufeature.h | 2 arch/x86/include/asm/suspend_32.h | 2 arch/x86/include/asm/suspend_64.h | 12 arch/x86/kernel/apic/apic.c | 2 arch/x86/kernel/cpu/intel.c | 2 arch/x86/kernel/step.c | 3 arch/x86/kernel/sys_x86_64.c | 7 arch/x86/kvm/vmx/nested.c | 15 - arch/x86/lib/delay.c | 4 arch/x86/mm/pat.c | 2 arch/x86/um/ldt.c | 6 arch/xtensa/kernel/ptrace.c | 4 arch/xtensa/kernel/signal.c | 4 block/bfq-cgroup.c | 111 ++++--- block/bfq-iosched.c | 46 +-- block/bfq-iosched.h | 6 block/bio.c | 2 block/blk-iolatency.c | 122 ++++---- crypto/cryptd.c | 23 - drivers/acpi/property.c | 18 - drivers/acpi/sleep.c | 12 drivers/ata/libata-transport.c | 2 drivers/ata/pata_octeon_cf.c | 3 drivers/base/bus.c | 4 drivers/base/dd.c | 5 drivers/base/node.c | 1 drivers/block/drbd/drbd_main.c | 11 drivers/block/nbd.c | 50 ++- drivers/block/virtio_blk.c | 7 drivers/bus/ti-sysc.c | 4 drivers/char/ipmi/ipmi_msghandler.c | 4 drivers/char/ipmi/ipmi_ssif.c | 23 + drivers/clocksource/timer-oxnas-rps.c | 2 drivers/clocksource/timer-riscv.c | 2 drivers/clocksource/timer-sp804.c | 10 drivers/crypto/marvell/cipher.c | 1 drivers/devfreq/rk3399_dmc.c | 2 drivers/dma/stm32-mdma.c | 21 - drivers/dma/xilinx/zynqmp_dma.c | 5 drivers/extcon/extcon.c | 29 + drivers/firmware/arm_scmi/base.c | 2 drivers/firmware/dmi-sysfs.c | 2 drivers/firmware/stratix10-svc.c | 12 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 drivers/gpu/drm/amd/amdgpu/kv_dpm.c | 14 drivers/gpu/drm/amd/amdgpu/si_dpm.c | 8 drivers/gpu/drm/arm/display/komeda/komeda_plane.c | 10 drivers/gpu/drm/arm/malidp_crtc.c | 5 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 31 +- drivers/gpu/drm/drm_edid.c | 6 drivers/gpu/drm/drm_plane.c | 14 drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 drivers/gpu/drm/gma500/psb_intel_display.c | 7 drivers/gpu/drm/imx/ipuv3-crtc.c | 2 drivers/gpu/drm/mediatek/mtk_cec.c | 2 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 1 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 - drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 - drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 + drivers/gpu/drm/msm/dsi/dsi_host.c | 21 - drivers/gpu/drm/msm/hdmi/hdmi.c | 10 drivers/gpu/drm/msm/msm_gem_prime.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 drivers/gpu/drm/radeon/radeon_connectors.c | 4 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 drivers/gpu/drm/vc4/vc4_txp.c | 8 drivers/gpu/drm/virtio/virtgpu_display.c | 2 drivers/hid/hid-bigbenff.c | 6 drivers/hid/hid-elan.c | 2 drivers/hid/hid-led.c | 2 drivers/hwmon/hwmon.c | 16 - drivers/hwtracing/coresight/coresight-cpu-debug.c | 7 drivers/i2c/busses/i2c-at91-master.c | 11 drivers/i2c/busses/i2c-cadence.c | 12 drivers/iio/adc/ad7124.c | 1 drivers/iio/adc/sc27xx_adc.c | 20 - drivers/iio/adc/stmpe-adc.c | 8 drivers/iio/common/st_sensors/st_sensors_core.c | 24 + drivers/iio/dummy/iio_simple_dummy.c | 20 - drivers/infiniband/hw/hfi1/file_ops.c | 2 drivers/infiniband/hw/hfi1/init.c | 2 drivers/infiniband/hw/hfi1/sdma.c | 12 drivers/infiniband/sw/rdmavt/qp.c | 6 drivers/infiniband/sw/rxe/rxe_req.c | 2 drivers/input/misc/sparcspkr.c | 1 drivers/input/mouse/bcm5974.c | 7 drivers/input/touchscreen/stmfts.c | 16 - drivers/iommu/amd_iommu_init.c | 2 drivers/iommu/msm_iommu.c | 11 drivers/iommu/mtk_iommu.c | 3 drivers/irqchip/irq-armada-370-xp.c | 11 drivers/irqchip/irq-aspeed-i2c-ic.c | 4 drivers/irqchip/irq-sni-exiu.c | 25 + drivers/irqchip/irq-xtensa-mx.c | 18 - drivers/macintosh/Kconfig | 6 drivers/macintosh/Makefile | 3 drivers/macintosh/via-pmu.c | 2 drivers/mailbox/mailbox.c | 19 - drivers/md/bcache/request.c | 6 drivers/md/md-bitmap.c | 44 +- drivers/md/md.c | 33 +- drivers/md/raid0.c | 31 +- drivers/media/cec/cec-adap.c | 6 drivers/media/i2c/ov7670.c | 1 drivers/media/pci/cx23885/cx23885-core.c | 6 drivers/media/pci/cx25821/cx25821-core.c | 2 drivers/media/platform/aspeed-video.c | 4 drivers/media/platform/coda/coda-common.c | 35 +- drivers/media/platform/exynos4-is/fimc-is.c | 2 drivers/media/platform/exynos4-is/fimc-isp-video.h | 2 drivers/media/platform/qcom/venus/hfi.c | 3 drivers/media/platform/sti/delta/delta-v4l2.c | 6 drivers/media/platform/vsp1/vsp1_rpf.c | 6 drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 drivers/media/usb/uvc/uvc_v4l2.c | 20 - drivers/mfd/davinci_voicecodec.c | 6 drivers/mfd/ipaq-micro.c | 2 drivers/misc/cardreader/rtsx_usb.c | 1 drivers/misc/lkdtm/usercopy.c | 17 - drivers/misc/ocxl/file.c | 2 drivers/mmc/core/block.c | 3 drivers/mmc/host/jz4740_mmc.c | 20 + drivers/mtd/chips/cfi_cmdset_0002.c | 103 +++--- drivers/mtd/ubi/vmt.c | 1 drivers/net/can/xilinx_can.c | 4 drivers/net/dsa/lantiq_gswip.c | 4 drivers/net/dsa/mv88e6xxx/chip.c | 1 drivers/net/ethernet/altera/altera_tse_main.c | 6 drivers/net/ethernet/broadcom/Makefile | 5 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 8 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 2 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 45 ++- drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c | 9 drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 4 drivers/net/phy/mdio_bus.c | 1 drivers/net/phy/micrel.c | 11 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 drivers/net/wireless/ath/carl9170/tx.c | 3 drivers/net/wireless/broadcom/b43/phy_n.c | 2 drivers/net/wireless/broadcom/b43legacy/phy.c | 2 drivers/net/wireless/intel/ipw2x00/libipw_tx.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/power.c | 3 drivers/net/wireless/marvell/mwifiex/11h.c | 2 drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c | 8 drivers/net/wireless/realtek/rtlwifi/usb.c | 2 drivers/nfc/st21nfca/se.c | 32 +- drivers/nfc/st21nfca/st21nfca.h | 1 drivers/nvdimm/security.c | 5 drivers/nvme/host/pci.c | 1 drivers/of/overlay.c | 4 drivers/pci/controller/dwc/pci-imx6.c | 23 - drivers/pci/controller/dwc/pcie-qcom.c | 9 drivers/pci/controller/pcie-cadence-ep.c | 3 drivers/pci/controller/pcie-rockchip-ep.c | 3 drivers/pci/pci.c | 12 drivers/pcmcia/Kconfig | 2 drivers/phy/qualcomm/phy-qcom-qmp.c | 13 drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 drivers/pwm/pwm-lp3943.c | 1 drivers/regulator/core.c | 7 drivers/regulator/pfuze100-regulator.c | 2 drivers/rpmsg/qcom_smd.c | 4 drivers/rtc/rtc-mt6397.c | 2 drivers/scsi/dc395x.c | 15 - drivers/scsi/fcoe/fcoe_ctlr.c | 2 drivers/scsi/megaraid.c | 2 drivers/scsi/myrb.c | 11 drivers/scsi/ufs/ufs-qcom.c | 7 drivers/scsi/ufs/ufshcd.c | 7 drivers/soc/qcom/smp2p.c | 1 drivers/soc/qcom/smsm.c | 1 drivers/soc/rockchip/grf.c | 2 drivers/spi/spi-img-spfi.c | 2 drivers/spi/spi-rspi.c | 15 - drivers/spi/spi-stm32-qspi.c | 3 drivers/spi/spi-ti-qspi.c | 5 drivers/staging/fieldbus/anybuss/host.c | 2 drivers/staging/greybus/audio_codec.c | 4 drivers/staging/rtl8192e/rtllib_softmac.c | 2 drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 2 drivers/staging/rtl8712/usb_intf.c | 6 drivers/staging/rtl8712/usb_ops.c | 27 + drivers/thermal/broadcom/sr-thermal.c | 3 drivers/tty/goldfish.c | 2 drivers/tty/serial/8250/8250_fintek.c | 8 drivers/tty/serial/digicolor-usart.c | 2 drivers/tty/serial/fsl_lpuart.c | 24 - drivers/tty/serial/icom.c | 2 drivers/tty/serial/meson_uart.c | 13 drivers/tty/serial/msm_serial.c | 5 drivers/tty/serial/owl-uart.c | 1 drivers/tty/serial/pch_uart.c | 27 - drivers/tty/serial/rda-uart.c | 2 drivers/tty/serial/sa1100.c | 4 drivers/tty/serial/serial_txx9.c | 2 drivers/tty/serial/sh-sci.c | 6 drivers/tty/serial/sifive.c | 8 drivers/tty/serial/st-asc.c | 4 drivers/tty/serial/stm32-usart.c | 15 - drivers/tty/synclink_gt.c | 2 drivers/tty/tty_buffer.c | 3 drivers/usb/core/hcd-pci.c | 4 drivers/usb/core/hcd.c | 29 + drivers/usb/core/quirks.c | 3 drivers/usb/dwc2/gadget.c | 1 drivers/usb/dwc3/dwc3-pci.c | 2 drivers/usb/host/isp116x-hcd.c | 6 drivers/usb/host/oxu210hp-hcd.c | 2 drivers/usb/musb/omap2430.c | 1 drivers/usb/serial/option.c | 2 drivers/usb/storage/karma.c | 15 - drivers/usb/usbip/stub_dev.c | 2 drivers/usb/usbip/stub_rx.c | 2 drivers/vhost/vringh.c | 10 drivers/video/fbdev/amba-clcd.c | 5 drivers/video/fbdev/core/fbcon.c | 5 drivers/video/fbdev/pxa3xx-gcu.c | 12 drivers/watchdog/ts4800_wdt.c | 5 drivers/watchdog/wdat_wdt.c | 1 drivers/xen/xlate_mmu.c | 1 fs/afs/dir.c | 5 fs/binfmt_flat.c | 27 + fs/btrfs/disk-io.c | 4 fs/btrfs/volumes.c | 8 fs/ceph/xattr.c | 10 fs/cifs/cifsglob.h | 4 fs/cifs/smb2ops.c | 7 fs/cifs/smb2pdu.c | 3 fs/dax.c | 3 fs/dlm/lock.c | 11 fs/dlm/plock.c | 12 fs/ext4/inline.c | 12 fs/ext4/inode.c | 4 fs/ext4/namei.c | 84 ++++- fs/ext4/super.c | 1 fs/f2fs/checkpoint.c | 4 fs/f2fs/f2fs.h | 14 fs/f2fs/file.c | 20 + fs/f2fs/inode.c | 16 + fs/f2fs/segment.c | 9 fs/f2fs/segment.h | 32 +- fs/f2fs/super.c | 6 fs/fat/fatent.c | 7 fs/fs-writeback.c | 13 fs/iomap/buffered-io.c | 3 fs/jffs2/fs.c | 1 fs/jfs/jfs_dmap.c | 3 fs/kernfs/dir.c | 31 +- fs/nfs/file.c | 7 fs/nfs/nfs4proc.c | 4 fs/nfs/pnfs.c | 2 fs/nfs/write.c | 11 fs/notify/fdinfo.c | 11 fs/notify/inotify/inotify.h | 12 fs/notify/inotify/inotify_user.c | 2 fs/notify/mark.c | 6 fs/ocfs2/dlmfs/userdlm.c | 16 + fs/proc/generic.c | 3 fs/proc/proc_net.c | 3 include/drm/drm_edid.h | 6 include/linux/bpf.h | 2 include/linux/efi.h | 2 include/linux/iio/common/st_sensors.h | 3 include/linux/mailbox_controller.h | 1 include/linux/mtd/cfi.h | 1 include/linux/nodemask.h | 51 +-- include/linux/ptrace.h | 7 include/linux/usb/hcd.h | 2 include/net/if_inet6.h | 8 include/net/sch_generic.h | 42 -- include/scsi/libfcoe.h | 3 include/sound/jack.h | 1 include/trace/events/rxrpc.h | 2 include/trace/events/vmscan.h | 4 init/Kconfig | 9 ipc/mqueue.c | 14 kernel/bpf/stackmap.c | 1 kernel/dma/debug.c | 2 kernel/ptrace.c | 5 kernel/sched/fair.c | 8 kernel/sched/pelt.h | 4 kernel/sched/sched.h | 4 kernel/trace/trace.c | 13 kernel/trace/trace_events_hist.c | 3 lib/nodemask.c | 4 mm/compaction.c | 2 mm/hugetlb.c | 9 net/bluetooth/sco.c | 21 - net/ipv4/ip_gre.c | 11 net/ipv4/tcp_input.c | 11 net/ipv4/tcp_output.c | 4 net/ipv4/xfrm4_protocol.c | 1 net/ipv6/addrconf.c | 33 +- net/ipv6/seg6_hmac.c | 1 net/key/af_key.c | 10 net/mac80211/chan.c | 7 net/mac80211/ieee80211_i.h | 5 net/mac80211/scan.c | 20 + net/netfilter/nf_tables_api.c | 22 + net/netfilter/nft_dynset.c | 3 net/netfilter/nft_nat.c | 3 net/nfc/core.c | 1 net/rxrpc/ar-internal.h | 13 net/rxrpc/call_event.c | 3 net/rxrpc/input.c | 31 +- net/rxrpc/output.c | 20 - net/rxrpc/recvmsg.c | 8 net/rxrpc/sendmsg.c | 6 net/rxrpc/sysctl.c | 4 net/sctp/input.c | 4 net/smc/af_smc.c | 2 net/sunrpc/xdr.c | 6 net/sunrpc/xprtrdma/rpc_rdma.c | 5 net/tipc/bearer.c | 3 net/unix/af_unix.c | 2 net/wireless/nl80211.c | 1 scripts/faddr2line | 150 ++++++---- scripts/gdb/linux/config.py | 6 scripts/mod/modpost.c | 5 security/integrity/platform_certs/keyring_handler.h | 8 security/integrity/platform_certs/load_uefi.c | 33 ++ sound/core/jack.c | 34 +- sound/pci/hda/patch_conexant.c | 7 sound/pci/hda/patch_realtek.c | 10 sound/soc/codecs/Kconfig | 1 sound/soc/codecs/rk3328_codec.c | 2 sound/soc/codecs/rt5514.c | 2 sound/soc/codecs/rt5645.c | 7 sound/soc/codecs/tscs454.c | 12 sound/soc/codecs/wm2000.c | 6 sound/soc/fsl/fsl_sai.h | 4 sound/soc/fsl/imx-sgtl5000.c | 14 sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 sound/soc/mxs/mxs-saif.c | 1 sound/soc/soc-dapm.c | 2 tools/perf/builtin-c2c.c | 10 tools/perf/pmu-events/jevents.c | 2 tools/perf/util/data.h | 1 tools/power/x86/turbostat/turbostat.c | 1 tools/testing/selftests/bpf/progs/btf_dump_test_case_syntax.c | 2 tools/testing/selftests/netfilter/nft_nat.sh | 43 ++ 413 files changed, 2500 insertions(+), 1316 deletions(-)
Aditya Garg (1):
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Adrian Hunter (1):
mmc: block: Fix CQE recovery reset success
Aidan MacDonald (1):
mmc: jz4740: Apply DMA engine limits to maximum segment size
Akira Yokosawa (1):
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Alexander Aring (2):
dlm: fix plock invalid read
dlm: fix missing lkb refcount handling
Alexander Lobakin (1):
modpost: fix removing numeric suffixes
Alexander Wetzel (1):
rtl818x: Prevent using not initialized queues
Alexandru Elisei (1):
arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall
Alexandru Tachici (1):
iio: adc: ad7124: Remove shift from scan_type
Alexey Dobriyan (1):
proc: fix dentry/inode overinstantiating under /proc/${pid}/netAlice Wong (1):
drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo
Amadeusz Sławiński (1):
ALSA: jack: Access input_dev under mutex
Amelie Delaunay (1):
dmaengine: stm32-mdma: remove GISR1 register
Amir Goldstein (2):
inotify: show inotify mask flags in proc fdinfo
fsnotify: fix wrong lockdep annotations
Ammar Faizi (1):
x86/delay: Fix the wrong asm constraint in delay_loop()
Andre Przywara (2):
ARM: dts: suniv: F1C100: fix watchdog compatible clocksource/drivers/sp804: Avoid error on multiple instances
Andreas Gruenbacher (1):
iomap: iomap_write_failed fix
Arnd Bergmann (2):
drbd: fix duplicate array initializer
ARM: pxa: maybe fix gpio lookup tables
Baokun Li (1):
jffs2: fix memory leak in jffs2_do_fill_super
Biju Das (1):
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction
Bjorn Helgaas (1):
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Björn Ardö (1):
mailbox: forward the hrtimer if not queued and under a lock
Brian Norris (2):
PM / devfreq: rk3399_dmc: Disable edev on remove() drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Carl Yin(殷张成) (1):
USB: serial: option: add Quectel BG95 modem
Chao Yu (5):
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
f2fs: fix to clear dirty inode in f2fs_evict_inode()
f2fs: fix deadloop in foreground GC
f2fs: fix fallocate to use file_modified to update permissions consistently
Charles Keepax (1):
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
Chengming Zhou (1):
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Christian Borntraeger (1):
s390/gmap: voluntarily schedule during key setting
Christoph Hellwig (1):
virtio_blk: fix the discard_granularity and discard_alignment queue limits
Christophe JAILLET (2):
media: aspeed: Fix an error handling path in aspeed_video_probe()
staging: fieldbus: Fix the error handling path in anybuss_host_common_probe()
Christophe de Dinechin (1):
nodemask.h: fix compilation error with GCC12
Chuanhong Guo (1):
arm: mediatek: select arch timer for mt7629
Chuck Lever (1):
SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer()
Cixi Geng (2):
iio: adc: sc27xx: fix read big scale voltage not right
iio: adc: sc27xx: Fine tune the scale calibration values
Corentin Labbe (1):
crypto: marvell/cesa - ECB does not IV
Corey Minyard (2):
ipmi:ssif: Check for NULL msg when handling events and messages
ipmi: Fix pr_fmt to avoid compilation issues
Cristian Marussi (1):
firmware: arm_scmi: Fix list protocols enumeration in the base protocol
Dan Carpenter (5):
ath9k_htc: fix potential out of bounds access with invalid rxstatus->rs_keyix drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
PCI: cadence: Fix find_first_zero_bit() limit
PCI: rockchip: Fix find_first_zero_bit() limit
net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry()
Dan Williams (1):
nvdimm: Allow overwrite in the presence of disabled dimms
Daniel Thompson (1):
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Daniel Vetter (1):
fbcon: Consistently protect deferred_takeover with console_lock()
Dave Airlie (1):
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
David Howells (7):
rxrpc: Return an error to sendmsg if call failed
rxrpc: Fix listen() setting the bar too high for the prealloc rings
rxrpc: Don't try to resend the request if we're receiving the reply
rxrpc: Fix overlapping ACK accounting
rxrpc: Don't let ack.previousPacket regress
rxrpc: Fix decision on when to generate an IDLE ACK
afs: Fix infinite loop found by xfstest generic/676
Dennis Dalessandro (1):
RDMA/hfi1: Fix potential integer multiplication overflow errors
Dinh Nguyen (1):
dt-bindings: gpio: altera: correct interrupt-cells
Dmitry Baryshkov (1):
drm/msm/dsi: fix error checks and return values for DSI xmit functions
Dmitry Torokhov (1):
Input: stmfts - do not leave device disabled in stmfts_input_open
Dongliang Mu (4):
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
rtlwifi: Use pr_warn instead of WARN_ONCE
media: ov7670: remove ov7670_power_off from ov7670_remove
f2fs: remove WARN_ON in f2fs_is_valid_blkaddr
Douglas Miller (2):
RDMA/hfi1: Prevent panic when SDMA is disabled RDMA/hfi1: Prevent use of lock before it is initialized
Duoming Zhou (5):
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop()
drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
drivers: tty: serial: Fix deadlock in sa1100_set_termios()
drivers: usb: host: Fix deadlock in oxu_bus_suspend()
Emmanuel Grumbach (1):
iwlwifi: mvm: fix assert 1F04 upon reconfig
Eric Biggers (1):
ext4: reject the 'commit' option on ext2 filesystems
Eric Dumazet (4):
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
tcp: tcp_rtx_synack() can be called from process context bpf, arm64: Clear prog->jited_len along prog->jited
tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd
Eric W. Biederman (3):
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Evan Green (1):
USB: hcd-pci: Fully suspend across freeze/thaw cycle
Evan Quan (1):
drm/amd/pm: fix the compile warning
Fabio Estevam (1):
net: phy: micrel: Allow probing without .driver_data
Felix Fietkau (1):
mac80211: upgrade passive scan to active scan on DFS channels after beacon rx
Feras Daoud (1):
net/mlx5: Rearm the FW tracer after each tracer event
Finn Thain (1):
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Florian Westphal (1):
netfilter: nat: really support inet nat without l3 address
Francesco Dolcini (1):
PCI: imx6: Fix PERST# start-up sequence
Gal Pressman (1):
net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure
Geert Uytterhoeven (1):
m68k: math-emu: Fix dependencies of math emulation support
Gong Yuanjun (2):
mips: cpc: Fix refcount leak in mips_cpc_default_phys_base drm/radeon: fix a possible null pointer dereference
Greg Kroah-Hartman (1):
Linux 5.4.198
Greg Ungerer (2):
m68knommu: set ZERO_PAGE() to the allocated zeroed page
m68knommu: fix undefined reference to `_init_sp'
Guenter Roeck (1):
hwmon: Make chip parameter for with_info API mandatory
Guilherme G. Piccoli (1):
coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier
Guoju Fang (1):
net: sched: add barrier to fix packet stuck problem for lockless qdisc
Guoqing Jiang (1):
md: protect md_unregister_thread from reentrancy
Gustavo A. R. Silva (1):
scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
Hangyu Hua (3):
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
misc: ocxl: fix possible double free in ocxl_file_register_afu
usb: usbip: fix a refcount leak in stub_probe()
Hannes Reinecke (1):
scsi: myrb: Fix up null pointer access on myrb_cleanup()
Hans Verkuil (1):
media: cec-adap.c: fix is_configuring state
Hao Luo (1):
kernfs: Separate kernfs_pr_cont_buf and rename_lock.
Haowen Bai (3):
b43legacy: Fix assigning negative value to unsigned variable
b43: Fix assigning negative value to unsigned variable
ipw2x00: Fix potential NULL dereference in libipw_xmit()
Hari Bathini (2):
powerpc/fadump: Fix fadump to work with a different endian capture kernel powerpc/fadump: fix PT_LOAD segment for boot memory area
Heiko Carstens (1):
s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES
Heming Zhao (1):
md/bitmap: don't set sb values if can't pass sanity check
Hoang Le (1):
tipc: check attribute length for bearer name
Huang Guobin (1):
tty: Fix a possible resource leak in icom_probe
Ilpo Järvinen (8):
serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485
serial: digicolor-usart: Don't allow CS5-6
serial: rda-uart: Don't allow CS5-6
serial: txx9: Don't allow CS5-6
serial: sh-sci: Don't allow CS5-6
serial: sifive: Sanitize CSIZE and c_iflag
serial: st-asc: Sanitize CSIZE and correct PARENB for CS7
serial: stm32-usart: Correct CSIZE, bits, and parity
Jaegeuk Kim (1):
f2fs: don't need inode lock for system hidden quota
Jakob Koschel (2):
f2fs: fix dereference of stale list iterator after loop body
staging: greybus: codecs: fix type confusion of list iterator variable
Jakub Kicinski (1):
eth: tg3: silence the GCC 12 array-bounds warning
Jan Kara (11):
bfq: Split shared queues on move between cgroups
bfq: Update cgroup information before merging bio
bfq: Track whether bfq_group is still online
ext4: verify dir block before splitting it
ext4: avoid cycles in directory h-tree
bfq: Avoid merging queues with different parents
bfq: Drop pointless unlock-lock pair
bfq: Remove pointless bfq_init_rq() calls
bfq: Get rid of __bio_blkcg() usage
bfq: Make sure bfqg for which we are queueing requests is online
block: fix bio_clone_blkg_association() to associate with proper blkcg_gq
Jan Kiszka (1):
efi: Add missing prototype for efi_capsule_setup_info
Jani Nikula (1):
drm/edid: fix invalid EDID extension block filtering
Jann Horn (1):
s390/crypto: fix scatterwalk_unmap() callers in AES-GCM
Janusz Krzysztofik (1):
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Jason A. Donenfeld (1):
openrisc: start CPU timer early in boot
Jessica Zhang (2):
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is detected drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is detected
Jia-Ju Bai (1):
md: bcache: check the return value of kzalloc() in detached_dev_do_request()
Jiasheng Jiang (1):
drm: mali-dp: potential dereference of null pointer
Jiri Slaby (1):
serial: pch: don't overwrite xmit->buf[0] by x_char
Joerg Roedel (1):
iommu/amd: Increase timeout waiting for GA log enablement
Johan Hovold (5):
PCI: qcom: Fix runtime PM imbalance on probe errors
PCI: qcom: Fix unbalanced PHY init on probe errors
phy: qcom-qmp: fix struct clk leak on probe errors
phy: qcom-qmp: fix reset-controller leak on probe errors
phy: qcom-qmp: fix pipe-clock imbalance on power-on failure
Johannes Berg (3):
nl80211: show SSID for P2P_GO interfaces
wifi: mac80211: fix use-after-free in chanctx code
um: chan_user: Fix winch_tramp() return value
John Ogness (2):
serial: meson: acquire port->lock in startup()
serial: msm_serial: disable interrupts in __msm_console_write()
Jonathan Teh (1):
HID: hid-led: fix maximum brightness for Dream Cheeky
Josh Poimboeuf (2):
x86/speculation: Add missing prototype for unpriv_ebpf_notify() scripts/faddr2line: Fix overlapping text section failures
Jun Miao (1):
tracing: Fix sleeping function called from invalid context on RT kernel
Junxiao Bi via Ocfs2-devel (1):
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Kajol Jain (1):
powerpc/perf: Fix the threshold compare group constraint for power9
Kan Liang (1):
perf/x86/intel: Fix event constraints for ICL
Kathiravan T (1):
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Kees Cook (2):
lkdtm/usercopy: Expand size of "out of frame" object
nodemask: Fix return values to be unsigned
Keita Suzuki (2):
drm/amd/pm: fix double free in si_parse_power_table()
tracing: Fix potential double free in create_var_ref()
Kinglong Mee (1):
xprtrdma: treat all calls not a bcall when bc_serv is NULL
Kirill A. Shutemov (1):
ACPICA: Avoid cache flush inside virtual machines
Kishon Vijay Abraham I (1):
usb: core: hcd: Add support for deferring roothub registration
Kiwoong Kim (1):
scsi: ufs: core: Exclude UECxx from SFR dump list
Krzysztof Kozlowski (7):
ARM: dts: ox820: align interrupt controller node name with dtschema
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value
rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value
Kuan-Ying Lee (1):
scripts/gdb: change kernel config dumping method
Kuniyuki Iwashima (1):
af_unix: Fix a data-race in unix_dgram_peer_wake_me().
Kwanghoon Son (1):
media: exynos4-is: Fix compile warning
Len Brown (1):
tools/power turbostat: fix ICX DRAM power numbers
Leo Yan (2):
perf c2c: Use stdio interface if slang is not supported perf c2c: Fix sorting in percent_rmt_hitm_cmp()
Leon Romanovsky (1):
net/mlx5: Don't use already freed action pointer
Lin Ma (3):
ASoC: rt5645: Fix errorenous cleanup order
NFC: NULL out the dev->rfkill to prevent UAF
USB: storage: karma: fix rio_karma_init return
Linus Torvalds (2):
drm: fix EDID struct for old ARM OABI format
drm: imx: fix compiler warning with gcc-12
Liu Xinpeng (1):
watchdog: wdat_wdt: Stop watchdog when rebooting the system
Liu Zixian (1):
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Liviu Dudau (1):
drm/komeda: return early if drm_universal_plane_init() fails.
Luca Weiss (1):
media: venus: hfi: avoid null dereference in deinit
Lucas Stach (2):
drm/bridge: adv7511: clean up CEC adapter when probe fails drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lucas Tanure (1):
i2c: cadence: Increase timeout per message if necessary
Lv Ruyi (6):
scsi: megaraid: Fix error check return value of register_chrdev()
drm: msm: fix error check return value of irq_of_parse_and_map() powerpc/xics: fix refcount leak in icp_opal_init() powerpc/powernv: fix missing of_node_put in uv_init() drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Maciej W. Rozycki (2):
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
serial: sifive: Report actual baud base rather than fixed 115200
Manivannan Sadhasivam (1):
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Marc Kleine-Budde (1):
can: xilinx_can: mark bit timing constants as const
Marek Szyprowski (1):
usb: dwc2: gadget: don't reset gadget's driver->bus
Mario Limonciello (1):
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Marios Levogiannis (1):
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Mark Bloch (2):
net/mlx5: fs, delete the FTE when there are no rules attached to it net/mlx5: fs, fail conflicting actions
Mark Brown (2):
ASoC: dapm: Don't fold register value changes into notifications
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Mark-PK Tsai (1):
tracing: Avoid adding tracer option before update_tracer_options
Martin Faltesek (2):
nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION
nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling
Masahiro Yamada (5):
xen: unexport __init-annotated xen_xlate_map_ballooned_pages()
net: mdio: unexport __init-annotated mdio_bus_init()
net: xfrm: unexport __init-annotated xfrm4_protocol_init()
net: ipv6: unexport __init-annotated seg6_hmac_init()
modpost: fix undefined behavior of is_arm_mapping_symbol()
Mathias Nyman (1):
Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag
Matthieu Baerts (1):
x86/pm: Fix false positive kmemleak report in msr_build_context()
Max Filippov (1):
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Maxim Mikityanskiy (1):
net/mlx5e: Update netdev features after changing XDP state
Maxime Ripard (2):
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF drm/vc4: txp: Force alpha to be 0xff if it's disabled
Miaohe Lin (1):
drivers/base/node.c: fix compaction sysfs file leak
Miaoqian Lin (26):
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout
HID: elan: Fix potential double free in elan_input_configured drm/bridge: Fix error handling in analogix_dp_probe
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
media: st-delta: Fix PM disable depth imbalance in delta_probe
media: exynos4-is: Change clk_disable to clk_disable_unprepare drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Input: sparcspkr - fix refcount leak in bbc_beep_probe powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe
usb: musb: Fix missing of_node_put() in omap2430_probe
iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check
soc: rockchip: Fix refcount leak in rockchip_grf_init
firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle
watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe
net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register
ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe
net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list
net: altera: Fix refcount leak in altera_tse_mdio_create
Michael Ellerman (2):
powerpc/64: Only WARN if __pa()/__va() called with bad addresses powerpc/32: Fix overread/overwrite of thread_struct via ptrace
Michael Rodin (1):
media: vsp1: Fix offset calculation for plane cropping
Michael Walle (1):
i2c: at91: use dma safe buffers
Michal Kubecek (1):
Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process"
Mike Kravetz (1):
hugetlb: fix huge_pmd_unshare address update
Mikulas Patocka (1):
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Miles Chen (1):
drm/mediatek: Fix mtk_cec_mask()
Miquel Raynal (1):
iio: st_sensors: Add a local lock for protecting odr
Monish Kumar R (1):
USB: new quirk for Dell Gen 2 devices
Muchun Song (1):
dax: fix cache flush on PMD-mapped pages
Nathan Chancellor (1):
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Nick Desaulniers (1):
Kconfig: add config option for asm goto w/ outputs
Nicolas Dufresne (2):
media: coda: Fix reported H264 profile
media: coda: Add more H264 levels for CODA960
Nicolas Frattaroli (1):
ASoC: rk3328: fix disabling mclk on pclk probe failure
Niels Dossche (4):
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
ipv6: fix locking issues with loops over idev->addr_list IB/rdmavt: add missing locks in rvt_ruc_loopback
usb: usbip: add missing device lock on tweak configuration cmd
Niklas Cassel (1):
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Nuno Sá (1):
of: overlay: do not break notify on NOTIFY_{OK|STOP}OGAWA Hirofumi (1):
fat: add ratelimit to fat*_ent_bread()
Olivier Matz (2):
ixgbe: fix bcast packets Rx on VF after promisc removal
ixgbe: fix unexpected VLAN Rx in promisc mode on VF
Pablo Neira Ayuso (2):
netfilter: nf_tables: disallow non-stateful expression in sets earlier
netfilter: nf_tables: memleak flow rule from commit path
Pali Rohár (1):
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x
Pascal Hambourg (1):
md/raid0: Ignore RAID0 layout if the second zone has only one device
Patrice Chotard (1):
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Pavel Skripkin (1):
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Peng Wu (3):
ARM: versatile: Add missing of_node_put in dcscb_init
ARM: hisi: Add missing of_node_put after of_find_compatible_node powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Peter Zijlstra (1):
x86/cpu: Elide KCSAN for cpu_has() and friends
Petr Machata (1):
mlxsw: spectrum_dcb: Do not warn about priority changes
Phil Elwell (3):
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Philipp Zabel (1):
media: coda: limit frame interval enumeration to supported encoder frame sizes
Pierre-Louis Bossart (1):
ASoC: max98357a: remove dependency on GPIOLIB
Qi Zheng (1):
tty: fix deadlock caused by calling printk() under tty_port->lock
Qu Wenruo (2):
btrfs: add "0x" prefix for unsupported optional features
btrfs: repair super block num_devices automatically
Radhey Shyam Pandey (1):
dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type
Randy Dunlap (7):
x86: Fix return value of __setup handlers
x86/mm: Cleanup the control_va_addr_alignment() __setup handler powerpc/8xx: export 'cpm_setbrg' for modules powerpc/idle: Fix return value of __setup() handler powerpc/4xx/cpm: Fix return value of __setup() handler
macintosh: via-pmu and via-cuda need RTC_LIB
pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards
Ravi Bangoria (1):
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Rei Yamamoto (1):
mm, compaction: fast_find_migrateblock() should return pfn in the target zone
Sakari Ailus (1):
ACPI: property: Release subnode properties with data nodes
Samuel Holland (1):
clocksource/drivers/riscv: Events are stopped during CPU suspend
Schspa Shi (2):
cpufreq: Fix possible race in cpufreq online error path
driver: base: fix UAF when driver_attach failed
Sean Christopherson (2):
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
Sebastian Andrzej Siewior (1):
crypto: cryptd - Protect per-CPU resource by disabling BH.
Sergey Shtylyov (1):
ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files
Shawn Lin (1):
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
Shengjiu Wang (1):
ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition
Sherry Sun (1):
tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id and ida_simple_get
Shuah Khan (1):
misc: rtsx: set NULL intfdata when probe fails
Shyam Prasad N (1):
cifs: return errors during session setup during reconnects
Smith, Kyle Miller (Nimble Kernel) (1):
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Stefan Wahren (1):
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
Steve French (1):
cifs: version operations for smb20 unneeded when legacy support disabled
Steven Price (1):
drm/plane: Move range check for format_count earlier
Tejun Heo (1):
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Thibaut VARÈNE (1):
ath9k: fix QCA9561 PA bias level
Tokunori Ikegami (2):
mtd: cfi_cmdset_0002: Move and rename chip_check/chip_ready/chip_good_for_write
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tony Lindgren (1):
bus: ti-sysc: Fix warnings for unbind for serial
Trond Myklebust (5):
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
NFS: Do not report flush errors in nfs_write_end()
NFS: Don't report errors from nfs_pageio_complete() more than once NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
NFSv4: Don't hold the layoutget locks across multiple RPC calls
Uwe Kleine-König (1):
pwm: lp3943: Fix duty calculation in case period was clamped
Vasily Averin (1):
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Venky Shankar (1):
ceph: allow ceph.dir.rctime xattr to be updatable
Vincent Ray (1):
net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog
Vincent Whitchurch (1):
um: Fix out-of-bounds read in LDT setup
Vinod Polimera (1):
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free during pm runtime resume
Viresh Kumar (1):
Revert "cpufreq: Fix possible race in cpufreq online error path"
Waiman Long (1):
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
Wang Cheng (2):
staging: rtl8712: fix uninit-value in usb_read8() and friends
staging: rtl8712: fix uninit-value in r871xu_drv_init()
Wang Weiyang (1):
tty: goldfish: Use tty_port_destroy() to destroy port
Wenli Looi (1):
ath9k: fix ar9003_get_eepmisc
Willem de Bruijn (1):
ip_gre: test csum_start instead of transport header
Xiao Yang (1):
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Xiaoke Wang (1):
iio: dummy: iio_simple_dummy: check the return value of kstrdup()
Xiaomeng Tong (10):
media: uvcvideo: Fix missing check to determine if element is found in list
scsi: dc395x: Fix a missing check on list iterator drm/nouveau/clk: Fix an incorrect NULL check on list iterator
md: fix an incorrect NULL check in does_sb_need_changing
md: fix an incorrect NULL check in md_reload_sb
iommu/msm: Fix an incorrect NULL check on list iterator
carl9170: tx: fix an incorrect use of list iterator
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
gma500: fix an incorrect NULL check on list iterator
firmware: stratix10-svc: fix a missing check on list iterator
Xie Yongji (2):
nbd: Fix hung on disconnect request if socket is closed before
vringh: Fix loop descriptors check in the indirect cases
Yang Jihong (1):
perf tools: Add missing headers needed by util/data.h
Yang Yingliang (6):
drm/msm/hdmi: check return value after calling platform_get_resource_byname() drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
ASoC: wm2000: fix missing clk_disable_unprepare() on error in wm2000_anc_transition()
mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
rtc: mt6397: check return value after calling platform_get_resource()
video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_probe/remove()
Ye Bin (3):
ext4: fix use-after-free in ext4_rename_dir_prepare
ext4: fix warning in ext4_handle_inode_extension
ext4: fix bug_on in ext4_writepages
Yicong Yang (1):
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Ying Hsu (1):
Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout
Yong Wu (1):
iommu/mediatek: Add list_del in mtk_iommu_remove
Yonghong Song (1):
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Yu Kuai (3):
nbd: call genl_unregister_family() first in nbd_cleanup()
nbd: fix race between nbd_alloc_config() and module removal
nbd: fix io hung while disconnecting device
Yu Xiao (1):
nfp: only report pause frame configuration for physical device
Yuntao Wang (1):
bpf: Fix excessive memory allocation in stack_map_alloc()
Zev Weiss (1):
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Zhang Wensheng (1):
driver core: fix deadlock in __device_attach
Zhen Ni (1):
USB: host: isp116x: check return value after calling platform_get_resource()
Zheng Yongjun (3):
spi: img-spfi: Fix pm_runtime_get_sync() error checking thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe
usb: dwc3: pci: Fix pm_runtime_get_sync() error checking
Zhengjun Xing (1):
perf jevents: Fix event syntax error caused by ExtSel
Zheyu Ma (3):
media: pci: cx23885: Fix the error handling in cx23885_initdev()
media: cx25821: Fix the warning when removing the module
tty: synclink_gt: Fix null-pointer-dereference in slgt_clean()
Zhihao Cheng (2):
fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
ubi: ubi_create_volume: Fix use-after-free when volume creation failed
Zhou Qingyang (1):
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Zixuan Fu (1):
fs: jfs: fix possible NULL pointer dereference in dbFree()
bumwoo lee (1):
extcon: Modify extcon device to be created after driver data is set
huangwenhui (1):
ALSA: hda/conexant - Fix loopback issue with CX20632
jianghaoran (1):
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
liuyacan (1):
net/smc: postpone sk_refcnt increment in connect()
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-ata +6 -5
@@ -107,13 +107,14 @@ Description: described in ATA8 7.16 and 7.17. Only valid if the device is not a PM. - pio_mode: (RO) Transfer modes supported by the device when - in PIO mode. Mostly used by PATA device. + pio_mode: (RO) PIO transfer mode used by the device. + Mostly used by PATA devices. - xfer_mode: (RO) Current transfer mode + xfer_mode: (RO) Current transfer mode. Mostly used by + PATA devices. - dma_mode: (RO) Transfer modes supported by the device when - in DMA mode. Mostly used by PATA device. + dma_mode: (RO) DMA transfer mode used by the device. + Mostly used by PATA devices. class: (RO) Device class. Can be "ata" for disk, "atapi" for packet device, "pmp" for PM, or
Documentation/conf.py +1 -1
@@ -98,7 +98,7 @@ finally: # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'en' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used:
Documentation/devicetree/bindings/gpio/gpio-altera.txt +3 -2
@@ -9,8 +9,9 @@ Required properties: - The second cell is reserved and is currently unused. - gpio-controller : Marks the device node as a GPIO controller. - interrupt-controller: Mark the device node as an interrupt controller -- #interrupt-cells : Should be 1. The interrupt type is fixed in the hardware. +- #interrupt-cells : Should be 2. The interrupt type is fixed in the hardware. - The first cell is the GPIO offset number within the GPIO controller. + - The second cell is the interrupt trigger type and level flags. - interrupts: Specify the interrupt. - altr,interrupt-type: Specifies the interrupt trigger type the GPIO hardware is synthesized. This field is required if the Altera GPIO controller
@@ -38,6 +39,6 @@ gpio_altr: gpio@ff200000 { altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>; #gpio-cells = <2>; gpio-controller; - #interrupt-cells = <1>; + #interrupt-cells = <2>; interrupt-controller; };
Documentation/hwmon/hwmon-kernel-api.rst +1 -1
@@ -72,7 +72,7 @@ hwmon_device_register_with_info is the most comprehensive and preferred means to register a hardware monitoring device. It creates the standard sysfs attributes in the hardware monitoring core, letting the driver focus on reading from and writing to the chip instead of having to bother with sysfs attributes. -The parent device parameter cannot be NULL with non-NULL chip info. Its +The parent device parameter as well as the chip parameter must not be NULL. Its parameters are described in more detail below. devm_hwmon_device_register_with_info is similar to
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 197 +SUBLEVEL = 198 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/bcm2835-rpi-b.dts +6 -7
@@ -53,18 +53,17 @@ "GPIO18", "NC", /* GPIO19 */ "NC", /* GPIO20 */ - "GPIO21", + "CAM_GPIO0", "GPIO22", "GPIO23", "GPIO24", "GPIO25", "NC", /* GPIO26 */ - "CAM_GPIO0", - /* Binary number representing build/revision */ - "CONFIG0", - "CONFIG1", - "CONFIG2", - "CONFIG3", + "GPIO27", + "GPIO28", + "GPIO29", + "GPIO30", + "GPIO31", "NC", /* GPIO32 */ "NC", /* GPIO33 */ "NC", /* GPIO34 */
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts +12 -10
@@ -74,16 +74,18 @@ "GPIO27", "SDA0", "SCL0", - "NC", /* GPIO30 */ - "NC", /* GPIO31 */ - "NC", /* GPIO32 */ - "NC", /* GPIO33 */ - "NC", /* GPIO34 */ - "NC", /* GPIO35 */ - "NC", /* GPIO36 */ - "NC", /* GPIO37 */ - "NC", /* GPIO38 */ - "NC", /* GPIO39 */ + /* Used by BT module */ + "CTS0", + "RTS0", + "TXD0", + "RXD0", + /* Used by Wifi */ + "SD1_CLK", + "SD1_CMD", + "SD1_DATA0", + "SD1_DATA1", + "SD1_DATA2", + "SD1_DATA3", "CAM_GPIO1", /* GPIO40 */ "WL_ON", /* GPIO41 */ "NC", /* GPIO42 */
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts +1 -1
@@ -43,7 +43,7 @@ #gpio-cells = <2>; gpio-line-names = "BT_ON", "WL_ON", - "STATUS_LED_R", + "PWR_LED_R", "LAN_RUN", "", "CAM_GPIO0",
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts +2 -2
@@ -63,8 +63,8 @@ "GPIO43", "GPIO44", "GPIO45", - "GPIO46", - "GPIO47", + "SMPS_SCL", + "SMPS_SDA", /* Used by eMMC */ "SD_CLK_R", "SD_CMD_R",
arch/arm/boot/dts/exynos5250-smdk5250.dts +2 -2
@@ -128,7 +128,7 @@ samsung,i2c-max-bus-freq = <20000>; eeprom@50 { - compatible = "samsung,s524ad0xd1"; + compatible = "samsung,s524ad0xd1", "atmel,24c128"; reg = <0x50>; };
@@ -287,7 +287,7 @@ samsung,i2c-max-bus-freq = <20000>; eeprom@51 { - compatible = "samsung,s524ad0xd1"; + compatible = "samsung,s524ad0xd1", "atmel,24c128"; reg = <0x51>; };
arch/arm/boot/dts/ox820.dtsi +1 -1
@@ -287,7 +287,7 @@ clocks = <&armclk>; }; - gic: gic@1000 { + gic: interrupt-controller@1000 { compatible = "arm,arm11mp-gic"; interrupt-controller; #interrupt-cells = <3>;
arch/arm/boot/dts/suniv-f1c100s.dtsi +3 -1
@@ -104,8 +104,10 @@ wdt: watchdog@1c20ca0 { compatible = "allwinner,suniv-f1c100s-wdt", - "allwinner,sun4i-a10-wdt"; + "allwinner,sun6i-a31-wdt"; reg = <0x01c20ca0 0x20>; + interrupts = <16>; + clocks = <&osc32k>; }; uart0: serial@1c25000 {
arch/arm/mach-hisi/platsmp.c +4 -0
@@ -67,14 +67,17 @@ static void __init hi3xxx_smp_prepare_cpus(unsigned int max_cpus) } ctrl_base =of_iomap (np,0 );if (!ctrl_base) { +of_node_put (np);pr_err ("failed to map address\n" );return ; }if (of_property_read_u32 (np,"smp-offset" , &offset) <0 ) { +of_node_put (np);pr_err ("failed to find smp-offset property\n" );return ; } ctrl_base += offset; +of_node_put (np); } }
@@ -160,6 +163,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)if (WARN_ON (!node))return -1 ; ctrl_base =of_iomap (node,0 ); +of_node_put (node);/* set the secondary core boot from DDR */ remap_reg_value =readl_relaxed (ctrl_base +REG_SC_CTRL );
arch/arm/mach-mediatek/Kconfig +1 -0
@@ -30,6 +30,7 @@ config MACH_MT7623 config MACH_MT7629 bool "MediaTek MT7629 SoCs support" default ARCH_MEDIATEK + select HAVE_ARM_ARCH_TIMER config MACH_MT8127 bool "MediaTek MT8127 SoCs support"
arch/arm/mach-omap1/clock.c +1 -1
@@ -41,7 +41,7 @@ static DEFINE_SPINLOCK(clockfw_lock);unsigned long omap1_uart_recalc (struct clk *clk) {unsigned int val =__raw_readl (clk->enable_reg); -return val & clk->enable_bit ?48000000 :12000000 ; +return val &1 << clk->enable_bit ?48000000 :12000000 ; }unsigned long omap1_sossi_recalc (struct clk *clk)
arch/arm/mach-pxa/cm-x300.c +4 -4
@@ -355,13 +355,13 @@ static struct platform_device cm_x300_spi_gpio = {static struct gpiod_lookup_table cm_x300_spi_gpiod_table = { .dev_id ="spi_gpio" , .table = { -GPIO_LOOKUP ("gpio-pxa" ,GPIO_LCD_SCL , +GPIO_LOOKUP ("pca9555.1" ,GPIO_LCD_SCL -GPIO_LCD_BASE ,"sck" ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP ("gpio-pxa" ,GPIO_LCD_DIN , +GPIO_LOOKUP ("pca9555.1" ,GPIO_LCD_DIN -GPIO_LCD_BASE ,"mosi" ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP ("gpio-pxa" ,GPIO_LCD_DOUT , +GPIO_LOOKUP ("pca9555.1" ,GPIO_LCD_DOUT -GPIO_LCD_BASE ,"miso" ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP ("gpio-pxa" ,GPIO_LCD_CS , +GPIO_LOOKUP ("pca9555.1" ,GPIO_LCD_CS -GPIO_LCD_BASE ,"cs" ,GPIO_ACTIVE_HIGH ), { }, },
arch/arm/mach-pxa/magician.c +1 -1
@@ -675,7 +675,7 @@ static struct platform_device bq24022 = {static struct gpiod_lookup_table bq24022_gpiod_table = { .dev_id ="gpio-regulator" , .table = { -GPIO_LOOKUP ("gpio-pxa" ,EGPIO_MAGICIAN_BQ24022_ISET2 , +GPIO_LOOKUP ("htc-egpio-0" ,EGPIO_MAGICIAN_BQ24022_ISET2 -MAGICIAN_EGPIO_BASE ,NULL ,GPIO_ACTIVE_HIGH ),GPIO_LOOKUP ("gpio-pxa" , GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,"enable" ,GPIO_ACTIVE_LOW ),
arch/arm/mach-pxa/tosa.c +2 -2
@@ -295,9 +295,9 @@ static struct gpiod_lookup_table tosa_mci_gpio_table = { .table = {GPIO_LOOKUP ("gpio-pxa" , TOSA_GPIO_nSD_DETECT,"cd" ,GPIO_ACTIVE_LOW ), -GPIO_LOOKUP ("gpio-pxa" ,TOSA_GPIO_SD_WP , +GPIO_LOOKUP ("sharp-scoop.0" ,TOSA_GPIO_SD_WP -TOSA_SCOOP_GPIO_BASE ,"wp" ,GPIO_ACTIVE_LOW ), -GPIO_LOOKUP ("gpio-pxa" ,TOSA_GPIO_PWR_ON , +GPIO_LOOKUP ("sharp-scoop.0" ,TOSA_GPIO_PWR_ON -TOSA_SCOOP_GPIO_BASE , "power", GPIO_ACTIVE_HIGH), { }, },
arch/arm/mach-vexpress/dcscb.c +1 -0
@@ -143,6 +143,7 @@ static int __init dcscb_init(void)if (!node)return -ENODEV ; dcscb_base =of_iomap (node,0 ); +of_node_put (node);if (!dcscb_base)return -EADDRNOTAVAIL ; cfg =readl_relaxed (dcscb_base +DCS_CFG_R );
arch/arm64/Kconfig.platforms +1 -0
@@ -225,6 +225,7 @@ config ARCH_STRATIX10 config ARCH_SYNQUACER bool "Socionext SynQuacer SoC Family" + select IRQ_FASTEOI_HIERARCHY_HANDLERS config ARCH_TEGRA bool "NVIDIA Tegra SoC Family"
arch/arm64/boot/dts/qcom/ipq8074.dtsi +1 -1
@@ -482,7 +482,7 @@ clocks { sleep_clk: sleep_clk { compatible = "fixed-clock"; - clock-frequency = <32000>; + clock-frequency = <32768>; #clock-cells = <0>; };
arch/arm64/boot/dts/rockchip/rk3399.dtsi +1 -1
@@ -1447,6 +1447,7 @@ reg = <0xf780 0x24>; clocks = <&sdhci>; clock-names = "emmcclk"; + drive-impedance-ohm = <50>; #phy-cells = <0>; status = "disabled"; };
@@ -1457,7 +1458,6 @@ clock-names = "refclk"; #phy-cells = <1>; resets = <&cru SRST_PCIEPHY>; - drive-impedance-ohm = <50>; reset-names = "phy"; status = "disabled"; };
arch/arm64/kernel/sys_compat.c +1 -1
@@ -115,6 +115,6 @@ long compat_arm_syscall(struct pt_regs *regs, int scno) (compat_thumb_mode (regs) ?2 :4 );arm64_notify_die ("Oops - bad compat syscall(2)" , regs, -SIGILL ,ILL_ILLTRP , addr, scno); +SIGILL ,ILL_ILLTRP , addr,0 );return 0 ; }
arch/arm64/net/bpf_jit_comp.c +1 -0
@@ -973,6 +973,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_jit_binary_free (header); prog->bpf_func =NULL ; prog->jited =0 ; + prog->jited_len =0 ; goto out_off; }bpf_jit_binary_lock_ro (header);
arch/m68k/Kconfig.cpu +1 -1
@@ -309,7 +309,7 @@ comment "Processor Specific Options" config M68KFPU_EMU bool "Math emulation support" - depends on MMU + depends on M68KCLASSIC && FPU help At some point in the future, this will cause floating-point math instructions to be emulated by the kernel on machines that lack a
arch/m68k/Kconfig.machine +1 -0
@@ -320,6 +320,7 @@ comment "Machine Options" config UBOOT bool "Support for U-Boot command line parameters" + depends on COLDFIRE help If you say Y here kernel will try to collect command line parameters from the initial u-boot stack.
arch/m68k/include/asm/pgtable_no.h +2 -1
@@ -42,7 +42,8 @@ extern void paging_init(void);* ZERO_PAGE is a global shared page that is always zero: used * for zero-mapped memory areas etc.. */ -#define ZERO_PAGE (vaddr) (virt_to_page(0)) +extern void *empty_zero_page; +#define ZERO_PAGE (vaddr) (virt_to_page(empty_zero_page))/* * All 32bit addresses are effectively valid for vmalloc...
arch/mips/include/asm/mach-ip27/cpu-feature-overrides.h +0 -1
@@ -28,7 +28,6 @@#define cpu_has_6k_cache 0#define cpu_has_8k_cache 0#define cpu_has_tx39_cache 0 -#define cpu_has_fpu 1#define cpu_has_nofpuex 0#define cpu_has_32fpr 1#define cpu_has_counter 1
arch/mips/kernel/mips-cpc.c +1 -0
@@ -27,6 +27,7 @@ phys_addr_t __weak mips_cpc_default_phys_base(void) cpc_node =of_find_compatible_node (of_root,NULL ,"mti,mips-cpc" );if (cpc_node) { err =of_address_to_resource (cpc_node,0 , &res); +of_node_put (cpc_node);if (!err)return res.start; }
arch/openrisc/include/asm/timex.h +1 -0
@@ -23,6 +23,7 @@ static inline cycles_t get_cycles(void) {return mfspr (SPR_TTCR ); } +#define get_cycles get_cycles/* This isn't really used any more */ #define CLOCK_TICK_RATE 1000
arch/openrisc/kernel/head.S +9 -0
@@ -521,6 +521,15 @@ _start: l.ori r3,r0,0x1 l.mtspr r0,r3,SPR_SR + /* + * Start the TTCR as early as possible, so that the RNG can make use of + * measurements of boot time from the earliest opportunity. Especially + * important is that the TTCR does not return zero by the time we reach + * rand_initialize(). + */ + l.movhi r3,hi(SPR_TTMR_CR) + l.mtspr r0,r3,SPR_TTMR + CLEAR_GPR(r1) CLEAR_GPR(r2) CLEAR_GPR(r3)
arch/powerpc/include/asm/page.h +5 -2
@@ -216,6 +216,9 @@ static inline bool pfn_valid(unsigned long pfn)#define __pa (x) ((unsigned long)(x) - VIRT_PHYS_OFFSET)#else #ifdef CONFIG_PPC64 + +#define VIRTUAL_WARN_ON (x) WARN_ON(IS_ENABLED(CONFIG_DEBUG_VIRTUAL) && (x)) +/* * gcc miscompiles (unsigned long)(&static_var) - PAGE_OFFSET * with -mcmodel=medium, so we use & and | instead of - and + on 64-bit.
@@ -223,13 +226,13 @@ static inline bool pfn_valid(unsigned long pfn)*/ #define __va (x) \ ({ \ - VIRTUAL_BUG_ON((unsigned long)(x) >= PAGE_OFFSET); \ + VIRTUAL_WARN_ON((unsigned long)(x) >= PAGE_OFFSET); \ (void *)(unsigned long)((phys_addr_t)(x) | PAGE_OFFSET); \ })#define __pa (x) \ ({ \ - VIRTUAL_BUG_ON((unsigned long)(x) < PAGE_OFFSET); \ + VIRTUAL_WARN_ON((unsigned long)(x) < PAGE_OFFSET); \ (unsigned long)(x) & 0x0fffffffffffffffUL; \ })
arch/powerpc/kernel/fadump.c +6 -2
@@ -835,7 +835,6 @@ static int fadump_alloc_mem_ranges(struct fadump_mrange_info *mrange_info) sizeof(struct fadump_memory_range));return 0 ; } -static inline int fadump_add_mem_range (struct fadump_mrange_info *mrange_info,u64 base,u64 end) {
@@ -854,7 +853,12 @@ static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info, start = mem_ranges[mrange_info->mem_range_cnt -1 ].base; size = mem_ranges[mrange_info->mem_range_cnt -1 ].size; -if ((start + size) == base) +/* +* Boot memory area needs separate PT_LOAD segment(s) as it +* is moved to a different location at the time of crash. +* So, fold only if the region is not boot memory area. +*/ +if ((start + size) == base && start >= fw_dump.boot_mem_top) is_adjacent = true; }if (!is_adjacent) {
arch/powerpc/kernel/idle.c +1 -1
@@ -37,7 +37,7 @@ static int __init powersave_off(char *arg) { ppc_md.power_save =NULL ; cpuidle_disable =IDLE_POWERSAVE_OFF ; -return 0 ; +return 1 ; }__setup ("powersave=off" , powersave_off);
arch/powerpc/kernel/ptrace.c +17 -4
@@ -3014,8 +3014,13 @@ long arch_ptrace(struct task_struct *child, long request,flush_fp_to_thread (child);if (fpidx < (PT_FPSCR -PT_FPR0 )) -memcpy (&tmp, &child->thread.TS_FPR (fpidx), -sizeof (long )); +if (IS_ENABLED (CONFIG_PPC32 )) { +// On 32-bit the index we are passed refers to 32-bit words + tmp = ((u32 *)child->thread.fp_state.fpr)[fpidx]; + }else { +memcpy (&tmp, &child->thread.TS_FPR (fpidx), +sizeof (long )); + }else tmp = child->thread.fp_state.fpscr; }
@@ -3047,8 +3052,13 @@ long arch_ptrace(struct task_struct *child, long request,flush_fp_to_thread (child);if (fpidx < (PT_FPSCR -PT_FPR0 )) -memcpy (&child->thread.TS_FPR (fpidx), &data, -sizeof (long )); +if (IS_ENABLED (CONFIG_PPC32 )) { +// On 32-bit the index we are passed refers to 32-bit words + ((u32 *)child->thread.fp_state.fpr)[fpidx] = data; + }else { +memcpy (&child->thread.TS_FPR (fpidx), &data, +sizeof (long )); + }else child->thread.fp_state.fpscr = data; ret =0 ;
@@ -3398,4 +3408,7 @@ void __init pt_regs_check(void) offsetof(struct user_pt_regs, result));BUILD_BUG_ON (sizeof (struct user_pt_regs ) >sizeof (struct pt_regs )); + +// ptrace_get/put_fpr() rely on PPC32 and VSX being incompatible +BUILD_BUG_ON (IS_ENABLED (CONFIG_PPC32 ) &&IS_ENABLED (CONFIG_VSX )); }
arch/powerpc/perf/isa207-common.c +2 -1
@@ -326,7 +326,8 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp)if (event_is_threshold (event) &&is_thresh_cmp_valid (event)) { mask |=CNST_THRESH_MASK ; value |=CNST_THRESH_VAL (event >>EVENT_THRESH_SHIFT ); - } + }else if (event_is_threshold (event)) +return -1 ; }else {/* * Special case for PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC,
arch/powerpc/platforms/4xx/cpm.c +1 -1
@@ -327,6 +327,6 @@ late_initcall(cpm_init);static int __init cpm_powersave_off (char *arg) { cpm.powersave_off =1 ; -return 0 ; +return 1 ; }__setup ("powersave=off" , cpm_powersave_off);
arch/powerpc/platforms/8xx/cpm1.c +1 -0
@@ -292,6 +292,7 @@ cpm_setbrg(uint brg, uint rate)out_be32 (bp, (((BRG_UART_CLK_DIV16 / rate) -1 ) <<1 ) |CPM_BRG_EN |CPM_BRG_DIV16 ); } +EXPORT_SYMBOL (cpm_setbrg);struct cpm_ioport16 {__be16 dir, par, odr_sor, dat, intr;
arch/powerpc/platforms/powernv/opal-fadump.c +52 -42
238 lines not on this page · raw message
arch/powerpc/platforms/powernv/opal-fadump.h +5 -5
@@ -31,14 +31,14 @@* OPAL FADump kernel metadata * * The address of this structure will be registered with f/w for retrieving -* and processing during crash dump. +* in the capture kernel to process the crash dump. */ struct opal_fadump_mem_struct {u8 version;u8 reserved[3 ]; -u16 region_cnt;/* number of regions */ -u16 registered_regions;/* Regions registered for MPIPL */ -u64 fadumphdr_addr; +__be16 region_cnt;/* number of regions */ +__be16 registered_regions;/* Regions registered for MPIPL */ +__be64 fadumphdr_addr;struct opal_mpipl_region rgn[FADUMP_MAX_MEM_REGS ]; } __packed;
@@ -135,7 +135,7 @@ static inline void opal_fadump_read_regs(char *bufp, unsigned int regs_cnt,for (i =0 ; i < regs_cnt; i++, bufp += reg_entry_size) { reg_entry = (struct hdat_fadump_reg_entry *)bufp; val = (cpu_endian ?be64_to_cpu (reg_entry->reg_val) : - reg_entry->reg_val); + (u64)(reg_entry->reg_val)); opal_fadump_set_regval_regnum(regs, be32_to_cpu(reg_entry->reg_type), be32_to_cpu(reg_entry->reg_num),
arch/powerpc/platforms/powernv/ultravisor.c +1 -0
@@ -55,6 +55,7 @@ static int __init uv_init(void)return -ENODEV ; uv_memcons =memcons_init (node,"memcons" ); +of_node_put (node);if (!uv_memcons)return -ENOENT ;
arch/powerpc/sysdev/dart_iommu.c +4 -2
@@ -403,9 +403,10 @@ void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops) }/* Initialize the DART HW */ -if (dart_init (dn) !=0 ) +if (dart_init (dn) !=0 ) { +of_node_put (dn);return ; - + }/* * U4 supports a DART bypass, we use it for 64-bit capable devices to * improve performance. However, that only works for devices connected
@@ -418,6 +419,7 @@ void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops)/* Setup pci_dma ops */ set_pci_dma_ops (&dma_iommu_ops); +of_node_put (dn); }#ifdef CONFIG_PM
arch/powerpc/sysdev/fsl_rio.c +2 -0
@@ -505,8 +505,10 @@ int fsl_rio_setup(struct platform_device *dev)if (rc) {dev_err (&dev->dev,"Can't get %pOF property 'reg'\n" , rmu_node); +of_node_put (rmu_node); goto err_rmu; } +of_node_put (rmu_node); rmu_regs_win =ioremap (rmu_regs.start,resource_size (&rmu_regs));if (!rmu_regs_win) {dev_err (&dev->dev,"Unable to map rmu register window\n" );
arch/powerpc/sysdev/xics/icp-opal.c +1 -0
@@ -195,6 +195,7 @@ int icp_opal_init(void)printk ("XICS: Using OPAL ICP fallbacks\n" ); +of_node_put (np);return 0 ; }
arch/s390/crypto/aes_s390.c +2 -2
@@ -861,7 +861,7 @@ static inline void _gcm_sg_unmap_and_advance(struct gcm_sg_walk *gw, unsigned int nbytes) { gw->walk_bytes_remain -= nbytes; -scatterwalk_unmap (&gw->walk); +scatterwalk_unmap (gw->walk_ptr);scatterwalk_advance (&gw->walk, nbytes);scatterwalk_done (&gw->walk,0 , gw->walk_bytes_remain); gw->walk_ptr =NULL ;
@@ -936,7 +936,7 @@ static int gcm_out_walk_go(struct gcm_sg_walk *gw, unsigned int minbytesneeded) goto out; } -scatterwalk_unmap (&gw->walk); +scatterwalk_unmap (gw->walk_ptr); gw->walk_ptr =NULL ; gw->ptr = gw->buf;
arch/s390/include/asm/preempt.h +11 -4
@@ -52,10 +52,17 @@ static inline bool test_preempt_need_resched(void)static inline void __preempt_count_add (int val) { -if (__builtin_constant_p (val) && (val >=-128 ) && (val <=127 )) -__atomic_add_const (val, &S390_lowcore.preempt_count); -else -__atomic_add (val, &S390_lowcore.preempt_count); +/* +* With some obscure config options and CONFIG_PROFILE_ALL_BRANCHES +* enabled, gcc 12 fails to handle __builtin_constant_p(). +*/ +if (!IS_ENABLED (CONFIG_PROFILE_ALL_BRANCHES )) { +if (__builtin_constant_p (val) && (val >=-128 ) && (val <=127 )) { +__atomic_add_const (val, &S390_lowcore.preempt_count); +return ; + } + } +__atomic_add (val, &S390_lowcore.preempt_count); }static inline void __preempt_count_sub (int val)
arch/s390/mm/gmap.c +14 -0
@@ -2579,6 +2579,18 @@ static int __s390_enable_skey_pte(pte_t *pte, unsigned long addr,return 0 ; } +/* +* Give a chance to schedule after setting a key to 256 pages. +* We only hold the mm lock, which is a rwsem and the kvm srcu. +* Both can sleep. +*/ +static int __s390_enable_skey_pmd (pmd_t *pmd,unsigned long addr, +unsigned long next,struct mm_walk *walk) +{ +cond_resched (); +return 0 ; +} +static int __s390_enable_skey_hugetlb (pte_t *pte,unsigned long addr,unsigned long hmask,unsigned long next,struct mm_walk *walk)
@@ -2601,12 +2613,14 @@ static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr, end = start +HPAGE_SIZE -1 ;__storage_key_init_range (start, end);set_bit (PG_arch_1, &page->flags); +cond_resched ();return 0 ; }static const struct mm_walk_ops enable_skey_walk_ops = { .hugetlb_entry = __s390_enable_skey_hugetlb, .pte_entry = __s390_enable_skey_pte, + .pmd_entry = __s390_enable_skey_pmd, };int s390_enable_skey (void )
arch/um/drivers/chan_user.c +5 -4
@@ -220,7 +220,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out, unsigned long *stack_out) {struct winch_data data; -int fds[2 ], n, err; +int fds[2 ], n, err, pid;char c; err =os_pipe (fds,1 ,1 );
@@ -238,8 +238,9 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,* problem with /dev/net/tun, which if held open by this * thread, prevents the TUN/TAP device from being reused. */ - err =run_helper_thread (winch_thread, &data,CLONE_FILES , stack_out); -if (err <0 ) { + pid =run_helper_thread (winch_thread, &data,CLONE_FILES , stack_out); +if (pid <0 ) { + err = pid;printk (UM_KERN_ERR "fork of winch_thread failed - errno = %d\n" , -err); goto out_close;
@@ -263,7 +264,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out, goto out_close; } -return err; +return pid; out_close:close (fds[1 ]);
arch/um/include/asm/thread_info.h +2 -0
@@ -63,6 +63,7 @@ static inline struct thread_info *current_thread_info(void)#define TIF_RESTORE_SIGMASK 7#define TIF_NOTIFY_RESUME 8#define TIF_SECCOMP 9/* secure computing */ +#define TIF_SINGLESTEP 10/* single stepping userspace */ #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
@@ -70,5 +71,6 @@ static inline struct thread_info *current_thread_info(void)#define _TIF_MEMDIE (1 << TIF_MEMDIE)#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)#define _TIF_SECCOMP (1 << TIF_SECCOMP) +#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)#endif
arch/um/kernel/exec.c +1 -1
@@ -44,7 +44,7 @@ void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp) {PT_REGS_IP (regs) = eip;PT_REGS_SP (regs) = esp; - current->ptrace &= ~PT_DTRACE ; +clear_thread_flag (TIF_SINGLESTEP );#ifdef SUBARCH_EXECVE1 SUBARCH_EXECVE1 (regs->regs);#endif
arch/um/kernel/process.c +1 -1
@@ -380,7 +380,7 @@ int singlestepping(void * t) {struct task_struct *task = t ? t : current; -if (!(task->ptrace &PT_DTRACE )) +if (!test_thread_flag (TIF_SINGLESTEP ))return 0 ;if (task->thread.singlestep_syscall)
arch/um/kernel/ptrace.c +4 -4
@@ -12,7 +12,7 @@void user_enable_single_step (struct task_struct *child) { - child->ptrace |=PT_DTRACE ; +set_tsk_thread_flag (child,TIF_SINGLESTEP ); child->thread.singlestep_syscall =0 ;#ifdef SUBARCH_SET_SINGLESTEPPING
@@ -22,7 +22,7 @@ void user_enable_single_step(struct task_struct *child)void user_disable_single_step (struct task_struct *child) { - child->ptrace &= ~PT_DTRACE ; +clear_tsk_thread_flag (child,TIF_SINGLESTEP ); child->thread.singlestep_syscall =0 ;#ifdef SUBARCH_SET_SINGLESTEPPING
@@ -121,7 +121,7 @@ static void send_sigtrap(struct uml_pt_regs *regs, int error_code) }/* -* XXX Check PT_DTRACE vs TIF_SINGLESTEP for singlestepping check and +* XXX Check TIF_SINGLESTEP for singlestepping check and * PT_PTRACED vs TIF_SYSCALL_TRACE for syscall tracing check */ int syscall_trace_enter (struct pt_regs *regs)
@@ -145,7 +145,7 @@ void syscall_trace_leave(struct pt_regs *regs)audit_syscall_exit (regs);/* Fake a debug trap */ -if (ptraced &PT_DTRACE ) +if (test_thread_flag (TIF_SINGLESTEP ))send_sigtrap (®s->regs,0 );if (!test_thread_flag (TIF_SYSCALL_TRACE ))
arch/um/kernel/signal.c +2 -2
@@ -53,7 +53,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)unsigned long sp;int err; -if ((current->ptrace &PT_DTRACE ) && (current->ptrace &PT_PTRACED )) +if (test_thread_flag (TIF_SINGLESTEP ) && (current->ptrace &PT_PTRACED )) singlestep =1 ;/* Did we come from a system call? */
@@ -128,7 +128,7 @@ void do_signal(struct pt_regs *regs)* on the host. The tracing thread will check this flag and * PTRACE_SYSCALL if necessary. */ -if (current->ptrace &PT_DTRACE ) +if (test_thread_flag (TIF_SINGLESTEP )) current->thread.singlestep_syscall =is_syscall (PT_REGS_IP (¤t->thread.regs));
arch/x86/entry/vdso/vma.c +1 -1
@@ -323,7 +323,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)static __init int vdso_setup (char *s) { vdso64_enabled =simple_strtoul (s,NULL ,0 ); -return 0 ; +return 1 ; }__setup ("vdso=" , vdso_setup);
arch/x86/events/amd/ibs.c +18 -0
@@ -312,6 +312,16 @@ static int perf_ibs_init(struct perf_event *event) hwc->config_base = perf_ibs->msr; hwc->config = config; +/* +* rip recorded by IbsOpRip will not be consistent with rsp and rbp +* recorded as part of interrupt regs. Thus we need to use rip from +* interrupt regs while unwinding call stack. Setting _EARLY flag +* makes sure we unwind call-stack before perf sample rip is set to +* IbsOpRip. +*/ +if (event->attr.sample_type &PERF_SAMPLE_CALLCHAIN ) + event->attr.sample_type |= __PERF_SAMPLE_CALLCHAIN_EARLY; +return 0 ; }
@@ -683,6 +693,14 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs) data.raw = &raw; } +/* +* rip recorded by IbsOpRip will not be consistent with rsp and rbp +* recorded as part of interrupt regs. Thus we need to use rip from +* interrupt regs while unwinding call stack. +*/ +if (event->attr.sample_type &PERF_SAMPLE_CALLCHAIN ) + data.callchain =perf_callchain (event, iregs); + throttle =perf_event_overflow (event, &data, ®s); out:if (throttle) {
arch/x86/events/intel/core.c +1 -1
@@ -250,7 +250,7 @@ static struct event_constraint intel_icl_event_constraints[] = {INTEL_EVENT_CONSTRAINT_RANGE (0x03 ,0x0a ,0xf ),INTEL_EVENT_CONSTRAINT_RANGE (0x1f ,0x28 ,0xf ),INTEL_EVENT_CONSTRAINT (0x32 ,0xf ),/* SW_PREFETCH_ACCESS.* */ -INTEL_EVENT_CONSTRAINT_RANGE (0x48 ,0x54 ,0xf ), +INTEL_EVENT_CONSTRAINT_RANGE (0x48 ,0x56 ,0xf ),INTEL_EVENT_CONSTRAINT_RANGE (0x60 ,0x8b ,0xf ),INTEL_UEVENT_CONSTRAINT (0x04a3 ,0xff ),/* CYCLE_ACTIVITY.STALLS_TOTAL */ INTEL_UEVENT_CONSTRAINT(0x10a3, 0xff), /* CYCLE_ACTIVITY.CYCLES_MEM_ANY */
arch/x86/include/asm/acenv.h +13 -1
@@ -13,7 +13,19 @@/* Asm macros */ -#define ACPI_FLUSH_CPU_CACHE () wbinvd() +/* +* ACPI_FLUSH_CPU_CACHE() flushes caches on entering sleep states. +* It is required to prevent data loss. +* +* While running inside virtual machine, the kernel can bypass cache flushing. +* Changing sleep state in a virtual machine doesn't affect the host system +* sleep state and cannot lead to data loss. +*/ +#define ACPI_FLUSH_CPU_CACHE () \ +do { \ + if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR)) \ + wbinvd(); \ +} while (0)int __acpi_acquire_global_lock (unsigned int *lock);int __acpi_release_global_lock (unsigned int *lock);
arch/x86/include/asm/cpufeature.h +1 -1
@@ -49,7 +49,7 @@ extern const char * const x86_power_flags[32];extern const char *const x86_bug_flags[NBUGINTS *32 ];#define test_cpu_cap (c, bit) \ - test_bit(bit, (unsigned long *)((c)->x86_capability)) + arch_test_bit(bit, (unsigned long *)((c)->x86_capability))/* * There are 32 bits/features in each mask word. The high bits
arch/x86/include/asm/suspend_32.h +1 -1
@@ -21,7 +21,6 @@ struct saved_context {#endif unsigned long cr0, cr2, cr3, cr4;u64 misc_enable; -bool misc_enable_saved;struct saved_msrs saved_msrs;struct desc_ptr gdt_desc;struct desc_ptr idt;
@@ -30,6 +29,7 @@ struct saved_context {unsigned long tr;unsigned long safety;unsigned long return_address; +bool misc_enable_saved; } __attribute__((packed));/* routines for saving/restoring kernel state */
arch/x86/include/asm/suspend_64.h +8 -4
@@ -14,9 +14,13 @@* Image of the saved processor state, used by the low level ACPI suspend to * RAM code and by the low level hibernation code. * -* If you modify it, fix arch/x86/kernel/acpi/wakeup_64.S and make sure that -* __save/__restore_processor_state(), defined in arch/x86/kernel/suspend_64.c, -* still work as required. +* If you modify it, check how it is used in arch/x86/kernel/acpi/wakeup_64.S +* and make sure that __save/__restore_processor_state(), defined in +* arch/x86/power/cpu.c, still work as required. +* +* Because the structure is packed, make sure to avoid unaligned members. For +* optimisation purposes but also because tools like kmemleak only search for +* pointers that are aligned. */ struct saved_context {struct pt_regs regs;
@@ -36,7 +40,6 @@ struct saved_context {unsigned long cr0, cr2, cr3, cr4;u64 misc_enable; -bool misc_enable_saved;struct saved_msrs saved_msrs;unsigned long efer;u16 gdt_pad;/* Unused */
@@ -48,6 +51,7 @@ struct saved_context {unsigned long tr;unsigned long safety;unsigned long return_address; +bool misc_enable_saved; } __attribute__((packed));#define loaddebug (thread,register) \
arch/x86/kernel/apic/apic.c +1 -1
@@ -168,7 +168,7 @@ static __init int setup_apicpmtimer(char *s) { apic_calibrate_pmtmr =1 ;notsc_setup (NULL ); -return 0 ; +return 1 ; }__setup ("apicpmtimer" , setup_apicpmtimer);#endif
arch/x86/kernel/cpu/intel.c +1 -1
@@ -97,7 +97,7 @@ static bool ring3mwait_disabled __read_mostly;static int __init ring3mwait_disable (char *__unused) { ring3mwait_disabled = true; -return 0 ; +return 1 ; }__setup ("ring3mwait=disable" , ring3mwait_disable);
arch/x86/kernel/step.c +1 -2
@@ -175,8 +175,7 @@ void set_task_blockstep(struct task_struct *task, bool on)* * NOTE: this means that set/clear TIF_BLOCKSTEP is only safe if * task is current or it can't be running, otherwise we can race -* with __switch_to_xtra(). We rely on ptrace_freeze_traced() but -* PTRACE_KILL is not safe. +* with __switch_to_xtra(). We rely on ptrace_freeze_traced(). */ local_irq_disable (); debugctl =get_debugctlmsr ();
arch/x86/kernel/sys_x86_64.c +2 -5
@@ -70,9 +70,6 @@ static int __init control_va_addr_alignment(char *str)if (*str ==0 )return 1 ; -if (*str =='=' ) - str++; -if (!strcmp (str,"32" )) va_align.flags =ALIGN_VA_32 ;else if (!strcmp (str,"64" ))
@@ -82,11 +79,11 @@ static int __init control_va_addr_alignment(char *str)else if (!strcmp (str,"on" )) va_align.flags =ALIGN_VA_32 |ALIGN_VA_64 ;else -return 0 ; +pr_warn ("invalid option value: 'align_va_addr=%s'\n" , str);return 1 ; } -__setup ("align_va_addr" , control_va_addr_alignment); +__setup ("align_va_addr=" , control_va_addr_alignment); SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long, prot, unsigned long, flags,
arch/x86/kvm/vmx/nested.c +10 -5
@@ -3746,12 +3746,12 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,/* update exit information fields: */ vmcs12->vm_exit_reason = exit_reason; vmcs12->exit_qualification = exit_qualification; - vmcs12->vm_exit_intr_info = exit_intr_info; - - vmcs12->idt_vectoring_info_field =0 ; - vmcs12->vm_exit_instruction_len =vmcs_read32 (VM_EXIT_INSTRUCTION_LEN ); - vmcs12->vmx_instruction_info =vmcs_read32 (VMX_INSTRUCTION_INFO ); +/* +* On VM-Exit due to a failed VM-Entry, the VMCS isn't marked launched +* and only EXIT_REASON and EXIT_QUALIFICATION are updated, all other +* exit info fields are unmodified. +*/ if (!(vmcs12->vm_exit_reason &VMX_EXIT_REASONS_FAILED_VMENTRY )) { vmcs12->launch_state =1 ;
@@ -3763,8 +3763,13 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,* Transfer the event that L0 or L1 may wanted to inject into * L2 to IDT_VECTORING_INFO_FIELD. */ + vmcs12->idt_vectoring_info_field =0 ;vmcs12_save_pending_event (vcpu, vmcs12); + vmcs12->vm_exit_intr_info = exit_intr_info; + vmcs12->vm_exit_instruction_len =vmcs_read32 (VM_EXIT_INSTRUCTION_LEN ); + vmcs12->vmx_instruction_info =vmcs_read32 (VMX_INSTRUCTION_INFO ); +/* * According to spec, there's no need to store the guest's * MSRs if the exit is due to a VM-entry failure that occurs
arch/x86/lib/delay.c +2 -2
@@ -43,8 +43,8 @@ static void delay_loop(unsigned long loops)" jnz 2b \n" "3: dec %0 \n" - : /* we don't need output */ - :"a" (loops) + : "+a" (loops) + : ); }
arch/x86/mm/pat.c +1 -1
@@ -75,7 +75,7 @@ int pat_debug_enable;static int __init pat_debug_setup (char *str) { pat_debug_enable =1 ; -return 0 ; +return 1 ; }__setup ("debugpat" , pat_debug_setup);
arch/x86/um/ldt.c +4 -2
@@ -23,9 +23,11 @@ static long write_ldt_entry(struct mm_id *mm_idp, int func, {long res;void *stub_addr; + +BUILD_BUG_ON (sizeof (*desc) %sizeof (long )); + res =syscall_stub_data (mm_idp, (unsigned long *)desc, - (sizeof (*desc) +sizeof (long ) -1 ) & - ~(sizeof (long ) -1 ), +sizeof (*desc) /sizeof (long ), addr, &stub_addr);if (!res) { unsigned long args[] = { func,
arch/xtensa/kernel/ptrace.c +2 -2
@@ -225,12 +225,12 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *task)void user_enable_single_step (struct task_struct *child) { - child->ptrace |=PT_SINGLESTEP ; +set_tsk_thread_flag (child,TIF_SINGLESTEP ); }void user_disable_single_step (struct task_struct *child) { - child->ptrace &= ~PT_SINGLESTEP ; +clear_tsk_thread_flag (child,TIF_SINGLESTEP ); }/*
arch/xtensa/kernel/signal.c +2 -2
@@ -465,7 +465,7 @@ static void do_signal(struct pt_regs *regs)/* Set up the stack frame */ ret =setup_frame (&ksig,sigmask_to_save (), regs);signal_setup_done (ret, &ksig,0 ); -if (current->ptrace &PT_SINGLESTEP ) +if (test_thread_flag (TIF_SINGLESTEP ))task_pt_regs (current)->icountlevel =1 ;return ;
@@ -491,7 +491,7 @@ static void do_signal(struct pt_regs *regs)/* If there's no signal to deliver, we just restore the saved mask. */ restore_saved_sigmask (); -if (current->ptrace &PT_SINGLESTEP ) +if (test_thread_flag (TIF_SINGLESTEP ))task_pt_regs (current)->icountlevel =1 ;return ; }
block/bfq-cgroup.c +67 -44
184 lines not on this page · raw message
block/bfq-iosched.c +25 -21
115 lines not on this page · raw message
block/bfq-iosched.h +4 -2
@@ -896,6 +896,8 @@ struct bfq_group {/* reference counter (see comments in bfq_bic_update_cgroup) */ int ref; +/* Is bfq_group still online? */ +bool online;struct bfq_entity entity;struct bfq_sched_data sched_data;
@@ -949,6 +951,7 @@ void bfq_weights_tree_remove(struct bfq_data *bfqd,void bfq_bfqq_expire (struct bfq_data *bfqd,struct bfq_queue *bfqq,bool compensate,enum bfqq_expiration reason);void bfq_put_queue (struct bfq_queue *bfqq); +void bfq_put_cooperator (struct bfq_queue *bfqq);void bfq_end_wr_async_queues (struct bfq_data *bfqd,struct bfq_group *bfqg);void bfq_release_process_ref (struct bfq_data *bfqd,struct bfq_queue *bfqq);void bfq_schedule_dispatch (struct bfq_data *bfqd);
@@ -975,8 +978,7 @@ void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,void bfq_init_entity (struct bfq_entity *entity,struct bfq_group *bfqg);void bfq_bic_update_cgroup (struct bfq_io_cq *bic,struct bio *bio);void bfq_end_wr_async (struct bfq_data *bfqd); -struct bfq_group *bfq_find_set_group (struct bfq_data *bfqd, -struct blkcg *blkcg); +struct bfq_group *bfq_bio_bfqg (struct bfq_data *bfqd,struct bio *bio);struct blkcg_gq *bfqg_to_blkg (struct bfq_group *bfqg);struct bfq_group *bfqq_group (struct bfq_queue *bfqq);struct bfq_group *bfq_create_group_hierarchy (struct bfq_data *bfqd,int node);
block/bio.c +1 -1
@@ -2179,7 +2179,7 @@ void bio_clone_blkg_association(struct bio *dst, struct bio *src)rcu_read_lock ();if (src->bi_blkg) -__bio_associate_blkg (dst, src->bi_blkg); +bio_associate_blkg_from_css (dst, &bio_blkcg (src)->css);rcu_read_unlock (); }
block/blk-iolatency.c +64 -58
208 lines not on this page · raw message
crypto/cryptd.c +11 -12
@@ -39,6 +39,10 @@ struct cryptd_cpu_queue { };struct cryptd_queue { +/* +* Protected by disabling BH to allow enqueueing from softinterrupt and +* dequeuing from kworker (cryptd_queue_worker()). +*/ struct cryptd_cpu_queue __percpu *cpu_queue; };
@@ -125,28 +129,28 @@ static void cryptd_fini_queue(struct cryptd_queue *queue)static int cryptd_enqueue_request (struct cryptd_queue *queue,struct crypto_async_request *request) { -int cpu, err; +int err;struct cryptd_cpu_queue *cpu_queue;refcount_t *refcnt; - cpu =get_cpu (); +local_bh_disable (); cpu_queue =this_cpu_ptr (queue->cpu_queue); err =crypto_enqueue_request (&cpu_queue->queue, request); refcnt =crypto_tfm_ctx (request->tfm);if (err == -ENOSPC ) - goto out_put_cpu; + goto out; -queue_work_on (cpu, cryptd_wq, &cpu_queue->work); +queue_work_on (smp_processor_id (), cryptd_wq, &cpu_queue->work);if (!refcount_read (refcnt)) - goto out_put_cpu; + goto out;refcount_inc (refcnt); -out_put_cpu: -put_cpu (); +out: +local_bh_enable ();return err; }
@@ -162,15 +166,10 @@ static void cryptd_queue_worker(struct work_struct *work) cpu_queue = container_of(work, struct cryptd_cpu_queue, work);/* * Only handle one request at a time to avoid hogging crypto workqueue. -* preempt_disable/enable is used to prevent being preempted by -* cryptd_enqueue_request(). local_bh_disable/enable is used to prevent -* cryptd_enqueue_request() being accessed from software interrupts. */ local_bh_disable (); -preempt_disable (); backlog =crypto_get_backlog (&cpu_queue->queue); req =crypto_dequeue_request (&cpu_queue->queue); -preempt_enable ();local_bh_enable ();if (!req)
drivers/acpi/property.c +12 -6
@@ -430,6 +430,16 @@ void acpi_init_properties(struct acpi_device *adev)acpi_extract_apple_properties (adev); } +static void acpi_free_device_properties (struct list_head *list) +{ +struct acpi_device_properties *props, *tmp; + +list_for_each_entry_safe (props, tmp, list, list) { +list_del (&props->list); +kfree (props); + } +} +static void acpi_destroy_nondev_subnodes (struct list_head *list) {struct acpi_data_node *dn, *next;
@@ -442,22 +452,18 @@ static void acpi_destroy_nondev_subnodes(struct list_head *list)wait_for_completion (&dn->kobj_done);list_del (&dn->sibling);ACPI_FREE ((void *)dn->data.pointer); +acpi_free_device_properties (&dn->data.properties);kfree (dn); } }void acpi_free_properties (struct acpi_device *adev) { -struct acpi_device_properties *props, *tmp; -acpi_destroy_nondev_subnodes (&adev->data.subnodes);ACPI_FREE ((void *)adev->data.pointer); adev->data.of_compatible =NULL ; adev->data.pointer =NULL ; -list_for_each_entry_safe (props, tmp, &adev->data.properties, list) { -list_del (&props->list); -kfree (props); - } +acpi_free_device_properties (&adev->data.properties); }/**
drivers/acpi/sleep.c +12 -0
@@ -374,6 +374,18 @@ static const struct dmi_system_id acpisleep_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "20GGA00L00"), }, }, +/* +* ASUS B1400CEAE hangs on resume from suspend (see +* https://bugzilla.kernel.org/show_bug.cgi?id=215742). +*/ + { + .callback = init_default_s3, + .ident = "ASUS B1400CEAE", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "ASUS EXPERTBOOK B1400CEAE"), + }, + }, {}, };
drivers/ata/libata-transport.c +1 -1
@@ -196,7 +196,7 @@ static struct { { XFER_PIO_0, "XFER_PIO_0" }, { XFER_PIO_SLOW, "XFER_PIO_SLOW" } }; -ata_bitfield_name_match (xfer,ata_xfer_names) +ata_bitfield_name_search (xfer, ata_xfer_names)/* * ATA Port attributes
drivers/ata/pata_octeon_cf.c +3 -0
@@ -888,12 +888,14 @@ static int octeon_cf_probe(struct platform_device *pdev)int i; res_dma =platform_get_resource (dma_dev,IORESOURCE_MEM ,0 );if (!res_dma) { +put_device (&dma_dev->dev);of_node_put (dma_node);return -EINVAL ; } cf_port->dma_base = (u64 )devm_ioremap_nocache (&pdev->dev, res_dma->start,resource_size (res_dma));if (!cf_port->dma_base) { +put_device (&dma_dev->dev);of_node_put (dma_node);return -EINVAL ; }
@@ -903,6 +905,7 @@ static int octeon_cf_probe(struct platform_device *pdev) irq = i; irq_handler = octeon_cf_interrupt; } +put_device (&dma_dev->dev); }of_node_put (dma_node); }
drivers/base/bus.c +3 -1
@@ -620,7 +620,7 @@ int bus_add_driver(struct device_driver *drv)if (drv->bus->p->drivers_autoprobe) { error =driver_attach (drv);if (error) - goto out_unregister; + goto out_del_list; }module_add_driver (drv->owner, drv);
@@ -647,6 +647,8 @@ int bus_add_driver(struct device_driver *drv)return 0 ; +out_del_list: +klist_del (&priv->knode_bus); out_unregister:kobject_put (&priv->kobj);/* drv->p is freed in driver_release() */
drivers/base/dd.c +4 -1
@@ -873,6 +873,7 @@ static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)static int __device_attach (struct device *dev,bool allow_async) {int ret =0 ; +bool async = false;device_lock (dev);if (dev->p->dead) {
@@ -911,7 +912,7 @@ static int __device_attach(struct device *dev, bool allow_async)*/ dev_dbg (dev,"scheduling asynchronous probe\n" );get_device (dev); -async_schedule_dev (__device_attach_async_helper, dev); + async = true; }else {pm_request_idle (dev); }
@@ -921,6 +922,8 @@ static int __device_attach(struct device *dev, bool allow_async) } out_unlock:device_unlock (dev); +if (async) +async_schedule_dev (__device_attach_async_helper, dev);return ret; }
drivers/base/node.c +1 -0
@@ -641,6 +641,7 @@ static int register_node(struct node *node, int num)*/ void unregister_node (struct node *node) { +compaction_unregister_node (node);hugetlb_unregister_node (node);/* no-op, if memoryless node */ node_remove_accesses (node);node_remove_caches (node);
drivers/block/drbd/drbd_main.c +6 -5
@@ -3709,9 +3709,8 @@ const char *cmdname(enum drbd_packet cmd)* when we want to support more than * one PRO_VERSION */ static const char *cmdnames[] = { + [P_DATA ] ="Data" , - [P_WSAME ] ="WriteSame" , - [P_TRIM ] ="Trim" , [P_DATA_REPLY ] ="DataReply" , [P_RS_DATA_REPLY ] ="RSDataReply" , [P_BARRIER ] ="Barrier" ,
@@ -3722,7 +3721,6 @@ const char *cmdname(enum drbd_packet cmd) [P_DATA_REQUEST] = "DataRequest", [P_RS_DATA_REQUEST] = "RSDataRequest", [P_SYNC_PARAM] = "SyncParam", - [P_SYNC_PARAM89] = "SyncParam89", [P_PROTOCOL] = "ReportProtocol", [P_UUIDS] = "ReportUUIDs", [P_SIZES] = "ReportSizes",
@@ -3730,6 +3728,7 @@ const char *cmdname(enum drbd_packet cmd) [P_SYNC_UUID] = "ReportSyncUUID", [P_AUTH_CHALLENGE] = "AuthChallenge", [P_AUTH_RESPONSE] = "AuthResponse", + [P_STATE_CHG_REQ] = "StateChgRequest", [P_PING] = "Ping", [P_PING_ACK] = "PingAck", [P_RECV_ACK] = "RecvAck",
@@ -3740,24 +3739,26 @@ const char *cmdname(enum drbd_packet cmd) [P_NEG_DREPLY] = "NegDReply", [P_NEG_RS_DREPLY] = "NegRSDReply", [P_BARRIER_ACK] = "BarrierAck", - [P_STATE_CHG_REQ] = "StateChgRequest", [P_STATE_CHG_REPLY] = "StateChgReply", [P_OV_REQUEST] = "OVRequest", [P_OV_REPLY] = "OVReply", [P_OV_RESULT] = "OVResult", [P_CSUM_RS_REQUEST] = "CsumRSRequest", [P_RS_IS_IN_SYNC] = "CsumRSIsInSync", + [P_SYNC_PARAM89] = "SyncParam89", [P_COMPRESSED_BITMAP] = "CBitmap", [P_DELAY_PROBE] = "DelayProbe", [P_OUT_OF_SYNC] = "OutOfSync", - [P_RETRY_WRITE] = "RetryWrite", [P_RS_CANCEL] = "RSCancel", [P_CONN_ST_CHG_REQ] = "conn_st_chg_req", [P_CONN_ST_CHG_REPLY] = "conn_st_chg_reply", [P_RETRY_WRITE] = "retry_write", [P_PROTOCOL_UPDATE] = "protocol_update", + [P_TRIM] = "Trim", [P_RS_THIN_REQ] = "rs_thin_req", [P_RS_DEALLOCATED] = "rs_deallocated", + [P_WSAME] = "WriteSame", + [P_ZEROES] = "Zeroes",/* enum drbd_packet, but not commands - obsoleted flags: * P_MAY_IGNORE
drivers/block/nbd.c +35 -15
118 lines not on this page · raw message
drivers/block/virtio_blk.c +4 -3
@@ -976,11 +976,12 @@ static int virtblk_probe(struct virtio_device *vdev)blk_queue_io_opt (q, blk_size * opt_io_size);if (virtio_has_feature (vdev,VIRTIO_BLK_F_DISCARD )) { - q->limits.discard_granularity = blk_size; - virtio_cread(vdev, struct virtio_blk_config, discard_sector_alignment, &v); - q->limits.discard_alignment = v ? v <<SECTOR_SHIFT :0 ; +if (v) + q->limits.discard_granularity = v <<SECTOR_SHIFT ; +else + q->limits.discard_granularity = blk_size; virtio_cread(vdev, struct virtio_blk_config, max_discard_sectors, &v);
drivers/bus/ti-sysc.c +3 -1
@@ -2724,7 +2724,9 @@ static int sysc_remove(struct platform_device *pdev)struct sysc *ddata =platform_get_drvdata (pdev);int error; -cancel_delayed_work_sync (&ddata->idle_work); +/* Device can still be enabled, see deferred idle quirk in probe */ +if (cancel_delayed_work_sync (&ddata->idle_work)) +ti_sysc_idle (&ddata->idle_work.work); error =pm_runtime_get_sync (ddata->dev);if (error <0 ) {
drivers/char/ipmi/ipmi_msghandler.c +2 -2
@@ -11,8 +11,8 @@* Copyright 2002 MontaVista Software Inc. */ -#define pr_fmt (fmt) "%s" fmt, "IPMI message handler: " -#define dev_fmt pr_fmt +#define pr_fmt (fmt) "IPMI message handler: " fmt +#define dev_fmt (fmt) pr_fmt(fmt)#include <linux/module.h> #include <linux/errno.h>
drivers/char/ipmi/ipmi_ssif.c +23 -0
@@ -845,6 +845,14 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,break ;case SSIF_GETTING_EVENTS : +if (!msg) { +/* Should never happen, but just in case. */ +dev_warn (&ssif_info->client->dev, +"No message set while getting events\n" ); +ipmi_ssif_unlock_cond (ssif_info, flags); +break ; + } +if ((result <0 ) || (len <3 ) || (msg->rsp[2 ] !=0 )) {/* Error getting event, probably done. */ msg->done (msg);
@@ -869,6 +877,14 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,break ;case SSIF_GETTING_MESSAGES : +if (!msg) { +/* Should never happen, but just in case. */ +dev_warn (&ssif_info->client->dev, +"No message set while getting messages\n" ); +ipmi_ssif_unlock_cond (ssif_info, flags); +break ; + } +if ((result <0 ) || (len <3 ) || (msg->rsp[2 ] !=0 )) {/* Error getting event, probably done. */ msg->done (msg);
@@ -892,6 +908,13 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,deliver_recv_msg (ssif_info, msg); }break ; + +default : +/* Should never happen, but just in case. */ +dev_warn (&ssif_info->client->dev, +"Invalid state in message done handling: %d\n" , + ssif_info->ssif_state); +ipmi_ssif_unlock_cond (ssif_info, flags); } flags =ipmi_ssif_lock_cond (ssif_info, &oflags);
drivers/clocksource/timer-oxnas-rps.c +1 -1
@@ -236,7 +236,7 @@ static int __init oxnas_rps_timer_init(struct device_node *np) } rps->irq =irq_of_parse_and_map (np,0 ); -if (rps->irq <0 ) { +if (!rps->irq) { ret = -EINVAL ; goto err_iomap; }
drivers/clocksource/timer-riscv.c +1 -1
@@ -26,7 +26,7 @@ static int riscv_clock_next_event(unsigned long delta, static DEFINE_PER_CPU(struct clock_event_device, riscv_clock_event) = { .name ="riscv_timer_clockevent" , - .features =CLOCK_EVT_FEAT_ONESHOT , + .features =CLOCK_EVT_FEAT_ONESHOT |CLOCK_EVT_FEAT_C3STOP , .rating =100 , .set_next_event = riscv_clock_next_event, };
drivers/clocksource/timer-sp804.c +5 -5
@@ -215,6 +215,11 @@ static int __init sp804_of_init(struct device_node *np)struct clk *clk1, *clk2;const char *name =of_get_property (np,"compatible" ,NULL ); +if (initialized) { +pr_debug ("%pOF: skipping further SP804 timer device\n" , np); +return 0 ; + } + base =of_iomap (np,0 );if (!base)return -ENXIO ;
@@ -223,11 +228,6 @@ static int __init sp804_of_init(struct device_node *np)writel (0 , base +TIMER_CTRL );writel (0 , base +TIMER_2_BASE +TIMER_CTRL ); -if (initialized || !of_device_is_available (np)) { - ret = -EINVAL ; - goto err; - } - clk1 =of_clk_get (np,0 );if (IS_ERR (clk1)) clk1 =NULL ;
drivers/crypto/marvell/cipher.c +0 -1
@@ -610,7 +610,6 @@ struct skcipher_alg mv_cesa_ecb_des3_ede_alg = { .decrypt = mv_cesa_ecb_des3_ede_decrypt, .min_keysize = DES3_EDE_KEY_SIZE, .max_keysize = DES3_EDE_KEY_SIZE, - .ivsize = DES3_EDE_BLOCK_SIZE, .base = { .cra_name = "ecb(des3_ede)", .cra_driver_name = "mv-ecb-des3-ede",
drivers/devfreq/rk3399_dmc.c +2 -0
@@ -485,6 +485,8 @@ static int rk3399_dmcfreq_remove(struct platform_device *pdev) {struct rk3399_dmcfreq *dmcfreq =dev_get_drvdata (&pdev->dev); +devfreq_event_disable_edev (dmcfreq->edev); +/* * Before remove the opp table we need to unregister the opp notifier. */
drivers/dma/stm32-mdma.c +5 -16
@@ -40,7 +40,6 @@ STM32_MDMA_SHIFT(mask))#define STM32_MDMA_GISR0 0x0000/* MDMA Int Status Reg 1 */ -#define STM32_MDMA_GISR1 0x0004/* MDMA Int Status Reg 2 */ /* MDMA Channel x interrupt/status register */ #define STM32_MDMA_CISR (x) (0x40 + 0x40 * (x))/* x = 0..62 */
@@ -196,7 +195,7 @@#define STM32_MDMA_MAX_BUF_LEN 128#define STM32_MDMA_MAX_BLOCK_LEN 65536 -#define STM32_MDMA_MAX_CHANNELS 63 +#define STM32_MDMA_MAX_CHANNELS 32#define STM32_MDMA_MAX_REQUESTS 256#define STM32_MDMA_MAX_BURST 128#define STM32_MDMA_VERY_HIGH_PRIORITY 0x11
@@ -1351,21 +1350,11 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)/* Find out which channel generates the interrupt */ status =readl_relaxed (dmadev->base +STM32_MDMA_GISR0 ); -if (status) { - id =__ffs (status); - }else { - status =readl_relaxed (dmadev->base +STM32_MDMA_GISR1 ); -if (!status) { -dev_dbg (mdma2dev (dmadev),"spurious it\n" ); -return IRQ_NONE ; - } - id =__ffs (status); -/* -* As GISR0 provides status for channel id from 0 to 31, -* so GISR1 provides status for channel id from 32 to 62 -*/ - id +=32 ; +if (!status) { +dev_dbg (mdma2dev (dmadev),"spurious it\n" ); +return IRQ_NONE ; } + id =__ffs (status); chan = &dmadev->chan[id];if (!chan) {
drivers/dma/xilinx/zynqmp_dma.c +3 -2
@@ -232,7 +232,7 @@ struct zynqmp_dma_chan {bool is_dmacoherent;struct tasklet_struct tasklet;bool idle; -u32 desc_size; +size_t desc_size;bool err;u32 bus_width;u32 src_burst_len;
@@ -489,7 +489,8 @@ static int zynqmp_dma_alloc_chan_resources(struct dma_chan *dchan) } chan->desc_pool_v =dma_alloc_coherent (chan->dev, - (2 * chan->desc_size *ZYNQMP_DMA_NUM_DESCS ), + (2 *ZYNQMP_DMA_DESC_SIZE (chan) * +ZYNQMP_DMA_NUM_DESCS ), &chan->desc_pool_p,GFP_KERNEL );if (!chan->desc_pool_v)return -ENOMEM ;
drivers/extcon/extcon.c +17 -12
@@ -1230,19 +1230,14 @@ int extcon_dev_register(struct extcon_dev *edev) edev->dev.type = &edev->extcon_dev_type; } - ret =device_register (&edev->dev); -if (ret) { -put_device (&edev->dev); - goto err_dev; - } -spin_lock_init (&edev->lock); - edev->nh =devm_kcalloc (&edev->dev, edev->max_supported, -sizeof (*edev->nh),GFP_KERNEL ); -if (!edev->nh) { - ret = -ENOMEM ; -device_unregister (&edev->dev); - goto err_dev; +if (edev->max_supported) { + edev->nh =kcalloc (edev->max_supported,sizeof (*edev->nh), +GFP_KERNEL ); +if (!edev->nh) { + ret = -ENOMEM ; + goto err_alloc_nh; + } }for (index =0 ; index < edev->max_supported; index++)
@@ -1253,6 +1248,12 @@ int extcon_dev_register(struct extcon_dev *edev)dev_set_drvdata (&edev->dev, edev); edev->state =0 ; + ret =device_register (&edev->dev); +if (ret) { +put_device (&edev->dev); + goto err_dev; + } +mutex_lock (&extcon_dev_list_lock);list_add (&edev->entry, &extcon_dev_list);mutex_unlock (&extcon_dev_list_lock);
@@ -1260,6 +1261,9 @@ int extcon_dev_register(struct extcon_dev *edev)return 0 ; err_dev: +if (edev->max_supported) +kfree (edev->nh); +err_alloc_nh:if (edev->max_supported)kfree (edev->extcon_dev_type.groups); err_alloc_groups:
@@ -1320,6 +1324,7 @@ void extcon_dev_unregister(struct extcon_dev *edev)if (edev->max_supported) {kfree (edev->extcon_dev_type.groups);kfree (edev->cables); +kfree (edev->nh); }put_device (&edev->dev);
drivers/firmware/arm_scmi/base.c +1 -1
@@ -164,7 +164,7 @@ static int scmi_base_implementation_list_get(const struct scmi_handle *handle,break ; loop_num_ret =le32_to_cpu (*num_ret); -if (tot_num_ret + loop_num_ret >MAX_PROTOCOLS_IMP ) { +if (loop_num_ret >MAX_PROTOCOLS_IMP - tot_num_ret) {dev_err (dev,"No. of Protocol > MAX_PROTOCOLS_IMP" );break ; }
drivers/firmware/dmi-sysfs.c +1 -1
@@ -603,7 +603,7 @@ static void __init dmi_sysfs_register_handle(const struct dmi_header *dh, "%d-%d", dh->type, entry->instance);if (*ret) { -kfree (entry); +kobject_put (&entry->kobj);return ; }
drivers/firmware/stratix10-svc.c +6 -6
@@ -934,17 +934,17 @@ EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory);void stratix10_svc_free_memory (struct stratix10_svc_chan *chan,void *kaddr) {struct stratix10_svc_data_mem *pmem; -size_t size =0 ;list_for_each_entry (pmem, &svc_data_mem, node)if (pmem->vaddr == kaddr) { - size = pmem->size; -break ; +gen_pool_free (chan->ctrl->genpool, + (unsigned long )kaddr, pmem->size); + pmem->vaddr =NULL ; +list_del (&pmem->node); +return ; } -gen_pool_free (chan->ctrl->genpool, (unsigned long )kaddr, size); - pmem->vaddr =NULL ; -list_del (&pmem->node); +list_del (&svc_data_mem); }EXPORT_SYMBOL_GPL (stratix10_svc_free_memory);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +1 -1
@@ -114,7 +114,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_csint ret;if (cs->in.num_chunks ==0 ) -return 0 ; +return -EINVAL ; chunk_array =kmalloc_array (cs->in.num_chunks,sizeof (uint64_t ),GFP_KERNEL );if (!chunk_array)
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +1 -2
@@ -568,8 +568,7 @@ int amdgpu_ucode_create_bo(struct amdgpu_device *adev)void amdgpu_ucode_free_bo (struct amdgpu_device *adev) { -if (adev->firmware.load_type !=AMDGPU_FW_LOAD_DIRECT ) -amdgpu_bo_free_kernel (&adev->firmware.fw_buf, +amdgpu_bo_free_kernel (&adev->firmware.fw_buf, &adev->firmware.fw_buf_mc, &adev->firmware.fw_buf_ptr); }
drivers/gpu/drm/amd/amdgpu/kv_dpm.c +1 -13
@@ -1609,19 +1609,7 @@ static int kv_update_samu_dpm(struct amdgpu_device *adev, bool gate)static u8 kv_get_acp_boot_level (struct amdgpu_device *adev) { -u8 i; -struct amdgpu_clock_voltage_dependency_table *table = - &adev->pm.dpm.dyn_state.acp_clock_voltage_dependency_table; - -for (i =0 ; i < table->count; i++) { -if (table->entries[i].clk >=0 )/* XXX */ -break ; - } - -if (i >= table->count) - i = table->count -1 ; - -return i; +return 0 ; }static void kv_update_acp_boot_level (struct amdgpu_device *adev)
drivers/gpu/drm/amd/amdgpu/si_dpm.c +3 -5
@@ -7250,17 +7250,15 @@ static int si_parse_power_table(struct amdgpu_device *adev)if (!adev->pm.dpm.ps)return -ENOMEM ; power_state_offset = (u8 *)state_array->states; -for (i =0 ; i < state_array->ucNumEntries; i++) { +for (adev->pm.dpm.num_ps =0 , i =0 ; i < state_array->ucNumEntries; i++) {u8 *idx; power_state = (union pplib_power_state *)power_state_offset; non_clock_array_index = power_state->v2.nonClockInfoIndex; non_clock_info = (struct _ATOM_PPLIB_NONCLOCK_INFO *) &non_clock_info_array->nonClockInfo[non_clock_array_index]; ps =kzalloc (sizeof (struct si_ps ),GFP_KERNEL ); -if (ps ==NULL ) { -kfree (adev->pm.dpm.ps); +if (ps ==NULL )return -ENOMEM ; - } adev->pm.dpm.ps[i].ps_priv = ps; si_parse_pplib_non_clock_info(adev, &adev->pm.dpm.ps[i], non_clock_info,
@@ -7282,8 +7280,8 @@ static int si_parse_power_table(struct amdgpu_device *adev) k++; } power_state_offset +=2 + power_state->v2.ucNumDPMLevels; + adev->pm.dpm.num_ps++; } - adev->pm.dpm.num_ps = state_array->ucNumEntries;/* fill in the vce power states */ for (i =0 ; i < adev->pm.dpm.num_of_vce_states; i++) {
drivers/gpu/drm/arm/display/komeda/komeda_plane.c +8 -2
@@ -264,6 +264,10 @@ static int komeda_plane_add(struct komeda_kms_dev *kms, formats =komeda_get_layer_fourcc_list (&mdev->fmt_tbl, layer->layer_type, &n_formats); +if (!formats) { +kfree (kplane); +return -ENOMEM ; + } err = drm_universal_plane_init(&kms->base, plane, get_possible_crtcs(kms, c->pipeline),
@@ -274,8 +278,10 @@ static int komeda_plane_add(struct komeda_kms_dev *kms,komeda_put_fourcc_list (formats); -if (err) - goto cleanup; +if (err) { +kfree (kplane); +return err; + }drm_plane_helper_add (plane, &komeda_plane_helper_funcs);
drivers/gpu/drm/arm/malidp_crtc.c +4 -1
@@ -483,7 +483,10 @@ static void malidp_crtc_reset(struct drm_crtc *crtc)if (crtc->state)malidp_crtc_destroy_state (crtc, crtc->state); -__drm_atomic_helper_crtc_reset (crtc, &state->base); +if (state) +__drm_atomic_helper_crtc_reset (crtc, &state->base); +else +__drm_atomic_helper_crtc_reset (crtc,NULL ); }static int malidp_crtc_enable_vblank (struct drm_crtc *crtc)
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +1 -0
@@ -1225,6 +1225,7 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)return 0 ; err_unregister_cec: +cec_unregister_adapter (adv7511->cec_adap);i2c_unregister_device (adv7511->i2c_cec);if (adv7511->cec_clk)clk_disable_unprepare (adv7511->cec_clk);
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +25 -6
@@ -1630,8 +1630,19 @@ static ssize_t analogix_dpaux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) {struct analogix_dp_device *dp =to_dp (aux); +int ret; + +pm_runtime_get_sync (dp->dev); + + ret =analogix_dp_detect_hpd (dp); +if (ret) + goto out; -return analogix_dp_transfer (dp, msg); + ret =analogix_dp_transfer (dp, msg); +out: +pm_runtime_put (dp->dev); + +return ret; } struct analogix_dp_device *
@@ -1696,8 +1707,10 @@ analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data) res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); dp->reg_base =devm_ioremap_resource (&pdev->dev, res); -if (IS_ERR (dp->reg_base)) -return ERR_CAST (dp->reg_base); +if (IS_ERR (dp->reg_base)) { + ret =PTR_ERR (dp->reg_base); + goto err_disable_clk; + } dp->force_hpd =of_property_read_bool (dev->of_node,"force-hpd" );
@@ -1709,7 +1722,8 @@ analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data)if (IS_ERR (dp->hpd_gpiod)) {dev_err (dev,"error getting HDP GPIO: %ld\n" ,PTR_ERR (dp->hpd_gpiod)); -return ERR_CAST (dp->hpd_gpiod); + ret =PTR_ERR (dp->hpd_gpiod); + goto err_disable_clk; }if (dp->hpd_gpiod) {
@@ -1729,7 +1743,8 @@ analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data)if (dp->irq == -ENXIO ) {dev_err (&pdev->dev,"failed to get irq\n" ); -return ERR_PTR (-ENODEV ); + ret = -ENODEV ; + goto err_disable_clk; } ret = devm_request_threaded_irq(&pdev->dev, dp->irq,
@@ -1738,11 +1753,15 @@ analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data) irq_flags, "analogix-dp", dp);if (ret) {dev_err (&pdev->dev,"failed to request irq\n" ); -return ERR_PTR (ret); + goto err_disable_clk; }disable_irq (dp->irq);return dp; + +err_disable_clk: +clk_disable_unprepare (dp->clock); +return ERR_PTR (ret); }EXPORT_SYMBOL_GPL (analogix_dp_probe);
drivers/gpu/drm/drm_edid.c +3 -3
@@ -1702,9 +1702,6 @@ struct edid *drm_do_get_edid(struct drm_connector *connector,connector_bad_edid (connector, edid, edid[0x7e ] +1 ); - edid[EDID_LENGTH -1 ] += edid[0x7e ] - valid_extensions; - edid[0x7e ] = valid_extensions; - new =kmalloc_array (valid_extensions +1 ,EDID_LENGTH ,GFP_KERNEL );if (!new)
@@ -1721,6 +1718,9 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, base +=EDID_LENGTH ; } + new[EDID_LENGTH -1 ] += new[0x7e ] - valid_extensions; + new[0x7e ] = valid_extensions; +kfree (edid); edid = new; }
drivers/gpu/drm/drm_plane.c +7 -7
@@ -186,6 +186,13 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,if (WARN_ON (config->num_total_plane >=32 ))return -EINVAL ; +/* +* First driver to need more than 64 formats needs to fix this. Each +* format is encoded as a bit and the current code only supports a u64. +*/ +if (WARN_ON (format_count >64 )) +return -EINVAL ; +WARN_ON (drm_drv_uses_atomic_modeset (dev) && (!funcs->atomic_destroy_state || !funcs->atomic_duplicate_state));
@@ -207,13 +214,6 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,return -ENOMEM ; } -/* -* First driver to need more than 64 formats needs to fix this. Each -* format is encoded as a bit and the current code only supports a u64. -*/ -if (WARN_ON (format_count >64 )) -return -EINVAL ; -if (format_modifiers) {const uint64_t *temp_modifiers = format_modifiers;while (*temp_modifiers++ !=DRM_FORMAT_MOD_INVALID )
drivers/gpu/drm/etnaviv/etnaviv_mmu.c +6 -0
@@ -289,6 +289,12 @@ void etnaviv_iommu_unmap_gem(struct etnaviv_iommu_context *context,mutex_lock (&context->lock); +/* Bail if the mapping has been reaped by another thread */ +if (!mapping->context) { +mutex_unlock (&context->lock); +return ; + } +/* If the vram node is on the mm, unmap and remove the node */ if (mapping->vram_node.mm == &context->mm)etnaviv_iommu_remove_mapping (context, mapping);
drivers/gpu/drm/gma500/psb_intel_display.c +4 -3
@@ -532,14 +532,15 @@ void psb_intel_crtc_init(struct drm_device *dev, int pipe,struct drm_crtc *psb_intel_get_crtc_from_pipe (struct drm_device *dev,int pipe) { -struct drm_crtc *crtc =NULL ; +struct drm_crtc *crtc;list_for_each_entry (crtc, &dev->mode_config.crtc_list, head) {struct gma_crtc *gma_crtc =to_gma_crtc (crtc); +if (gma_crtc->pipe == pipe) -break ; +return crtc; } -return crtc; +return NULL ; }int gma_connector_clones (struct drm_device *dev,int type_mask)
drivers/gpu/drm/imx/ipuv3-crtc.c +1 -1
@@ -68,7 +68,7 @@ static void ipu_crtc_disable_planes(struct ipu_crtc *ipu_crtc,drm_atomic_crtc_state_for_each_plane (plane, old_crtc_state) {if (plane == &ipu_crtc->plane[0 ]->base) disable_full = true; -if (&ipu_crtc->plane[1 ] && plane == &ipu_crtc->plane[1 ]->base) +if (ipu_crtc->plane[1 ] && plane == &ipu_crtc->plane[1 ]->base) disable_partial = true; }
drivers/gpu/drm/mediatek/mtk_cec.c +1 -1
@@ -84,7 +84,7 @@ static void mtk_cec_mask(struct mtk_cec *cec, unsigned int offset,u32 tmp =readl (cec->regs + offset) & ~mask; tmp |= val & mask; -writel (val, cec->regs + offset); +writel (tmp, cec->regs + offset); } void mtk_cec_set_hpd_event(struct device *dev,
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +1 -0
@@ -891,6 +891,7 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)BUG_ON (!node); ret =a6xx_gmu_init (a6xx_gpu, node); +of_node_put (node);if (ret) {a6xx_destroy (&(a6xx_gpu->base.base));return ERR_PTR (ret);
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +3 -1
@@ -599,8 +599,10 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)for (i =0 ; i < dpu_kms->catalog->vbif_count; i++) {u32 vbif_idx = dpu_kms->catalog->vbif[i].id; -if ((vbif_idx <VBIF_MAX ) && dpu_kms->hw_vbif[vbif_idx]) +if ((vbif_idx <VBIF_MAX ) && dpu_kms->hw_vbif[vbif_idx]) {dpu_hw_vbif_destroy (dpu_kms->hw_vbif[vbif_idx]); + dpu_kms->hw_vbif[vbif_idx] =NULL ; + } } }
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +11 -3
@@ -534,9 +534,15 @@ int mdp5_crtc_setup_pipeline(struct drm_crtc *crtc,if (ret)return ret; -mdp5_mixer_release (new_crtc_state->state, old_mixer); + ret =mdp5_mixer_release (new_crtc_state->state, old_mixer); +if (ret) +return ret; +if (old_r_mixer) { -mdp5_mixer_release (new_crtc_state->state, old_r_mixer); + ret =mdp5_mixer_release (new_crtc_state->state, old_r_mixer); +if (ret) +return ret; +if (!need_right_mixer) pipeline->r_mixer =NULL ; }
@@ -903,8 +909,10 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc, ret =msm_gem_get_and_pin_iova (cursor_bo, kms->aspace, &mdp5_crtc->cursor.iova); -if (ret) +if (ret) { +drm_gem_object_put (cursor_bo);return -EINVAL ; + }pm_runtime_get_sync (&pdev->dev);
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +3 -3
@@ -698,9 +698,9 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) pdev = mdp5_kms->pdev; irq =irq_of_parse_and_map (pdev->dev.of_node,0 ); -if (irq <0 ) { - ret = irq; -DRM_DEV_ERROR (&pdev->dev,"failed to get irq: %d\n" , ret); +if (!irq) { + ret = -EINVAL ; +DRM_DEV_ERROR (&pdev->dev,"failed to get irq\n" ); goto fail; }
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c +11 -4
@@ -116,21 +116,28 @@ int mdp5_mixer_assign(struct drm_atomic_state *s, struct drm_crtc *crtc,return 0 ; } -void mdp5_mixer_release (struct drm_atomic_state *s,struct mdp5_hw_mixer *mixer) +int mdp5_mixer_release (struct drm_atomic_state *s,struct mdp5_hw_mixer *mixer) {struct mdp5_global_state *global_state =mdp5_get_global_state (s); -struct mdp5_hw_mixer_state *new_state = &global_state->hwmixer; +struct mdp5_hw_mixer_state *new_state;if (!mixer) -return ; +return 0 ; + +if (IS_ERR (global_state)) +return PTR_ERR (global_state); + + new_state = &global_state->hwmixer;if (WARN_ON (!new_state->hwmixer_to_crtc[mixer->idx])) -return ; +return -EINVAL ;DBG ("%s: release from crtc %s" , mixer->name, new_state->hwmixer_to_crtc[mixer->idx]->name); new_state->hwmixer_to_crtc[mixer->idx] =NULL ; + +return 0 ; }void mdp5_mixer_destroy (struct mdp5_hw_mixer *mixer)
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h +2 -2
@@ -30,7 +30,7 @@ void mdp5_mixer_destroy(struct mdp5_hw_mixer *lm);int mdp5_mixer_assign (struct drm_atomic_state *s,struct drm_crtc *crtc,uint32_t caps,struct mdp5_hw_mixer **mixer,struct mdp5_hw_mixer **r_mixer); -void mdp5_mixer_release (struct drm_atomic_state *s, -struct mdp5_hw_mixer *mixer); +int mdp5_mixer_release (struct drm_atomic_state *s, +struct mdp5_hw_mixer *mixer);#endif /* __MDP5_LM_H__ */
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c +11 -4
@@ -119,18 +119,23 @@ int mdp5_pipe_assign(struct drm_atomic_state *s, struct drm_plane *plane,return 0 ; } -void mdp5_pipe_release (struct drm_atomic_state *s,struct mdp5_hw_pipe *hwpipe) +int mdp5_pipe_release (struct drm_atomic_state *s,struct mdp5_hw_pipe *hwpipe) {struct msm_drm_private *priv = s->dev->dev_private;struct mdp5_kms *mdp5_kms =to_mdp5_kms (to_mdp_kms (priv->kms));struct mdp5_global_state *state =mdp5_get_global_state (s); -struct mdp5_hw_pipe_state *new_state = &state->hwpipe; +struct mdp5_hw_pipe_state *new_state;if (!hwpipe) -return ; +return 0 ; + +if (IS_ERR (state)) +return PTR_ERR (state); + + new_state = &state->hwpipe;if (WARN_ON (!new_state->hwpipe_to_plane[hwpipe->idx])) -return ; +return -EINVAL ;DBG ("%s: release from plane %s" , hwpipe->name, new_state->hwpipe_to_plane[hwpipe->idx]->name);
@@ -141,6 +146,8 @@ void mdp5_pipe_release(struct drm_atomic_state *s, struct mdp5_hw_pipe *hwpipe) } new_state->hwpipe_to_plane[hwpipe->idx] =NULL ; + +return 0 ; }void mdp5_pipe_destroy (struct mdp5_hw_pipe *hwpipe)
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h +1 -1
@@ -37,7 +37,7 @@ int mdp5_pipe_assign(struct drm_atomic_state *s, struct drm_plane *plane, uint32_t caps, uint32_t blkcfg, struct mdp5_hw_pipe **hwpipe, struct mdp5_hw_pipe **r_hwpipe); -void mdp5_pipe_release (struct drm_atomic_state *s,struct mdp5_hw_pipe *hwpipe); +int mdp5_pipe_release (struct drm_atomic_state *s,struct mdp5_hw_pipe *hwpipe);struct mdp5_hw_pipe *mdp5_pipe_init (enum mdp5_pipe pipe,uint32_t reg_offset,uint32_t caps);
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c +16 -4
@@ -393,12 +393,24 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state, mdp5_state->r_hwpipe =NULL ; -mdp5_pipe_release (state->state, old_hwpipe); -mdp5_pipe_release (state->state, old_right_hwpipe); + ret =mdp5_pipe_release (state->state, old_hwpipe); +if (ret) +return ret; + + ret =mdp5_pipe_release (state->state, old_right_hwpipe); +if (ret) +return ret; + } }else { -mdp5_pipe_release (state->state, mdp5_state->hwpipe); -mdp5_pipe_release (state->state, mdp5_state->r_hwpipe); + ret =mdp5_pipe_release (state->state, mdp5_state->hwpipe); +if (ret) +return ret; + + ret =mdp5_pipe_release (state->state, mdp5_state->r_hwpipe); +if (ret) +return ret; + mdp5_state->hwpipe = mdp5_state->r_hwpipe =NULL ; }
drivers/gpu/drm/msm/dsi/dsi_host.c +14 -7
@@ -1348,10 +1348,10 @@ static int dsi_cmds2buf_tx(struct msm_dsi_host *msm_host,dsi_get_bpp (msm_host->format) /8 ; len =dsi_cmd_dma_add (msm_host, msg); -if (!len) { +if (len <0 ) {pr_err ("%s: failed to add cmd type = 0x%x\n" , __func__, msg->type); -return -EINVAL ; +return len; }/* for video mode, do not send cmds more than
@@ -1370,10 +1370,14 @@ static int dsi_cmds2buf_tx(struct msm_dsi_host *msm_host, } ret =dsi_cmd_dma_tx (msm_host, len); -if (ret < len) { -pr_err ("%s: cmd dma tx failed, type=0x%x, data0=0x%x, len=%d\n" , - __func__, msg->type, (*(u8 *)(msg->tx_buf)), len); -return -ECOMM ; +if (ret <0 ) { +pr_err ("%s: cmd dma tx failed, type=0x%x, data0=0x%x, len=%d, ret=%d\n" , + __func__, msg->type, (*(u8 *)(msg->tx_buf)), len, ret); +return ret; + }else if (ret < len) { +pr_err ("%s: cmd dma tx failed, type=0x%x, data0=0x%x, ret=%d len=%d\n" , + __func__, msg->type, (*(u8 *)(msg->tx_buf)), ret, len); +return -EIO ; }return len;
@@ -2099,9 +2103,12 @@ int msm_dsi_host_cmd_rx(struct mipi_dsi_host *host, } ret =dsi_cmds2buf_tx (msm_host, msg); -if (ret < msg->tx_len) { +if (ret <0 ) {pr_err ("%s: Read cmd Tx failed, %d\n" , __func__, ret);return ret; + }else if (ret < msg->tx_len) { +pr_err ("%s: Read cmd Tx failed, too short: %d\n" , __func__, ret); +return -ECOMM ; }/*
drivers/gpu/drm/msm/hdmi/hdmi.c +7 -3
@@ -142,6 +142,10 @@ static struct hdmi *msm_hdmi_init(struct platform_device *pdev)/* HDCP needs physical address of hdmi register */ res =platform_get_resource_byname (pdev,IORESOURCE_MEM , config->mmio_name); +if (!res) { + ret = -EINVAL ; + goto fail; + } hdmi->mmio_phy_addr = res->start; hdmi->qfprom_mmio = msm_ioremap(pdev,
@@ -311,9 +315,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, } hdmi->irq =irq_of_parse_and_map (pdev->dev.of_node,0 ); -if (hdmi->irq <0 ) { - ret = hdmi->irq; -DRM_DEV_ERROR (dev->dev,"failed to get irq: %d\n" , ret); +if (!hdmi->irq) { + ret = -EINVAL ; +DRM_DEV_ERROR (dev->dev,"failed to get irq\n" ); goto fail; }
drivers/gpu/drm/msm/msm_gem_prime.c +1 -1
@@ -17,7 +17,7 @@ struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj)int npages = obj->size >>PAGE_SHIFT ;if (WARN_ON (!msm_obj->pages))/* should have already pinned! */ -return NULL ; +return ERR_PTR (-ENOMEM );return drm_prime_pages_to_sg (msm_obj->pages, npages); }
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c +4 -2
@@ -135,10 +135,10 @@ nvkm_cstate_find_best(struct nvkm_clk *clk, struct nvkm_pstate *pstate,list_for_each_entry_from_reverse (cstate, &pstate->list, head) {if (nvkm_cstate_valid (clk, cstate, max_volt, clk->temp)) -break ; +return cstate; } -return cstate; +return NULL ; } static struct nvkm_cstate *
@@ -169,6 +169,8 @@ nvkm_cstate_prog(struct nvkm_clk *clk, struct nvkm_pstate *pstate, int cstatei)if (!list_empty (&pstate->list)) { cstate =nvkm_cstate_get (clk, pstate, cstatei); cstate =nvkm_cstate_find_best (clk, pstate, cstate); +if (!cstate) +return -EINVAL ; }else { cstate = &pstate->base; }
drivers/gpu/drm/radeon/radeon_connectors.c +4 -0
@@ -477,6 +477,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode native_mode->vdisplay != 0 && native_mode->clock != 0) { mode =drm_mode_duplicate (dev, native_mode); +if (!mode) +return NULL ; mode->type =DRM_MODE_TYPE_PREFERRED |DRM_MODE_TYPE_DRIVER ;drm_mode_set_name (mode);
@@ -491,6 +493,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode* simpler. */ mode =drm_cvt_mode (dev, native_mode->hdisplay, native_mode->vdisplay,60 , true, false, false); +if (!mode) +return NULL ; mode->type =DRM_MODE_TYPE_PREFERRED |DRM_MODE_TYPE_DRIVER ;DRM_DEBUG_KMS ("Adding cvt approximation of native panel mode %s\n" , mode->name); }
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +1 -1
@@ -1848,10 +1848,10 @@ static int vop_bind(struct device *dev, struct device *master, void *data)vop_win_init (vop); res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); - vop->len =resource_size (res); vop->regs =devm_ioremap_resource (dev, res);if (IS_ERR (vop->regs))return PTR_ERR (vop->regs); + vop->len =resource_size (res); vop->regsbak =devm_kzalloc (dev, vop->len,GFP_KERNEL );if (!vop->regsbak)
drivers/gpu/drm/tilcdc/tilcdc_external.c +5 -3
@@ -58,11 +58,13 @@ struct drm_connector *tilcdc_encoder_find_connector(struct drm_device *ddev,int tilcdc_add_component_encoder (struct drm_device *ddev) {struct tilcdc_drm_private *priv = ddev->dev_private; -struct drm_encoder *encoder; +struct drm_encoder *encoder =NULL , *iter; -list_for_each_entry (encoder, &ddev->mode_config.encoder_list, head) -if (encoder->possible_crtcs & (1 << priv->crtc->index)) +list_for_each_entry (iter, &ddev->mode_config.encoder_list, head) +if (iter->possible_crtcs & (1 << priv->crtc->index)) { + encoder = iter;break ; + }if (!encoder) {dev_err (ddev->dev,"%s: No suitable encoder found\n" , __func__);
drivers/gpu/drm/vc4/vc4_txp.c +7 -1
@@ -285,12 +285,18 @@ static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,if (WARN_ON (i ==ARRAY_SIZE (drm_fmts)))return ; - ctrl =TXP_GO |TXP_VSTART_AT_EOF |TXP_EI | + ctrl =TXP_GO |TXP_EI |VC4_SET_FIELD (0xf ,TXP_BYTE_ENABLE ) |VC4_SET_FIELD (txp_fmts[i],TXP_FORMAT );if (fb->format->has_alpha) ctrl |=TXP_ALPHA_ENABLE ; +else +/* +* If TXP_ALPHA_ENABLE isn't set and TXP_ALPHA_INVERT is, the +* hardware will force the output padding to be 0xff. +*/ + ctrl |=TXP_ALPHA_INVERT ; gem =drm_fb_cma_get_gem_obj (fb,0 );TXP_WRITE (TXP_DST_PTR , gem->paddr + fb->offsets[0 ]);
drivers/gpu/drm/virtio/virtgpu_display.c +2 -0
@@ -174,6 +174,8 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector)DRM_DEBUG ("add mode: %dx%d\n" , width, height); mode =drm_cvt_mode (connector->dev, width, height,60 , false, false, false); +if (!mode) +return count; mode->type |=DRM_MODE_TYPE_PREFERRED ;drm_mode_probed_add (connector, mode); count++;
drivers/hid/hid-bigbenff.c +6 -0
@@ -347,6 +347,12 @@ static int bigben_probe(struct hid_device *hid, bigben->report =list_entry (report_list->next, struct hid_report, list); +if (list_empty (&hid->inputs)) { +hid_err (hid,"no inputs found\n" ); + error = -ENODEV ; + goto error_hw_stop; + } + hidinput = list_first_entry(&hid->inputs, struct hid_input, list);set_bit (FF_RUMBLE , hidinput->input->ffbit);
drivers/hid/hid-elan.c +0 -2
@@ -188,7 +188,6 @@ static int elan_input_configured(struct hid_device *hdev, struct hid_input *hi) ret =input_mt_init_slots (input,ELAN_MAX_FINGERS ,INPUT_MT_POINTER );if (ret) {hid_err (hdev,"Failed to init elan MT slots: %d\n" , ret); -input_free_device (input);return ret; }
@@ -200,7 +199,6 @@ static int elan_input_configured(struct hid_device *hdev, struct hid_input *hi)hid_err (hdev,"Failed to register elan input device: %d\n" , ret);input_mt_destroy_slots (input); -input_free_device (input);return ret; }
drivers/hid/hid-led.c +1 -1
@@ -366,7 +366,7 @@ static const struct hidled_config hidled_configs[] = { .type = DREAM_CHEEKY,
Lines of this file are not shown. View the raw message.
drivers/hwtracing/coresight/coresight-cpu-debug.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/iio/common/st_sensors/st_sensors_core.c +18 -6
Lines of this file are not shown. View the raw message.
drivers/md/md-bitmap.c +23 -21
44 lines not on this page · raw message
drivers/media/pci/cx23885/cx23885-core.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/pci/cx25821/cx25821-core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/coda/coda-common.c +23 -12
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/fimc-is.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/fimc-isp-video.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/hfi.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/delta/delta-v4l2.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/media/usb/pvrusb2/pvrusb2-hdw.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/mtd/chips/cfi_cmdset_0002.c +49 -54
103 lines not on this page · raw message
drivers/net/ethernet/altera/altera_tse_main.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +37 -8
45 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c +0 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/ar9003_phy.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +8 -0
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/net/wireless/broadcom/b43legacy/phy.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/libipw_tx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/power.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/11h.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/usb.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-cadence-ep.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-rockchip-ep.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/fieldbus/anybuss/host.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192e/rtllib_softmac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +1 -1
Lines of this file are not shown. View the raw message.
fs/ext4/namei.c +67 -17
84 lines not on this page · raw message
include/linux/nodemask.h +25 -26
51 lines not on this page · raw message
include/net/sch_generic.h +14 -28
42 lines not on this page · raw message
scripts/faddr2line +97 -53
150 lines not on this page · raw message
security/integrity/platform_certs/keyring_handler.h +8 -0
Lines of this file are not shown. View the raw message.
security/integrity/platform_certs/load_uefi.c +33 -0
Lines of this file are not shown. View the raw message.
sound/soc/mediatek/mt2701/mt2701-wm8960.c +7 -2
Lines of this file are not shown. View the raw message.
sound/soc/mediatek/mt8173/mt8173-max98090.c +4 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/btf_dump_test_case_syntax.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_nat.sh +43 -0
43 lines not on this page · 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.