Linux 5.10.209
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.209 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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
------------
Makefile | 2 arch/arc/kernel/signal.c | 6 arch/arm/boot/dts/qcom-apq8064.dtsi | 2 arch/arm/mach-davinci/Kconfig | 1 arch/arm/mach-sunxi/mc_smp.c | 4 arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | 2 arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 2 arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 2 arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 2 arch/arm64/kvm/vgic/vgic-its.c | 5 arch/arm64/kvm/vgic/vgic-mmio-v3.c | 27 arch/mips/alchemy/devboards/db1200.c | 2 arch/mips/alchemy/devboards/db1550.c | 2 arch/mips/include/asm/dmi.h | 2 arch/mips/kernel/setup.c | 4 arch/powerpc/include/asm/sections.h | 8 arch/powerpc/lib/Makefile | 2 arch/powerpc/perf/imc-pmu.c | 6 arch/powerpc/platforms/44x/Kconfig | 1 arch/powerpc/platforms/powernv/opal-irqchip.c | 2 arch/powerpc/platforms/powernv/opal-powercap.c | 6 arch/powerpc/platforms/powernv/opal-xscom.c | 5 arch/powerpc/platforms/pseries/hotplug-memory.c | 21 arch/s390/include/asm/pci_io.h | 32 arch/s390/pci/pci_mmio.c | 12 arch/x86/kernel/kvmclock.c | 12 arch/x86/lib/misc.c | 2 crypto/af_alg.c | 14 crypto/scompress.c | 6 drivers/acpi/acpi_extlog.c | 7 drivers/acpi/acpi_lpit.c | 2 drivers/acpi/acpi_video.c | 12 drivers/acpi/property.c | 4 drivers/acpi/resource.c | 7 drivers/android/binder.c | 2 drivers/android/binder_alloc.c | 32 drivers/base/swnode.c | 3 drivers/bluetooth/btmtkuart.c | 11 drivers/clk/clk-fixed-rate.c | 28 drivers/clk/clk-si5341.c | 4 drivers/clk/qcom/gpucc-sm8150.c | 4 drivers/clk/qcom/videocc-sm8150.c | 5 drivers/clk/rockchip/clk-rk3128.c | 2 drivers/clk/zynqmp/clk-mux-zynqmp.c | 2 drivers/clk/zynqmp/divider.c | 63 - drivers/cpufreq/cpufreq-dt-platdev.c | 2 drivers/cpufreq/imx-cpufreq-dt.c | 2 drivers/cpufreq/imx6q-cpufreq.c | 4 drivers/cpufreq/scmi-cpufreq.c | 7 drivers/cpufreq/tegra20-cpufreq.c | 2 drivers/crypto/ccp/ccp-ops.c | 5 drivers/crypto/sa2ul.c | 3 drivers/crypto/sahara.c | 248 +--- drivers/crypto/virtio/Kconfig | 3 drivers/crypto/virtio/Makefile | 1 drivers/crypto/virtio/virtio_crypto_akcipher_algs.c | 591 ++++++++++ drivers/crypto/virtio/virtio_crypto_algs.c | 143 +- drivers/crypto/virtio/virtio_crypto_common.h | 26 drivers/crypto/virtio/virtio_crypto_core.c | 82 + drivers/crypto/virtio/virtio_crypto_mgr.c | 11 drivers/edac/thunderx_edac.c | 10 drivers/firmware/meson/meson_sm.c | 5 drivers/firmware/ti_sci.c | 10 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 10 drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c | 4 drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 5 drivers/gpu/drm/bridge/tc358767.c | 2 drivers/gpu/drm/bridge/ti-tpd12s015.c | 4 drivers/gpu/drm/drm_crtc.c | 8 drivers/gpu/drm/drm_drv.c | 10 drivers/gpu/drm/exynos/exynos_drm_dma.c | 8 drivers/gpu/drm/exynos/exynos_hdmi.c | 2 drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 9 drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 4 drivers/gpu/drm/nouveau/nv04_fence.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.c | 2 drivers/gpu/drm/panel/panel-elida-kd35t133.c | 2 drivers/gpu/drm/radeon/r100.c | 4 drivers/gpu/drm/radeon/r600_cs.c | 4 drivers/gpu/drm/radeon/radeon_display.c | 7 drivers/gpu/drm/radeon/radeon_vm.c | 8 drivers/gpu/drm/radeon/si.c | 4 drivers/gpu/drm/radeon/sumo_dpm.c | 4 drivers/gpu/drm/radeon/trinity_dpm.c | 4 drivers/hid/wacom_wac.c | 32 drivers/hwtracing/coresight/coresight-etm4x.h | 2 drivers/i2c/busses/i2c-rk3x.c | 13 drivers/i2c/busses/i2c-s3c2410.c | 40 drivers/iio/adc/ad7091r-base.c | 6 drivers/iio/adc/ad9467.c | 114 + drivers/iio/adc/adi-axi-adc.c | 74 - drivers/infiniband/hw/mthca/mthca_cmd.c | 4 drivers/infiniband/hw/mthca/mthca_main.c | 2 drivers/infiniband/ulp/iser/iscsi_iser.h | 2 drivers/infiniband/ulp/iser/iser_initiator.c | 5 drivers/infiniband/ulp/iser/iser_memory.c | 8 drivers/infiniband/ulp/iser/iser_verbs.c | 1 drivers/input/joystick/xpad.c | 1 drivers/input/keyboard/atkbd.c | 50 drivers/input/serio/i8042-acpipnpio.h | 8 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 1 drivers/leds/Kconfig | 1 drivers/media/dvb-core/dvbdev.c | 2 drivers/media/dvb-frontends/m88ds3103.c | 7 drivers/media/usb/cx231xx/cx231xx-core.c | 2 drivers/media/usb/pvrusb2/pvrusb2-context.c | 3 drivers/mfd/syscon.c | 4 drivers/mmc/host/Kconfig | 10 drivers/mtd/mtd_blkdevs.c | 4 drivers/mtd/nand/raw/fsl_ifc_nand.c | 2 drivers/net/dsa/vitesse-vsc73xx-core.c | 2 drivers/net/ethernet/broadcom/tg3.c | 11 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 1 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c | 8 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c | 8 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 131 +- drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c | 9 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 11 drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 2 drivers/net/ethernet/renesas/ravb_main.c | 2 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 5 drivers/net/phy/micrel.c | 1 drivers/net/wireless/ath/ath11k/ahb.c | 4 drivers/net/wireless/marvell/libertas/Kconfig | 2 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 2 drivers/net/wireless/marvell/mwifiex/fw.h | 1 drivers/net/wireless/marvell/mwifiex/ioctl.h | 1 drivers/net/wireless/marvell/mwifiex/uap_cmd.c | 8 drivers/net/wireless/realtek/rtlwifi/pci.c | 79 - drivers/net/wireless/realtek/rtlwifi/pci.h | 5 drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c | 14 drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c | 12 drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h | 1 drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c | 6 drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h | 1 drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c | 6 drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c | 61 - drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c | 16 drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c | 15 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c | 5 drivers/net/wireless/realtek/rtlwifi/wifi.h | 7 drivers/net/wireless/realtek/rtw88/mac80211.c | 4 drivers/net/xen-netback/netback.c | 44 drivers/nvme/host/core.c | 5 drivers/nvme/host/nvme.h | 5 drivers/nvme/target/tcp.c | 20 drivers/of/base.c | 1 drivers/of/unittest-data/tests-phandle.dtsi | 10 drivers/of/unittest.c | 74 - drivers/parport/parport_serial.c | 64 + drivers/pci/controller/dwc/pci-keystone.c | 9 drivers/pci/quirks.c | 8 drivers/pinctrl/cirrus/Kconfig | 3 drivers/power/supply/cw2015_battery.c | 2 drivers/pwm/pwm-jz4740.c | 7 drivers/pwm/pwm-stm32.c | 63 - drivers/reset/hisilicon/hi6220_reset.c | 2 drivers/s390/block/scm_blk.c | 7 drivers/scsi/fnic/fnic_debugfs.c | 3 drivers/scsi/hisi_sas/hisi_sas_main.c | 4 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 drivers/spi/Kconfig | 3 drivers/spi/spi-sh-msiof.c | 17 drivers/staging/media/rkisp1/rkisp1-dev.c | 3 drivers/tty/serial/8250/8250_omap.c | 2 drivers/tty/serial/imx.c | 29 drivers/tty/tty.h | 2 drivers/tty/tty_io.c | 35 drivers/tty/tty_ioctl.c | 2 drivers/uio/uio.c | 7 drivers/usb/chipidea/core.c | 7 drivers/usb/class/cdc-acm.c | 3 drivers/usb/dwc3/core.c | 39 drivers/usb/dwc3/ep0.c | 5 drivers/usb/mon/mon_bin.c | 7 drivers/usb/phy/phy-mxs-usb.c | 3 drivers/usb/typec/class.c | 4 drivers/video/fbdev/core/fb_defio.c | 6 drivers/watchdog/bcm2835_wdt.c | 3 drivers/watchdog/hpwdt.c | 2 drivers/watchdog/rti_wdt.c | 13 drivers/watchdog/watchdog_dev.c | 3 fs/debugfs/file.c | 8 fs/debugfs/inode.c | 27 fs/debugfs/internal.h | 10 fs/efivarfs/super.c | 12 fs/f2fs/file.c | 7 fs/f2fs/namei.c | 2 fs/f2fs/xattr.c | 6 fs/gfs2/rgrp.c | 23 fs/jbd2/commit.c | 1 fs/jbd2/journal.c | 4 fs/namespace.c | 11 fs/nfs/blocklayout/blocklayout.c | 2 fs/nfs/nfs4proc.c | 3 fs/pstore/ram_core.c | 2 include/crypto/if_alg.h | 3 include/drm/drm_bridge.h | 2 include/dt-bindings/clock/qcom,videocc-sm8150.h | 4 include/linux/clk-provider.h | 33 include/linux/dma-map-ops.h | 3 include/linux/iio/adc/adi-axi-adc.h | 4 include/linux/of.h | 291 ++-- include/linux/rcupdate.h | 14 include/net/bluetooth/hci_core.h | 1 include/uapi/linux/bpf.h | 3 include/uapi/linux/virtio_crypto.h | 82 + init/do_mounts.c | 9 io_uring/io_uring.c | 9 kernel/bpf/lpm_trie.c | 3 kernel/bpf/stackmap.c | 11 kernel/bpf/verifier.c | 16 kernel/debug/kdb/kdb_main.c | 2 kernel/dma/coherent.c | 12 kernel/kprobes.c | 23 kernel/time/tick-sched.c | 5 kernel/trace/ring_buffer.c | 6 kernel/trace/trace.c | 6 kernel/trace/trace_output.c | 6 lib/idr.c | 2 lib/test_ida.c | 40 net/bluetooth/hci_conn.c | 8 net/bluetooth/hci_debugfs.c | 12 net/bluetooth/hci_event.c | 11 net/core/neighbour.c | 9 net/dns_resolver/dns_key.c | 2 net/ethtool/features.c | 9 net/ipv6/ip6_tunnel.c | 26 net/mptcp/options.c | 1 net/ncsi/internal.h | 9 net/ncsi/ncsi-netlink.c | 4 net/ncsi/ncsi-pkt.h | 7 net/ncsi/ncsi-rsp.c | 26 net/netfilter/ipvs/ip_vs_xmit.c | 4 net/netfilter/nf_tables_api.c | 15 net/netlabel/netlabel_calipso.c | 52 net/netlabel/netlabel_cipso_v4.c | 4 net/netlabel/netlabel_mgmt.c | 8 net/netlabel/netlabel_unlabeled.c | 10 net/netlabel/netlabel_user.h | 4 net/qrtr/ns.c | 4 net/vmw_vsock/virtio_transport_common.c | 13 security/apparmor/policy_unpack.c | 4 security/selinux/hooks.c | 7 sound/pci/hda/patch_realtek.c | 11 sound/pci/oxygen/oxygen_mixer.c | 2 sound/soc/atmel/sam9g20_wm8731.c | 61 + sound/soc/codecs/cs35l33.c | 4 sound/soc/codecs/cs35l34.c | 4 sound/soc/codecs/cs43130.c | 6 sound/soc/codecs/da7219-aad.c | 2 sound/soc/codecs/nau8822.c | 9 sound/soc/codecs/rt5645.c | 10 sound/soc/codecs/wm8974.c | 6 sound/soc/intel/skylake/skl-pcm.c | 9 sound/soc/intel/skylake/skl-sst-ipc.c | 4 tools/include/uapi/linux/bpf.h | 3 tools/lib/api/io.h | 1 tools/perf/util/bpf-event.c | 8 tools/perf/util/bpf-event.h | 12 tools/perf/util/env.c | 50 tools/perf/util/env.h | 4 tools/perf/util/genelf.c | 6 tools/perf/util/header.c | 8 tools/testing/selftests/drivers/net/mlxsw/qos_pfc.sh | 40 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh | 106 + tools/testing/selftests/net/fib_nexthop_multiprefix.sh | 4 tools/testing/selftests/powerpc/math/fpu_preempt.c | 9 tools/testing/selftests/powerpc/math/vmx_preempt.c | 10 269 files changed, 2886 insertions(+), 1471 deletions(-)
Abhinav Singh (1):
drm/nouveau/fence:: fix warning directly dereferencing a rcu pointer
Alex Deucher (1):
drm/amdgpu/debugfs: fix error code when smc register accessors are NULL
Alexandra Diupina (1):
cpufreq: scmi: process the result of devm_of_clk_add_hw_provider()
Amit Cohen (2):
mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure
selftests: mlxsw: qos_pfc: Adjust the test to support 8 lanes
Amit Kumar Mahapatra (1):
spi: spi-zynqmp-gqspi: fix driver kconfig dependencies
Andreas Gruenbacher (2):
Revert "gfs2: Don't reject a supposedly full bitmap if we have blocks reserved"
gfs2: Also reflect single-block allocations in rgd->rd_extfail_pt
Andrei Matei (1):
bpf: Fix verification of indirect var-off stack access
Andrew Lunn (1):
net: netlabel: Fix kerneldoc warnings
Andrii Nakryiko (1):
bpf: fix check for attempt to corrupt spilled pointer
Arnaldo Carvalho de Melo (1):
libapi: Add missing linux/types.h header to get the __u64 type on io.h
Arnd Bergmann (3):
EDAC/thunderx: Fix possible out-of-bounds string access
wifi: libertas: stop selecting wext
ARM: davinci: always select CONFIG_CPU_ARM926T
Arseniy Krasnov (1):
virtio/vsock: fix logic which reduces credit update messages
Artem Chernyshev (1):
scsi: fnic: Return error if vmalloc() failed
Benjamin Coddington (1):
blocklayoutdriver: Fix reference leak of pnfs_device_node
Bhaskar Chowdhury (1):
ncsi: internal.h: Fix a spello
Cameron Williams (2):
parport: parport_serial: Add Brainboxes BAR details
parport: parport_serial: Add Brainboxes device IDs and geometry
Carlos Llamas (7):
binder: use EPOLLERR from eventpoll.h
binder: fix trivial typo of binder_free_buf_locked()
binder: fix comment on binder_alloc_new_buf() return value
binder: fix async space check for 0-sized buffers
binder: fix unused alloc->free_async_space
binder: fix use-after-free in shinker's callback
binder: fix race between mmput() and do_exit()
Chao Yu (3):
f2fs: fix to avoid dirent corruption
f2fs: fix to check compress file in f2fs_move_file_range()
f2fs: fix to update iostat correctly in f2fs_filemap_fault()
Charles Keepax (2):
pinctrl: lochnagar: Don't build on MIPS
ASoC: wm8974: Correct boost mixer inputs
Chen Ni (1):
crypto: sa2ul - Return crypto_aead_setkey to transfer the error
Chengming Zhou (1):
crypto: scomp - fix req->dst buffer overflow
Chih-Kang Chang (1):
wifi: rtw88: fix RX filter in FIF_ALLMULTI flag
Chris Morgan (1):
drm/panel-elida-kd35t133: hold panel in reset for unprepare
Christian A. Ehrhardt (1):
of: Fix double free in of_parse_phandle_with_args_map
Christian Brauner (1):
fs: indicate request originates from old mount API
Christoph Niedermaier (2):
serial: imx: Ensure that imx_uart_rs485_config() is called with enabled clock
serial: imx: Correct clock error message in function probe()
Christophe JAILLET (6):
firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create()
media: dvb-frontends: m88ds3103: Fix a memory leak in an error handling path of m88ds3103_probe()
MIPS: Alchemy: Fix an out-of-bound access in db1200_dev_setup()
MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup()
kdb: Fix a potential buffer overflow in kdb_local()
mlxsw: spectrum: Use 'bitmap_zalloc()' when applicable
Christophe Leroy (1):
powerpc: Remove in_kernel_text()
Chukun Pan (1):
net: ethernet: mtk_eth_soc: remove duplicate if statements
Claudiu Beznea (1):
net: phy: micrel: populate .soft_reset for KSZ9131
Colin Ian King (2):
x86/lib: Fix overflow when counting digits
rtlwifi: rtl8192de: make arrays static const, makes object smaller
Curtis Klein (1):
watchdog: set cdev owner before adding
Dan Carpenter (1):
media: dvbdev: drop refcount on error path in dvb_device_open()
Dang Huynh (1):
leds: aw2013: Select missing dependency REGMAP_I2C
Dario Binacchi (1):
drm/bridge: Fix typo in post_disable() description
Dave Airlie (1):
nouveau/tu102: flush all pdbs on vmm flush
David Howells (1):
keys, dns: Fix size check of V1 server-list header
David Lin (2):
ASoC: nau8822: Fix incorrect type in assignment and cast to restricted __be16
wifi: mwifiex: configure BSSID consistently when starting AP
David Rau (1):
ASoC: da7219: Support low DC impedance headset
Dinghao Liu (1):
crypto: ccp - fix memleak in ccp_init_dm_workarea
Dmitry Baryshkov (4):
ARM: dts: qcom: apq8064: correct XOADC register address drm/msm/mdp4: flush vblank event on disable drm/drv: propagate errors from drm_modeset_register_all()
clk: fixed-rate: add devm_clk_hw_register_fixed_rate
Dmitry Rokosov (1):
firmware: meson_sm: populate platform devices from sm device tree data
Edward Adam Davis (1):
mptcp: fix uninit-value in mptcp_incoming_options
Eric Biggers (1):
f2fs: explicitly null-terminate the xattr list
Eric Dumazet (1):
ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim()
Esther Shimanovich (1):
Input: i8042 - add nomux quirk for Acer P459-G2-M
Fedor Pchelkin (2):
apparmor: avoid crash when parsed profile name is empty
ipvs: avoid stat macros calls from preemptible context
Florian Lehner (1):
bpf, lpm: Fix check prefixlen before walking trie
Florian Westphal (1):
netfilter: nf_tables: mark newset as dead on transaction abort
Francesco Dolcini (1):
Bluetooth: btmtkuart: fix recv_buf() return value
Gavrilov Ilia (1):
calipso: fix memory leak in netlbl_calipso_add_pass()
Geert Uytterhoeven (1):
of: unittest: Fix of_count_phandle_with_args() expected value message
Gonglei (Arei) (1):
crypto: virtio - Handle dataq logic with tasklet
Greg Kroah-Hartman (2):
Revert "ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek" Linux 5.10.209
Guanghui Feng (1):
uio: Fix use-after-free in uio_open
Gui-Dong Han (2):
usb: mon: Fix atomicity violation in mon_bin_vma_fault
Bluetooth: Fix atomicity violation in {min,max}_key_size_set
Hangbin Liu (1):
selftests/net: fix grep checking for fib_nexthop_multiprefix
Hans de Goede (3):
Input: atkbd - skip ATKBD_CMD_GETID in translated mode
ACPI: resource: Add another DMI match for the TongFang GMxXGxx
Input: atkbd - use ab83 as id when skipping the getid command
Heikki Krogerus (1):
Revert "usb: typec: class: fix typec_altmode_put_partner to put plugs"
Heiko Carstens (1):
tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug
Herbert Xu (1):
crypto: af_alg - Disallow multiple in-flight AIO requests
Ian Rogers (1):
perf env: Avoid recursively taking env->bpf_progs.lock
Ido Schimmel (4):
mlxsw: spectrum_acl_tcam: Add missing mutex_destroy()
mlxsw: spectrum_acl_tcam: Make fini symmetric to init
mlxsw: spectrum_acl_tcam: Reorder functions to avoid forward declarations
mlxsw: spectrum_acl_tcam: Fix stack corruption
Ilias Apalodimas (1):
efivarfs: force RO when remounting if SetVariable is not supported
Ilpo Järvinen (2):
wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code
wifi: rtlwifi: Convert LNKCTL change to PCIe cap RMW accessors
Inki Dae (1):
drm/exynos: fix a wrong error checking
James Clark (1):
coresight: etm4x: Fix width of CCITMIN field
Jan Beulich (1):
xen-netback: don't produce zero-size SKB frags
Jan Palus (1):
power: supply: cw2015: correct time_to_empty units in sysfs
Jani Nikula (1):
drm/crtc: fix uninitialized variable use
Jason Gerecke (1):
HID: wacom: Correct behavior when processing some confidence == false touches
Jay Buddhabhatti (2):
drivers: clk: zynqmp: calculate closest mux rate
drivers: clk: zynqmp: update divider round rate logic
Jens Axboe (1):
io_uring/rw: ensure io->bytes_done is always initialized
Jensen Huang (1):
i2c: rk3x: fix potential spinlock recursion on poll
Jerry Hoemann (1):
watchdog/hpwdt: Only claim UNKNOWN NMI if from iLO
Jiri Slaby (SUSE) (4):
tty: change tty_write_lock()'s ndelay parameter to bool
tty: early return from send_break() on TTY_DRIVER_HARDWARE_BREAK
tty: don't check for signal_pending() in send_break()
tty: use 'if' in send_break() instead of 'goto'
Joakim Zhang (1):
dma-mapping: clear dev->dma_mem to NULL after freeing it
Johannes Berg (1):
debugfs: fix automount d_fsdata usage
Jordan Rome (1):
bpf: Add crosstask check to __bpf_get_stack
Judy Hsiao (1):
neighbour: Don't let neigh_forced_gc() disable preemption for long
Kamil Duljas (2):
ASoC: Intel: Skylake: Fix mem leak in few functions
ASoC: Intel: Skylake: mem leak in skl register function
Keith Busch (2):
nvme-core: check for too small lba shift
nvme: introduce helper function to get ctrl state
Kirill A. Shutemov (1):
x86/kvm: Do not try to disable kvmclock if it was not enabled
Konrad Dybcio (1):
drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks
Krzysztof Kozlowski (3):
reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning
arm64: dts: qcom: qrb5165-rb5: correct LED panic indicator
arm64: dts: qcom: sdm845-db845c: correct LED panic indicator
Kunwu Chan (6):
powerpc/powernv: Add a null pointer check to scom_debug_init_one() powerpc/powernv: Add a null pointer check in opal_event_init() powerpc/powernv: Add a null pointer check in opal_powercap_init() powerpc/imc-pmu: Add a null pointer check in update_events_in_group()
mfd: syscon: Fix null pointer dereference in of_syscon_register()
net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe
Laurent Dufour (1):
powerpc/pseries/memhotplug: Quieten some DLPAR operations
Laurent Pinchart (1):
media: rkisp1: Disable runtime PM in probe error path
LeoLiuoc (1):
PCI: Add ACS quirk for more Zhaoxin Root Ports
Leon Romanovsky (1):
RDMA/usnic: Silence uninitialized symbol smatch warnings
Lin Ma (1):
net: qualcomm: rmnet: fix global oob in rmnet_policy
Linus Walleij (2):
ASoC: cs35l33: Fix GPIO name and drop legacy include
ASoC: cs35l34: Fix GPIO name and drop legacy include
Lu Yao (1):
drm/amdgpu: Fix cat debugfs amdgpu_regs_didt causes kernel null pointer
Luca Weiss (2):
Input: xpad - add Razer Wolverine V2 support
wifi: ath11k: Defer on rproc_get failure
Ludvig Pärsson (1):
ethtool: netlink: Add missing ethnl_ops_begin/complete
Luiz Augusto von Dentz (1):
Bluetooth: Fix bogus check for re-auth no supported with non-ssp
Maciej Strozek (2):
ASoC: cs43130: Fix the position of const qualifier
ASoC: cs43130: Fix incorrect frame delay configuration
Marc Zyngier (1):
KVM: arm64: vgic-v4: Restore pending state on host userspace write
Marcelo Schmitt (1):
iio: adc: ad7091r: Pass iio_dev to event handler
Marek Szyprowski (2):
i2c: s3c24xx: fix read transfers in polling mode
i2c: s3c24xx: fix transferring more than one message in polling mode
Mark-PK Tsai (1):
dma-mapping: Add dma_release_coherent_memory to DMA API
Masahiro Yamada (1):
powerpc: add crtsavres.o to always-y instead of extra-y
Masami Hiramatsu (Google) (1):
kprobes: Fix to handle forcibly unoptimized kprobes on freeing_list
Matthew Wilcox (Oracle) (1):
ida: Fix crash in ida_free when the bitmap is empty
Maurizio Lombardi (3):
nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length
nvmet-tcp: fix a crash in nvmet_req_complete()
nvmet-tcp: Fix the H2C expected PDU len calculation
Michael Ellerman (1):
selftests/powerpc: Fix error handling in FPU/VMX preemption tests
Michael Walle (1):
of: property: define of_property_read_u{8,16,32,64}_array() unconditionallyMickaël Salaün (1):
selinux: Fix error priority for bind with AF_UNSPEC on PF_INET6 socket
Nam Cao (1):
fbdev: flush deferred work in fb_deferred_io_fsync()
Namhyung Kim (1):
perf genelf: Set ELF program header addresses properly
Nathan Lynch (1):
powerpc/pseries/memhp: Fix access beyond end of drmem array
Nikita Kiryushin (2):
ACPI: video: check for error while searching for backlight device parent
ACPI: LPIT: Avoid u32 multiplication overflow
Nikita Yushchenko (1):
net: ravb: Fix dma_addr_t truncation in error case
Nikita Zhandarovich (3):
drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg() drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check() drm/radeon: check return value of radeon_ring_lock()
Niklas Schnelle (1):
s390/pci: fix max size calculation in zpci_memcpy_toio()
Nuno Sa (3):
iio: adc: ad9467: fix reset gpio handling
iio: adc: ad9467: don't ignore error codes
iio: adc: ad9467: fix scale setting
Oliver Neukum (1):
usb: cdc-acm: return correct error code on unsupported break
Oliver Upton (1):
KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache
Osama Muhammad (1):
gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump
Ovidiu Panait (12):
crypto: sahara - remove FLAGS_NEW_KEY logic
crypto: sahara - fix cbc selftest failure
crypto: sahara - fix ahash selftest failure
crypto: sahara - fix processing requests with cryptlen < sg->length
crypto: sahara - fix error handling in sahara_hw_descriptor_create()
crypto: sahara - avoid skcipher fallback code duplication
crypto: sahara - handle zero-length aes requests
crypto: sahara - fix ahash reqsize
crypto: sahara - fix wait_for_completion_timeout() error handling
crypto: sahara - improve error handling in sahara_sha_process()
crypto: sahara - fix processing hash requests with req->nbytes < sg->length
crypto: sahara - do not resize req->src when doing hash operations
Pablo Neira Ayuso (3):
netfilter: nf_tables: do not allow mismatch field size and set key length
netfilter: nf_tables: skip dead set elements in netlink dump
netfilter: nf_tables: reject NFT_SET_CONCAT with not field length description
Paul E. McKenney (1):
rcu: Create an unrcu_pointer() to remove __rcu from a pointer
Paul Geurts (1):
serial: imx: fix tx statemachine deadlock
Peter Delevoryas (1):
net/ncsi: Fix netlink major/minor version numbers
Peter Robinson (2):
mmc: sdhci_am654: Fix TI SoC dependencies
mmc: sdhci_omap: Fix TI SoC dependencies
Petr Machata (1):
selftests: mlxsw: qos_pfc: Convert to iproute2 dcb
Philipp Zabel (2):
pwm: stm32: Use hweight32 in stm32_pwm_detect_channels
pwm: stm32: Fix enable count for clk in .probe()
RD Babiera (1):
usb: typec: class: fix typec_altmode_put_partner to put plugs
Randy Dunlap (1):
powerpc/44x: select I2C for CURRITUCK
Ren Zhijie (1):
dma-mapping: Fix build error unused-value
Ricardo B. Marliere (1):
media: pvrusb2: fix use after free on context disconnection
Rob Clark (1):
iommu/arm-smmu-qcom: Add missing GMU entry to match table
Rob Herring (2):
of: Add of_property_present() helper
cpufreq: Use of_property_present() for testing DT property presence
Ronald Monthero (1):
mtd: rawnand: Increment IFC_TIMEOUT_MSECS for nand controller response
Sakari Ailus (2):
acpi: property: Let args be NULL in __acpi_node_get_property_reference software node: Let args be NULL in software_node_get_reference_args
Sanjuán García, Jorge (1):
net: ethernet: ti: am65-cpsw: Fix max mtu to fit ethernet frames
Sarannya S (1):
net: qrtr: ns: Return 0 if server port is not present
Satya Priya Kakitapalli (4):
clk: qcom: gpucc-sm8150: Update the gpu_cc_pll1 config
dt-bindings: clock: Update the videocc resets for sm8150
clk: qcom: videocc-sm8150: Update the videocc resets
clk: qcom: videocc-sm8150: Add missing PLL config property
Serge Semin (2):
mips: dmi: Fix early remap on MIPS32
mips: Fix incorrect max_low_pfn adjustment
Sergey Gorenko (1):
IB/iser: Prevent invalidating wrong MR
Sergey Shtylyov (1):
pstore: ram_core: fix possible overflow in persistent_ram_init_ecc()
Shubhrajyoti Datta (2):
clk: zynqmp: make bestdiv unsigned
clk: zynqmp: Add a check for NULL pointer
Shuming Fan (1):
ASoC: rt5650: add mutex to avoid the jack detection failure
Siddharth Vadapalli (1):
PCI: keystone: Fix race condition when initializing PHYs
Sjoerd Simons (1):
arm64: dts: armada-3720-turris-mox: set irq type for RTC
Stefan Berger (1):
rootfs: Fix support for rootfstype= when root= is given
Stefan Wahren (2):
ARM: sun9i: smp: fix return code check of of_property_match_string
watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling
Steven Rostedt (Google) (3):
tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing
tracing: Add size check when printing trace_marker output
ring-buffer: Do not record in NMI if the arch does not support cmpxchg in NMI
Su Hui (10):
wifi: rtlwifi: rtl8821ae: phy: fix an undefined bitwise shift behavior
wifi: rtlwifi: add calculate_bit_shift()
wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
clk: si5341: fix an error code problem in si5341_output_clk_set_rate
Takashi Iwai (1):
ALSA: oxygen: Fix right channel of capture volume mixer
Thinh Nguyen (2):
Revert "usb: dwc3: Soft reset phy on probe for host"
Revert "usb: dwc3: don't reset device side if dwc3 was configured as host-only"
Thinh Tran (1):
net/tg3: fix race condition in tg3_reset_task()
Théo Lebrun (1):
clk: fixed-rate: fix clk_hw_register_fixed_rate_with_accuracy_parent_hw
Tomi Valkeinen (2):
arm64: dts: ti: k3-am65-main: Fix DSS irq trigger type drm/bridge: tc358767: Fix return value on error case
Tony Luck (1):
ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled the error
Trond Myklebust (1):
NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT
Uttkarsh Aggarwal (1):
usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart
Uwe Kleine-König (5):
drm/bridge: tpd12s015: Drop buggy __exit annotation for remove function
pwm: stm32: Use regmap_clear_bits and regmap_set_bits where applicable
pwm: jz4740: Don't use dev_err_probe() in .request()
serial: 8250: omap: Don't skip resource freeing if pm_runtime_resume_and_get() failed
iio: adc: ad9467: Benefit from devm_clk_get_enabled() to simplify
Vasiliy Kovalev (1):
ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro
Vignesh Raghavendra (1):
watchdog: rti_wdt: Drop runtime pm reference count when watchdog is unused
Vineet Gupta (1):
ARC: fix spare error
Vineeth Vijayan (1):
s390/scm: fix virtual vs physical address confusion
Wei Yongjun (1):
virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session()
Weihao Li (1):
clk: rockchip: rk3128: Fix HCLK_OTG gate register
Wolfram Sang (1):
spi: sh-msiof: Enforce fixed DTDL for R-Car H3
Xiang Yang (1):
drm/exynos: fix a potential error pointer dereference
Xu Yang (2):
usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host()
usb: chipidea: wait controller resume finished for wakeup irq
Yang Yingliang (1):
drm/radeon: check the alloc_workqueue return value in radeon_crtc_init()
Ye Bin (1):
jbd2: fix soft lockup in journal_finish_inode_data_buffers()
Yihang Li (1):
scsi: hisi_sas: Replace with standard error code return value
Zhang Yi (1):
jbd2: correct the printing of write_flags in jbd2_write_superblock()
ZhaoLong Wang (1):
mtd: Fix gluebi NULL pointer dereference caused by ftl notifier
Zheng Yejian (1):
netlabel: remove unused parameter in netlbl_netlink_auditinfo()
Zhipeng Lu (6):
drm/radeon/dpm: fix a memleak in sumo_parse_power_table drm/radeon/trinity_dpm: fix a memleak in trinity_parse_power_table
media: cx231xx: fix a memleak in cx231xx_init_isoc drm/amd/pm: fix a double-free in si_dpm_init drivers/amd/pm: fix a use-after-free in kv_parse_power_table gpu/drm/radeon: fix two memleaks in radeon_vm_init
Ziqi Zhao (1):
drm/crtc: Fix uninit-value bug in drm_mode_setcrtc
lei he (1):
virtio-crypto: fix memory-leak
wangyangxin (1):
crypto: virtio - Wait for tasklet to complete on device remove
zhenwei pi (6):
virtio_crypto: Introduce VIRTIO_CRYPTO_NOSPC
virtio-crypto: introduce akcipher service
virtio-crypto: implement RSA algorithm
virtio-crypto: change code style
virtio-crypto: use private buffer for control request
virtio-crypto: wait ctrl queue instead of busy polling
Çağhan Demir (1):
ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq2xxx
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 208 +SUBLEVEL = 209 EXTRAVERSION = NAME = Dare mighty things
arch/arc/kernel/signal.c +3 -3
@@ -61,7 +61,7 @@ struct rt_sigframe {unsigned int sigret_magic; }; -static int save_arcv2_regs (struct sigcontext *mctx,struct pt_regs *regs) +static int save_arcv2_regs (struct sigcontext __user *mctx,struct pt_regs *regs) {int err =0 ;#ifndef CONFIG_ISA_ARCOMPACT
@@ -74,12 +74,12 @@ static int save_arcv2_regs(struct sigcontext *mctx, struct pt_regs *regs)#else v2abi.r58 = v2abi.r59 =0 ;#endif - err =__copy_to_user (&mctx->v2abi, &v2abi,sizeof (v2abi)); + err =__copy_to_user (&mctx->v2abi, (void const *)&v2abi,sizeof (v2abi));#endif return err; } -static int restore_arcv2_regs (struct sigcontext *mctx,struct pt_regs *regs) +static int restore_arcv2_regs (struct sigcontext __user *mctx,struct pt_regs *regs) {int err =0 ;#ifndef CONFIG_ISA_ARCOMPACT
arch/arm/boot/dts/qcom-apq8064.dtsi +1 -1
@@ -760,7 +760,7 @@ pwrkey@1c { xoadc: xoadc@197 { compatible = "qcom,pm8921-adc"; - reg = <197>; + reg = <0x197>; interrupts-extended = <&pmicintc 78 IRQ_TYPE_EDGE_RISING>; #address-cells = <2>; #size-cells = <0>;
arch/arm/mach-davinci/Kconfig +1 -0
@@ -3,6 +3,7 @@ menuconfig ARCH_DAVINCI bool "TI DaVinci" depends on ARCH_MULTI_V5 + select CPU_ARM926T select DAVINCI_TIMER select ZONE_DMA select PM_GENERIC_DOMAINS if PM
arch/arm/mach-sunxi/mc_smp.c +2 -2
@@ -804,12 +804,12 @@ static int __init sunxi_mc_smp_init(void)for (i =0 ; i <ARRAY_SIZE (sunxi_mc_smp_data); i++) { ret =of_property_match_string (node,"enable-method" , sunxi_mc_smp_data[i].enable_method); -if (!ret) +if (ret >=0 )break ; }of_node_put (node); -if (ret) +if (ret <0 )return -ENODEV ; is_a83t = sunxi_mc_smp_data[i].is_a83t;
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +1 -1
@@ -129,7 +129,7 @@ rtc@6f { compatible = "microchip,mcp7940x"; reg = <0x6f>; interrupt-parent = <&gpiosb>; - interrupts = <5 0>; /* GPIO2_5 */ + interrupts = <5 IRQ_TYPE_EDGE_FALLING>; /* GPIO2_5 */ }; };
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts +1 -1
@@ -38,8 +38,8 @@ leds { user4 { label = "green:user4"; gpios = <&pm8150_gpios 10 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "panic-indicator"; default-state = "off"; + panic-indicator; }; wlan {
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +1 -1
@@ -55,8 +55,8 @@ leds { user4 { label = "green:user4"; gpios = <&pm8998_gpio 13 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "panic-indicator"; default-state = "off"; + panic-indicator; }; wlan {
arch/arm64/boot/dts/ti/k3-am65-main.dtsi +1 -1
@@ -865,7 +865,7 @@ dss: dss@4a00000 { assigned-clocks = <&k3_clks 67 2>; assigned-clock-parents = <&k3_clks 67 5>; - interrupts = <GIC_SPI 166 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>; status = "disabled";
arch/arm64/kvm/vgic/vgic-its.c +5 -0
@@ -584,7 +584,11 @@ static struct vgic_irq *vgic_its_check_cache(struct kvm *kvm, phys_addr_t db,unsigned long flags;raw_spin_lock_irqsave (&dist->lpi_list_lock, flags); + irq =__vgic_its_check_cache (dist, db, devid, eventid); +if (irq) +vgic_get_irq_kref (irq); +raw_spin_unlock_irqrestore (&dist->lpi_list_lock, flags);return irq;
@@ -763,6 +767,7 @@ int vgic_its_inject_cached_translation(struct kvm *kvm, struct kvm_msi *msi)raw_spin_lock_irqsave (&irq->irq_lock, flags); irq->pending_latch = true;vgic_queue_irq_unlock (kvm, irq, flags); +vgic_put_irq (kvm, irq);return 0 ; }
arch/arm64/kvm/vgic/vgic-mmio-v3.c +17 -10
@@ -356,19 +356,26 @@ static int vgic_v3_uaccess_write_pending(struct kvm_vcpu *vcpu,struct vgic_irq *irq =vgic_get_irq (vcpu->kvm, vcpu, intid + i);raw_spin_lock_irqsave (&irq->irq_lock, flags); -if (test_bit (i, &val)) { -/* -* pending_latch is set irrespective of irq type -* (level or edge) to avoid dependency that VM should -* restore irq config before pending info. -*/ - irq->pending_latch = true; -vgic_queue_irq_unlock (vcpu->kvm, irq, flags); - }else { + +/* +* pending_latch is set irrespective of irq type +* (level or edge) to avoid dependency that VM should +* restore irq config before pending info. +*/ + irq->pending_latch =test_bit (i, &val); + +if (irq->hw &&vgic_irq_is_sgi (irq->intid)) { +irq_set_irqchip_state (irq->host_irq, +IRQCHIP_STATE_PENDING , + irq->pending_latch); irq->pending_latch = false; -raw_spin_unlock_irqrestore (&irq->irq_lock, flags); } +if (irq->pending_latch) +vgic_queue_irq_unlock (vcpu->kvm, irq, flags); +else +raw_spin_unlock_irqrestore (&irq->irq_lock, flags); +vgic_put_irq (vcpu->kvm, irq); }
arch/mips/alchemy/devboards/db1200.c +1 -1
@@ -847,7 +847,7 @@ int __init db1200_dev_setup(void)i2c_register_board_info (0 , db1200_i2c_devs,ARRAY_SIZE (db1200_i2c_devs));spi_register_board_info (db1200_spi_devs, -ARRAY_SIZE (db1200_i2c_devs)); +ARRAY_SIZE (db1200_spi_devs));/* SWITCHES: S6.8 I2C/SPI selector (OFF=I2C ON=SPI) * S6.7 AC97/I2S selector (OFF=AC97 ON=I2S)
arch/mips/alchemy/devboards/db1550.c +1 -1
@@ -588,7 +588,7 @@ int __init db1550_dev_setup(void)i2c_register_board_info (0 , db1550_i2c_devs,ARRAY_SIZE (db1550_i2c_devs));spi_register_board_info (db1550_spi_devs, -ARRAY_SIZE (db1550_i2c_devs)); +ARRAY_SIZE (db1550_spi_devs)); c =clk_get (NULL ,"psc0_intclk" );if (!IS_ERR (c)) {
arch/mips/include/asm/dmi.h +1 -1
@@ -5,7 +5,7 @@#include <linux/io.h> #include <linux/memblock.h> -#define dmi_early_remap (x, l) ioremap_cache(x, l) +#define dmi_early_remap (x, l) ioremap(x, l)#define dmi_early_unmap (x, l) iounmap(x)#define dmi_remap (x, l) ioremap_cache(x, l)#define dmi_unmap (x) iounmap(x)
arch/mips/kernel/setup.c +2 -2
@@ -322,11 +322,11 @@ static void __init bootmem_init(void)panic ("Incorrect memory mapping !!!" );if (max_pfn >PFN_DOWN (HIGHMEM_START )) { + max_low_pfn =PFN_DOWN (HIGHMEM_START );#ifdef CONFIG_HIGHMEM - highstart_pfn =PFN_DOWN (HIGHMEM_START ); + highstart_pfn = max_low_pfn; highend_pfn = max_pfn;#else - max_low_pfn =PFN_DOWN (HIGHMEM_START ); max_pfn = max_low_pfn;#endif }
arch/powerpc/include/asm/sections.h +0 -8
@@ -38,14 +38,6 @@ extern char start_virt_trampolines[];extern char end_virt_trampolines[];#endif -static inline int in_kernel_text (unsigned long addr) -{ -if (addr >= (unsigned long )_stext && addr < (unsigned long )__init_end) -return 1 ; - -return 0 ; -} -static inline unsigned long kernel_toc_addr (void ) {/* Defined by the linker, see vmlinux.lds.S */
arch/powerpc/lib/Makefile +1 -1
@@ -38,7 +38,7 @@ obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o # so it is only needed for modules, and only for older linkers which # do not support --save-restore-funcs ifeq ($(call ld-ifversion, -lt, 225000000, y),y) -extra-$(CONFIG_PPC64) += crtsavres.o +always-$(CONFIG_PPC64) += crtsavres.o endif obj-$(CONFIG_PPC_BOOK3S_64) += copyuser_power7.o copypage_power7.o \
arch/powerpc/perf/imc-pmu.c +6 -0
@@ -292,6 +292,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu) attr_group->attrs = attrs; do { ev_val_str = kasprintf(GFP_KERNEL, "event=0x%x", pmu->events[i].value); + if (!ev_val_str) + continue; dev_str = device_str_attr_create(pmu->events[i].name, ev_val_str); if (!dev_str) continue;
@@ -299,6 +301,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu) attrs[j++] = dev_str;if (pmu->events[i].scale) { ev_scale_str =kasprintf (GFP_KERNEL ,"%s.scale" , pmu->events[i].name); +if (!ev_scale_str) +continue ; dev_str =device_str_attr_create (ev_scale_str, pmu->events[i].scale);if (!dev_str)continue ;
@@ -308,6 +312,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu)if (pmu->events[i].unit) { ev_unit_str =kasprintf (GFP_KERNEL ,"%s.unit" , pmu->events[i].name); +if (!ev_unit_str) +continue ; dev_str =device_str_attr_create (ev_unit_str, pmu->events[i].unit);if (!dev_str)continue ;
arch/powerpc/platforms/44x/Kconfig +1 -0
@@ -177,6 +177,7 @@ config ISS4xx config CURRITUCK bool "IBM Currituck (476fpe) Support" depends on PPC_47x + select I2C select SWIOTLB select 476FPE select FORCE_PCI
arch/powerpc/platforms/powernv/opal-irqchip.c +2 -0
@@ -278,6 +278,8 @@ int __init opal_event_init(void)else name =kasprintf (GFP_KERNEL ,"opal" ); +if (!name) +continue ;/* Install interrupt handler */ rc =request_irq (r->start, opal_interrupt, r->flags &IRQD_TRIGGER_MASK , name,NULL );
arch/powerpc/platforms/powernv/opal-powercap.c +6 -0
@@ -196,6 +196,12 @@ void __init opal_powercap_init(void) j =0 ; pcaps[i].pg.name =kasprintf (GFP_KERNEL ,"%pOFn" , node); +if (!pcaps[i].pg.name) { +kfree (pcaps[i].pattrs); +kfree (pcaps[i].pg.attrs); + goto out_pcaps_pattrs; + } +if (has_min) {powercap_add_attr (min,"powercap-min" , &pcaps[i].pattrs[j]);
arch/powerpc/platforms/powernv/opal-xscom.c +5 -0
@@ -165,6 +165,11 @@ static int scom_debug_init_one(struct dentry *root, struct device_node *dn, ent->chip = chip;snprintf (ent->name,16 ,"%08x" , chip); ent->path.data = (void *)kasprintf (GFP_KERNEL ,"%pOF" , dn); +if (!ent->path.data) { +kfree (ent); +return -ENOMEM ; + } + ent->path.size =strlen ((char *)ent->path.data); dir =debugfs_create_dir (ent->name, root);
arch/powerpc/platforms/pseries/hotplug-memory.c +11 -10
@@ -481,7 +481,7 @@ static int dlpar_memory_remove_by_index(u32 drc_index)int lmb_found;int rc; -pr_info ("Attempting to hot-remove LMB, drc index %x\n" , drc_index); +pr_debug ("Attempting to hot-remove LMB, drc index %x\n" , drc_index); lmb_found =0 ;for_each_drmem_lmb (lmb) {
@@ -495,14 +495,15 @@ static int dlpar_memory_remove_by_index(u32 drc_index) } } -if (!lmb_found) +if (!lmb_found) { +pr_debug ("Failed to look up LMB for drc index %x\n" , drc_index); rc = -EINVAL ; - -if (rc) -pr_info ("Failed to hot-remove memory at %llx\n" , - lmb->base_addr); -else -pr_info ("Memory at %llx was hot-removed\n" , lmb->base_addr); + }else if (rc) { +pr_debug ("Failed to hot-remove memory at %llx\n" , + lmb->base_addr); + }else { +pr_debug ("Memory at %llx was hot-removed\n" , lmb->base_addr); + }return rc; }
@@ -719,8 +720,8 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)if (!drmem_lmb_reserved (lmb))continue ; -pr_info ("Memory at %llx (drc index %x) was hot-added\n" , - lmb->base_addr, lmb->drc_index); +pr_debug ("Memory at %llx (drc index %x) was hot-added\n" , + lmb->base_addr, lmb->drc_index);drmem_remove_lmb_reservation (lmb); } rc =0 ;
arch/s390/include/asm/pci_io.h +18 -14
@@ -11,6 +11,8 @@/* I/O size constraints */ #define ZPCI_MAX_READ_SIZE 8#define ZPCI_MAX_WRITE_SIZE 128 +#define ZPCI_BOUNDARY_SIZE (1 << 12) +#define ZPCI_BOUNDARY_MASK (ZPCI_BOUNDARY_SIZE - 1)/* I/O Map */ #define ZPCI_IOMAP_SHIFT 48
@@ -125,16 +127,18 @@ static inline int zpci_read_single(void *dst, const volatile void __iomem *src,int zpci_write_block (volatile void __iomem *dst,const void *src,unsigned long len); -static inline u8 zpci_get_max_write_size (u64 src,u64 dst,int len,int max) +static inline int zpci_get_max_io_size (u64 src,u64 dst,int len,int max) { -int count = len > max ? max : len, size =1 ; +int offset = dst &ZPCI_BOUNDARY_MASK ; +int size; -while (!(src &0x1 ) && !(dst &0x1 ) && ((size <<1 ) <= count)) { - dst = dst >>1 ; - src = src >>1 ; - size = size <<1 ; - } -return size; + size =min3 (len,ZPCI_BOUNDARY_SIZE - offset, max); +if (IS_ALIGNED (src,8 ) &&IS_ALIGNED (dst,8 ) &&IS_ALIGNED (size,8 )) +return size; + +if (size >=8 ) +return 8 ; +return rounddown_pow_of_two (size); } static inline int zpci_memcpy_fromio(void *dst,
@@ -144,9 +148,9 @@ static inline int zpci_memcpy_fromio(void *dst,int size, rc =0 ;while (n >0 ) { - size =zpci_get_max_write_size ((u64 __force ) src, - (u64 ) dst, n, -ZPCI_MAX_READ_SIZE ); + size =zpci_get_max_io_size ((u64 __force ) src, + (u64 ) dst, n, +ZPCI_MAX_READ_SIZE ); rc =zpci_read_single (dst, src, size);if (rc)break ;
@@ -166,9 +170,9 @@ static inline int zpci_memcpy_toio(volatile void __iomem *dst,return -EINVAL ;while (n >0 ) { - size =zpci_get_max_write_size ((u64 __force ) dst, - (u64 ) src, n, -ZPCI_MAX_WRITE_SIZE ); + size =zpci_get_max_io_size ((u64 __force ) dst, + (u64 ) src, n, +ZPCI_MAX_WRITE_SIZE );if (size >8 )/* main path */ rc =zpci_write_block (dst, src, size);else
arch/s390/pci/pci_mmio.c +6 -6
@@ -100,9 +100,9 @@ static inline int __memcpy_toio_inuser(void __iomem *dst, old_fs =enable_sacf_uaccess ();while (n >0 ) { - size =zpci_get_max_write_size ((u64 __force ) dst, - (u64 __force ) src, n, -ZPCI_MAX_WRITE_SIZE ); + size =zpci_get_max_io_size ((u64 __force ) dst, + (u64 __force ) src, n, +ZPCI_MAX_WRITE_SIZE );if (size >8 )/* main path */ rc =__pcistb_mio_inuser (dst, src, size, &status);else
@@ -252,9 +252,9 @@ static inline int __memcpy_fromio_inuser(void __user *dst, old_fs =enable_sacf_uaccess ();while (n >0 ) { - size =zpci_get_max_write_size ((u64 __force ) src, - (u64 __force ) dst, n, -ZPCI_MAX_READ_SIZE ); + size =zpci_get_max_io_size ((u64 __force ) src, + (u64 __force ) dst, n, +ZPCI_MAX_READ_SIZE ); rc =__pcilg_mio_inuser (dst, src, size, &status);if (rc)break ;
arch/x86/kernel/kvmclock.c +8 -4
@@ -24,8 +24,8 @@static int kvmclock__initdata =1 ;static int kvmclock_vsyscall__initdata =1 ; -static int msr_kvm_system_time__ro_after_init =MSR_KVM_SYSTEM_TIME ; -static int msr_kvm_wall_clock__ro_after_init =MSR_KVM_WALL_CLOCK ; +static int msr_kvm_system_time__ro_after_init ; +static int msr_kvm_wall_clock__ro_after_init ;static u64 kvm_sched_clock_offset__ro_after_init ;static int __init parse_no_kvmclock (char *arg)
@@ -196,7 +196,8 @@ static void kvm_setup_secondary_clock(void)void kvmclock_disable (void ) { -native_write_msr (msr_kvm_system_time,0 ,0 ); +if (msr_kvm_system_time) +native_write_msr (msr_kvm_system_time,0 ,0 ); }static void __init kvmclock_init_mem (void )
@@ -292,7 +293,10 @@ void __init kvmclock_init(void)if (kvm_para_has_feature (KVM_FEATURE_CLOCKSOURCE2 )) { msr_kvm_system_time =MSR_KVM_SYSTEM_TIME_NEW ; msr_kvm_wall_clock =MSR_KVM_WALL_CLOCK_NEW ; - }else if (!kvm_para_has_feature (KVM_FEATURE_CLOCKSOURCE )) { + }else if (kvm_para_has_feature (KVM_FEATURE_CLOCKSOURCE )) { + msr_kvm_system_time =MSR_KVM_SYSTEM_TIME ; + msr_kvm_wall_clock =MSR_KVM_WALL_CLOCK ; + }else {return ; }
arch/x86/lib/misc.c +1 -1
@@ -6,7 +6,7 @@*/ int num_digits (int val) { -int m =10 ; +long long m =10 ;int d =1 ;if (val <0 ) {
crypto/af_alg.c +13 -1
@@ -1039,9 +1039,13 @@ EXPORT_SYMBOL_GPL(af_alg_sendpage);void af_alg_free_resources (struct af_alg_async_req *areq) {struct sock *sk = areq->sk; +struct af_alg_ctx *ctx;af_alg_free_areq_sgls (areq);sock_kfree_s (sk, areq, areq->areqlen); + + ctx =alg_sk (sk)->private; + ctx->inflight = false; }EXPORT_SYMBOL_GPL (af_alg_free_resources);
@@ -1105,11 +1109,19 @@ EXPORT_SYMBOL_GPL(af_alg_poll);struct af_alg_async_req *af_alg_alloc_areq (struct sock *sk,unsigned int areqlen) { -struct af_alg_async_req *areq =sock_kmalloc (sk, areqlen,GFP_KERNEL ); +struct af_alg_ctx *ctx =alg_sk (sk)->private; +struct af_alg_async_req *areq; + +/* Only one AIO request can be in flight. */ +if (ctx->inflight) +return ERR_PTR (-EBUSY ); + areq =sock_kmalloc (sk, areqlen,GFP_KERNEL );if (unlikely (!areq))return ERR_PTR (-ENOMEM ); + ctx->inflight = true; + areq->areqlen = areqlen; areq->sk = sk; areq->last_rsgl =NULL ;
crypto/scompress.c +6 -0
@@ -124,6 +124,7 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)struct crypto_scomp *scomp = *tfm_ctx;void **ctx =acomp_request_ctx (req);struct scomp_scratch *scratch; +unsigned int dlen;int ret;if (!req->src || !req->slen || req->slen >SCOMP_SCRATCH_SIZE )
@@ -135,6 +136,8 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)if (!req->dlen || req->dlen >SCOMP_SCRATCH_SIZE ) req->dlen =SCOMP_SCRATCH_SIZE ; + dlen = req->dlen; + scratch =raw_cpu_ptr (&scomp_scratch);spin_lock (&scratch->lock);
@@ -152,6 +155,9 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) ret = -ENOMEM ; goto out; } + }else if (req->dlen > dlen) { + ret = -ENOSPC ; + goto out; }scatterwalk_map_and_copy (scratch->dst, req->dst,0 , req->dlen,1 );
drivers/acpi/acpi_extlog.c +6 -1
@@ -145,9 +145,14 @@ static int extlog_print(struct notifier_block *nb, unsigned long val,static u32 err_seq; estatus =extlog_elog_entry_check (cpu, bank); -if (estatus ==NULL || (mce->kflags &MCE_HANDLED_CEC )) +if (!estatus)return NOTIFY_DONE ; +if (mce->kflags &MCE_HANDLED_CEC ) { + estatus->block_status =0 ; +return NOTIFY_DONE ; + } +memcpy (elog_buf, (void *)estatus,ELOG_ENTRY_LEN );/* clear record status to enable BIOS to update it again */ estatus->block_status =0 ;
drivers/acpi/acpi_lpit.c +1 -1
@@ -98,7 +98,7 @@ static void lpit_update_residency(struct lpit_residency_info *info, struct acpi_lpit_native *lpit_native) { info->frequency = lpit_native->counter_frequency ? - lpit_native->counter_frequency : tsc_khz *1000 ; + lpit_native->counter_frequency :mul_u32_u32 (tsc_khz,1000U );if (!info->frequency) info->frequency =1 ;
drivers/acpi/acpi_video.c +6 -6
@@ -1788,12 +1788,12 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)return ; count++; -acpi_get_parent (device->dev->handle, &acpi_parent); - - pdev =acpi_get_pci_dev (acpi_parent); -if (pdev) { - parent = &pdev->dev; -pci_dev_put (pdev); +if (ACPI_SUCCESS (acpi_get_parent (device->dev->handle, &acpi_parent))) { + pdev =acpi_get_pci_dev (acpi_parent); +if (pdev) { + parent = &pdev->dev; +pci_dev_put (pdev); + } }memset (&props,0 ,sizeof (struct backlight_properties ));
drivers/acpi/property.c +4 -0
@@ -639,6 +639,7 @@ acpi_fwnode_get_named_child_node(const struct fwnode_handle *fwnode,* @index: Index of the reference to return * @num_args: Maximum number of arguments after each reference * @args: Location to store the returned reference with optional arguments +* (may be NULL) * * Find property with @name, verifify that it is a package containing at least * one object reference and if so, store the ACPI device object pointer to the
@@ -697,6 +698,9 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,if (ret)return ret == -ENODEV ? -EINVAL : ret; +if (!args) +return 0 ; + args->fwnode =acpi_fwnode_handle (device); args->nargs =0 ;return 0 ;
drivers/acpi/resource.c +7 -0
@@ -455,6 +455,13 @@ static const struct dmi_system_id asus_laptop[] = { DMI_MATCH(DMI_BOARD_NAME, "B1402CVA"), }, }, + { +/* TongFang GMxXGxx sold as Eluktronics Inc. RP-15 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Eluktronics Inc." ), + DMI_MATCH(DMI_BOARD_NAME, "RP-15"), + }, + }, {/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ .matches = {
drivers/android/binder.c +1 -1
@@ -5173,7 +5173,7 @@ static __poll_t binder_poll(struct file *filp, thread =binder_get_thread (proc);if (!thread) -return POLLERR ; +return EPOLLERR ;binder_inner_proc_lock (thread->proc); thread->looper |=BINDER_LOOPER_STATE_POLL ;
drivers/android/binder_alloc.c +17 -15
@@ -271,7 +271,7 @@ static int binder_update_page_range(struct binder_alloc *alloc, int allocate, }if (mm) {mmap_write_unlock (mm); -mmput (mm); +mmput_async (mm); }return 0 ;
@@ -304,7 +304,7 @@ static int binder_update_page_range(struct binder_alloc *alloc, int allocate, err_no_vma:if (mm) {mmap_write_unlock (mm); -mmput (mm); +mmput_async (mm); }return vma ? -ENOMEM : -ESRCH ; }
@@ -359,8 +359,7 @@ static void debug_low_async_space_locked(struct binder_alloc *alloc, int pid)continue ;if (!buffer->async_transaction)continue ; - total_alloc_size +=binder_alloc_buffer_size (alloc, buffer) - +sizeof (struct binder_buffer ); + total_alloc_size +=binder_alloc_buffer_size (alloc, buffer); num_buffers++; }
@@ -415,17 +414,17 @@ static struct binder_buffer *binder_alloc_new_buf_locked( alloc->pid, extra_buffers_size);return ERR_PTR (-EINVAL ); } -if (is_async && - alloc->free_async_space < size +sizeof (struct binder_buffer )) { + +/* Pad 0-size buffers so they get assigned unique addresses */ + size =max (size,sizeof (void *)); + +if (is_async && alloc->free_async_space < size) {binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC ,"%d: binder_alloc_buf size %zd failed, no async space left\n" , alloc->pid, size);return ERR_PTR (-ENOSPC ); } -/* Pad 0-size buffers so they get assigned unique addresses */ - size =max (size,sizeof (void *)); -while (n) { buffer = rb_entry(n, struct binder_buffer, rb_node);BUG_ON (!buffer->free);
@@ -526,7 +525,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked( buffer->extra_buffers_size = extra_buffers_size; buffer->pid = pid;if (is_async) { - alloc->free_async_space -= size +sizeof (struct binder_buffer ); + alloc->free_async_space -= size;binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC_ASYNC ,"%d: binder_alloc_buf size %zd async free %zd\n" , alloc->pid, size, alloc->free_async_space);
@@ -562,7 +561,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked(* is the sum of the three given sizes (each rounded up to * pointer-sized boundary) * -* Return: The allocated buffer or %NULL if error +* Return: The allocated buffer or %ERR_PTR(-errno) if error */ struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc, size_t data_size,
@@ -662,8 +661,7 @@ static void binder_free_buf_locked(struct binder_alloc *alloc,BUG_ON (buffer->user_data > alloc->buffer + alloc->buffer_size);if (buffer->async_transaction) { - alloc->free_async_space += buffer_size +sizeof (struct binder_buffer ); - + alloc->free_async_space += buffer_size;binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC_ASYNC ,"%d: binder_free_buf size %zd async free %zd\n" , alloc->pid, size, alloc->free_async_space);
@@ -711,7 +709,7 @@ void binder_alloc_free_buf(struct binder_alloc *alloc,/* * We could eliminate the call to binder_alloc_clear_buf() * from binder_alloc_deferred_release() by moving this to -* binder_alloc_free_buf_locked(). However, that could +* binder_free_buf_locked(). However, that could * increase contention for the alloc mutex if clear_on_free * is used frequently for large buffers. The mutex is not * needed for correctness here.
@@ -1002,7 +1000,9 @@ enum lru_status binder_alloc_free_page(struct list_head *item, goto err_mmget;if (!mmap_read_trylock (mm)) goto err_mmap_read_lock_failed; - vma =binder_alloc_get_vma (alloc); + vma =find_vma (mm, page_addr); +if (vma && vma !=binder_alloc_get_vma (alloc)) + goto err_invalid_vma;list_lru_isolate (lru, item);spin_unlock (lock);
@@ -1028,6 +1028,8 @@ enum lru_status binder_alloc_free_page(struct list_head *item,mutex_unlock (&alloc->mutex);return LRU_REMOVED_RETRY ; +err_invalid_vma: +mmap_read_unlock (mm); err_mmap_read_lock_failed:mmput_async (mm); err_mmget:
drivers/base/swnode.c +3 -0
@@ -531,6 +531,9 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,if (nargs >NR_FWNODE_REFERENCE_ARGS )return -EINVAL ; +if (!args) +return 0 ; + args->fwnode =software_node_get (refnode); args->nargs = nargs;
drivers/bluetooth/btmtkuart.c +3 -8
@@ -471,7 +471,7 @@ mtk_stp_split(struct btmtkuart_dev *bdev, const unsigned char *data, int count,return data; } -static int btmtkuart_recv (struct hci_dev *hdev,const u8 *data,size_t count) +static void btmtkuart_recv (struct hci_dev *hdev,const u8 *data,size_t count) {struct btmtkuart_dev *bdev =hci_get_drvdata (hdev);const unsigned char *p_left = data, *p_h4;
@@ -510,25 +510,20 @@ static int btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)bt_dev_err (bdev->hdev,"Frame reassembly failed (%d)" , err); bdev->rx_skb =NULL ; -return err; +return ; } sz_left -= sz_h4; p_left += sz_h4; } - -return 0 ; }static int btmtkuart_receive_buf (struct serdev_device *serdev,const u8 *data,size_t count) {struct btmtkuart_dev *bdev =serdev_device_get_drvdata (serdev); -int err; - err =btmtkuart_recv (bdev->hdev, data, count); -if (err <0 ) -return err; +btmtkuart_recv (bdev->hdev, data, count); bdev->hdev->stat.byte_rx += count;
drivers/clk/clk-fixed-rate.c +24 -4
@@ -49,12 +49,24 @@ const struct clk_ops clk_fixed_rate_ops = { };EXPORT_SYMBOL_GPL (clk_fixed_rate_ops); +static void devm_clk_hw_register_fixed_rate_release (struct device *dev,void *res) +{ +struct clk_fixed_rate *fix = res; + +/* +* We can not use clk_hw_unregister_fixed_rate, since it will kfree() +* the hw, resulting in double free. Just unregister the hw and let +* devres code kfree() it. +*/ +clk_hw_unregister (&fix->hw); +} +struct clk_hw *__clk_hw_register_fixed_rate (struct device *dev,struct device_node *np,const char *name,const char *parent_name,const struct clk_hw *parent_hw,const struct clk_parent_data *parent_data,unsigned long flags,unsigned long fixed_rate,unsigned long fixed_accuracy, -unsigned long clk_fixed_flags) +unsigned long clk_fixed_flags,bool devm) {struct clk_fixed_rate *fixed;struct clk_hw *hw;
@@ -62,7 +74,11 @@ struct clk_hw *__clk_hw_register_fixed_rate(struct device *dev,int ret = -EINVAL ;/* allocate fixed-rate clock */ - fixed =kzalloc (sizeof (*fixed),GFP_KERNEL ); +if (devm) + fixed =devres_alloc (devm_clk_hw_register_fixed_rate_release, +sizeof (*fixed),GFP_KERNEL ); +else + fixed =kzalloc (sizeof (*fixed),GFP_KERNEL );if (!fixed)return ERR_PTR (-ENOMEM );
@@ -90,9 +106,13 @@ struct clk_hw *__clk_hw_register_fixed_rate(struct device *dev,else if (np) ret =of_clk_hw_register (np, hw);if (ret) { -kfree (fixed); +if (devm) +devres_free (fixed); +else +kfree (fixed); hw =ERR_PTR (ret); - } + }else if (devm) +devres_add (dev, fixed);return hw; }
drivers/clk/clk-si5341.c +1 -3
@@ -888,10 +888,8 @@ static int si5341_output_clk_set_rate(struct clk_hw *hw, unsigned long rate, r[0 ] = r_div ? (r_div &0xff ) :1 ; r[1 ] = (r_div >>8 ) &0xff ; r[2 ] = (r_div >>16 ) &0xff ; - err =regmap_bulk_write (output->data->regmap, +return regmap_bulk_write (output->data->regmap,SI5341_OUT_R_REG (output), r,3 ); - -return 0 ; }static int si5341_output_reparent (struct clk_si5341_output *output,u8 index)
drivers/clk/qcom/gpucc-sm8150.c +2 -2
@@ -38,8 +38,8 @@ static struct alpha_pll_config gpu_cc_pll1_config = { .config_ctl_hi_val = 0x00002267, .config_ctl_hi1_val = 0x00000024, .test_ctl_val = 0x00000000, - .test_ctl_hi_val = 0x00000002, - .test_ctl_hi1_val = 0x00000000, + .test_ctl_hi_val = 0x00000000, + .test_ctl_hi1_val = 0x00000020, .user_ctl_val = 0x00000000, .user_ctl_hi_val = 0x00000805, .user_ctl_hi1_val = 0x000000d0,
drivers/clk/qcom/videocc-sm8150.c +5 -0
@@ -37,6 +37,7 @@ static struct alpha_pll_config video_pll0_config = { .config_ctl_val = 0x20485699, .config_ctl_hi_val = 0x00002267, .config_ctl_hi1_val = 0x00000024, + .test_ctl_hi1_val = 0x00000020, .user_ctl_val = 0x00000000, .user_ctl_hi_val = 0x00000805, .user_ctl_hi1_val = 0x000000D0,
@@ -218,6 +219,10 @@ static const struct regmap_config video_cc_sm8150_regmap_config = {static const struct qcom_reset_map video_cc_sm8150_resets[] = { [VIDEO_CC_MVSC_CORE_CLK_BCR ] = {0x850 ,2 }, + [VIDEO_CC_INTERFACE_BCR ] = {0x8f0 }, + [VIDEO_CC_MVS0_BCR ] = {0x870 }, + [VIDEO_CC_MVS1_BCR ] = {0x8b0 }, + [VIDEO_CC_MVSC_BCR ] = {0x810 }, };static const struct qcom_cc_desc video_cc_sm8150_desc = {
drivers/clk/rockchip/clk-rk3128.c +1 -1
@@ -489,7 +489,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {GATE (HCLK_I2S_2CH ,"hclk_i2s_2ch" ,"hclk_peri" ,0 ,RK2928_CLKGATE_CON (7 ),2 ,GFLAGS ),GATE (0 ,"hclk_usb_peri" ,"hclk_peri" ,CLK_IGNORE_UNUSED ,RK2928_CLKGATE_CON (9 ),13 ,GFLAGS ),GATE (HCLK_HOST2 ,"hclk_host2" ,"hclk_peri" ,0 ,RK2928_CLKGATE_CON (7 ),3 ,GFLAGS ), -GATE (HCLK_OTG ,"hclk_otg" ,"hclk_peri" ,0 ,RK2928_CLKGATE_CON (3 ),13 ,GFLAGS ), +GATE (HCLK_OTG ,"hclk_otg" ,"hclk_peri" ,0 ,RK2928_CLKGATE_CON (5 ),13 ,GFLAGS ),GATE (0 ,"hclk_peri_ahb" ,"hclk_peri" ,CLK_IGNORE_UNUSED ,RK2928_CLKGATE_CON (9 ),14 ,GFLAGS ),GATE (HCLK_SPDIF ,"hclk_spdif" ,"hclk_peri" ,0 ,RK2928_CLKGATE_CON (10 ),9 ,GFLAGS ), GATE(HCLK_TSP, "hclk_tsp", "hclk_peri", 0, RK2928_CLKGATE_CON(10), 12, GFLAGS),
drivers/clk/zynqmp/clk-mux-zynqmp.c +1 -1
@@ -83,7 +83,7 @@ static int zynqmp_clk_mux_set_parent(struct clk_hw *hw, u8 index)static const struct clk_ops zynqmp_clk_mux_ops = { .get_parent = zynqmp_clk_mux_get_parent, .set_parent = zynqmp_clk_mux_set_parent, - .determine_rate = __clk_mux_determine_rate, + .determine_rate = __clk_mux_determine_rate_closest, };static const struct clk_ops zynqmp_clk_mux_ro_ops = {
drivers/clk/zynqmp/divider.c +5 -58
83 lines not on this page · raw message
drivers/cpufreq/cpufreq-dt-platdev.c +1 -1
@@ -163,7 +163,7 @@ static bool __init cpu0_node_has_opp_v2_prop(void)struct device_node *np =of_cpu_device_node_get (0 );bool ret = false; -if (of_get_property (np,"operating-points-v2" ,NULL )) +if (of_property_present (np,"operating-points-v2" )) ret = true;of_node_put (np);
drivers/cpufreq/imx-cpufreq-dt.c +1 -1
@@ -89,7 +89,7 @@ static int imx_cpufreq_dt_probe(struct platform_device *pdev) cpu_dev =get_cpu_device (0 ); -if (!of_find_property (cpu_dev->of_node,"cpu-supply" ,NULL )) +if (!of_property_present (cpu_dev->of_node,"cpu-supply" ))return -ENODEV ;if (of_machine_is_compatible ("fsl,imx7ulp" )) {
drivers/cpufreq/imx6q-cpufreq.c +2 -2
@@ -230,7 +230,7 @@ static int imx6q_opp_check_speed_grading(struct device *dev)u32 val;int ret; -if (of_find_property (dev->of_node,"nvmem-cells" ,NULL )) { +if (of_property_present (dev->of_node,"nvmem-cells" )) { ret =nvmem_cell_read_u32 (dev,"speed_grade" , &val);if (ret)return ret;
@@ -285,7 +285,7 @@ static int imx6ul_opp_check_speed_grading(struct device *dev)u32 val;int ret =0 ; -if (of_find_property (dev->of_node,"nvmem-cells" ,NULL )) { +if (of_property_present (dev->of_node,"nvmem-cells" )) { ret =nvmem_cell_read_u32 (dev,"speed_grade" , &val);if (ret)return ret;
drivers/cpufreq/scmi-cpufreq.c +5 -2
@@ -238,8 +238,11 @@ static int scmi_cpufreq_probe(struct scmi_device *sdev)#ifdef CONFIG_COMMON_CLK /* dummy clock provider as needed by OPP if clocks property is used */ -if (of_find_property (dev->of_node,"#clock-cells" ,NULL )) -devm_of_clk_add_hw_provider (dev, of_clk_hw_simple_get,NULL ); +if (of_property_present (dev->of_node,"#clock-cells" )) { + ret =devm_of_clk_add_hw_provider (dev, of_clk_hw_simple_get,NULL ); +if (ret) +return dev_err_probe (dev, ret,"%s: registering clock provider failed\n" , __func__); + }#endif ret =cpufreq_register_driver (&scmi_cpufreq_driver);
drivers/cpufreq/tegra20-cpufreq.c +1 -1
@@ -25,7 +25,7 @@ static bool cpu0_node_has_opp_v2_prop(void)struct device_node *np =of_cpu_device_node_get (0 );bool ret = false; -if (of_get_property (np,"operating-points-v2" ,NULL )) +if (of_property_present (np,"operating-points-v2" )) ret = true;of_node_put (np);
drivers/crypto/ccp/ccp-ops.c +4 -1
@@ -179,8 +179,11 @@ static int ccp_init_dm_workarea(struct ccp_dm_workarea *wa, wa->dma.address =dma_map_single (wa->dev, wa->address, len, dir); -if (dma_mapping_error (wa->dev, wa->dma.address)) +if (dma_mapping_error (wa->dev, wa->dma.address)) { +kfree (wa->address); + wa->address =NULL ;return -ENOMEM ; + } wa->dma.length = len; }
drivers/crypto/sa2ul.c +1 -2
@@ -1848,9 +1848,8 @@ static int sa_aead_setkey(struct crypto_aead *authenc,crypto_aead_set_flags (ctx->fallback.aead,crypto_aead_get_flags (authenc) &CRYPTO_TFM_REQ_MASK ); -crypto_aead_setkey (ctx->fallback.aead, key, keylen); -return 0 ; +return crypto_aead_setkey (ctx->fallback.aead, key, keylen); }static int sa_aead_setauthsize (struct crypto_aead *tfm,unsigned int authsize)
drivers/crypto/sahara.c +108 -140
451 lines not on this page · raw message
drivers/crypto/virtio/Kconfig +3 -0
@@ -3,8 +3,11 @@ config CRYPTO_DEV_VIRTIO tristate "VirtIO crypto driver" depends on VIRTIO select CRYPTO_AEAD + select CRYPTO_AKCIPHER2 select CRYPTO_SKCIPHER select CRYPTO_ENGINE + select CRYPTO_RSA + select MPILIB help This driver provides support for virtio crypto device. If you choose 'M' here, this module will be called virtio_crypto.
drivers/crypto/virtio/Makefile +1 -0
@@ -2,5 +2,6 @@ obj-$(CONFIG_CRYPTO_DEV_VIRTIO) += virtio_crypto.o virtio_crypto-objs := \ virtio_crypto_algs.o \ + virtio_crypto_akcipher_algs.o \ virtio_crypto_mgr.o \ virtio_crypto_core.o
drivers/crypto/virtio/virtio_crypto_akcipher_algs.c new file +591 -0
591 lines not on this page · raw message
drivers/crypto/virtio/virtio_crypto_algs.c +65 -78
207 lines not on this page · raw message
drivers/crypto/virtio/virtio_crypto_common.h +21 -5
@@ -10,9 +10,11 @@#include <linux/virtio.h> #include <linux/crypto.h> #include <linux/spinlock.h> +#include <linux/interrupt.h> #include <crypto/aead.h> #include <crypto/aes.h> #include <crypto/engine.h> +#include <uapi/linux/virtio_crypto.h> /* Internal representation of a data virtqueue */
@@ -27,6 +29,7 @@ struct data_queue {char name[32 ];struct crypto_engine *engine; +struct tasklet_struct done_task; };struct virtio_crypto {
@@ -56,6 +59,7 @@ struct virtio_crypto {u32 mac_algo_l;u32 mac_algo_h;u32 aead_algo; +u32 akcipher_algo;/* Maximum length of cipher key */ u32 max_cipher_key_len;
@@ -64,11 +68,6 @@ struct virtio_crypto {/* Maximum size of per request */ u64 max_size; -/* Control VQ buffers: protected by the ctrl_lock */ -struct virtio_crypto_op_ctrl_req ctrl; -struct virtio_crypto_session_input input; -struct virtio_crypto_inhdr ctrl_status; -unsigned long status;atomic_t ref_count;struct list_head list;
@@ -84,6 +83,18 @@ struct virtio_crypto_sym_session_info {__u64 session_id; }; +/* +* Note: there are padding fields in request, clear them to zero before +* sending to host to avoid to divulge any information. +* Ex, virtio_crypto_ctrl_request::ctrl::u::destroy_session::padding[48] +*/ +struct virtio_crypto_ctrl_request { +struct virtio_crypto_op_ctrl_req ctrl; +struct virtio_crypto_session_input input; +struct virtio_crypto_inhdr ctrl_status; +struct completion compl; +}; +struct virtio_crypto_request ;typedef void (*virtio_crypto_data_callback ) (struct virtio_crypto_request *vc_req,int len);
@@ -131,5 +142,10 @@ static inline int virtio_crypto_get_current_node(void)int virtio_crypto_algs_register (struct virtio_crypto *vcrypto);void virtio_crypto_algs_unregister (struct virtio_crypto *vcrypto); +int virtio_crypto_akcipher_algs_register (struct virtio_crypto *vcrypto); +void virtio_crypto_akcipher_algs_unregister (struct virtio_crypto *vcrypto); +int virtio_crypto_ctrl_vq_request (struct virtio_crypto *vcrypto,struct scatterlist *sgs[], +unsigned int out_sgs,unsigned int in_sgs, +struct virtio_crypto_ctrl_request *vc_ctrl_req);#endif /* _VIRTIO_CRYPTO_COMMON_H */
drivers/crypto/virtio/virtio_crypto_core.c +71 -11
141 lines not on this page · raw message
drivers/crypto/virtio/virtio_crypto_mgr.c +11 -0
@@ -242,6 +242,12 @@ int virtcrypto_dev_start(struct virtio_crypto *vcrypto)return -EFAULT ; } +if (virtio_crypto_akcipher_algs_register (vcrypto)) { +pr_err ("virtio_crypto: Failed to register crypto akcipher algs\n" ); +virtio_crypto_algs_unregister (vcrypto); +return -EFAULT ; + } +return 0 ; }
@@ -258,6 +264,7 @@ int virtcrypto_dev_start(struct virtio_crypto *vcrypto)void virtcrypto_dev_stop (struct virtio_crypto *vcrypto) {virtio_crypto_algs_unregister (vcrypto); +virtio_crypto_akcipher_algs_unregister (vcrypto); }/*
@@ -312,6 +319,10 @@ bool virtcrypto_algo_is_supported(struct virtio_crypto *vcrypto,case VIRTIO_CRYPTO_SERVICE_AEAD : algo_mask = vcrypto->aead_algo;break ; + +case VIRTIO_CRYPTO_SERVICE_AKCIPHER : + algo_mask = vcrypto->akcipher_algo; +break ; }if (!(algo_mask & (1u << algo)))
drivers/edac/thunderx_edac.c +5 -5
@@ -1133,7 +1133,7 @@ static irqreturn_t thunderx_ocx_com_threaded_isr(int irq, void *irq_id)decode_register (other,OCX_OTHER_SIZE , ocx_com_errors, ctx->reg_com_int); -strncat (msg, other,OCX_MESSAGE_SIZE ); +strlcat (msg, other,OCX_MESSAGE_SIZE );for (lane =0 ; lane <OCX_RX_LANES ; lane++)if (ctx->reg_com_int &BIT (lane)) {
@@ -1142,12 +1142,12 @@ static irqreturn_t thunderx_ocx_com_threaded_isr(int irq, void *irq_id) lane, ctx->reg_lane_int[lane], lane, ctx->reg_lane_stat11[lane]); -strncat (msg, other,OCX_MESSAGE_SIZE ); +strlcat (msg, other,OCX_MESSAGE_SIZE );decode_register (other,OCX_OTHER_SIZE , ocx_lane_errors, ctx->reg_lane_int[lane]); -strncat (msg, other,OCX_MESSAGE_SIZE ); +strlcat (msg, other,OCX_MESSAGE_SIZE ); }if (ctx->reg_com_int &OCX_COM_INT_CE )
@@ -1217,7 +1217,7 @@ static irqreturn_t thunderx_ocx_lnk_threaded_isr(int irq, void *irq_id)decode_register (other,OCX_OTHER_SIZE , ocx_com_link_errors, ctx->reg_com_link_int); -strncat (msg, other,OCX_MESSAGE_SIZE ); +strlcat (msg, other,OCX_MESSAGE_SIZE );if (ctx->reg_com_link_int &OCX_COM_LINK_INT_UE )edac_device_handle_ue (ocx->edac_dev,0 ,0 , msg);
@@ -1896,7 +1896,7 @@ static irqreturn_t thunderx_l2c_threaded_isr(int irq, void *irq_id)decode_register (other,L2C_OTHER_SIZE , l2_errors, ctx->reg_int); -strncat (msg, other,L2C_MESSAGE_SIZE ); +strlcat (msg, other,L2C_MESSAGE_SIZE );if (ctx->reg_int & mask_ue)edac_device_handle_ue (l2c->edac_dev,0 ,0 , msg);
drivers/firmware/meson/meson_sm.c +4 -1
@@ -313,11 +313,14 @@ static int __init meson_sm_probe(struct platform_device *pdev)platform_set_drvdata (pdev, fw); -pr_info ("secure-monitor enabled\n" ); +if (devm_of_platform_populate (dev)) + goto out_in_base;if (sysfs_create_group (&pdev->dev.kobj, &meson_sm_sysfs_attr_group)) goto out_in_base; +pr_info ("secure-monitor enabled\n" ); +return 0 ; out_in_base:
drivers/firmware/ti_sci.c +5 -5
@@ -161,7 +161,7 @@ static int ti_sci_debugfs_create(struct platform_device *pdev, {struct device *dev = &pdev->dev;struct resource *res; -char debug_name[50 ] ="ti_sci_debug@" ; +char debug_name[50 ];/* Debug region is optional */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
@@ -178,10 +178,10 @@ static int ti_sci_debugfs_create(struct platform_device *pdev,/* Setup NULL termination */ info->debug_buffer[info->debug_region_size] =0 ; - info->d =debugfs_create_file (strncat (debug_name,dev_name (dev), -sizeof (debug_name) - -sizeof ("ti_sci_debug@" )), -0444 ,NULL , info, &ti_sci_debug_fops); +snprintf (debug_name,sizeof (debug_name),"ti_sci_debug@%s" , +dev_name (dev)); + info->d =debugfs_create_file (debug_name,0444 ,NULL , info, + &ti_sci_debug_fops);if (IS_ERR (info->d))return PTR_ERR (info->d);
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +8 -2
@@ -459,6 +459,9 @@ static ssize_t amdgpu_debugfs_regs_didt_read(struct file *f, char __user *buf,if (size &0x3 || *pos &0x3 )return -EINVAL ; +if (!adev->didt_rreg) +return -EOPNOTSUPP ; + r =pm_runtime_get_sync (adev_to_drm (adev)->dev);if (r <0 ) {pm_runtime_put_autosuspend (adev_to_drm (adev)->dev);
@@ -518,6 +521,9 @@ static ssize_t amdgpu_debugfs_regs_didt_write(struct file *f, const char __userif (size &0x3 || *pos &0x3 )return -EINVAL ; +if (!adev->didt_wreg) +return -EOPNOTSUPP ; + r =pm_runtime_get_sync (adev_to_drm (adev)->dev);if (r <0 ) {pm_runtime_put_autosuspend (adev_to_drm (adev)->dev);
@@ -576,7 +582,7 @@ static ssize_t amdgpu_debugfs_regs_smc_read(struct file *f, char __user *buf,int r;if (!adev->smc_rreg) -return -EPERM ; +return -EOPNOTSUPP ;if (size &0x3 || *pos &0x3 )return -EINVAL ;
@@ -638,7 +644,7 @@ static ssize_t amdgpu_debugfs_regs_smc_write(struct file *f, const char __user *int r;if (!adev->smc_wreg) -return -EPERM ; +return -EOPNOTSUPP ;if (size &0x3 || *pos &0x3 )return -EINVAL ;
drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c +1 -3
@@ -2733,10 +2733,8 @@ static int kv_parse_power_table(struct amdgpu_device *adev) non_clock_info = (struct _ATOM_PPLIB_NONCLOCK_INFO *) &non_clock_info_array->nonClockInfo[non_clock_array_index]; ps =kzalloc (sizeof (struct kv_ps ),GFP_KERNEL ); -if (ps ==NULL ) { -kfree (adev->pm.dpm.ps); +if (ps ==NULL )return -ENOMEM ; - } adev->pm.dpm.ps[i].ps_priv = ps; k =0 ; idx = (u8 *)&power_state->v2.clockInfoIndex[0 ];
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c +2 -3
@@ -7349,10 +7349,9 @@ static int si_dpm_init(struct amdgpu_device *adev)kcalloc (4 ,sizeof (struct amdgpu_clock_voltage_dependency_entry ),GFP_KERNEL ); -if (!adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.entries) { -amdgpu_free_extended_power_table (adev); +if (!adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.entries)return -ENOMEM ; - } + adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.count =4 ; adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.entries[0 ].clk =0 ; adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.entries[0 ].v =0 ;
drivers/gpu/drm/bridge/tc358767.c +1 -1
@@ -1637,7 +1637,7 @@ static int tc_probe(struct i2c_client *client, const struct i2c_device_id *id) }else {if (tc->hpd_pin <0 || tc->hpd_pin >1 ) {dev_err (dev,"failed to parse HPD number\n" ); -return ret; +return -EINVAL ; } }
drivers/gpu/drm/bridge/ti-tpd12s015.c +2 -2
@@ -179,7 +179,7 @@ static int tpd12s015_probe(struct platform_device *pdev)return 0 ; } -static int __exit tpd12s015_remove(struct platform_device *pdev) +static int tpd12s015_remove (struct platform_device *pdev) {struct tpd12s015_device *tpd =platform_get_drvdata (pdev);
@@ -197,7 +197,7 @@ MODULE_DEVICE_TABLE(of, tpd12s015_of_match);static struct platform_driver tpd12s015_driver = { .probe = tpd12s015_probe, - .remove =__exit_p (tpd12s015_remove), + .remove = tpd12s015_remove, .driver = { .name ="tpd12s015" , .of_match_table = tpd12s015_of_match,
drivers/gpu/drm/drm_crtc.c +4 -4
@@ -562,8 +562,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,struct drm_mode_set set;uint32_t __user *set_connectors_ptr;struct drm_modeset_acquire_ctx ctx; -int ret; -int i; +int ret, i, num_connectors =0 ;if (!drm_core_check_feature (dev,DRIVER_MODESET ))return -EOPNOTSUPP ;
@@ -721,6 +720,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, connector->name); connector_set[i] = connector; + num_connectors++; } }
@@ -729,7 +729,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, set.y = crtc_req->y; set.mode = mode; set.connectors = connector_set; - set.num_connectors = crtc_req->count_connectors; + set.num_connectors = num_connectors; set.fb = fb;if (drm_drv_uses_atomic_modeset (dev))
@@ -742,7 +742,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,drm_framebuffer_put (fb);if (connector_set) { -for (i =0 ; i < crtc_req->count_connectors; i++) { +for (i =0 ; i < num_connectors; i++) {if (connector_set[i])drm_connector_put (connector_set[i]); }
drivers/gpu/drm/drm_drv.c +8 -2
@@ -892,8 +892,11 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags) goto err_minors; } -if (drm_core_check_feature (dev,DRIVER_MODESET )) -drm_modeset_register_all (dev); +if (drm_core_check_feature (dev,DRIVER_MODESET )) { + ret =drm_modeset_register_all (dev); +if (ret) + goto err_unload; + } ret =0 ;
@@ -905,6 +908,9 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags) goto out_unlock; +err_unload: +if (dev->driver->unload) + dev->driver->unload (dev); err_minors:remove_compat_control_link (dev);drm_minor_unregister (dev,DRM_MINOR_PRIMARY );
drivers/gpu/drm/exynos/exynos_drm_dma.c +3 -5
@@ -108,18 +108,16 @@ int exynos_drm_register_dma(struct drm_device *drm, struct device *dev,return 0 ;if (!priv->mapping) { -void *mapping; +void *mapping =NULL ;if (IS_ENABLED (CONFIG_ARM_DMA_USE_IOMMU )) mapping =arm_iommu_create_mapping (&platform_bus_type,EXYNOS_DEV_ADDR_START ,EXYNOS_DEV_ADDR_SIZE );else if (IS_ENABLED (CONFIG_IOMMU_DMA )) mapping =iommu_get_domain_for_dev (priv->dma_dev); -else - mapping =ERR_PTR (-ENODEV ); -if (IS_ERR (mapping)) -return PTR_ERR (mapping); +if (!mapping) +return -ENODEV ; priv->mapping = mapping; }
drivers/gpu/drm/exynos/exynos_hdmi.c +2 -0
@@ -1849,6 +1849,8 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data)return ret; crtc =exynos_drm_crtc_get_by_type (drm_dev,EXYNOS_DISPLAY_TYPE_HDMI ); +if (IS_ERR (crtc)) +return PTR_ERR (crtc); crtc->pipe_clk = &hdata->phy_clk; ret =hdmi_create_connector (encoder);
drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c +9 -0
@@ -268,6 +268,7 @@ static void mdp4_crtc_atomic_disable(struct drm_crtc *crtc, {struct mdp4_crtc *mdp4_crtc =to_mdp4_crtc (crtc);struct mdp4_kms *mdp4_kms =get_kms (crtc); +unsigned long flags;DBG ("%s" , mdp4_crtc->name);
@@ -280,6 +281,14 @@ static void mdp4_crtc_atomic_disable(struct drm_crtc *crtc,mdp_irq_unregister (&mdp4_kms->base, &mdp4_crtc->err);mdp4_disable (mdp4_kms); +if (crtc->state->event && !crtc->state->active) { +WARN_ON (mdp4_crtc->event); +spin_lock_irqsave (&mdp4_kms->dev->event_lock, flags); +drm_crtc_send_vblank_event (crtc, crtc->state->event); + crtc->state->event =NULL ; +spin_unlock_irqrestore (&mdp4_kms->dev->event_lock, flags); + } + mdp4_crtc->enabled = false; }
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c +3 -1
@@ -558,7 +558,9 @@ static int dsi_phy_enable_resource(struct msm_dsi_phy *phy)struct device *dev = &phy->pdev->dev;int ret; -pm_runtime_get_sync (dev); + ret =pm_runtime_resume_and_get (dev); +if (ret) +return ret; ret =clk_prepare_enable (phy->ahb_clk);if (ret) {
drivers/gpu/drm/nouveau/nv04_fence.c +1 -1
@@ -39,7 +39,7 @@ struct nv04_fence_priv {static int nv04_fence_emit (struct nouveau_fence *fence) { -struct nvif_push *push = fence->channel->chan.push; +struct nvif_push *push =unrcu_pointer (fence->channel)->chan.push;int ret =PUSH_WAIT (push,2 );if (ret ==0 ) {PUSH_NVSQ (push,NV_SW ,0x0150 , fence->base.seqno);
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.c +1 -1
@@ -32,7 +32,7 @@ tu102_vmm_flush(struct nvkm_vmm *vmm, int depth) type |=0x00000001 ;/* PAGE_ALL */ if (atomic_read (&vmm->engref[NVKM_SUBDEV_BAR ])) - type |=0x00000004 ;/* HUB_ONLY */ + type |=0x00000006 ;/* HUB_ONLY | ALL PDB (hack) */ mutex_lock (&subdev->mutex);
drivers/gpu/drm/panel/panel-elida-kd35t133.c +2 -0
@@ -111,6 +111,8 @@ static int kd35t133_unprepare(struct drm_panel *panel)return ret; } +gpiod_set_value_cansleep (ctx->reset_gpio,1 ); +regulator_disable (ctx->iovcc);regulator_disable (ctx->vdd);
drivers/gpu/drm/radeon/r100.c +2 -2
@@ -2313,7 +2313,7 @@ int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)switch (prim_walk) {case 1 :for (i =0 ; i < track->num_arrays; i++) { - size = track->arrays[i].esize * track->max_indx *4 ; + size = track->arrays[i].esize * track->max_indx *4UL ;if (track->arrays[i].robj ==NULL ) {DRM_ERROR ("(PW %u) Vertex array %u no buffer " "bound\n" , prim_walk, i);
@@ -2332,7 +2332,7 @@ int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)break ;case 2 :for (i =0 ; i < track->num_arrays; i++) { - size = track->arrays[i].esize * (nverts -1 ) *4 ; + size = track->arrays[i].esize * (nverts -1 ) *4UL ;if (track->arrays[i].robj ==NULL ) {DRM_ERROR ("(PW %u) Vertex array %u no buffer " "bound\n" , prim_walk, i);
drivers/gpu/drm/radeon/r600_cs.c +2 -2
@@ -1276,7 +1276,7 @@ static int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx)return -EINVAL ; } tmp = (reg -CB_COLOR0_BASE ) /4 ; - track->cb_color_bo_offset[tmp] =radeon_get_ib_value (p, idx) <<8 ; + track->cb_color_bo_offset[tmp] = (u64 )radeon_get_ib_value (p, idx) <<8 ; ib[idx] += (u32)((reloc->gpu_offset >>8 ) &0xffffffff ); track->cb_color_base_last[tmp] = ib[idx]; track->cb_color_bo[tmp] = reloc->robj;
@@ -1303,7 +1303,7 @@ static int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx) "0x%04X\n", reg);return -EINVAL ; } - track->htile_offset =radeon_get_ib_value (p, idx) <<8 ; + track->htile_offset = (u64 )radeon_get_ib_value (p, idx) <<8 ; ib[idx] += (u32)((reloc->gpu_offset >>8 ) &0xffffffff ); track->htile_bo = reloc->robj; track->db_dirty = true;
drivers/gpu/drm/radeon/radeon_display.c +6 -1
@@ -689,11 +689,16 @@ static void radeon_crtc_init(struct drm_device *dev, int index)if (radeon_crtc ==NULL )return ; + radeon_crtc->flip_queue =alloc_workqueue ("radeon-crtc" ,WQ_HIGHPRI ,0 ); +if (!radeon_crtc->flip_queue) { +kfree (radeon_crtc); +return ; + } +drm_crtc_init (dev, &radeon_crtc->base, &radeon_crtc_funcs);drm_mode_crtc_set_gamma_size (&radeon_crtc->base,256 ); radeon_crtc->crtc_id = index; - radeon_crtc->flip_queue =alloc_workqueue ("radeon-crtc" ,WQ_HIGHPRI ,0 ); rdev->mode_info.crtcs[index] = radeon_crtc;if (rdev->family >=CHIP_BONAIRE ) {
drivers/gpu/drm/radeon/radeon_vm.c +6 -2
@@ -1206,13 +1206,17 @@ int radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm) r =radeon_bo_create (rdev, pd_size, align, true,RADEON_GEM_DOMAIN_VRAM ,0 ,NULL ,NULL , &vm->page_directory); -if (r) +if (r) { +kfree (vm->page_tables); + vm->page_tables =NULL ;return r; - + } r =radeon_vm_clear_bo (rdev, vm->page_directory);if (r) {radeon_bo_unref (&vm->page_directory); vm->page_directory =NULL ; +kfree (vm->page_tables); + vm->page_tables =NULL ;return r; }
drivers/gpu/drm/radeon/si.c +4 -0
@@ -3616,6 +3616,10 @@ static int si_cp_start(struct radeon_device *rdev)for (i =RADEON_RING_TYPE_GFX_INDEX ; i <=CAYMAN_RING_TYPE_CP2_INDEX ; ++i) { ring = &rdev->ring[i]; r =radeon_ring_lock (rdev, ring,2 ); +if (r) { +DRM_ERROR ("radeon: cp failed to lock ring (%d).\n" , r); +return r; + }/* clear the compute context state */ radeon_ring_write (ring,PACKET3_COMPUTE (PACKET3_CLEAR_STATE ,0 ));
drivers/gpu/drm/radeon/sumo_dpm.c +3 -1
@@ -1493,8 +1493,10 @@ static int sumo_parse_power_table(struct radeon_device *rdev) 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]; -if (!rdev->pm.power_state[i].clock_info) +if (!rdev->pm.power_state[i].clock_info) { +kfree (rdev->pm.dpm.ps);return -EINVAL ; + } ps =kzalloc (sizeof (struct sumo_ps ),GFP_KERNEL );if (ps ==NULL ) {kfree (rdev->pm.dpm.ps);
drivers/gpu/drm/radeon/trinity_dpm.c +3 -1
@@ -1770,8 +1770,10 @@ static int trinity_parse_power_table(struct radeon_device *rdev) 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]; -if (!rdev->pm.power_state[i].clock_info) +if (!rdev->pm.power_state[i].clock_info) { +kfree (rdev->pm.dpm.ps);return -EINVAL ; + } ps =kzalloc (sizeof (struct sumo_ps ),GFP_KERNEL );if (ps ==NULL ) {kfree (rdev->pm.dpm.ps);
drivers/hid/wacom_wac.c +4 -28
@@ -2612,8 +2612,8 @@ static void wacom_wac_finger_slot(struct wacom_wac *wacom_wac, {struct hid_data *hid_data = &wacom_wac->hid_data;bool mt = wacom_wac->features.touch_max >1 ; -bool prox = hid_data->tipswitch && -report_touch_events (wacom_wac); +bool touch_down = hid_data->tipswitch && hid_data->confidence; +bool prox = touch_down &&report_touch_events (wacom_wac);if (wacom_wac->shared->has_mute_touch_switch && !wacom_wac->shared->is_touch_on) {
@@ -2652,24 +2652,6 @@ static void wacom_wac_finger_slot(struct wacom_wac *wacom_wac, } } -static bool wacom_wac_slot_is_active (struct input_dev *dev,int key) -{ -struct input_mt *mt = dev->mt; -struct input_mt_slot *s; - -if (!mt) -return false; - -for (s = mt->slots; s != mt->slots + mt->num_slots; s++) { -if (s->key == key && -input_mt_get_value (s,ABS_MT_TRACKING_ID ) >=0 ) { -return true; - } - } - -return false; -} -static void wacom_wac_finger_event (struct hid_device *hdev,struct hid_field *field,struct hid_usage *usage,__s32 value) {
@@ -2717,14 +2699,8 @@ static void wacom_wac_finger_event(struct hid_device *hdev, }if (usage->usage_index +1 == field->report_count) { -if (equivalent_usage == wacom_wac->hid_data.last_slot_field) { -bool touch_removed =wacom_wac_slot_is_active (wacom_wac->touch_input, - wacom_wac->hid_data.id) && !wacom_wac->hid_data.tipswitch; - -if (wacom_wac->hid_data.confidence || touch_removed) { -wacom_wac_finger_slot (wacom_wac, wacom_wac->touch_input); - } - } +if (equivalent_usage == wacom_wac->hid_data.last_slot_field) +wacom_wac_finger_slot (wacom_wac, wacom_wac->touch_input); } }
drivers/hwtracing/coresight/coresight-etm4x.h +1 -1
@@ -440,7 +440,7 @@ struct etmv4_drvdata {u8 ctxid_size;u8 vmid_size;u8 ccsize; -u8 ccitmin; +u16 ccitmin;u8 s_ex_level;u8 ns_ex_level;u8 q_support;
drivers/i2c/busses/i2c-rk3x.c +11 -2
@@ -178,6 +178,7 @@ struct rk3x_i2c_soc_data {* @clk: function clk for rk3399 or function & Bus clks for others * @pclk: Bus clk for rk3399 * @clk_rate_nb: i2c clk rate change notify +* @irq: irq number * @t: I2C known timing information * @lock: spinlock for the i2c bus * @wait: the waitqueue to wait for i2c transfer
@@ -200,6 +201,7 @@ struct rk3x_i2c {struct clk *clk;struct clk *pclk;struct notifier_block clk_rate_nb; +int irq;/* Settings */ struct i2c_timings t;
@@ -1087,13 +1089,18 @@ static int rk3x_i2c_xfer_common(struct i2c_adapter *adap,spin_unlock_irqrestore (&i2c->lock, flags); -rk3x_i2c_start (i2c); -if (!polling) { +rk3x_i2c_start (i2c); + timeout =wait_event_timeout (i2c->wait, !i2c->busy,msecs_to_jiffies (WAIT_TIMEOUT )); }else { +disable_irq (i2c->irq); +rk3x_i2c_start (i2c); + timeout =rk3x_i2c_wait_xfer_poll (i2c); + +enable_irq (i2c->irq); }spin_lock_irqsave (&i2c->lock, flags);
@@ -1301,6 +1308,8 @@ static int rk3x_i2c_probe(struct platform_device *pdev)return ret; } + i2c->irq = irq; +platform_set_drvdata (pdev, i2c);if (i2c->soc_data->calc_timings == rk3x_i2c_v0_calc_timings) {
drivers/i2c/busses/i2c-s3c2410.c +21 -19
@@ -223,8 +223,17 @@ static bool is_ack(struct s3c24xx_i2c *i2c)int tries;for (tries =50 ; tries; --tries) { -if (readl (i2c->regs +S3C2410_IICCON ) - &S3C2410_IICCON_IRQPEND ) { +unsigned long tmp =readl (i2c->regs +S3C2410_IICCON ); + +if (!(tmp &S3C2410_IICCON_ACKEN )) { +/* +* Wait a bit for the bus to stabilize, +* delay estimated experimentally. +*/ +usleep_range (100 ,200 ); +return true; + } +if (tmp &S3C2410_IICCON_IRQPEND ) {if (!(readl (i2c->regs +S3C2410_IICSTAT ) &S3C2410_IICSTAT_LASTBIT ))return true;
@@ -277,16 +286,6 @@ static void s3c24xx_i2c_message_start(struct s3c24xx_i2c *i2c, stat |=S3C2410_IICSTAT_START ;writel (stat, i2c->regs +S3C2410_IICSTAT ); - -if (i2c->quirks &QUIRK_POLL ) { -while ((i2c->msg_num !=0 ) &&is_ack (i2c)) { -i2c_s3c_irq_nextbyte (i2c, stat); - stat =readl (i2c->regs +S3C2410_IICSTAT ); - -if (stat &S3C2410_IICSTAT_ARBITR ) -dev_err (i2c->dev,"deal with arbitration loss\n" ); - } - } }static inline void s3c24xx_i2c_stop (struct s3c24xx_i2c *i2c,int ret)
@@ -693,7 +692,7 @@ static void s3c24xx_i2c_wait_idle(struct s3c24xx_i2c *i2c)static int s3c24xx_i2c_doxfer (struct s3c24xx_i2c *i2c,struct i2c_msg *msgs,int num)
Lines of this file are not shown. View the raw message.
drivers/iio/adc/ad9467.c +79 -35
114 lines not on this page · raw message
drivers/iio/adc/adi-axi-adc.c +15 -59
74 lines not on this page · raw message
drivers/infiniband/hw/mthca/mthca_cmd.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/mthca/mthca_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iscsi_iser.h +0 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iser_initiator.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iser_memory.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iser_verbs.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/input/keyboard/atkbd.c +45 -5
50 lines not on this page · raw message
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/dvb-frontends/m88ds3103.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/media/usb/cx231xx/cx231xx-core.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/media/usb/pvrusb2/pvrusb2-context.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +67 -64
131 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c +3 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +4 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas/Kconfig +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/cfg80211.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/fw.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/ioctl.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/uap_cmd.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/pci.c +16 -63
79 lines not on this page · raw message
drivers/net/wireless/realtek/rtlwifi/pci.h +0 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/phy.c +4 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.c +2 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192c/phy_common.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/phy.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/phy.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c +23 -38
61 lines not on this page · raw message
drivers/net/wireless/realtek/rtlwifi/rtl8192ee/phy.c +4 -12
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.c +4 -11
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/wifi.h +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/mac80211.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/xen-netback/netback.c +38 -6
44 lines not on this page · raw message
drivers/of/unittest-data/tests-phandle.dtsi +9 -1
Lines of this file are not shown. View the raw message.
drivers/of/unittest.c +43 -31
74 lines not on this page · raw message
drivers/parport/parport_serial.c +64 -0
64 lines not on this page · raw message
drivers/pci/controller/dwc/pci-keystone.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/pwm/pwm-stm32.c +29 -34
63 lines not on this page · raw message
drivers/staging/media/rkisp1/rkisp1-dev.c +2 -1
Lines of this file are not shown. View the raw message.
include/dt-bindings/clock/qcom,videocc-sm8150.h +4 -0
Lines of this file are not shown. View the raw message.
include/linux/of.h +140 -151
291 lines not on this page · raw message
include/uapi/linux/virtio_crypto.h +81 -1
82 lines not on this page · raw message
net/netlabel/netlabel_calipso.c +28 -24
52 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +10 -3
Lines of this file are not shown. View the raw message.
sound/soc/atmel/sam9g20_wm8731.c +61 -0
61 lines not on this page · raw message
tools/perf/util/env.c +32 -18
50 lines not on this page · raw message
tools/testing/selftests/drivers/net/mlxsw/qos_pfc.sh +28 -12
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh +105 -1
106 lines not on this page · raw message
tools/testing/selftests/net/fib_nexthop_multiprefix.sh +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/math/fpu_preempt.c +5 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/math/vmx_preempt.c +6 -4
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.