Linux 5.10.210
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.210 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
------------
Documentation/ABI/testing/sysfs-class-net-queues | 22 Documentation/ABI/testing/sysfs-class-net-statistics | 48 - Documentation/filesystems/directory-locking.rst | 29 - Documentation/filesystems/locking.rst | 5 Documentation/filesystems/porting.rst | 18 Documentation/sound/soc/dapm.rst | 2 Makefile | 2 arch/arm/boot/dts/exynos4210-i9100.dts | 8 arch/arm/boot/dts/imx1-ads.dts | 2 arch/arm/boot/dts/imx1-apf9328.dts | 2 arch/arm/boot/dts/imx1.dtsi | 5 arch/arm/boot/dts/imx23-sansa.dts | 12 arch/arm/boot/dts/imx23.dtsi | 2 arch/arm/boot/dts/imx25-eukrea-cpuimx25.dtsi | 2 arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts | 2 arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts | 2 arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts | 2 arch/arm/boot/dts/imx25-pdk.dts | 2 arch/arm/boot/dts/imx25.dtsi | 2 arch/arm/boot/dts/imx27-apf27dev.dts | 4 arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi | 4 arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts | 2 arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts | 2 arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts | 2 arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi | 2 arch/arm/boot/dts/imx27.dtsi | 3 arch/arm/boot/dts/imx28.dtsi | 2 arch/arm/boot/dts/imx7d.dtsi | 3 arch/arm/boot/dts/imx7s.dtsi | 10 arch/arm/boot/dts/rk3036.dtsi | 14 arch/arm64/boot/dts/qcom/msm8996.dtsi | 21 arch/arm64/boot/dts/qcom/msm8998.dtsi | 32 - arch/arm64/boot/dts/qcom/sc7180.dtsi | 8 arch/arm64/boot/dts/qcom/sdm845.dtsi | 16 arch/arm64/kernel/entry.S | 8 arch/arm64/kernel/perf_event.c | 6 arch/mips/include/asm/checksum.h | 3 arch/mips/kernel/elf.c | 6 arch/mips/mm/init.c | 15 arch/parisc/kernel/firmware.c | 4 arch/powerpc/include/asm/mmu.h | 4 arch/powerpc/include/asm/mmzone.h | 3 arch/powerpc/kernel/traps.c | 2 arch/powerpc/kvm/book3s_hv_uvmem.c | 2 arch/powerpc/lib/sstep.c | 10 arch/powerpc/mm/book3s64/pgtable.c | 2 arch/powerpc/mm/init-common.c | 5 arch/powerpc/mm/kasan/kasan_init_32.c | 1 arch/s390/crypto/aes_s390.c | 4 arch/s390/crypto/paes_s390.c | 4 arch/s390/kernel/ptrace.c | 6 arch/s390/kvm/kvm-s390.c | 5 arch/um/drivers/net_kern.c | 2 arch/um/include/shared/kern_util.h | 2 arch/um/kernel/process.c | 2 arch/um/os-Linux/helper.c | 6 arch/um/os-Linux/util.c | 19 arch/x86/Kconfig.cpu | 2 arch/x86/boot/compressed/ident_map_64.c | 5 arch/x86/boot/compressed/idt_64.c | 1 arch/x86/boot/compressed/idt_handlers_64.S | 1 arch/x86/boot/compressed/misc.h | 1 arch/x86/include/asm/syscall_wrapper.h | 25 arch/x86/kernel/cpu/mce/core.c | 16 arch/x86/kvm/mmu/page_track.c | 2 arch/x86/kvm/x86.c | 4 arch/x86/mm/ident_map.c | 23 block/bio.c | 9 block/blk-iocost.c | 7 block/blk-mq.c | 16 crypto/algapi.c | 1 drivers/acpi/acpi_extlog.c | 5 drivers/acpi/acpi_video.c | 9 drivers/acpi/apei/ghes.c | 29 - drivers/android/binder.c | 10 drivers/ata/libata-eh.c | 2 drivers/atm/idt77252.c | 2 drivers/base/power/domain.c | 2 drivers/base/power/main.c | 251 +++++----- drivers/base/power/runtime.c | 22 drivers/block/rbd.c | 22 drivers/block/rnbd/rnbd-srv.c | 19 drivers/bluetooth/hci_qca.c | 1 drivers/bus/mhi/host/main.c | 4 drivers/bus/moxtet.c | 7 drivers/char/hw_random/core.c | 34 - drivers/clk/hisilicon/clk-hi3620.c | 4 drivers/clk/mmp/clk-of-pxa168.c | 3 drivers/crypto/ccp/sev-dev.c | 10 drivers/crypto/stm32/stm32-crc32.c | 2 drivers/devfreq/devfreq.c | 24 drivers/dma/dmaengine.c | 3 drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c | 10 drivers/dma/fsl-qdma.c | 27 - drivers/dma/ti/k3-udma.c | 10 drivers/firewire/core-device.c | 7 drivers/gpio/gpio-eic-sprd.c | 32 + drivers/gpio/gpiolib-acpi.c | 14 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 3 drivers/gpu/drm/amd/display/dc/core/dc.c | 4 drivers/gpu/drm/amd/pm/powerplay/hwmgr/process_pptables_v1_0.c | 2 drivers/gpu/drm/bridge/nxp-ptn3460.c | 6 drivers/gpu/drm/drm_file.c | 2 drivers/gpu/drm/drm_framebuffer.c | 2 drivers/gpu/drm/drm_mipi_dsi.c | 17 drivers/gpu/drm/drm_plane.c | 1 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 drivers/gpu/drm/exynos/exynos_drm_drv.c | 11 drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 5 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 1 drivers/gpu/drm/msm/dp/dp_link.c | 12 drivers/gpu/drm/msm/dp/dp_reg.h | 3 drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 4 drivers/gpu/drm/nouveau/nouveau_vmm.c | 3 drivers/gpu/drm/panel/panel-simple.c | 2 drivers/gpu/drm/tidss/tidss_crtc.c | 10 drivers/hid/hid-apple.c | 33 + drivers/hid/hid-ids.h | 1 drivers/hid/hid-quirks.c | 1 drivers/hid/wacom_sys.c | 63 +- drivers/hid/wacom_wac.c | 9 drivers/hwmon/aspeed-pwm-tacho.c | 7 drivers/hwmon/coretemp.c | 40 - drivers/i2c/busses/i2c-i801.c | 19 drivers/i3c/master/i3c-master-cdns.c | 7 drivers/iio/accel/Kconfig | 2 drivers/iio/adc/ad7091r-base.c | 173 ++++++ drivers/iio/adc/ad7091r-base.h | 8 drivers/iio/adc/ad7091r5.c | 29 - drivers/iio/magnetometer/rm3100-core.c | 10 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 7 drivers/input/keyboard/atkbd.c | 13 drivers/input/serio/i8042-acpipnpio.h | 6 drivers/irqchip/irq-brcmstb-l2.c | 5 drivers/irqchip/irq-gic-v3-its.c | 22 drivers/leds/trigger/ledtrig-panic.c | 5 drivers/md/dm-core.h | 2 drivers/md/dm-ioctl.c | 3 drivers/md/dm-table.c | 9 drivers/md/md.c | 54 +- drivers/md/raid5.c | 12 drivers/media/pci/ddbridge/ddbridge-main.c | 2 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 6 drivers/media/platform/rockchip/rga/rga.c | 15 drivers/media/rc/bpf-lirc.c | 6 drivers/media/rc/ir_toy.c | 2 drivers/media/rc/lirc_dev.c | 5 drivers/media/rc/rc-core-priv.h | 2 drivers/media/usb/stk1160/stk1160-video.c | 5 drivers/mfd/Kconfig | 1 drivers/misc/fastrpc.c | 2 drivers/mmc/core/block.c | 46 + drivers/mmc/core/slot-gpio.c | 6 drivers/mmc/host/mmc_spi.c | 186 ------- drivers/net/bonding/bond_alb.c | 3 drivers/net/dsa/mv88e6xxx/chip.h | 4 drivers/net/dsa/mv88e6xxx/serdes.c | 8 drivers/net/dsa/mv88e6xxx/serdes.h | 8 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 5 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 22 drivers/net/ethernet/broadcom/genet/bcmgenet.h | 3 drivers/net/ethernet/broadcom/genet/bcmmii.c | 6 drivers/net/ethernet/freescale/fec_main.c | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 32 + drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 36 - drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 61 +- drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 177 +++---- drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 44 - drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c | 34 - drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 105 ++-- drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 51 -- drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 44 - drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 149 +++-- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 27 + drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c | 26 - drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c | 1 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c | 2 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c | 6 drivers/net/ethernet/pensando/ionic/ionic_dev.c | 1 drivers/net/ethernet/pensando/ionic/ionic_dev.h | 1 drivers/net/ethernet/pensando/ionic/ionic_main.c | 2 drivers/net/ethernet/stmicro/stmmac/common.h | 1 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 3 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 58 ++ drivers/net/fjes/fjes_hw.c | 37 + drivers/net/hyperv/netvsc.c | 5 drivers/net/ppp/ppp_async.c | 4 drivers/net/virtio_net.c | 9 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 5 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 3 drivers/net/wireless/ralink/rt2x00/rt2x00mac.c | 11 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 12 drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c | 6 drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c | 4 drivers/net/xen-netback/netback.c | 84 +-- drivers/of/property.c | 2 drivers/of/unittest.c | 12 drivers/pci/controller/dwc/pcie-designware-ep.c | 2 drivers/pci/controller/pcie-mediatek.c | 10 drivers/pci/pcie/aer.c | 9 drivers/pci/quirks.c | 24 drivers/pci/switch/switchtec.c | 25 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 4 drivers/phy/ti/phy-omap-usb2.c | 4 drivers/pnp/pnpacpi/rsparser.c | 12 drivers/regulator/core.c | 56 +- drivers/rpmsg/virtio_rpmsg_bus.c | 1 drivers/rtc/rtc-cmos.c | 4 drivers/s390/net/qeth_l3_main.c | 9 drivers/scsi/arcmsr/arcmsr.h | 4 drivers/scsi/arcmsr/arcmsr_hba.c | 6 drivers/scsi/device_handler/scsi_dh_alua.c | 4 drivers/scsi/device_handler/scsi_dh_emc.c | 4 drivers/scsi/device_handler/scsi_dh_rdac.c | 4 drivers/scsi/fcoe/fcoe_ctlr.c | 20 drivers/scsi/isci/request.c | 2 drivers/scsi/libfc/fc_fcp.c | 18 drivers/scsi/lpfc/lpfc.h | 1 drivers/scsi/lpfc/lpfc_init.c | 4 drivers/scsi/scsi_error.c | 73 +- drivers/scsi/scsi_lib.c | 6 drivers/scsi/scsi_priv.h | 4 drivers/spi/spi-bcm-qspi.c | 4 drivers/spi/spi-ppc4xx.c | 5 drivers/staging/iio/impedance-analyzer/ad5933.c | 2 drivers/tty/serial/8250/8250_core.c | 1 drivers/tty/serial/8250/8250_exar.c | 13 drivers/tty/serial/max310x.c | 21 drivers/tty/serial/sc16is7xx.c | 8 drivers/tty/tty_ioctl.c | 4 drivers/usb/cdns3/ep0.c | 4 drivers/usb/cdns3/gadget.c | 150 ++++- drivers/usb/cdns3/gadget.h | 3 drivers/usb/core/hub.c | 34 - drivers/usb/gadget/function/f_mass_storage.c | 20 drivers/usb/host/xhci-plat.c | 3 drivers/usb/serial/cp210x.c | 1 drivers/usb/serial/option.c | 1 drivers/usb/serial/qcserial.c | 2 drivers/usb/typec/ucsi/ucsi_acpi.c | 17 drivers/vhost/vhost.c | 5 drivers/watchdog/it87_wdt.c | 14 drivers/xen/gntdev-dmabuf.c | 50 - fs/afs/callback.c | 3 fs/afs/dir.c | 8 fs/afs/server.c | 7 fs/btrfs/disk-io.c | 13 fs/btrfs/extent-tree.c | 3 fs/btrfs/inode.c | 43 - fs/btrfs/ioctl.c | 12 fs/btrfs/qgroup.c | 14 fs/btrfs/ref-verify.c | 6 fs/btrfs/send.c | 2 fs/btrfs/tree-checker.c | 2 fs/ceph/caps.c | 12 fs/cifs/smb2misc.c | 2 fs/cifs/smb2ops.c | 14 fs/cifs/smb2pdu.c | 13 fs/cifs/smb2pdu.h | 42 - fs/dcache.c | 7 fs/ecryptfs/inode.c | 8 fs/exec.c | 3 fs/ext4/mballoc.c | 26 - fs/ext4/move_extent.c | 6 fs/ext4/resize.c | 37 - fs/f2fs/recovery.c | 25 fs/ioctl.c | 3 fs/jfs/jfs_dmap.c | 57 +- fs/jfs/jfs_dtree.c | 7 fs/jfs/jfs_imap.c | 3 fs/jfs/jfs_mount.c | 6 fs/kernfs/dir.c | 12 fs/namei.c | 60 +- fs/nilfs2/dat.c | 27 - fs/nilfs2/file.c | 8 fs/nilfs2/recovery.c | 7 fs/nilfs2/segment.c | 8 fs/pipe.c | 19 fs/pstore/ram.c | 1 fs/ubifs/dir.c | 2 include/drm/drm_color_mgmt.h | 1 include/drm/drm_mipi_dsi.h | 2 include/linux/async.h | 2 include/linux/bpf.h | 6 include/linux/dmaengine.h | 3 include/linux/hrtimer.h | 4 include/linux/lsm_hook_defs.h | 2 include/linux/mmzone.h | 18 include/linux/netfilter/ipset/ip_set.h | 4 include/linux/pci_ids.h | 1 include/linux/pipe_fs_i.h | 16 include/linux/pm_runtime.h | 8 include/linux/security.h | 9 include/linux/serial_core.h | 1 include/linux/spi/spi.h | 1 include/linux/stddef.h | 13 include/linux/syscalls.h | 1 include/linux/units.h | 10 include/linux/vmalloc.h | 5 include/net/af_unix.h | 20 include/net/inet_connection_sock.h | 8 include/net/llc_pdu.h | 6 include/net/netfilter/nf_tables.h | 4 include/scsi/scsi.h | 21 include/scsi/scsi_dh.h | 3 include/scsi/scsi_eh.h | 2 include/uapi/linux/btrfs.h | 3 include/uapi/linux/netfilter/nf_tables.h | 2 include/uapi/linux/stddef.h | 23 kernel/async.c | 85 ++- kernel/audit.c | 31 - kernel/bpf/arraymap.c | 12 kernel/bpf/hashtab.c | 6 kernel/bpf/map_in_map.c | 2 kernel/bpf/map_in_map.h | 2 kernel/bpf/syscall.c | 6 kernel/events/core.c | 38 + kernel/power/swap.c | 38 - kernel/sched/membarrier.c | 9 kernel/time/clocksource.c | 25 kernel/time/hrtimer.c | 17 kernel/time/tick-sched.c | 5 kernel/trace/ring_buffer.c | 2 kernel/trace/trace.c | 78 +-- kernel/trace/trace_events_trigger.c | 6 kernel/trace/tracing_map.c | 7 lib/debugobjects.c | 200 +++---- lib/mpi/ec.c | 3 mm/page-writeback.c | 2 mm/sparse.c | 17 mm/util.c | 50 + net/8021q/vlan_netlink.c | 4 net/bluetooth/l2cap_core.c | 3 net/can/j1939/j1939-priv.h | 1 net/can/j1939/socket.c | 22 net/core/request_sock.c | 3 net/core/skbuff.c | 3 net/hsr/hsr_device.c | 4 net/ipv4/af_inet.c | 9 net/ipv4/inet_connection_sock.c | 4 net/ipv4/ip_output.c | 12 net/ipv4/ip_tunnel_core.c | 2 net/ipv4/tcp.c | 45 + net/ipv6/addrconf_core.c | 21 net/ipv6/af_inet6.c | 3 net/ipv6/ip6_tunnel.c | 28 - net/iucv/af_iucv.c | 14 net/llc/af_llc.c | 26 - net/llc/llc_core.c | 7 net/mac80211/tx.c | 3 net/netfilter/ipset/ip_set_bitmap_gen.h | 14 net/netfilter/ipset/ip_set_core.c | 39 + net/netfilter/ipset/ip_set_hash_gen.h | 19 net/netfilter/ipset/ip_set_list_set.c | 13 net/netfilter/nf_log.c | 7 net/netfilter/nf_tables_api.c | 20 net/netfilter/nft_byteorder.c | 5 net/netfilter/nft_chain_filter.c | 11 net/netfilter/nft_compat.c | 23 net/netfilter/nft_ct.c | 27 + net/netfilter/nft_flow_offload.c | 5 net/netfilter/nft_meta.c | 2 net/netfilter/nft_nat.c | 5 net/netfilter/nft_rt.c | 5 net/netfilter/nft_set_pipapo.c | 108 ++-- net/netfilter/nft_set_pipapo.h | 18 net/netfilter/nft_set_pipapo_avx2.c | 17 net/netfilter/nft_set_rbtree.c | 6 net/netfilter/nft_socket.c | 5 net/netfilter/nft_synproxy.c | 7 net/netfilter/nft_tproxy.c | 5 net/netfilter/nft_xfrm.c | 5 net/netlink/af_netlink.c | 2 net/nfc/nci/core.c | 4 net/openvswitch/flow_netlink.c | 49 + net/rds/af_rds.c | 2 net/rxrpc/conn_event.c | 8 net/rxrpc/conn_service.c | 3 net/smc/smc_diag.c | 2 net/sunrpc/xprtmultipath.c | 17 net/tipc/bearer.c | 6 net/unix/af_unix.c | 14 net/unix/diag.c | 2 net/wireless/scan.c | 4 scripts/decode_stacktrace.sh | 64 ++ scripts/get_abi.pl | 2 scripts/kernel-doc | 3 scripts/link-vmlinux.sh | 9 scripts/mod/sumversion.c | 7 security/security.c | 32 + security/selinux/hooks.c | 28 + security/smack/smack_lsm.c | 1 security/tomoyo/tomoyo.c | 1 sound/hda/hdac_stream.c | 9 sound/hda/intel-dsp-config.c | 10 sound/pci/hda/hda_intel.c | 2 sound/pci/hda/patch_conexant.c | 18 sound/pci/hda/patch_realtek.c | 3 sound/soc/codecs/rt5645.c | 1 tools/lib/subcmd/help.c | 18 tools/testing/selftests/bpf/prog_tests/btf.c | 1 tools/testing/selftests/bpf/progs/pyperf180.c | 22 tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh | 9 tools/testing/selftests/net/pmtu.sh | 18 virt/kvm/kvm_main.c | 4 416 files changed, 3967 insertions(+), 2174 deletions(-)
Aaron Conole (1):
net: openvswitch: limit the number of recursions from action sets
Adrian Reber (1):
tty: allow TIOCSLCKTRMIOS with CAP_CHECKPOINT_RESTORE
Al Viro (2):
rename(): fix the locking of subdirectories
fast_dput(): handle underflows gracefully
Aleksander Mazur (1):
x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6
Alex Henrie (1):
HID: apple: Add support for the 2021 Magic Keyboard
Alex Lyakas (1):
md: Whenassemble the array, consult the superblock of the freshest device
Alexander Stein (4):
ARM: dts: imx7d: Fix coresight funnel ports
ARM: dts: imx7s: Fix lcdif compatible
ARM: dts: imx7s: Fix nand-controller #size-cells
mmc: slot-gpio: Allow non-sleeping GPIO ro
Alexandra Winter (1):
s390/qeth: Fix potential loss of L3-IP@ in case of network issues
Alexey Dobriyan (1):
uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++
Alexey Khoroshilov (1):
ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()
Alfred Piccioni (1):
lsm: new security_file_ioctl_compat() hook
Amelie Delaunay (1):
dmaengine: fix NULL pointer in channel unregistration function
Andrii Nakryiko (1):
selftests/bpf: satisfy compiler by having explicit return in btf test
Andrii Staikov (1):
i40e: Fix VF disable behavior to block all traffic
Andrzej Hajda (1):
debugobjects: Stop accessing objects after releasing hash bucket lock
Andy Shevchenko (1):
mmc: mmc_spi: remove custom DMA mapped buffers
Anna Schumaker (1):
SUNRPC: Fix a suspicious RCU usage warning
Antoine Tenart (1):
tunnels: fix out of bounds access when building IPv6 PMTU error
Anton Ivanov (1):
um: Fix naming clash between UML and scheduler
Arjun Roy (1):
net-zerocopy: Refactor frag-is-remappable test.
Arnd Bergmann (1):
drm/exynos: fix accidental on-stack copy of exynos_drm_plane
Avri Altman (1):
mmc: core: Use mrq.sbc in close-ended ffu
Baokun Li (4):
ext4: unify the type of flexbg_size to unsigned int
ext4: remove unnecessary check from alloc_flex_gd()
ext4: avoid online resizing failures due to oversized flex bg
ext4: fix double-free of blocks due to wrong extents moved_len
Bart Van Assche (1):
scsi: core: Introduce enum scsi_disposition
Benjamin Berg (3):
wifi: cfg80211: free beacon_ies when overridden from hidden BSS
um: Don't use vfprintf() for os_info()
HID: apple: Add 2021 magic keyboard FN key mapping
Bernd Edlinger (1):
exec: Fix error handling in begin_new_exec()
Bjorn Helgaas (2):
PM: sleep: Use dev_printk() when possible PCI/AER: Decode Requester ID when no error info found
Boris Burkov (2):
btrfs: forbid creating subvol qgroups
btrfs: forbid deleting live subvol qgroup
Breno Leitao (2):
net: sysfs: Fix /sys/class/net/<iface> path
net: sysfs: Fix /sys/class/net/<iface> path for statistics
Carlos Llamas (2):
binder: signal epoll threads of self-work scripts/decode_stacktrace.sh: optionally use LLVM utilities
Chao Yu (1):
f2fs: fix to check return value of f2fs_reserve_new_block()
Charan Teja Kalla (1):
mm/sparsemem: fix race in accessing memory_section->usage
Chris Riches (1):
audit: Send netlink ACK before setting connection in auditd_set
Christian A. Ehrhardt (2):
of: unittest: Fix compile in the non-dynamic case
usb: ucsi_acpi: Fix command completion handling
Christoph Hellwig (1):
block: prevent an integer overflow in bvec_try_merge_hw_page
Christophe JAILLET (3):
ixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550()
dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA
dmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA
Chung-Chiang Cheng (1):
btrfs: tree-checker: fix inline ref size in error messages
Cristian Ciocaltea (1):
ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument
Dan Carpenter (4):
drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking drm/bridge: nxp-ptn3460: simplify some error checking
netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
PCI: dwc: Fix a 64bit bug in dw_pcie_ep_raise_msix_irq()
Daniel Basilio (1):
nfp: use correct macro for LengthSelect in BAR config
Daniel Lezcano (2):
units: change from 'L' to 'UL'
units: add the HZ macros
Daniel Stodden (1):
PCI: switchtec: Fix stdev_release() crash after surprise hot remove
Daniel Vacek (1):
IB/ipoib: Fix mcast list locking
Daniel de Villiers (1):
nfp: flower: prevent re-adding mac index for bonded port
Dave Airlie (1):
nouveau/vmm: don't set addr on the fail path to avoid warning
David Howells (2):
afs: Hide silly-rename files from userspace
rxrpc: Fix response to PING RESPONSE ACKs to a dead call
David Schiller (1):
staging: iio: ad5933: fix type mismatch regression
David Senoner (1):
ALSA: hda/realtek: Fix the external mic not being recognised for Acer Swift 1 SF114-32
David Sterba (2):
btrfs: don't warn if discard range is not aligned to sector
btrfs: send: return EOPNOTSUPP on unknown flags
Davidlohr Bueso (1):
hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range()
Dmitry Antipov (1):
PNP: ACPI: fix fortify warning
Dmitry Baryshkov (1):
PM: runtime: add devm_pm_runtime_enable helper
Doug Berger (1):
irqchip/irq-brcmstb-l2: Add write memory barrier before exit
Douglas Anderson (2):
drm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time
PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend()
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL
Edward Adam Davis (3):
jfs: fix uaf in jfs_evict_inode
jfs: fix array-index-out-of-bounds in diNewExt
wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update
Ekansh Gupta (1):
misc: fastrpc: Mark all sessions as invalid in cb_remove
Emmanuel Grumbach (1):
wifi: iwlwifi: fix a memory corruption
Eric Dumazet (9):
llc: make llc_ui_sendmsg() more robust against bonding changes
ip6_tunnel: use dev_sw_netstats_rx_add()
ip6_tunnel: make sure to pull inner header in __ip6_tnl_rcv()
tcp: add sanity checks to rx zerocopy
llc: call sock_orphan() at release time
af_unix: fix lockdep positive in sk_diag_dump_icons()
inet: read sk->sk_family once in inet_recv_error()
ppp_async: limit MRU to 64K
net: prevent mss overflow in skb_segment()
Fabio Estevam (9):
ARM: dts: imx25/27-eukrea: Fix RTC node name
ARM: dts: imx: Use flash@0,0 pattern
ARM: dts: imx27: Fix sram node
ARM: dts: imx1: Fix sram node
ARM: dts: imx25: Fix the iim compatible string
ARM: dts: imx25/27: Pass timing0
ARM: dts: imx27-apf27dev: Fix LED name
ARM: dts: imx23-sansa: Use preferred i2c-gpios properties
ARM: dts: imx23/28: Fix the DMA controller node name
Fedor Pchelkin (3):
btrfs: ref-verify: free ref cache before clearing mount opt drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume
nfc: nci: free rx_data_reassembly skb on NCI device cleanup
Felix Kuehling (1):
drm/amdgpu: Let KFD sync with VM fences
Florian Fainelli (1):
net: bcmgenet: Fix EEE implementation
Florian Westphal (5):
netfilter: nf_tables: restrict anonymous set and map names to 16 bytes
netfilter: nf_tables: reject QUEUE/DROP verdict parameters
netfilter: nft_set_pipapo: store index in scratch maps
netfilter: nft_set_pipapo: add helper to release pcpu scratch area
netfilter: nft_set_pipapo: remove scratch_aligned pointer
Frank Li (5):
usb: cdns3: fix uvc failure work since sg support enabled
usb: cdns3: fix incorrect calculation of ep_buf_size when more than one config
usb: cdns3: fix iso transfer error when mult is not zero
usb: cdns3: Fix uvc fail when DMA cross 4k boundery since sg enabled
dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV
Frederic Weisbecker (1):
hrtimer: Report offline hrtimer enqueue
Frédéric Danis (1):
Bluetooth: L2CAP: Fix possible multiple reject send
Furong Xu (2):
net: stmmac: xgmac: fix handling of DPP safety error for DMA channels
net: stmmac: xgmac: fix a typo of register name in DPP safety handling
Gabriel Krisman Bertazi (1):
ecryptfs: Reject casefold directory inodes
Ghanshyam Agrawal (1):
media: stk1160: Fixed high volume of stk1160_dbg messages
Greg KH (1):
perf/core: Fix narrow startup race when creating the perf nr_addr_filters sysfs file
Greg Kroah-Hartman (1):
Linux 5.10.210
Guanhua Gao (1):
dmaengine: fsl-dpaa2-qdma: Fix the size of dma pools
Guenter Roeck (1):
MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler
Guilherme G. Piccoli (1):
PCI: Only override AMD USB controller if required
Hannes Reinecke (2):
scsi: libfc: Don't schedule abort twice
scsi: libfc: Fix up timeout error in fc_fcp_rec_error()
Hans de Goede (1):
Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID
Hardik Gajjar (1):
usb: hub: Replace hardcoded quirk value with BIT() macro
Harshit Shah (1):
i3c: master: cdns: Update maximum prescaler value for i2c clock
Heiko Carstens (2):
s390/ptrace: handle setting of fpc register correctly
KVM: s390: fix setting of fpc register
Heiner Kallweit (2):
leds: trigger: panic: Don't register panic notifier if creating the trigger failed
i2c: i801: Remove i801_set_block_buffer_mode
Helge Deller (2):
parisc/firmware: Fix F-extend for PDC addresses
ipv6: Ensure natural alignment of const ipv6 loopback and router addresses
Herbert Xu (3):
crypto: api - Disallow identical driver names
hwrng: core - Fix page fault dead lock on mmap-ed hwrng
crypto: s390/aes - Fix buffer overread in CTR mode
Hongchen Zhang (1):
PM: hibernate: Enforce ordering during image compression/decompression
Hou Tao (2):
bpf: Add map and need_defer parameters to .map_fd_put_ptr()
bpf: Set uattr->batch.count as zero before batched update or deletion
Hugo Villeneuve (4):
serial: sc16is7xx: set safe default SPI clock frequency
serial: sc16is7xx: add check for unsupported SPI modes during probe
serial: max310x: set default value when reading clock ready bit
serial: max310x: improve crystal stable clock detection
Ian Rogers (1):
libsubcmd: Fix memory leak in uniq()
Ido Schimmel (1):
PCI: Add no PM reset quirk for NVIDIA Spectrum devices
Ilpo Järvinen (2):
serial: Add rs485_supported to uart_port
serial: 8250_exar: Fill in rs485_supported
Ilya Dryomov (1):
rbd: don't move requests to the running list on errors
Ivan Vecera (1):
i40e: Fix waiting for queues of all VSIs to be disabled
Jack Wang (1):
RDMA/IPoIB: Fix error code return in ipoib_mcast_join
JackBB Wu (1):
USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e
Jaegeuk Kim (1):
f2fs: fix write pointers on zoned device after roll forward
Jai Luthra (1):
dmaengine: ti: k3-udma: Report short packet errors
Jakub Kicinski (1):
selftests: netdevsim: fix the udp_tunnel_nic test
Jan Beulich (1):
xen-netback: properly sync TX responses
Jason Gerecke (1):
HID: wacom: Do not register input devices until after hid_hw_start
Jean Delvare (1):
i2c: i801: Fix block process call transactions
Jedrzej Jagielski (2):
ixgbe: Refactor returning internal error codes
ixgbe: Refactor overtemp event handling
Jenishkumar Maheshbhai Patel (1):
net: mvpp2: clear BM pool before initialization
Jiangfeng Xiao (1):
powerpc/kasan: Fix addr error caused by page alignment
Jiri Wiesner (1):
clocksource: Skip watchdog check for large watchdog intervals
Johan Hovold (3):
arm64: dts: qcom: sdm845: fix USB wakeup interrupt types
arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sc7180: fix USB wakeup interrupt types
Johan Jonker (1):
ARM: dts: rockchip: fix rk3036 hdmi ports node
Johannes Berg (1):
wifi: mac80211: reload info pointer in ieee80211_tx_dequeue()
Jonathan Cameron (1):
iio:adc:ad7091r: Move exports into IIO_AD7091R namespace.
Jozsef Kadlecsik (2):
netfilter: ipset: fix performance regression in swap operation
netfilter: ipset: Missing gc cancellations fixed
Julian Wiedmann (1):
net/af_iucv: clean up a try_then_request_module()
Jun'ichi Nomura (1):
x86/boot: Ignore NMIs during very early boot
Junxiao Bi (1):
Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"
Justin Tee (1):
scsi: lpfc: Fix possible file string name overflow when updating firmware
Kamal Dasu (1):
spi: bcm-qspi: fix SFDP BFPT read by usig mspi read
Kees Cook (3):
stddef: Introduce DECLARE_FLEX_ARRAY() helper
smb3: Replace smb2pdu 1-element arrays with flex-arrays block/rnbd-srv: Check for unlikely string overflow
Kim Phillips (1):
crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown_locked
Konrad Dybcio (2):
pmdomain: core: Move the unused cleanup to a _sync initcall drm/msm/dsi: Enable runtime PM
Kuan-Wei Chiu (2):
clk: hi3620: Fix memory leak in hi3620_mmc_clk_init()
clk: mmp: pxa168: Fix memory leak in pxa168_clk_init()
Kuniyuki Iwashima (1):
llc: Drop support for ETH_P_TR_802_2.
Kunwu Chan (1):
powerpc/mm: Fix null-pointer dereference in pgtable_cache_add
Kuogee Hsieh (1):
drm/msm/dp: return correct Colorimetry for DP_TEST_DYNAMIC_RANGE_CEA case
Lee Duncan (1):
scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock"
Leonard Dallmayr (1):
USB: serial: cp210x: add ID for IMST iM871A-USB
Li zeming (1):
PM: core: Remove unnecessary (void *) conversions
Lin Ma (1):
vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING
Lino Sanfilippo (1):
serial: 8250_exar: Set missing rs485_supported flag
Linus Torvalds (1):
sched/membarrier: reduce the ability to hammer on sys_membarrier
Loic Prylli (1):
hwmon: (aspeed-pwm-tacho) mutex for tach reading
Luka Guzenko (1):
ALSA: hda/realtek: Enable Mute LED on HP Laptop 14-fq0xxx
Lukas Schauer (1):
pipe: wakeup wr_wait after setting max_usage
Manas Ghandat (2):
jfs: fix slab-out-of-bounds Read in dtSearch
jfs: fix array-index-out-of-bounds in dbAdjTree
Mao Jinlong (2):
arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property
arm64: dts: qcom: msm8998: Fix 'out-ports' is a required property
Marc Zyngier (1):
irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update
Marcelo Schmitt (3):
iio: adc: ad7091r: Set alert bit in config register
iio: adc: ad7091r: Allow users to configure device events
iio: adc: ad7091r: Enable internal vref if external vref is not supplied
Mario Limonciello (3):
rtc: Adjust failure return code for cmos_set_alarm()
gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04
iio: accel: bma400: Fix a compilation problem
Mark Rutland (1):
drivers/perf: pmuv3: don't expose SW_INCR event in sysfs
Markus Niebel (1):
drm: panel-simple: add missing bus flags for Tianma tm070jvhg[30/33]
Masami Hiramatsu (Google) (1):
tracing/trigger: Fix to return error if failed to alloc snapshot
Matthew Wilcox (Oracle) (1):
block: Remove special-casing of compound pages
Max Kellermann (2):
fs/pipe: move check to pipe_has_watch_queue() fs/kernfs/dir: obey S_ISGID
Meenakshikumar Somasundaram (1):
drm/amd/display: Fix tiled display misalignment
Michael Chan (1):
bnxt_en: Wait for FLR to complete during probe
Michael Ellerman (2):
powerpc: Fix build error due to is_valid_bugaddr() powerpc/mm: Fix build failures due to arch_reserved_kernel_pages()
Michael Tretter (1):
media: rockchip: rga: fix swizzling for RGB formats
Miguel Ojeda (1):
scripts: decode_stacktrace: demangle Rust symbols
Mikulas Patocka (1):
dm: limit the number of targets and parameter size area
Ming Lei (3):
blk-mq: fix IO hang from sbitmap wakeup race
scsi: core: Move scsi_host_busy() out of host lock for waking up EH handler
scsi: core: Move scsi_host_busy() out of host lock if it is for per-command
Minsuk Kang (1):
wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus()
Mukesh Ojha (1):
PM / devfreq: Synchronize devfreq_monitor_[start/stop]
Nathan Chancellor (2):
um: net: Fix return type of uml_net_start_xmit()
kbuild: Fix changing ELF file type for output of gen_btf for big endian
Naveen N Rao (1):
powerpc/lib: Validate size for vector operations
Nikita Zhandarovich (1):
net: hsr: remove WARN_ONCE() in send_hsr_supervision_frame()
Niklas Cassel (1):
PCI: dwc: endpoint: Fix dw_pcie_ep_raise_msix_irq() alignment support
Nikolay Borisov (1):
btrfs: remove err variable from btrfs_delete_subvolume
Nuno Sa (1):
of: property: fix typo in io-channels
Oleg Nesterov (3):
afs: fix the usage of read_seqbegin_or_lock() in afs_lookup_volume_rcu()
afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock()
Oleksandr Tyshchenko (1):
xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Oleksij Rempel (2):
spi: introduce SPI_MODE_X_MASK macro
can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER)
Oliver Neukum (1):
USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT
Omar Sandoval (2):
btrfs: don't abort filesystem when attempting to snapshot deleted subvolume
btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume being deleted
Ondrej Mosnacek (1):
lsm: fix the logic in security_inode_getsecctx()
Osama Muhammad (2):
FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree
UBSAN: array-index-out-of-bounds in dtSplitRoot
Pablo Neira Ayuso (8):
netfilter: nf_tables: validate NFPROTO_* family
netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain
netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger
netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations
netfilter: nft_compat: reject unused compat flag
netfilter: nft_compat: restrict match/target protocol to u16
netfilter: nft_ct: reject direction for ct id
netfilter: nft_set_rbtree: skip end interval element from gc
Paolo Abeni (1):
selftests: net: avoid just another constant wait
Paolo Bonzini (2):
mm: vmalloc: introduce array allocation functions
KVM: use __vcalloc for very large allocations
Paul Cercueil (1):
ARM: dts: samsung: exynos4210-i9100: Unconditionally enable LDO12
Pawel Laszczak (1):
usb: cdns3: Fixes for sparse warnings
Peter Robinson (1):
mfd: ti_am335x_tscadc: Fix TI SoC dependencies
Peter Zijlstra (1):
perf: Fix the nr_addr_filters fix
Petr Pavlu (1):
tracing: Ensure visibility when inserting an element into tracing_map
Pierre-Louis Bossart (3):
PCI: add INTEL_HDA_ARL to pci_ids.h
ALSA: hda: Intel: add HDA_ARL PCI ID support
ALSA: hda: intel-dspcfg: add filters for ARL-S and ARL
Piotr Skajewski (1):
ixgbe: Remove non-inclusive language
Prarit Bhargava (1):
ACPI: extlog: fix NULL pointer dereference check
Prashanth K (1):
usb: host: xhci-plat: Add support for XHCI_SG_TRB_CACHE_SIZE_QUIRK
Prathu Baronia (1):
vhost: use kzalloc() instead of kmalloc() followed by memset()
Puliang Lu (1):
USB: serial: option: add Fibocom FM101-GL variant
Qiang Yu (1):
bus: mhi: host: Drop chan lock before queuing buffers
Qu Wenruo (2):
btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args
btrfs: do not ASSERT() if the newly created subvolume already got read
Radek Krejci (1):
modpost: trim leading spaces when processing source files list
Rafael J. Wysocki (5):
async: Split async_schedule_node_domain()
async: Introduce async_schedule_dev_nocall()
PM: sleep: Avoid calling put_device() under dpm_list_mtx
PM: sleep: Fix possible deadlocks in core system-wide PM code
PM: sleep: Fix error handling in dpm_prepare()
Richard Palethorpe (1):
x86/entry/ia32: Ensure s32 is sign extended to s64
Rishabh Dave (1):
ceph: prevent use-after-free in encode_cap_msg()
Rob Clark (1):
drm/msm/dpu: Ratelimit framedone timeout msgs
Rolf Eike Beer (1):
mm: use __pfn_to_section() instead of open coding it
Rui Zhang (1):
regulator: core: Only increment use_count when enable_count changes
Ryusuke Konishi (4):
nilfs2: fix data corruption in dsync block recovery for small block sizes
nilfs2: fix hang in nilfs_lookup_dirty_data_buffers()
nilfs2: fix potential bug in end_buffer_async_write
nilfs2: replace WARN_ONs for invalid DAT metadata block requests
Salvatore Dipietro (1):
tcp: Add memory barrier to tcp_push()
Sandeep Maheswaram (1):
arm64: dts: qcom: sc7180: Use pdc interrupts for USB instead of GIC interrupts
Schspa Shi (1):
scripts/decode_stacktrace.sh: support old bash version
Sean Young (1):
media: rc: bpf attach/detach requires write permission
Serge Semin (1):
mips: Fix max_mapnr being uninitialized on early stages
Shannon Nelson (1):
ionic: pass opcode to devcmd_wait
Sharath Srinivasan (1):
net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv
Shenwei Wang (1):
net: fec: fix the unhandled context fault from smmu
Shigeru Yoshida (1):
tipc: Check the bearer type before calling tipc_udp_nl_bearer_add()
Shiji Yang (1):
wifi: rt2x00: restart beacon queue when hardware reset
Shuai Xue (1):
ACPI: APEI: set memory failure flags as MF_ACTION_REQUIRED on synchronous events
Simon Horman (1):
net: stmmac: xgmac: use #define for string constants
Sjoerd Simons (1):
bus: moxtet: Add spi device table
Souradeep Chakrabarti (1):
hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove
Srinivasan Shanmugam (3):
drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()'
drm/amd/powerplay: Fix kzalloc parameter 'ATOM_Tonga_PPM_Table' in 'get_platform_power_management_table()' drm/amdgpu: Release 'adev->pm.fw' before return in 'amdgpu_device_need_post()'
Stephen Boyd (1):
scripts/decode_stacktrace.sh: silence stderr messages from addr2line/nm
Stephen Rothwell (2):
powerpc: pmd_move_must_withdraw() is only needed for CONFIG_TRANSPARENT_HUGEPAGE
drm: using mul_u32_u32() requires linux/math64.h
Steve Wahl (1):
x86/mm/ident_map: Use gbpages only where full GB page should be mapped.
Steven Rostedt (Google) (2):
tracing: Fix wasted memory in saved_cmdlines logic
tracing: Inform kmemleak of saved_cmdlines allocation
Su Hui (3):
wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift()
media: ddbridge: fix an error code problem in ddb_probe
scsi: isci: Fix an error code problem in isci_io_request_build()
Suraj Jitindar Singh (1):
ext4: allow for the last group to be marked as trimmed
Takashi Iwai (1):
ALSA: hda: Refer to correct stream index at loops
Takashi Sakamoto (1):
firewire: core: correct documentation of fw_csr_string() kernel API
Tatsunosuke Tobita (1):
HID: wacom: generic: Avoid reporting a serial of '0' to userspace
Tejun Heo (1):
blk-iocost: Fix an UBSAN shift-out-of-bounds warning
Thomas Bourgoin (1):
crypto: stm32/crc32 - fix parsing list of devices
Tianjia Zhang (1):
crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init
Tim Chen (1):
tick/sched: Preserve number of idle sleeps across CPU hotplug events
Tobias Waldekranz (1):
net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path
Tomi Valkeinen (4):
drm/tidss: Fix atomic_flush check drm/drm_file: fix use of uninitialized variable drm/framebuffer: Fix use of uninitialized variable drm/mipi-dsi: Fix detach call without attach
Tony Lindgren (1):
phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP
Uwe Kleine-König (1):
spi: ppc4xx: Drop write-only variable
Vegard Nossum (1):
scripts/get_abi: fix source path leak
Ville Syrjälä (1):
drm: Don't unref the same fb many times by mistake due to deadlock handling
Vincent Donnefort (1):
ring-buffer: Clean ring_buffer_poll_wait() error return
Weichen Chen (1):
pstore/ram: Fix crash when setting number of cpus to an odd number
Wen Gu (1):
net/smc: fix illegal rmb_desc access in SMC-D connection dump
Wenhua Lin (1):
gpio: eic-sprd: Clear interrupt after set the interrupt type
Werner Fischer (1):
watchdog: it87_wdt: Keep WDTCTRL bit 3 unmodified for IT8784/IT8786
Werner Sembach (1):
Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU
Xi Ruoyao (1):
mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan
Xiang Yang (1):
Revert "arm64: Stash shadow stack pointer in the task struct on interrupt"
Xiaolei Wang (1):
rpmsg: virtio: Free driver_override when rpmsg_remove()
Xiubo Li (1):
ceph: fix deadlock or deadcode of misusing dget()
Ye Bin (1):
ext4: fix inconsistent between segment fstrim and full fstrim
Yevgeny Kliteynik (1):
net/mlx5: DR, Use the right GVMI number for drop action
Yonghong Song (1):
selftests/bpf: Fix pyperf180 compilation failure with clang18
Yoshihiro Shimoda (1):
phy: renesas: rcar-gen3-usb2: Fix returning wrong error code
Yuluo Qiu (1):
ACPI: video: Add quirk for the Colorful X15 AT 23 Laptop
Zach O'Keefe (1):
mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again
Zenm Chen (1):
wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices
Zhang Rui (2):
hwmon: (coretemp) Fix out-of-bounds memory access
hwmon: (coretemp) Fix bogus core_id to attr name mapping
Zheng Wang (1):
media: mtk-jpeg: Fix use after free bug due to error path handling in mtk_jpeg_dec_device_run
Zhengchao Shao (5):
tcp: make sure init the accept_queue's spinlocks once
netlink: fix potential sleeping issue in mqueue_flush_file
ipv6: init the accept_queue's spinlocks in inet6_create
bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk
bonding: remove print in bond_verify_device_path
Zhihao Cheng (1):
ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path
Zhipeng Lu (5):
net/mlx5e: fix a double-free in arfs_create_groups
fjes: fix memleaks in fjes_hw_setup
net: ipv4: fix a memleak in ip_setup_cork
atm: idt77252: fix a memleak in open_card_ubr0
media: ir_toy: fix a memleak in irtoy_tx
Zhiquan Li (1):
x86/mce: Mark fatal MCE's page as poison to avoid panic in the kdump kernel
Zhu Yanjun (1):
virtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region of size 10" warnings
Zijun Hu (1):
Bluetooth: qca: Set both WIDEBAND_SPEECH and LE_STATES quirks for QCA2066
bo liu (1):
ALSA: hda/conexant: Add quirk for SWS JS201D
ching Huang (1):
scsi: arcmsr: Support new PCI device IDs 1883 and 1886
qizhong cheng (1):
PCI: mediatek: Clear interrupt status before dispatching handler
yuan linyu (1):
usb: f_mass_storage: forbid async queue when shutdown happen
zhili.liu (1):
iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-class-net-queues +11 -11
@@ -1,4 +1,4 @@ -What: /sys/class/<iface>/queues/rx-<queue>/rps_cpus +What: /sys/class/net/<iface>/queues/rx-<queue>/rps_cpus Date: March 2010 KernelVersion: 2.6.35 Contact: [email protected]
@@ -8,7 +8,7 @@ Description: network device queue. Possible values depend on the number of available CPU(s) in the system. -What: /sys/class/<iface>/queues/rx-<queue>/rps_flow_cnt +What: /sys/class/net/<iface>/queues/rx-<queue>/rps_flow_cnt Date: April 2010 KernelVersion: 2.6.35 Contact: [email protected]
@@ -16,7 +16,7 @@ Description: Number of Receive Packet Steering flows being currently processed by this particular network device receive queue. -What: /sys/class/<iface>/queues/tx-<queue>/tx_timeout +What: /sys/class/net/<iface>/queues/tx-<queue>/tx_timeout Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
@@ -24,7 +24,7 @@ Description: Indicates the number of transmit timeout events seen by this network interface transmit queue. -What: /sys/class/<iface>/queues/tx-<queue>/tx_maxrate +What: /sys/class/net/<iface>/queues/tx-<queue>/tx_maxrate Date: March 2015 KernelVersion: 4.1 Contact: [email protected]
@@ -32,7 +32,7 @@ Description: A Mbps max-rate set for the queue, a value of zero means disabled, default is disabled. -What: /sys/class/<iface>/queues/tx-<queue>/xps_cpus +What: /sys/class/net/<iface>/queues/tx-<queue>/xps_cpus Date: November 2010 KernelVersion: 2.6.38 Contact: [email protected]
@@ -42,7 +42,7 @@ Description: network device transmit queue. Possible vaules depend on the number of available CPU(s) in the system. -What: /sys/class/<iface>/queues/tx-<queue>/xps_rxqs +What: /sys/class/net/<iface>/queues/tx-<queue>/xps_rxqs Date: June 2018 KernelVersion: 4.18.0 Contact: [email protected]
@@ -53,7 +53,7 @@ Description: number of available receive queue(s) in the network device. Default is disabled. -What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time +What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
@@ -62,7 +62,7 @@ Description: of this particular network device transmit queue. Default value is 1000. -What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/inflight +What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/inflight Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
@@ -70,7 +70,7 @@ Description: Indicates the number of bytes (objects) in flight on this network device transmit queue. -What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit +What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
@@ -79,7 +79,7 @@ Description: on this network device transmit queue. This value is clamped to be within the bounds defined by limit_max and limit_min. -What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max +What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
@@ -88,7 +88,7 @@ Description: queued on this network device transmit queue. See include/linux/dynamic_queue_limits.h for the default value. -What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min +What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min Date: November 2011 KernelVersion: 3.3 Contact: [email protected]
Documentation/ABI/testing/sysfs-class-net-statistics +24 -24
189 lines not on this page · raw message
Documentation/filesystems/directory-locking.rst +15 -14
@@ -22,13 +22,16 @@ exclusive. 3) object removal. Locking rules: caller locks parent, finds victim, locks victim and calls the method. Locks are exclusive. -4) rename() that is _not_ cross-directory. Locking rules: caller locks the -parent and finds source and target. We lock both (provided they exist). If we -need to lock two inodes of different type (dir vs non-dir), we lock directory -first. If we need to lock two inodes of the same type, lock them in inode -pointer order. Then call the method. All locks are exclusive. -NB: we might get away with locking the source (and target in exchange -case) shared. +4) rename() that is _not_ cross-directory. Locking rules: caller locks +the parent and finds source and target. Then we decide which of the +source and target need to be locked. Source needs to be locked if it's a +non-directory; target - if it's a non-directory or about to be removed. +Take the locks that need to be taken, in inode pointer order if need +to take both (that can happen only when both source and target are +non-directories - the source because it wouldn't be locked otherwise +and the target because mixing directory and non-directory is allowed +only with RENAME_EXCHANGE, and that won't be removing the target). +After the locks had been taken, call the method. All locks are exclusive. 5) link creation. Locking rules:
@@ -44,20 +47,17 @@ rules: * lock the filesystem * lock parents in "ancestors first" order. If one is not ancestor of - the other, lock them in inode pointer order. + the other, lock the parent of source first. * find source and target. * if old parent is equal to or is a descendent of target fail with -ENOTEMPTY * if new parent is equal to or is a descendent of source fail with -ELOOP - * Lock both the source and the target provided they exist. If we - need to lock two inodes of different type (dir vs non-dir), we lock - the directory first. If we need to lock two inodes of the same type, - lock them in inode pointer order. + * Lock subdirectories involved (source before target). + * Lock non-directories involved, in inode pointer order. * call the method. -All ->i_rwsem are taken exclusive. Again, we might get away with locking -the source (and target in exchange case) shared. +All ->i_rwsem are taken exclusive. The rules above obviously guarantee that all directories that are going to be read, modified or removed by method will be locked by caller.
@@ -67,6 +67,7 @@ If no directory is its own ancestor, the scheme above is deadlock-free. Proof: +[XXX: will be updated once we are done massaging the lock_rename()] First of all, at any moment we have a linear ordering of the objects - A < B iff (A is an ancestor of B) or (B is not an ancestor of A and ptr(A) < ptr(B)).
Documentation/filesystems/locking.rst +4 -1
@@ -95,7 +95,7 @@ symlink: exclusive mkdir: exclusive unlink: exclusive (both) rmdir: exclusive (both)(see below) -rename: exclusive (all) (see below) +rename: exclusive (both parents, some children) (see below) readlink: no get_link: no setattr: exclusive
@@ -113,6 +113,9 @@ tmpfile: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem exclusive on victim. cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. + ->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories + involved. + ->rename() has ->i_rwsem exclusive on any subdirectory that changes parent. See Documentation/filesystems/directory-locking.rst for more detailed discussion of the locking scheme for directory operations.
Documentation/filesystems/porting.rst +18 -0
@@ -865,3 +865,21 @@ no matter what. Everything is handled by the caller. clone_private_mount() returns a longterm mount now, so the proper destructor of its result is kern_unmount() or kern_unmount_array(). + +--- + +**mandatory** + +If ->rename() update of .. on cross-directory move needs an exclusion with +directory modifications, do *not* lock the subdirectory in question in your +->rename() - it's done by the caller now [that item should've been added in +28eceeda130f "fs: Lock moved directories"]. + +--- + +**mandatory** + +On same-directory ->rename() the (tautological) update of .. is not protected +by any locks; just don't do it if the old parent is the same as the new one. +We really can't lock two subdirectories in same-directory rename - not without +deadlocks.
Documentation/sound/soc/dapm.rst +1 -1
@@ -234,7 +234,7 @@ corresponding soft power control. In this case it is necessary to create a virtual widget - a widget with no control bits e.g. :: - SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_DAPM_NOPM, 0, 0, NULL, 0), + SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0), This can be used to merge to signal paths together in software.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 209 +SUBLEVEL = 210 EXTRAVERSION = NAME = Dare mighty things
arch/arm/boot/dts/exynos4210-i9100.dts +8 -0
@@ -464,6 +464,14 @@ vtcam_reg: LDO12 { regulator-name = "VT_CAM_1.8V"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + + /* + * Force-enable this regulator; otherwise the + * kernel hangs very early in the boot process + * for about 12 seconds, without apparent + * reason. + */ + regulator-always-on; }; vcclcd_reg: LDO13 {
arch/arm/boot/dts/imx1-ads.dts +1 -1
@@ -65,7 +65,7 @@ &weim { pinctrl-0 = <&pinctrl_weim>; status = "okay"; - nor: nor@0,0 { + nor: flash@0,0 { compatible = "cfi-flash"; reg = <0 0x00000000 0x02000000>; bank-width = <4>;
arch/arm/boot/dts/imx1-apf9328.dts +1 -1
@@ -45,7 +45,7 @@ &weim { pinctrl-0 = <&pinctrl_weim>; status = "okay"; - nor: nor@0,0 { + nor: flash@0,0 { compatible = "cfi-flash"; reg = <0 0x00000000 0x02000000>; bank-width = <2>;
arch/arm/boot/dts/imx1.dtsi +4 -1
@@ -268,9 +268,12 @@ weim: weim@220000 { status = "disabled"; }; - esram: esram@300000 { + esram: sram@300000 { compatible = "mmio-sram"; reg = <0x00300000 0x20000>; + ranges = <0 0x00300000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; }; }; };
arch/arm/boot/dts/imx23-sansa.dts +4 -8
@@ -175,10 +175,8 @@ i2c-0 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; - gpios = < - &gpio1 24 0 /* SDA */ - &gpio1 22 0 /* SCL */ - >; + sda-gpios = <&gpio1 24 0>; + scl-gpios = <&gpio1 22 0>; i2c-gpio,delay-us = <2>; /* ~100 kHz */ };
@@ -186,10 +184,8 @@ i2c-1 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; - gpios = < - &gpio0 31 0 /* SDA */ - &gpio0 30 0 /* SCL */ - >; + sda-gpios = <&gpio0 31 0>; + scl-gpios = <&gpio0 30 0>; i2c-gpio,delay-us = <2>; /* ~100 kHz */ touch: touch@20 {
arch/arm/boot/dts/imx23.dtsi +1 -1
@@ -414,7 +414,7 @@ emi@80020000 { status = "disabled"; }; - dma_apbx: dma-apbx@80024000 { + dma_apbx: dma-controller@80024000 { compatible = "fsl,imx23-dma-apbx"; reg = <0x80024000 0x2000>; interrupts = <7 5 9 26
arch/arm/boot/dts/imx25-eukrea-cpuimx25.dtsi +1 -1
@@ -27,7 +27,7 @@ &i2c1 { pinctrl-0 = <&pinctrl_i2c1>; status = "okay"; - pcf8563@51 { + rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; };
arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts +1 -1
@@ -16,7 +16,7 @@ cmo_qvga: display { bus-width = <18>; display-timings { native-mode = <&qvga_timings>; - qvga_timings: 320x240 { + qvga_timings: timing0 { clock-frequency = <6500000>; hactive = <320>; vactive = <240>;
arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts +1 -1
@@ -16,7 +16,7 @@ dvi_svga: display { bus-width = <18>; display-timings { native-mode = <&dvi_svga_timings>; - dvi_svga_timings: 800x600 { + dvi_svga_timings: timing0 { clock-frequency = <40000000>; hactive = <800>; vactive = <600>;
arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts +1 -1
@@ -16,7 +16,7 @@ dvi_vga: display { bus-width = <18>; display-timings { native-mode = <&dvi_vga_timings>; - dvi_vga_timings: 640x480 { + dvi_vga_timings: timing0 { clock-frequency = <31250000>; hactive = <640>; vactive = <480>;
arch/arm/boot/dts/imx25-pdk.dts +1 -1
@@ -78,7 +78,7 @@ wvga: display { bus-width = <18>; display-timings { native-mode = <&wvga_timings>; - wvga_timings: 640x480 { + wvga_timings: timing0 { hactive = <640>; vactive = <480>; hback-porch = <45>;
arch/arm/boot/dts/imx25.dtsi +1 -1
@@ -543,7 +543,7 @@ pwm1: pwm@53fe0000 { }; iim: efuse@53ff0000 { - compatible = "fsl,imx25-iim", "fsl,imx27-iim"; + compatible = "fsl,imx25-iim"; reg = <0x53ff0000 0x4000>; interrupts = <19>; clocks = <&clks 99>;
arch/arm/boot/dts/imx27-apf27dev.dts +2 -2
@@ -16,7 +16,7 @@ display: display { fsl,pcr = <0xfae80083>; /* non-standard but required */ display-timings { native-mode = <&timing0>; - timing0: 800x480 { + timing0: timing0 { clock-frequency = <33000033>; hactive = <800>; vactive = <480>;
@@ -47,7 +47,7 @@ leds { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_leds>; - user { + led-user { label = "Heartbeat"; gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat";
arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi +2 -2
@@ -33,7 +33,7 @@ &i2c1 { pinctrl-0 = <&pinctrl_i2c1>; status = "okay"; - pcf8563@51 { + rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; };
@@ -90,7 +90,7 @@ &usbotg { &weim { status = "okay"; - nor: nor@0,0 { + nor: flash@0,0 { #address-cells = <1>; #size-cells = <1>; compatible = "cfi-flash";
arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts +1 -1
@@ -16,7 +16,7 @@ display0: CMO-QVGA { display-timings { native-mode = <&timing0>; - timing0: 320x240 { + timing0: timing0 { clock-frequency = <6500000>; hactive = <320>; vactive = <240>;
arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts +1 -1
@@ -19,7 +19,7 @@ display: display { fsl,pcr = <0xf0c88080>; /* non-standard but required */ display-timings { native-mode = <&timing0>; - timing0: 640x480 { + timing0: timing0 { hactive = <640>; vactive = <480>; hback-porch = <112>;
arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts +1 -1
@@ -19,7 +19,7 @@ display0: LQ035Q7 { display-timings { native-mode = <&timing0>; - timing0: 240x320 { + timing0: timing0 { clock-frequency = <5500000>; hactive = <240>; vactive = <320>;
arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi +1 -1
@@ -322,7 +322,7 @@ &usbotg { &weim { status = "okay"; - nor: nor@0,0 { + nor: flash@0,0 { compatible = "cfi-flash"; reg = <0 0x00000000 0x02000000>; bank-width = <2>;
arch/arm/boot/dts/imx27.dtsi +3 -0
@@ -588,6 +588,9 @@ weim: weim@d8002000 { iram: sram@ffff4c00 { compatible = "mmio-sram"; reg = <0xffff4c00 0xb400>; + ranges = <0 0xffff4c00 0xb400>; + #address-cells = <1>; + #size-cells = <1>; }; }; };
arch/arm/boot/dts/imx28.dtsi +1 -1
@@ -982,7 +982,7 @@ etm: etm@80022000 { status = "disabled"; }; - dma_apbx: dma-apbx@80024000 { + dma_apbx: dma-controller@80024000 { compatible = "fsl,imx28-dma-apbx"; reg = <0x80024000 0x2000>; interrupts = <78 79 66 0
arch/arm/boot/dts/imx7d.dtsi +0 -3
@@ -209,9 +209,6 @@ pcie: pcie@33800000 { }; &ca_funnel_in_ports { - #address-cells = <1>; - #size-cells = <0>; - port@1 { reg = <1>; ca_funnel_in_port1: endpoint {
arch/arm/boot/dts/imx7s.dtsi +7 -3
@@ -173,7 +173,11 @@ funnel@30041000 { clock-names = "apb_pclk"; ca_funnel_in_ports: in-ports { - port { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; ca_funnel_in_port0: endpoint { remote-endpoint = <&etm0_out_port>; };
@@ -769,7 +773,7 @@ csi_from_csi_mux: endpoint { }; lcdif: lcdif@30730000 { - compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif"; + compatible = "fsl,imx7d-lcdif", "fsl,imx6sx-lcdif"; reg = <0x30730000 0x10000>; interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
@@ -1231,7 +1235,7 @@ dma_apbh: dma-controller@33000000 { gpmi: nand-controller@33002000{ compatible = "fsl,imx7d-gpmi-nand"; #address-cells = <1>; - #size-cells = <1>; + #size-cells = <0>; reg = <0x33002000 0x2000>, <0x33004000 0x4000>; reg-names = "gpmi-nand", "bch"; interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/boot/dts/rk3036.dtsi +11 -3
@@ -336,12 +336,20 @@ hdmi: hdmi@20034000 { pinctrl-0 = <&hdmi_ctl>; status = "disabled"; - hdmi_in: port { + ports { #address-cells = <1>; #size-cells = <0>; - hdmi_in_vop: endpoint@0 { + + hdmi_in: port@0 { reg = <0>; - remote-endpoint = <&vop_out_hdmi>; + + hdmi_in_vop: endpoint { + remote-endpoint = <&vop_out_hdmi>; + }; + }; + + hdmi_out: port@1 { + reg = <1>; }; }; };
arch/arm64/boot/dts/qcom/msm8996.dtsi +21 -0
@@ -139,6 +139,19 @@ memory { reg = <0 0 0 0>; }; + etm { + compatible = "qcom,coresight-remote-etm"; + + out-ports { + port { + modem_etm_out_funnel_in2: endpoint { + remote-endpoint = + <&funnel_in2_in_modem_etm>; + }; + }; + }; + }; + psci { compatible = "arm,psci-1.0"; method = "smc";
@@ -1374,6 +1387,14 @@ funnel@3023000 { clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; clock-names = "apb_pclk", "atclk"; + in-ports { + port { + funnel_in2_in_modem_etm: endpoint { + remote-endpoint = + <&modem_etm_out_funnel_in2>; + }; + }; + }; out-ports { port {
arch/arm64/boot/dts/qcom/msm8998.dtsi +20 -12
@@ -1577,9 +1577,11 @@ etm5: etm@7c40000 { cpu = <&CPU4>; - port{ - etm4_out: endpoint { - remote-endpoint = <&apss_funnel_in4>; + out-ports { + port{ + etm4_out: endpoint { + remote-endpoint = <&apss_funnel_in4>; + }; }; }; };
@@ -1594,9 +1596,11 @@ etm6: etm@7d40000 { cpu = <&CPU5>; - port{ - etm5_out: endpoint { - remote-endpoint = <&apss_funnel_in5>; + out-ports { + port{ + etm5_out: endpoint { + remote-endpoint = <&apss_funnel_in5>; + }; }; }; };
@@ -1611,9 +1615,11 @@ etm7: etm@7e40000 { cpu = <&CPU6>; - port{ - etm6_out: endpoint { - remote-endpoint = <&apss_funnel_in6>; + out-ports { + port{ + etm6_out: endpoint { + remote-endpoint = <&apss_funnel_in6>; + }; }; }; };
@@ -1628,9 +1634,11 @@ etm8: etm@7f40000 { cpu = <&CPU7>; - port{ - etm7_out: endpoint { - remote-endpoint = <&apss_funnel_in7>; + out-ports { + port{ + etm7_out: endpoint { + remote-endpoint = <&apss_funnel_in7>; + }; }; }; };
arch/arm64/boot/dts/qcom/sc7180.dtsi +4 -4
@@ -2688,10 +2688,10 @@ usb_1: usb@a6f8800 { <&gcc GCC_USB30_PRIM_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/qcom/sdm845.dtsi +8 -8
@@ -3565,10 +3565,10 @@ usb_1: usb@a6f8800 { <&gcc GCC_USB30_PRIM_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&intc GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc_intc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
@@ -3613,10 +3613,10 @@ usb_2: usb@a8f8800 { <&gcc GCC_USB30_SEC_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <&intc GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 10 IRQ_TYPE_EDGE_BOTH>, + <&pdc_intc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/kernel/entry.S +6 -2
@@ -431,7 +431,9 @@ SYM_CODE_END(__swpan_exit_el0) .macro irq_stack_entry mov x19, sp // preserve the original sp - scs_save tsk // preserve the original shadow stack +#ifdef CONFIG_SHADOW_CALL_STACK + mov x24, scs_sp // preserve the original shadow stack +#endif /* * Compare sp with the base of the task stack.
@@ -465,7 +467,9 @@ SYM_CODE_END(__swpan_exit_el0) */ .macro irq_stack_exit mov sp, x19 - scs_load_current +#ifdef CONFIG_SHADOW_CALL_STACK + mov scs_sp, x24 +#endif .endm /* GPRs used by entry code */
arch/arm64/kernel/perf_event.c +5 -1
@@ -171,7 +171,11 @@ armv8pmu_events_sysfs_show(struct device *dev, }).attr.attr)static struct attribute *armv8_pmuv3_event_attrs[] = { -ARMV8_EVENT_ATTR (sw_incr,ARMV8_PMUV3_PERFCTR_SW_INCR ), +/* +* Don't expose the sw_incr event in /sys. It's not usable as writes to +* PMSWINC_EL0 will trap as PMUSERENR.{SW,EN}=={0,0} and event rotation +* means we don't have a fixed event<->counter relationship regardless. +*/ ARMV8_EVENT_ATTR (l1i_cache_refill,ARMV8_PMUV3_PERFCTR_L1I_CACHE_REFILL ),ARMV8_EVENT_ATTR (l1i_tlb_refill,ARMV8_PMUV3_PERFCTR_L1I_TLB_REFILL ),ARMV8_EVENT_ATTR (l1d_cache_refill,ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL ),
arch/mips/include/asm/checksum.h +2 -1
@@ -242,7 +242,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, " .set pop" : "=&r" (sum), "=&r" (tmp) : "r" (saddr), "r" (daddr), - "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)); + "0" (htonl(len)), "r" (htonl(proto)), "r" (sum) + : "memory");return csum_fold (sum); }
arch/mips/kernel/elf.c +6 -0
@@ -11,6 +11,7 @@#include <asm/cpu-features.h> #include <asm/cpu-info.h> +#include <asm/fpu.h> #ifdef CONFIG_MIPS_FP_SUPPORT
@@ -309,6 +310,11 @@ void mips_set_personality_nan(struct arch_elf_state *state)struct cpuinfo_mips *c = &boot_cpu_data;struct task_struct *t = current; +/* Do this early so t->thread.fpu.fcr31 won't be clobbered in case +* we are preempted before the lose_fpu(0) in start_thread. +*/ +lose_fpu (0 ); + t->thread.fpu.fcr31 = c->fpu_csr31;switch (state->nan_2008) {case 0 :
arch/mips/mm/init.c +5 -10
@@ -421,7 +421,12 @@ void __init paging_init(void) (highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10)); max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn; } + + max_mapnr = highend_pfn ? highend_pfn : max_low_pfn; +#else + max_mapnr = max_low_pfn;#endif + high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT );free_area_init (max_zone_pfns); }
@@ -457,16 +462,6 @@ void __init mem_init(void)*/ BUILD_BUG_ON (IS_ENABLED (CONFIG_32BIT ) && (_PFN_SHIFT >PAGE_SHIFT )); -#ifdef CONFIG_HIGHMEM -#ifdef CONFIG_DISCONTIGMEM -#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet" -#endif - max_mapnr = highend_pfn ? highend_pfn : max_low_pfn; -#else - max_mapnr = max_low_pfn; -#endif - high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT ); -maar_init ();memblock_free_all ();setup_zero_pages ();/* Setup zeroed pages. */
arch/parisc/kernel/firmware.c +2 -2
@@ -123,10 +123,10 @@ static unsigned long f_extend(unsigned long address)#ifdef CONFIG_64BIT if (unlikely (parisc_narrow_firmware)) {if ((address &0xff000000 ) ==0xf0000000 ) -return 0xf0f0f0f000000000UL | (u32 )address; +return (0xfffffff0UL <<32 ) | (u32 )address;if ((address &0xf0000000 ) ==0xf0000000 ) -return 0xffffffff00000000UL | (u32 )address; +return (0xffffffffUL <<32 ) | (u32 )address; }#endif return address;
arch/powerpc/include/asm/mmu.h +4 -0
@@ -390,5 +390,9 @@ extern void *abatron_pteptrs[2];#include <asm/nohash/mmu.h> #endif +#if defined(CONFIG_FA_DUMP ) || defined(CONFIG_PRESERVE_FA_DUMP ) +#define __HAVE_ARCH_RESERVED_KERNEL_PAGES +#endif +#endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_MMU_H_ */
arch/powerpc/include/asm/mmzone.h +0 -3
@@ -42,9 +42,6 @@ u64 memory_hotplug_max(void);#else #define memory_hotplug_max () memblock_end_of_DRAM()#endif /* CONFIG_NEED_MULTIPLE_NODES */ -#ifdef CONFIG_FA_DUMP -#define __HAVE_ARCH_RESERVED_KERNEL_PAGES -#endif #ifdef CONFIG_MEMORY_HOTPLUG extern int create_section_mapping(unsigned long start, unsigned long end,
arch/powerpc/kernel/traps.c +2 -0
@@ -1432,10 +1432,12 @@ static int emulate_instruction(struct pt_regs *regs)return -EINVAL ; } +#ifdef CONFIG_GENERIC_BUG int is_valid_bugaddr (unsigned long addr) {return is_kernel_addr (addr); } +#endif #ifdef CONFIG_MATH_EMULATION static int emulate_math (struct pt_regs *regs)
arch/powerpc/kvm/book3s_hv_uvmem.c +1 -1
@@ -250,7 +250,7 @@ int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot) p =kzalloc (sizeof (*p),GFP_KERNEL );if (!p)return -ENOMEM ; - p->pfns =vzalloc (array_size (slot->npages,sizeof (*p->pfns))); + p->pfns =vcalloc (slot->npages,sizeof (*p->pfns));if (!p->pfns) {kfree (p);return -ENOMEM ;
arch/powerpc/lib/sstep.c +10 -0
@@ -512,6 +512,8 @@ static int do_fp_load(struct instruction_op *op, unsigned long ea, } u; nb =GETSIZE (op->type); +if (nb >sizeof (u)) +return -EINVAL ;if (!address_ok (regs, ea, nb))return -EFAULT ; rn = op->reg;
@@ -562,6 +564,8 @@ static int do_fp_store(struct instruction_op *op, unsigned long ea, } u; nb =GETSIZE (op->type); +if (nb >sizeof (u)) +return -EINVAL ;if (!address_ok (regs, ea, nb))return -EFAULT ; rn = op->reg;
@@ -606,6 +610,9 @@ static nokprobe_inline int do_vec_load(int rn, unsigned long ea,u8 b[sizeof (__vector128)]; } u = {}; +if (size >sizeof (u)) +return -EINVAL ; +if (!address_ok (regs, ea & ~0xfUL ,16 ))return -EFAULT ;/* align to multiple of size */
@@ -633,6 +640,9 @@ static nokprobe_inline int do_vec_store(int rn, unsigned long ea,u8 b[sizeof (__vector128)]; } u; +if (size >sizeof (u)) +return -EINVAL ; +if (!address_ok (regs, ea & ~0xfUL ,16 ))return -EFAULT ;/* align to multiple of size */
arch/powerpc/mm/book3s64/pgtable.c +2 -0
@@ -446,6 +446,7 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,set_pte_at (vma->vm_mm, addr, ptep, pte); } +#ifdef CONFIG_TRANSPARENT_HUGEPAGE /* * For hash translation mode, we use the deposited table to store hash slot * information and they are stored at PTRS_PER_PMD offset from related pmd
@@ -467,6 +468,7 @@ int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl, return true; } +#endif /* * Does the CPU support tlbie?
arch/powerpc/mm/init-common.c +3 -2
@@ -111,7 +111,7 @@ void pgtable_cache_add(unsigned int shift)* as to leave enough 0 bits in the address to contain it. */ unsigned long minalign =max (MAX_PGTABLE_INDEX_SIZE +1 ,HUGEPD_SHIFT_MASK +1 ); -struct kmem_cache *new; +struct kmem_cache *new =NULL ;/* It would be nice if this was a BUILD_BUG_ON(), but at the * moment, gcc doesn't seem to recognize is_power_of_2 as a
@@ -124,7 +124,8 @@ void pgtable_cache_add(unsigned int shift) align = max_t(unsigned long, align, minalign); name =kasprintf (GFP_KERNEL ,"pgtable-2^%d" , shift); - new =kmem_cache_create (name, table_size, align,0 ,ctor (shift)); +if (name) + new =kmem_cache_create (name, table_size, align,0 ,ctor (shift));if (!new)panic ("Could not allocate pgtable cache for order %d" , shift);
arch/powerpc/mm/kasan/kasan_init_32.c +1 -0
@@ -64,6 +64,7 @@ int __init __weak kasan_init_region(void *start, size_t size)if (ret)return ret; + k_start = k_start &PAGE_MASK ; block =memblock_alloc (k_end - k_start,PAGE_SIZE );if (!block)return -ENOMEM ;
arch/s390/crypto/aes_s390.c +3 -1
@@ -600,7 +600,9 @@ static int ctr_aes_crypt(struct skcipher_request *req)* final block may be < AES_BLOCK_SIZE, copy only nbytes */ if (nbytes) { -cpacf_kmctr (sctx->fc, sctx->key, buf, walk.src.virt.addr, +memset (buf,0 ,AES_BLOCK_SIZE ); +memcpy (buf, walk.src.virt.addr, nbytes); +cpacf_kmctr (sctx->fc, sctx->key, buf, buf,AES_BLOCK_SIZE , walk.iv);memcpy (walk.dst.virt.addr, buf, nbytes);crypto_inc (walk.iv,AES_BLOCK_SIZE );
arch/s390/crypto/paes_s390.c +3 -1
@@ -676,9 +676,11 @@ static int ctr_paes_crypt(struct skcipher_request *req)* final block may be < AES_BLOCK_SIZE, copy only nbytes */ if (nbytes) { +memset (buf,0 ,AES_BLOCK_SIZE ); +memcpy (buf, walk.src.virt.addr, nbytes);while (1 ) {if (cpacf_kmctr (ctx->fc, ¶m, buf, - walk.src.virt.addr,AES_BLOCK_SIZE , + buf,AES_BLOCK_SIZE , walk.iv) ==AES_BLOCK_SIZE )break ;if (__paes_convert_key (ctx))
arch/s390/kernel/ptrace.c +3 -3
@@ -411,6 +411,7 @@ static int __poke_user(struct task_struct *child, addr_t addr, addr_t data)/* * floating point control reg. is in the thread structure */ +save_fpu_regs ();if ((unsigned int ) data !=0 ||test_fp_ctl (data >> (BITS_PER_LONG -32 )))return -EINVAL ;
@@ -771,6 +772,7 @@ static int __poke_user_compat(struct task_struct *child,/* * floating point control reg. is in the thread structure */ +save_fpu_regs ();if (test_fp_ctl (tmp))return -EINVAL ; child->thread.fpu.fpc = data;
@@ -1010,9 +1012,7 @@ static int s390_fpregs_set(struct task_struct *target,int rc =0 ;freg_t fprs[__NUM_FPRS]; -if (target == current) -save_fpu_regs (); - +save_fpu_regs ();if (MACHINE_HAS_VX )convert_vx_to_fp (fprs, target->thread.fpu.vxrs);else
arch/s390/kvm/kvm-s390.c +0 -5
@@ -3649,10 +3649,6 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)vcpu_load (vcpu); -if (test_fp_ctl (fpu->fpc)) { - ret = -EINVAL ; - goto out; - } vcpu->run->s.regs.fpc = fpu->fpc;if (MACHINE_HAS_VX ) convert_fp_to_vx((__vector128 *) vcpu->run->s.regs.vrs,
@@ -3660,7 +3656,6 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)else memcpy (vcpu->run->s.regs.fprs, &fpu->fprs,sizeof (fpu->fprs)); -out:vcpu_put (vcpu);return ret; }
arch/um/drivers/net_kern.c +1 -1
@@ -204,7 +204,7 @@ static int uml_net_close(struct net_device *dev)return 0 ; } -static int uml_net_start_xmit (struct sk_buff *skb,struct net_device *dev) +static netdev_tx_t uml_net_start_xmit (struct sk_buff *skb,struct net_device *dev) {struct uml_net_private *lp =netdev_priv (dev);unsigned long flags;
arch/um/include/shared/kern_util.h +1 -1
@@ -51,7 +51,7 @@ extern void do_uml_exitcalls(void);* Are we disallowed to sleep? Used to choose between GFP_KERNEL and * GFP_ATOMIC. */ -extern int __cant_sleep (void ); +extern int __uml_cant_sleep (void );extern int get_current_pid (void );extern int copy_from_user_proc (void *to,void *from,int size);extern int cpu (void );
arch/um/kernel/process.c +1 -1
@@ -221,7 +221,7 @@ void arch_cpu_idle(void)raw_local_irq_enable (); } -int __cant_sleep (void ) { +int __uml_cant_sleep (void ) {return in_atomic () ||irqs_disabled () ||in_interrupt ();/* Is in_interrupt() really needed? */ }
arch/um/os-Linux/helper.c +3 -3
@@ -45,7 +45,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv)unsigned long stack, sp;int pid, fds[2 ], ret, n; - stack =alloc_stack (0 ,__cant_sleep ()); + stack =alloc_stack (0 ,__uml_cant_sleep ());if (stack ==0 )return -ENOMEM ;
@@ -69,7 +69,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv) data.pre_data = pre_data; data.argv = argv; data.fd = fds[1 ]; - data.buf =__cant_sleep () ?uml_kmalloc (PATH_MAX ,UM_GFP_ATOMIC ) : + data.buf =__uml_cant_sleep () ?uml_kmalloc (PATH_MAX ,UM_GFP_ATOMIC ) :uml_kmalloc (PATH_MAX ,UM_GFP_KERNEL ); pid =clone (helper_child, (void *) sp,CLONE_VM , &data);if (pid <0 ) {
@@ -116,7 +116,7 @@ int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags,unsigned long stack, sp;int pid, status, err; - stack =alloc_stack (0 ,__cant_sleep ()); + stack =alloc_stack (0 ,__uml_cant_sleep ());if (stack ==0 )return -ENOMEM ;
arch/um/os-Linux/util.c +17 -2
@@ -166,23 +166,38 @@ __uml_setup("quiet", quiet_cmd_param,"quiet\n" " Turns off information messages during boot.\n\n"); +/* +* The os_info/os_warn functions will be called by helper threads. These +* have a very limited stack size and using the libc formatting functions +* may overflow the stack. +* So pull in the kernel vscnprintf and use that instead with a fixed +* on-stack buffer. +*/ +int vscnprintf (char *buf,size_t size,const char *fmt,va_list args); +void os_info (const char *fmt, ...) { +char buf[256 ];va_list list; +int len;if (quiet_info)return ;va_start (list, fmt); -vfprintf (stderr, fmt, list); + len =vscnprintf (buf,sizeof (buf), fmt, list); +fwrite (buf, len,1 , stderr);va_end (list); }void os_warn (const char *fmt, ...) { +char buf[256 ];va_list list; +int len;va_start (list, fmt); -vfprintf (stderr, fmt, list); + len =vscnprintf (buf,sizeof (buf), fmt, list); +fwrite (buf, len,1 , stderr);va_end (list); }
arch/x86/Kconfig.cpu +1 -1
@@ -379,7 +379,7 @@ config X86_CMOV config X86_MINIMUM_CPU_FAMILY int default "64" if X86_64 - default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCRUSOE || MCORE2 || MK7 || MK8) + default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCORE2 || MK7 || MK8) default "5" if X86_32 && X86_CMPXCHG64 default "4"
arch/x86/boot/compressed/ident_map_64.c +5 -0
@@ -367,3 +367,8 @@ void do_boot_page_fault(struct pt_regs *regs, unsigned long error_code)*/ add_identity_map (address, end); } + +void do_boot_nmi_trap (struct pt_regs *regs,unsigned long error_code) +{ +/* Empty handler to ignore NMI during early boot */ +}
arch/x86/boot/compressed/idt_64.c +1 -0
@@ -45,6 +45,7 @@ void load_stage2_idt(void) boot_idt_desc.address = (unsigned long )boot_idt;set_idt_entry (X86_TRAP_PF , boot_page_fault); +set_idt_entry (X86_TRAP_NMI , boot_nmi_trap);#ifdef CONFIG_AMD_MEM_ENCRYPT set_idt_entry (X86_TRAP_VC , boot_stage2_vc);
arch/x86/boot/compressed/idt_handlers_64.S +1 -0
@@ -70,6 +70,7 @@ SYM_FUNC_END(\name) .code64 EXCEPTION_HANDLER boot_page_fault do_boot_page_fault error_code=1 +EXCEPTION_HANDLER boot_nmi_trap do_boot_nmi_trap error_code=0 #ifdef CONFIG_AMD_MEM_ENCRYPT EXCEPTION_HANDLER boot_stage1_vc do_vc_no_ghcb error_code=1
arch/x86/boot/compressed/misc.h +1 -0
@@ -156,6 +156,7 @@ extern struct desc_ptr boot_idt_desc;/* IDT Entry Points */ void boot_page_fault (void ); +void boot_nmi_trap (void );void boot_stage1_vc (void );void boot_stage2_vc (void );
arch/x86/include/asm/syscall_wrapper.h +21 -4
@@ -58,12 +58,29 @@ extern long __ia32_sys_ni_syscall(const struct pt_regs *regs); ,,regs->di,,regs->si,,regs->dx \ ,,regs->r10,,regs->r8,,regs->r9) \ + +/* SYSCALL_PT_ARGS is Adapted from s390x */ +#define SYSCALL_PT_ARG6 (m, t1, t2, t3, t4, t5, t6) \ + SYSCALL_PT_ARG5(m, t1, t2, t3, t4, t5), m(t6, (regs->bp)) +#define SYSCALL_PT_ARG5 (m, t1, t2, t3, t4, t5) \ + SYSCALL_PT_ARG4(m, t1, t2, t3, t4), m(t5, (regs->di)) +#define SYSCALL_PT_ARG4 (m, t1, t2, t3, t4) \ + SYSCALL_PT_ARG3(m, t1, t2, t3), m(t4, (regs->si)) +#define SYSCALL_PT_ARG3 (m, t1, t2, t3) \ + SYSCALL_PT_ARG2(m, t1, t2), m(t3, (regs->dx)) +#define SYSCALL_PT_ARG2 (m, t1, t2) \ + SYSCALL_PT_ARG1(m, t1), m(t2, (regs->cx)) +#define SYSCALL_PT_ARG1 (m, t1) m(t1, (regs->bx)) +#define SYSCALL_PT_ARGS (x, ...) SYSCALL_PT_ARG##x(__VA_ARGS__) + +#define __SC_COMPAT_CAST (t, a) \ + (__typeof(__builtin_choose_expr(__TYPE_IS_L(t), 0, 0U))) \ + (unsigned int)a +/* Mapping of registers to parameters for syscalls on i386 */ #define SC_IA32_REGS_TO_ARGS (x, ...) \ - __MAP(x,__SC_ARGS \ - ,,(unsigned int)regs->bx,,(unsigned int)regs->cx \ - ,,(unsigned int)regs->dx,,(unsigned int)regs->si \ - ,,(unsigned int)regs->di,,(unsigned int)regs->bp) + SYSCALL_PT_ARGS(x, __SC_COMPAT_CAST, \ + __MAP(x, __SC_TYPE, __VA_ARGS__)) \#define __SYS_STUB0 (abi, name) \ long __##abi##_##name(const struct pt_regs *regs); \
arch/x86/kernel/cpu/mce/core.c +16 -0
@@ -44,6 +44,7 @@#include <linux/sync_core.h> #include <linux/task_work.h> #include <linux/hardirq.h> +#include <linux/kexec.h> #include <asm/intel-family.h> #include <asm/processor.h>
@@ -274,6 +275,7 @@ static noinstr void mce_panic(const char *msg, struct mce *final, char *exp)struct llist_node *pending;struct mce_evt_llist *l;int apei_err =0 ; +struct page *p;/* * Allow instrumentation around external facilities usage. Not that it
@@ -329,6 +331,20 @@ static noinstr void mce_panic(const char *msg, struct mce *final, char *exp)if (!fake_panic) {if (panic_timeout ==0 ) panic_timeout = mca_cfg.panic_timeout; + +/* +* Kdump skips the poisoned page in order to avoid +* touching the error bits again. Poison the page even +* if the error is fatal and the machine is about to +* panic. +*/ +if (kexec_crash_loaded ()) { +if (final && (final->status &MCI_STATUS_ADDRV )) { + p =pfn_to_online_page (final->addr >>PAGE_SHIFT ); +if (p) +SetPageHWPoison (p); + } + }panic (msg); }else pr_emerg (HW_ERR "Fake kernel panic: %s\n" , msg);
arch/x86/kvm/mmu/page_track.c +1 -1
@@ -35,7 +35,7 @@ int kvm_page_track_create_memslot(struct kvm_memory_slot *slot,for (i =0 ; i <KVM_PAGE_TRACK_MAX ; i++) { slot->arch.gfn_track[i] = -kvcalloc (npages,sizeof (*slot->arch.gfn_track[i]), +__vcalloc (npages,sizeof (*slot->arch.gfn_track[i]),GFP_KERNEL_ACCOUNT );if (!slot->arch.gfn_track[i]) goto track_free;
arch/x86/kvm/x86.c +2 -2
@@ -10826,14 +10826,14 @@ static int kvm_alloc_memslot_metadata(struct kvm_memory_slot *slot, slot->base_gfn, level) + 1; slot->arch.rmap[i] = -kvcalloc (lpages,sizeof (*slot->arch.rmap[i]), +__vcalloc (lpages,sizeof (*slot->arch.rmap[i]),GFP_KERNEL_ACCOUNT );if (!slot->arch.rmap[i]) goto out_free;if (i ==0 )continue ; - linfo =kvcalloc (lpages,sizeof (*linfo),GFP_KERNEL_ACCOUNT ); + linfo =__vcalloc (lpages,sizeof (*linfo),GFP_KERNEL_ACCOUNT );if (!linfo) goto out_free;
arch/x86/mm/ident_map.c +18 -5
@@ -26,18 +26,31 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page,for (; addr < end; addr = next) {pud_t *pud = pud_page +pud_index (addr);pmd_t *pmd; +bool use_gbpage; next = (addr &PUD_MASK ) +PUD_SIZE ;if (next > end) next = end; -if (info->direct_gbpages) { -pud_t pudval; +/* if this is already a gbpage, this portion is already mapped */ +if (pud_large (*pud)) +continue ; + +/* Is using a gbpage allowed? */ + use_gbpage = info->direct_gbpages; -if (pud_present (*pud)) -continue ; +/* Don't use gbpage if it maps more than the requested region. */ +/* at the begining: */ + use_gbpage &= ((addr & ~PUD_MASK ) ==0 ); +/* ... or at the end: */ + use_gbpage &= ((next & ~PUD_MASK ) ==0 ); + +/* Never overwrite existing mappings */ + use_gbpage &= !pud_present (*pud); + +if (use_gbpage) { +pud_t pudval; - addr &=PUD_MASK ; pudval =__pud ((addr - info->offset) | info->page_flag);set_pud (pud, pudval);continue ;
block/bio.c +4 -5
@@ -770,7 +770,7 @@ static bool bio_try_merge_hw_seg(struct request_queue *q, struct bio *bio,if ((addr1 | mask) != (addr2 | mask))return false; -if (bv->bv_len + len >queue_max_segment_size (q)) +if (len >queue_max_segment_size (q) - bv->bv_len)return false;return __bio_try_merge_page (bio, page, len, offset, same_page); }
@@ -954,7 +954,7 @@ void bio_release_pages(struct bio *bio, bool mark_dirty)return ;bio_for_each_segment_all (bvec, bio, iter_all) { -if (mark_dirty && !PageCompound (bvec->bv_page)) +if (mark_dirty)set_page_dirty_lock (bvec->bv_page);put_page (bvec->bv_page); }
@@ -1326,8 +1326,7 @@ void bio_set_pages_dirty(struct bio *bio)struct bvec_iter_all iter_all;bio_for_each_segment_all (bvec, bio, iter_all) { -if (!PageCompound (bvec->bv_page)) -set_page_dirty_lock (bvec->bv_page); +set_page_dirty_lock (bvec->bv_page); } }
@@ -1375,7 +1374,7 @@ void bio_check_pages_dirty(struct bio *bio)struct bvec_iter_all iter_all;bio_for_each_segment_all (bvec, bio, iter_all) { -if (!PageDirty (bvec->bv_page) && !PageCompound (bvec->bv_page)) +if (!PageDirty (bvec->bv_page)) goto defer; }
block/blk-iocost.c +7 -0
@@ -1296,6 +1296,13 @@ static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now)lockdep_assert_held (&iocg->waitq.lock); +/* +* If the delay is set by another CPU, we may be in the past. No need to +* change anything if so. This avoids decay calculation underflow. +*/ +if (time_before64 (now->now, iocg->delay_at)) +return false; +/* calculate the current delay in effect - 1/2 every second */ tdelta = now->now - iocg->delay_at;if (iocg->delay)
block/blk-mq.c +16 -0
@@ -1188,6 +1188,22 @@ static bool blk_mq_mark_tag_wait(struct blk_mq_hw_ctx *hctx, wait->flags &= ~WQ_FLAG_EXCLUSIVE ;__add_wait_queue (wq, wait); +/* +* Add one explicit barrier since blk_mq_get_driver_tag() may +* not imply barrier in case of failure. +* +* Order adding us to wait queue and allocating driver tag. +* +* The pair is the one implied in sbitmap_queue_wake_up() which +* orders clearing sbitmap tag bits and waitqueue_active() in +* __sbitmap_queue_wake_up(), since waitqueue_active() is lockless +* +* Otherwise, re-order of adding wait queue and getting driver tag +* may cause __sbitmap_queue_wake_up() to wake up nothing because +* the waitqueue_active() may not observe us in wait queue. +*/ +smp_mb (); +/* * It's possible that a tag was freed in the window between the * allocation failure and adding the hardware queue to the wait
crypto/algapi.c +1 -0
@@ -258,6 +258,7 @@ static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg) }if (!strcmp (q->cra_driver_name, alg->cra_name) || + !strcmp (q->cra_driver_name, alg->cra_driver_name) || !strcmp (q->cra_name, alg->cra_driver_name)) goto err; }
drivers/acpi/acpi_extlog.c +3 -2
@@ -308,9 +308,10 @@ static int __init extlog_init(void) static void __exit extlog_exit(void) {mce_unregister_decode_chain (&extlog_mce_dec); - ((struct extlog_l1_head *)extlog_l1_addr)->flags &= ~FLAG_OS_OPTIN ; -if (extlog_l1_addr) +if (extlog_l1_addr) { + ((struct extlog_l1_head *)extlog_l1_addr)->flags &= ~FLAG_OS_OPTIN ;acpi_os_unmap_iomem (extlog_l1_addr, l1_size); + }if (elog_addr)acpi_os_unmap_iomem (elog_addr, elog_size);release_mem_region (elog_base, elog_size);
drivers/acpi/acpi_video.c +9 -0
@@ -568,6 +568,15 @@ static const struct dmi_system_id video_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3350"), }, }, + { + .callback = video_set_report_key_events, + .driver_data = (void *)((uintptr_t)REPORT_BRIGHTNESS_KEY_EVENTS), + .ident = "COLORFUL X15 AT 23", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "COLORFUL"), + DMI_MATCH(DMI_PRODUCT_NAME, "X15 AT 23"), + }, + },/* * Some machines change the brightness themselves when a brightness * hotkey gets pressed, despite us telling them not to. In this case
drivers/acpi/apei/ghes.c +23 -6
@@ -99,6 +99,20 @@ static inline bool is_hest_type_generic_v2(struct ghes *ghes)return ghes->generic->header.type ==ACPI_HEST_TYPE_GENERIC_ERROR_V2 ; } +/* +* A platform may describe one error source for the handling of synchronous +* errors (e.g. MCE or SEA), or for handling asynchronous errors (e.g. SCI +* or External Interrupt). On x86, the HEST notifications are always +* asynchronous, so only SEA on ARM is delivered as a synchronous +* notification. +*/ +static inline bool is_hest_sync_notify (struct ghes *ghes) +{ +u8 notify_type = ghes->generic->notify.type; + +return notify_type ==ACPI_HEST_NOTIFY_SEA ; +} +/* * This driver isn't really modular, however for the time being, * continuing to use module_param is the easiest way to remain
@@ -461,7 +475,7 @@ static bool ghes_do_memory_failure(u64 physical_addr, int flags) }static bool ghes_handle_memory_failure (struct acpi_hest_generic_data *gdata, -int sev) +int sev,bool sync) {int flags =-1 ;int sec_sev =ghes_severity (gdata->error_severity);
@@ -475,7 +489,7 @@ static bool ghes_handle_memory_failure(struct acpi_hest_generic_data *gdata, (gdata->flags & CPER_SEC_ERROR_THRESHOLD_EXCEEDED)) flags =MF_SOFT_OFFLINE ;if (sev ==GHES_SEV_RECOVERABLE && sec_sev ==GHES_SEV_RECOVERABLE ) - flags =0 ; + flags = sync ?MF_ACTION_REQUIRED :0 ;if (flags !=-1 )return ghes_do_memory_failure (mem_err->physical_addr, flags);
@@ -483,9 +497,11 @@ static bool ghes_handle_memory_failure(struct acpi_hest_generic_data *gdata,return false; } -static bool ghes_handle_arm_hw_error (struct acpi_hest_generic_data *gdata,int sev) +static bool ghes_handle_arm_hw_error (struct acpi_hest_generic_data *gdata, +int sev,bool sync) {struct cper_sec_proc_arm *err =acpi_hest_get_payload (gdata); +int flags = sync ?MF_ACTION_REQUIRED :0 ;bool queued = false;int sec_sev, i;char *p;
@@ -510,7 +526,7 @@ static bool ghes_handle_arm_hw_error(struct acpi_hest_generic_data *gdata, int s* and don't filter out 'corrected' error here. */ if (is_cache && has_pa) { - queued =ghes_do_memory_failure (err_info->physical_fault_addr,0 ); + queued =ghes_do_memory_failure (err_info->physical_fault_addr, flags); p += err_info->length;continue ; }
@@ -631,6 +647,7 @@ static bool ghes_do_proc(struct ghes *ghes,const guid_t *fru_id = &guid_null;char *fru_text ="" ;bool queued = false; +bool sync =is_hest_sync_notify (ghes); sev =ghes_severity (estatus->error_severity);apei_estatus_for_each_section (estatus, gdata) {
@@ -648,13 +665,13 @@ static bool ghes_do_proc(struct ghes *ghes,ghes_edac_report_mem_error (sev, mem_err);arch_apei_report_mem_error (sev, mem_err); - queued =ghes_handle_memory_failure (gdata, sev); + queued =ghes_handle_memory_failure (gdata, sev, sync); }else if (guid_equal (sec_type, &CPER_SEC_PCIE )) {ghes_handle_aer (gdata); }else if (guid_equal (sec_type, &CPER_SEC_PROC_ARM )) { - queued =ghes_handle_arm_hw_error (gdata, sev); + queued =ghes_handle_arm_hw_error (gdata, sev, sync); }else {void *err =acpi_hest_get_payload (gdata);
drivers/android/binder.c +10 -0
@@ -836,6 +836,16 @@ binder_enqueue_thread_work_ilocked(struct binder_thread *thread, {WARN_ON (!list_empty (&thread->waiting_thread_node));binder_enqueue_work_ilocked (work, &thread->todo); + +/* (e)poll-based threads require an explicit wakeup signal when +* queuing their own work; they rely on these events to consume +* messages without I/O block. Without it, threads risk waiting +* indefinitely without handling the work. +*/ +if (thread->looper &BINDER_LOOPER_STATE_POLL && + thread->pid == current->pid && !thread->process_todo) +wake_up_interruptible_sync (&thread->wait); + thread->process_todo = true; }
drivers/ata/libata-eh.c +1 -1
@@ -1607,7 +1607,7 @@ static unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc, }if (qc->flags &ATA_QCFLAG_SENSE_VALID ) { -int ret =scsi_check_sense (qc->scsicmd); +enum scsi_disposition ret =scsi_check_sense (qc->scsicmd);/* * SUCCESS here means that the sense code could be * evaluated and should be passed to the upper layers
drivers/atm/idt77252.c +2 -0
@@ -2936,6 +2936,8 @@ open_card_ubr0(struct idt77252_dev *card) vc->scq =alloc_scq (card, vc->class);if (!vc->scq) {printk ("%s: can't get SCQ.\n" , card->name); +kfree (card->vcs[0 ]); + card->vcs[0 ] =NULL ;return -ENOMEM ; }
drivers/base/power/domain.c +1 -1
@@ -958,7 +958,7 @@ static int __init genpd_power_off_unused(void)return 0 ; } -late_initcall (genpd_power_off_unused); +late_initcall_sync (genpd_power_off_unused);#ifdef CONFIG_PM_SLEEP
drivers/base/power/main.c +135 -116
488 lines not on this page · raw message
drivers/base/power/runtime.c +22 -0
@@ -1479,6 +1479,28 @@ void pm_runtime_enable(struct device *dev) }EXPORT_SYMBOL_GPL (pm_runtime_enable); +static void pm_runtime_disable_action (void *data) +{ +pm_runtime_dont_use_autosuspend (data); +pm_runtime_disable (data); +} + +/** +* devm_pm_runtime_enable - devres-enabled version of pm_runtime_enable. +* +* NOTE: this will also handle calling pm_runtime_dont_use_autosuspend() for +* you at driver exit time if needed. +* +* @dev: Device to handle. +*/ +int devm_pm_runtime_enable (struct device *dev) +{ +pm_runtime_enable (dev); + +return devm_add_action_or_reset (dev, pm_runtime_disable_action, dev); +} +EXPORT_SYMBOL_GPL (devm_pm_runtime_enable); +/** * pm_runtime_forbid - Block runtime PM of a device. * @dev: Device to handle.
drivers/block/rbd.c +14 -8
@@ -3517,14 +3517,15 @@ static bool rbd_lock_add_request(struct rbd_img_request *img_req)static void rbd_lock_del_request (struct rbd_img_request *img_req) {struct rbd_device *rbd_dev = img_req->rbd_dev; -bool need_wakeup; +bool need_wakeup = false;lockdep_assert_held (&rbd_dev->lock_rwsem);spin_lock (&rbd_dev->lock_lists_lock); -rbd_assert (!list_empty (&img_req->lock_item)); -list_del_init (&img_req->lock_item); - need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING && -list_empty (&rbd_dev->running_list)); +if (!list_empty (&img_req->lock_item)) { +list_del_init (&img_req->lock_item); + need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING && +list_empty (&rbd_dev->running_list)); + }spin_unlock (&rbd_dev->lock_lists_lock);if (need_wakeup)complete (&rbd_dev->releasing_wait);
@@ -3907,14 +3908,19 @@ static void wake_lock_waiters(struct rbd_device *rbd_dev, int result)return ; } -list_for_each_entry (img_req, &rbd_dev->acquiring_list, lock_item) { +while (!list_empty (&rbd_dev->acquiring_list)) { + img_req =list_first_entry (&rbd_dev->acquiring_list, + struct rbd_img_request, lock_item);mutex_lock (&img_req->state_mutex);rbd_assert (img_req->state ==RBD_IMG_EXCLUSIVE_LOCK ); +if (!result) +list_move_tail (&img_req->lock_item, + &rbd_dev->running_list); +else +list_del_init (&img_req->lock_item);rbd_img_schedule (img_req, result);mutex_unlock (&img_req->state_mutex); } - -list_splice_tail_init (&rbd_dev->acquiring_list, &rbd_dev->running_list); } static bool locker_equal(const struct ceph_locker *lhs,
drivers/block/rnbd/rnbd-srv.c +10 -9
@@ -591,6 +591,7 @@ static char *rnbd_srv_get_full_path(struct rnbd_srv_session *srv_sess, {char *full_path;char *a, *b; +int len; full_path =kmalloc (PATH_MAX ,GFP_KERNEL );if (!full_path)
@@ -602,19 +603,19 @@ static char *rnbd_srv_get_full_path(struct rnbd_srv_session *srv_sess,*/ a =strnstr (dev_search_path,"%SESSNAME%" ,sizeof (dev_search_path));if (a) { -int len = a - dev_search_path; + len = a - dev_search_path; len =snprintf (full_path,PATH_MAX ,"%.*s/%s/%s" , len, dev_search_path, srv_sess->sessname, dev_name); -if (len >=PATH_MAX ) { -pr_err ("Too long path: %s, %s, %s\n" , - dev_search_path, srv_sess->sessname, dev_name); -kfree (full_path); -return ERR_PTR (-EINVAL ); - } }else { -snprintf (full_path,PATH_MAX ,"%s/%s" , - dev_search_path, dev_name); + len =snprintf (full_path,PATH_MAX ,"%s/%s" , + dev_search_path, dev_name); + } +if (len >=PATH_MAX ) { +pr_err ("Too long path: %s, %s, %s\n" , + dev_search_path, srv_sess->sessname, dev_name); +kfree (full_path); +return ERR_PTR (-EINVAL ); }/* eliminitate duplicated slashes */
drivers/bluetooth/hci_qca.c +1 -0
@@ -1814,6 +1814,7 @@ static const struct qca_device_data qca_soc_data_wcn3998 = {static const struct qca_device_data qca_soc_data_qca6390 = { .soc_type =QCA_QCA6390 , .num_vregs =0 , + .capabilities =QCA_CAP_WIDEBAND_SPEECH |QCA_CAP_VALID_LE_STATES , };static void qca_power_shutdown (struct hci_uart *hu)
drivers/bus/mhi/host/main.c +4 -0
@@ -569,6 +569,8 @@ static int parse_xfer_event(struct mhi_controller *mhi_cntrl,mhi_del_ring_element (mhi_cntrl, tre_ring); local_rp = tre_ring->rp; +read_unlock_bh (&mhi_chan->lock); +/* notify client */ mhi_chan->xfer_cb (mhi_chan->mhi_dev, &result);
@@ -591,6 +593,8 @@ static int parse_xfer_event(struct mhi_controller *mhi_cntrl,kfree (buf_info->cb_buf); } } + +read_lock_bh (&mhi_chan->lock); }break ; }/* CC_EOT */
drivers/bus/moxtet.c +7 -0
@@ -832,6 +832,12 @@ static int moxtet_remove(struct spi_device *spi)return 0 ; } +static const struct spi_device_id moxtet_spi_ids[] = { + {"moxtet" }, + { }, +}; +MODULE_DEVICE_TABLE (spi, moxtet_spi_ids); +static const struct of_device_id moxtet_dt_ids[] = { { .compatible ="cznic,moxtet" }, {},
@@ -843,6 +849,7 @@ static struct spi_driver moxtet_spi_driver = { .name = "moxtet", .of_match_table = moxtet_dt_ids, }, + .id_table = moxtet_spi_ids, .probe = moxtet_probe, .remove = moxtet_remove, };
drivers/char/hw_random/core.c +21 -13
@@ -24,10 +24,13 @@#include <linux/random.h> #include <linux/sched.h> #include <linux/slab.h> +#include <linux/string.h> #include <linux/uaccess.h> #define RNG_MODULE_NAME "hw_random" +#define RNG_BUFFER_SIZE (SMP_CACHE_BYTES < 32 ? 32 : SMP_CACHE_BYTES) +static struct hwrng *current_rng;/* the current rng has been explicitly chosen by user via sysfs */ static int cur_rng_set_by_user;
@@ -59,7 +62,7 @@ static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size,static size_t rng_buffer_size (void ) { -return SMP_CACHE_BYTES <32 ?32 :SMP_CACHE_BYTES ; +return RNG_BUFFER_SIZE ; }static void add_early_randomness (struct hwrng *rng)
@@ -206,6 +209,7 @@ static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size,static ssize_t rng_dev_read (struct file *filp,char __user *buf,size_t size,loff_t *offp) { +u8 buffer[RNG_BUFFER_SIZE ];ssize_t ret =0 ;int err =0 ;int bytes_read, len;
@@ -233,34 +237,37 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf,if (bytes_read <0 ) { err = bytes_read; goto out_unlock_reading; + }else if (bytes_read ==0 && + (filp->f_flags &O_NONBLOCK )) { + err = -EAGAIN ; + goto out_unlock_reading; } + data_avail = bytes_read; } -if (!data_avail) { -if (filp->f_flags &O_NONBLOCK ) { - err = -EAGAIN ; - goto out_unlock_reading; - } - }else { - len = data_avail; + len = data_avail; +if (len) {if (len > size) len = size; data_avail -= len; -if (copy_to_user (buf + ret, rng_buffer + data_avail, - len)) { +memcpy (buffer, rng_buffer + data_avail, len); + } +mutex_unlock (&reading_mutex); +put_rng (rng); + +if (len) { +if (copy_to_user (buf + ret, buffer, len)) { err = -EFAULT ; - goto out_unlock_reading; + goto out; } size -= len; ret += len; } -mutex_unlock (&reading_mutex); -put_rng (rng);if (need_resched ())schedule_timeout_interruptible (1 );
@@ -271,6 +278,7 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf, } } out: +memzero_explicit (buffer,sizeof (buffer));return ret ? : err; out_unlock_reading:
drivers/clk/hisilicon/clk-hi3620.c +3 -1
@@ -467,8 +467,10 @@ static void __init hi3620_mmc_clk_init(struct device_node *node)return ; clk_data->clks =kcalloc (num,sizeof (*clk_data->clks),GFP_KERNEL ); -if (!clk_data->clks) +if (!clk_data->clks) { +kfree (clk_data);return ; + }for (i =0 ; i < num; i++) {struct hisi_mmc_clock *mmc_clk = &hi3620_mmc_clks[i];
drivers/clk/mmp/clk-of-pxa168.c +3 -0
@@ -258,18 +258,21 @@ static void __init pxa168_clk_init(struct device_node *np) pxa_unit->mpmu_base =of_iomap (np,0 );if (!pxa_unit->mpmu_base) {pr_err ("failed to map mpmu registers\n" ); +kfree (pxa_unit);return ; } pxa_unit->apmu_base =of_iomap (np,1 );if (!pxa_unit->apmu_base) {pr_err ("failed to map apmu registers\n" ); +kfree (pxa_unit);return ; } pxa_unit->apbc_base =of_iomap (np,2 );if (!pxa_unit->apbc_base) {pr_err ("failed to map apbc registers\n" ); +kfree (pxa_unit);return ; }
drivers/crypto/ccp/sev-dev.c +8 -2
@@ -304,10 +304,16 @@ EXPORT_SYMBOL_GPL(sev_platform_init);static int __sev_platform_shutdown_locked (int *error) { -struct sev_device *sev = psp_master->sev_data; +struct psp_device *psp = psp_master; +struct sev_device *sev;int ret; -if (!sev || sev->state ==SEV_STATE_UNINIT ) +if (!psp || !psp->sev_data) +return 0 ; + + sev = psp->sev_data; + +if (sev->state ==SEV_STATE_UNINIT )return 0 ; ret =__sev_do_cmd_locked (SEV_CMD_SHUTDOWN ,NULL , error);
drivers/crypto/stm32/stm32-crc32.c +1 -1
@@ -104,7 +104,7 @@ static struct stm32_crc *stm32_crc_get_next_crc(void)struct stm32_crc *crc;spin_lock_bh (&crc_list.lock); - crc = list_first_entry(&crc_list.dev_list, struct stm32_crc, list); + crc = list_first_entry_or_null(&crc_list.dev_list, struct stm32_crc, list);if (crc)list_move_tail (&crc->list, &crc_list.dev_list);spin_unlock_bh (&crc_list.lock);
drivers/devfreq/devfreq.c +22 -2
@@ -438,10 +438,14 @@ static void devfreq_monitor(struct work_struct *work)if (err)dev_err (&devfreq->dev,"dvfs failed with (%d) error\n" , err); +if (devfreq->stop_polling) + goto out; +queue_delayed_work (devfreq_wq, &devfreq->work,msecs_to_jiffies (devfreq->profile->polling_ms)); -mutex_unlock (&devfreq->lock); +out: +mutex_unlock (&devfreq->lock);trace_devfreq_monitor (devfreq); }
@@ -459,6 +463,10 @@ void devfreq_monitor_start(struct devfreq *devfreq)if (devfreq->governor->interrupt_driven)return ; +mutex_lock (&devfreq->lock); +if (delayed_work_pending (&devfreq->work)) + goto out; +switch (devfreq->profile->timer) {case DEVFREQ_TIMER_DEFERRABLE :INIT_DEFERRABLE_WORK (&devfreq->work, devfreq_monitor);
@@ -467,12 +475,16 @@ void devfreq_monitor_start(struct devfreq *devfreq)INIT_DELAYED_WORK (&devfreq->work, devfreq_monitor);break ;default : -return ; + goto out; }if (devfreq->profile->polling_ms)queue_delayed_work (devfreq_wq, &devfreq->work,msecs_to_jiffies (devfreq->profile->polling_ms)); + +out: + devfreq->stop_polling = false; +mutex_unlock (&devfreq->lock); }EXPORT_SYMBOL (devfreq_monitor_start);
@@ -489,6 +501,14 @@ void devfreq_monitor_stop(struct devfreq *devfreq)if (devfreq->governor->interrupt_driven)return ; +mutex_lock (&devfreq->lock); +if (devfreq->stop_polling) { +mutex_unlock (&devfreq->lock); +return ; + } + + devfreq->stop_polling = true; +mutex_unlock (&devfreq->lock);cancel_delayed_work_sync (&devfreq->work); }EXPORT_SYMBOL (devfreq_monitor_stop);
drivers/dma/dmaengine.c +3 -0
@@ -1108,6 +1108,9 @@ EXPORT_SYMBOL_GPL(dma_async_device_channel_register);static void __dma_async_device_channel_unregister (struct dma_device *device,struct dma_chan *chan) { +if (chan->local ==NULL ) +return ; +WARN_ONCE (!device->device_release && chan->client_count,"%s called while %d clients hold a reference\n" , __func__, chan->client_count);
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c +6 -4
@@ -38,15 +38,17 @@ static int dpaa2_qdma_alloc_chan_resources(struct dma_chan *chan)if (!dpaa2_chan->fd_pool) goto err; - dpaa2_chan->fl_pool =dma_pool_create ("fl_pool" , dev, -sizeof (struct dpaa2_fl_entry ), -sizeof (struct dpaa2_fl_entry ),0 ); + dpaa2_chan->fl_pool = +dma_pool_create ("fl_pool" , dev, +sizeof (struct dpaa2_fl_entry ) *3 , +sizeof (struct dpaa2_fl_entry ),0 ); +if (!dpaa2_chan->fl_pool) goto err_fd; dpaa2_chan->sdd_pool =dma_pool_create ("sdd_pool" , dev, -sizeof (struct dpaa2_qdma_sd_d ), +sizeof (struct dpaa2_qdma_sd_d ) *2 ,sizeof (struct dpaa2_qdma_sd_d ),0 );if (!dpaa2_chan->sdd_pool) goto err_fl;
drivers/dma/fsl-qdma.c +10 -17
@@ -514,11 +514,11 @@ static struct fsl_qdma_queue queue_temp = queue_head + i + (j * queue_num); queue_temp->cq = -dma_alloc_coherent (&pdev->dev, -sizeof (struct fsl_qdma_format ) * - queue_size[i], - &queue_temp->bus_addr, -GFP_KERNEL ); +dmam_alloc_coherent (&pdev->dev, +sizeof (struct fsl_qdma_format ) * + queue_size[i], + &queue_temp->bus_addr, +GFP_KERNEL );if (!queue_temp->cq)return NULL ; queue_temp->block_base = fsl_qdma->block_base +
@@ -563,11 +563,11 @@ static struct fsl_qdma_queue/* * Buffer for queue command */ - status_head->cq =dma_alloc_coherent (&pdev->dev, -sizeof (struct fsl_qdma_format ) * - status_size, - &status_head->bus_addr, -GFP_KERNEL ); + status_head->cq =dmam_alloc_coherent (&pdev->dev, +sizeof (struct fsl_qdma_format ) * + status_size, + &status_head->bus_addr, +GFP_KERNEL );if (!status_head->cq) {devm_kfree (&pdev->dev, status_head);return NULL ;
@@ -1272,8 +1272,6 @@ static void fsl_qdma_cleanup_vchan(struct dma_device *dmadev)static int fsl_qdma_remove (struct platform_device *pdev) { -int i; -struct fsl_qdma_queue *status;struct device_node *np = pdev->dev.of_node;struct fsl_qdma_engine *fsl_qdma =platform_get_drvdata (pdev);
@@ -1282,11 +1280,6 @@ static int fsl_qdma_remove(struct platform_device *pdev)of_dma_controller_free (np);dma_async_device_unregister (&fsl_qdma->dma_dev); -for (i =0 ; i < fsl_qdma->block_number; i++) { - status = fsl_qdma->status[i]; -dma_free_coherent (&pdev->dev,sizeof (struct fsl_qdma_format ) * - status->n_cq, status->cq, status->bus_addr); - }return 0 ; }
drivers/dma/ti/k3-udma.c +8 -2
@@ -2877,6 +2877,7 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc, {struct udma_chan *uc =to_udma_chan (&vc->chan);struct udma_desc *d; +u8 status;if (!vd)return ;
@@ -2886,12 +2887,12 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc,if (d->metadata_size)udma_fetch_epib (uc, d); -/* Provide residue information for the client */ if (result) {void *desc_vaddr =udma_curr_cppi5_desc_vaddr (d, d->desc_idx);if (cppi5_desc_get_type (desc_vaddr) ==CPPI5_INFO0_DESC_TYPE_VAL_HOST ) { +/* Provide residue information for the client */ result->residue = d->residue -cppi5_hdesc_get_pktlen (desc_vaddr);if (result->residue)
@@ -2900,7 +2901,12 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc, result->result =DMA_TRANS_NOERROR ; }else { result->residue =0 ; - result->result =DMA_TRANS_NOERROR ; +/* Propagate TR Response errors to the client */ + status = d->hwdesc[0 ].tr_resp_base->status; +if (status) + result->result =DMA_TRANS_ABORTED ; +else + result->result =DMA_TRANS_NOERROR ; } } }
drivers/firewire/core-device.c +3 -4
@@ -100,10 +100,9 @@ static int textual_leaf_to_string(const u32 *block, char *buf, size_t size)* @buf: where to put the string * @size: size of @buf, in bytes * -* The string is taken from a minimal ASCII text descriptor leaf after -* the immediate entry with @key. The string is zero-terminated. -* An overlong string is silently truncated such that it and the -* zero byte fit into @size. +* The string is taken from a minimal ASCII text descriptor leaf just after the entry with the +* @key. The string is zero-terminated. An overlong string is silently truncated such that it +* and the zero byte fit into @size. * * Returns strlen(buf) or a negative error code. */
drivers/gpio/gpio-eic-sprd.c +28 -4
@@ -318,20 +318,27 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)switch (flow_type) {case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IC ,1 );break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IC ,1 );break ;case IRQ_TYPE_EDGE_RISING :case IRQ_TYPE_EDGE_FALLING :case IRQ_TYPE_EDGE_BOTH : state =sprd_eic_get (chip, offset); -if (state) +if (state) {sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,0 ); -else +sprd_eic_update (chip, offset, +SPRD_EIC_DBNC_IC ,1 ); + }else {sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,1 ); +sprd_eic_update (chip, offset, +SPRD_EIC_DBNC_IC ,1 ); + }break ;default :return -ENOTSUPP ;
@@ -343,20 +350,27 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)switch (flow_type) {case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTCLR ,1 );break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTCLR ,1 );break ;case IRQ_TYPE_EDGE_RISING :case IRQ_TYPE_EDGE_FALLING :case IRQ_TYPE_EDGE_BOTH : state =sprd_eic_get (chip, offset); -if (state) +if (state) {sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,0 ); -else +sprd_eic_update (chip, offset, +SPRD_EIC_LATCH_INTCLR ,1 ); + }else {sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,1 ); +sprd_eic_update (chip, offset, +SPRD_EIC_LATCH_INTCLR ,1 ); + }break ;default :return -ENOTSUPP ;
@@ -370,29 +384,34 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;default :
@@ -405,29 +424,34 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;default :
drivers/gpio/gpiolib-acpi.c +14 -0
@@ -1479,6 +1479,20 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_wake = "INT33FF:01@0", }, }, + { + /* + * Spurious wakeups from TP_ATTN# pin + * Found in BIOS 0.35 + * https://gitlab.freedesktop.org/drm/amd/-/issues/3073 + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1619-04"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk) { + .ignore_wake = "PNP0C50:00@8", + }, + }, {} /* Terminating entry */ };
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +1 -1
@@ -88,7 +88,7 @@ struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f)return NULL ; fence = container_of(f, struct amdgpu_amdkfd_fence, base); -if (fence && f->ops == &amdkfd_fence_ops) +if (f->ops == &amdkfd_fence_ops)return fence;return NULL ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +1 -0
@@ -1184,6 +1184,7 @@ bool amdgpu_device_need_post(struct amdgpu_device *adev)return true; fw_ver = *((uint32_t *)adev->pm.fw->data +69 ); +release_firmware (adev->pm.fw);if (fw_ver <0x00160e00 )return true; }
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c +2 -1
@@ -241,7 +241,8 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, struct amdgpu_sync *sync,/* Never sync to VM updates either. */ if (fence_owner ==AMDGPU_FENCE_OWNER_VM && - owner !=AMDGPU_FENCE_OWNER_UNDEFINED ) + owner !=AMDGPU_FENCE_OWNER_UNDEFINED && + owner !=AMDGPU_FENCE_OWNER_KFD )continue ;/* Ignore fences depending on the sync mode */
drivers/gpu/drm/amd/display/dc/core/dc.c +4 -0
@@ -1440,6 +1440,10 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *cwait_for_no_pipes_pending (dc, context);/* pplib is notified if disp_num changed */ dc->hwss.optimize_bandwidth (dc, context); +/* Need to do otg sync again as otg could be out of sync due to otg +* workaround applied during clock update +*/ +dc_trigger_sync (dc, context); } context->stream_mask =get_stream_mask (dc, context);
drivers/gpu/drm/amd/pm/powerplay/hwmgr/process_pptables_v1_0.c +1 -1
@@ -204,7 +204,7 @@ static int get_platform_power_management_table(struct pp_hwmgr *hwmgr, ATOM_Tonga_PPM_Table *atom_ppm_table) { - struct phm_ppm_table *ptr = kzalloc(sizeof(ATOM_Tonga_PPM_Table), GFP_KERNEL); + struct phm_ppm_table *ptr = kzalloc(sizeof(*ptr), GFP_KERNEL);struct phm_ppt_v1_information *pp_table_information = (struct phm_ppt_v1_information *)(hwmgr->pptable);
drivers/gpu/drm/bridge/nxp-ptn3460.c +3 -3
@@ -54,13 +54,13 @@ static int ptn3460_read_bytes(struct ptn3460_bridge *ptn_bridge, char addr,int ret; ret =i2c_master_send (ptn_bridge->client, &addr,1 ); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to send i2c command, ret=%d\n" , ret);return ret; } ret =i2c_master_recv (ptn_bridge->client, buf, len); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to recv i2c data, ret=%d\n" , ret);return ret; }
@@ -78,7 +78,7 @@ static int ptn3460_write_byte(struct ptn3460_bridge *ptn_bridge, char addr, buf[1 ] = val; ret =i2c_master_send (ptn_bridge->client, buf,ARRAY_SIZE (buf)); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to send i2c command, ret=%d\n" , ret);return ret; }
drivers/gpu/drm/drm_file.c +1 -1
@@ -411,7 +411,7 @@ int drm_open(struct inode *inode, struct file *filp) {struct drm_device *dev;struct drm_minor *minor; -int retcode; +int retcode =0 ;int need_setup =0 ; minor =drm_minor_acquire (iminor (inode));
drivers/gpu/drm/drm_framebuffer.c +1 -1
@@ -570,7 +570,7 @@ int drm_mode_getfb2_ioctl(struct drm_device *dev,struct drm_mode_fb_cmd2 *r = data;struct drm_framebuffer *fb;unsigned int i; -int ret; +int ret =0 ;if (!drm_core_check_feature (dev,DRIVER_MODESET ))return -EINVAL ;
drivers/gpu/drm/drm_mipi_dsi.c +15 -2
@@ -300,7 +300,8 @@ static int mipi_dsi_remove_device_fn(struct device *dev, void *priv) {struct mipi_dsi_device *dsi =to_mipi_dsi_device (dev); -mipi_dsi_detach (dsi); +if (dsi->attached) +mipi_dsi_detach (dsi);mipi_dsi_device_unregister (dsi);return 0 ;
@@ -323,11 +324,18 @@ EXPORT_SYMBOL(mipi_dsi_host_unregister);int mipi_dsi_attach (struct mipi_dsi_device *dsi) {const struct mipi_dsi_host_ops *ops = dsi->host->ops; +int ret;if (!ops || !ops->attach)return -ENOSYS ; -return ops->attach (dsi->host, dsi); + ret = ops->attach (dsi->host, dsi); +if (ret) +return ret; + + dsi->attached = true; + +return 0 ; }EXPORT_SYMBOL (mipi_dsi_attach);
@@ -339,9 +347,14 @@ int mipi_dsi_detach(struct mipi_dsi_device *dsi) {const struct mipi_dsi_host_ops *ops = dsi->host->ops; +if (WARN_ON (!dsi->attached)) +return -EINVAL ; +if (!ops || !ops->detach)return -ENOSYS ; + dsi->attached = false; +return ops->detach (dsi->host, dsi); }EXPORT_SYMBOL (mipi_dsi_detach);
drivers/gpu/drm/drm_plane.c +1 -0
@@ -1213,6 +1213,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, out:if (fb)drm_framebuffer_put (fb); + fb =NULL ;if (plane->old_fb)drm_framebuffer_put (plane->old_fb); plane->old_fb =NULL ;
drivers/gpu/drm/exynos/exynos5433_drm_decon.c +2 -2
@@ -318,9 +318,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win,static void decon_win_set_pixfmt (struct decon_context *ctx,unsigned int win,struct drm_framebuffer *fb) { -struct exynos_drm_plane plane = ctx->planes[win]; +struct exynos_drm_plane *plane = &ctx->planes[win];struct exynos_drm_plane_state *state = -to_exynos_plane_state (plane.base.state); +to_exynos_plane_state (plane->base.state);unsigned int alpha = state->base.alpha;unsigned int pixel_alpha;unsigned long val;
drivers/gpu/drm/exynos/exynos_drm_drv.c +11 -0
@@ -344,6 +344,7 @@ static int exynos_drm_bind(struct device *dev)drm_mode_config_cleanup (drm);exynos_drm_cleanup_dma (drm);kfree (private); +dev_set_drvdata (dev,NULL ); err_free_drm:drm_dev_put (drm);
@@ -358,6 +359,7 @@ static void exynos_drm_unbind(struct device *dev)exynos_drm_fbdev_fini (drm);drm_kms_helper_poll_fini (drm); +drm_atomic_helper_shutdown (drm);component_unbind_all (drm->dev, drm);drm_mode_config_cleanup (drm);
@@ -395,9 +397,18 @@ static int exynos_drm_platform_remove(struct platform_device *pdev)return 0 ; } +static void exynos_drm_platform_shutdown (struct platform_device *pdev) +{ +struct drm_device *drm =platform_get_drvdata (pdev); + +if (drm) +drm_atomic_helper_shutdown (drm); +} +static struct platform_driver exynos_drm_platform_driver = { .probe = exynos_drm_platform_probe, .remove = exynos_drm_platform_remove, + .shutdown = exynos_drm_platform_shutdown, .driver = { .name ="exynos-drm" , .pm = &exynos_drm_pm_ops,
drivers/gpu/drm/exynos/exynos_drm_fimd.c +2 -2
@@ -637,9 +637,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win,static void fimd_win_set_pixfmt (struct fimd_context *ctx,unsigned int win,struct drm_framebuffer *fb,int width) { -struct exynos_drm_plane plane = ctx->planes[win]; +struct exynos_drm_plane *plane = &ctx->planes[win];struct exynos_drm_plane_state *state = -to_exynos_plane_state (plane.base.state); +to_exynos_plane_state (plane->base.state);uint32_t pixel_format = fb->format->format;unsigned int alpha = state->base.alpha;u32 val = WINCONx_ENWIN;
drivers/gpu/drm/exynos/exynos_drm_gsc.c +1 -1
@@ -1344,7 +1344,7 @@ static int __maybe_unused gsc_runtime_resume(struct device *dev)for (i =0 ; i < ctx->num_clocks; i++) { ret =clk_prepare_enable (ctx->clocks[i]);if (ret) { -while (--i >0 ) +while (--i >=0 )clk_disable_unprepare (ctx->clocks[i]);return ret; }
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +4 -1
@@ -45,6 +45,9 @@ (p) ? ((p)->hw_pp ? (p)->hw_pp->idx - PINGPONG_0 : -1) : -1, \ ##__VA_ARGS__) +#define DPU_ERROR_ENC_RATELIMITED (e, fmt, ...) DPU_ERROR_RATELIMITED("enc%d " fmt,\ + (e) ? (e)->base.base.id : -1, ##__VA_ARGS__) +/* * Two to anticipate panels that can do cmd/vid dynamic switching * plan is to create all possible physical encoder types, and switch between
@@ -2135,7 +2138,7 @@ static void dpu_encoder_frame_done_timeout(struct timer_list *t)return ; } -DPU_ERROR_ENC (dpu_enc,"frame done timeout\n" ); +DPU_ERROR_ENC_RATELIMITED (dpu_enc,"frame done timeout\n" ); event =DPU_ENCODER_FRAME_EVENT_ERROR ;trace_dpu_enc_frame_done_timeout (DRMID (drm_enc), event);
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +1 -0
@@ -52,6 +52,7 @@ } while (0)#define DPU_ERROR (fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__) +#define DPU_ERROR_RATELIMITED (fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__)/** * ktime_compare_safe - compare two ktime structures
drivers/gpu/drm/msm/dp/dp_link.c +7 -5
@@ -7,6 +7,7 @@#include <drm/drm_print.h> +#include "dp_reg.h" #include "dp_link.h" #include "dp_panel.h"
@@ -1078,7 +1079,7 @@ int dp_link_process_request(struct dp_link *dp_link)int dp_link_get_colorimetry_config (struct dp_link *dp_link) { -u32 cc; +u32 cc =DP_MISC0_COLORIMERY_CFG_LEGACY_RGB ;struct dp_link_private *link;if (!dp_link) {
@@ -1092,10 +1093,11 @@ int dp_link_get_colorimetry_config(struct dp_link *dp_link)* Unless a video pattern CTS test is ongoing, use RGB_VESA * Only RGB_VESA and RGB_CEA supported for now */ -if (dp_link_is_video_pattern_requested (link)) - cc = link->dp_link.test_video.test_dyn_range; -else - cc =DP_TEST_DYNAMIC_RANGE_VESA ; +if (dp_link_is_video_pattern_requested (link)) { +if (link->dp_link.test_video.test_dyn_range & +DP_TEST_DYNAMIC_RANGE_CEA ) + cc =DP_MISC0_COLORIMERY_CFG_CEA_RGB ; + }return cc; }
drivers/gpu/drm/msm/dp/dp_reg.h +3 -0
@@ -129,6 +129,9 @@#define DP_MISC0_COLORIMETRY_CFG_SHIFT (0x00000001)#define DP_MISC0_TEST_BITS_DEPTH_SHIFT (0x00000005) +#define DP_MISC0_COLORIMERY_CFG_LEGACY_RGB (0) +#define DP_MISC0_COLORIMERY_CFG_CEA_RGB (0x04) +#define REG_DP_VALID_BOUNDARY (0x00000030)#define REG_DP_VALID_BOUNDARY_2 (0x00000034)
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c +4 -0
@@ -710,6 +710,10 @@ static int dsi_phy_driver_probe(struct platform_device *pdev) goto fail; } + ret =devm_pm_runtime_enable (&pdev->dev); +if (ret) +return ret; +/* PLL init will call into clk_register which requires * register access, so we need to enable power and ahb clock. */
drivers/gpu/drm/nouveau/nouveau_vmm.c +3 -0
@@ -108,6 +108,9 @@ nouveau_vma_new(struct nouveau_bo *nvbo, struct nouveau_vmm *vmm, }else { ret =nvif_vmm_get (&vmm->vmm,PTES , false, mem->mem.page,0 , mem->mem.size, &tmp); +if (ret) + goto done; + vma->addr = tmp.addr; }
drivers/gpu/drm/panel/panel-simple.c +2 -0
@@ -3635,6 +3635,7 @@ static const struct panel_desc tianma_tm070jdhg30 = { }, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, .connector_type = DRM_MODE_CONNECTOR_LVDS, + .bus_flags = DRM_BUS_FLAG_DE_HIGH, };static const struct panel_desc tianma_tm070jvhg33 = {
@@ -3647,6 +3648,7 @@ static const struct panel_desc tianma_tm070jvhg33 = { }, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, .connector_type = DRM_MODE_CONNECTOR_LVDS, + .bus_flags = DRM_BUS_FLAG_DE_HIGH, };static const struct display_timing tianma_tm070rvhg71_timing = {
drivers/gpu/drm/tidss/tidss_crtc.c +5 -5
@@ -168,13 +168,13 @@ static void tidss_crtc_atomic_flush(struct drm_crtc *crtc,struct tidss_device *tidss =to_tidss (ddev);unsigned long flags; -dev_dbg (ddev->dev, -"%s: %s enabled %d, needs modeset %d, event %p\n" , __func__, - crtc->name,drm_atomic_crtc_needs_modeset (crtc->state), - crtc->state->enable, crtc->state->event); +dev_dbg (ddev->dev,"%s: %s is %sactive, %s modeset, event %p\n" , + __func__, crtc->name, crtc->state->active ?"" :"not " , +drm_atomic_crtc_needs_modeset (crtc->state) ?"needs" :"doesn't need" , + crtc->state->event);/* There is nothing to do if CRTC is not going to be enabled. */ -if (!crtc->state->enable) +if (!crtc->state->active)return ;/*
drivers/hid/hid-apple.c +32 -1
@@ -70,6 +70,28 @@ struct apple_key_translation {u8 flags; }; +static const struct apple_key_translation apple2021_fn_keys[] = { + {KEY_BACKSPACE ,KEY_DELETE }, + {KEY_ENTER ,KEY_INSERT }, + {KEY_F1 ,KEY_BRIGHTNESSDOWN ,APPLE_FLAG_FKEY }, + {KEY_F2 ,KEY_BRIGHTNESSUP ,APPLE_FLAG_FKEY }, + {KEY_F3 ,KEY_SCALE ,APPLE_FLAG_FKEY }, + {KEY_F4 ,KEY_SEARCH ,APPLE_FLAG_FKEY }, + {KEY_F5 ,KEY_MICMUTE ,APPLE_FLAG_FKEY }, + {KEY_F6 ,KEY_SLEEP ,APPLE_FLAG_FKEY }, + {KEY_F7 ,KEY_PREVIOUSSONG ,APPLE_FLAG_FKEY }, + {KEY_F8 ,KEY_PLAYPAUSE ,APPLE_FLAG_FKEY }, + {KEY_F9 ,KEY_NEXTSONG ,APPLE_FLAG_FKEY }, + {KEY_F10 ,KEY_MUTE ,APPLE_FLAG_FKEY }, + {KEY_F11 ,KEY_VOLUMEDOWN ,APPLE_FLAG_FKEY }, + {KEY_F12 ,KEY_VOLUMEUP ,APPLE_FLAG_FKEY }, + {KEY_UP ,KEY_PAGEUP }, + {KEY_DOWN ,KEY_PAGEDOWN }, + {KEY_LEFT ,KEY_HOME }, + {KEY_RIGHT ,KEY_END }, + { } +}; +static const struct apple_key_translation macbookair_fn_keys[] = { {KEY_BACKSPACE ,KEY_DELETE }, {KEY_ENTER ,KEY_INSERT },
@@ -204,7 +226,9 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, }if (fnmode) { -if (hid->product >=USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI && +if (hid->product ==USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 ) + table = apple2021_fn_keys; +else if (hid->product >=USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI && hid->product <=USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS ) table = macbookair_fn_keys;else if (hid->product <0x21d || hid->product >=0x300 )
@@ -363,6 +387,9 @@ static void apple_setup_input(struct input_dev *input)for (trans = apple_iso_keyboard; trans->from; trans++)set_bit (trans->to, input->keybit); +for (trans = apple2021_fn_keys; trans->from; trans++) +set_bit (trans->to, input->keybit); +if (swap_fn_leftctrl) {for (trans = swapped_fn_leftctrl_keys; trans->from; trans++)set_bit (trans->to, input->keybit);
@@ -624,6 +651,10 @@ static const struct hid_device_id apple_devices[] = { .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021), + .driver_data = APPLE_HAS_FN }, + { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021), + .driver_data = APPLE_HAS_FN }, { } };
drivers/hid/hid-ids.h +1 -0
@@ -173,6 +173,7 @@#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243 +#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 0x029c#define USB_VENDOR_ID_ASUS 0x0486#define USB_DEVICE_ID_ASUS_T91MT 0x0185
drivers/hid/hid-quirks.c +1 -0
@@ -309,6 +309,7 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_ANSI) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
Lines of this file are not shown. View the raw message.
drivers/hid/wacom_sys.c +43 -20
63 lines not on this page · raw message
drivers/iio/adc/ad7091r-base.c +171 -2
173 lines not on this page · raw message
drivers/infiniband/ulp/ipoib/ipoib_multicast.c +2 -5
Lines of this file are not shown. View the raw message.
drivers/md/md.c +44 -10
54 lines not on this page · raw message
drivers/media/pci/ddbridge/ddbridge-main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rga/rga.c +3 -12
Lines of this file are not shown. View the raw message.
drivers/media/usb/stk1160/stk1160-video.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/mmc/core/block.c +43 -3
46 lines not on this page · raw message
drivers/mmc/host/mmc_spi.c +5 -181
186 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +8 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmmii.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +32 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c +18 -18
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +30 -31
61 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +83 -94
177 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +20 -24
44 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c +17 -17
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +53 -52
105 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +6 -45
51 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +22 -22
44 lines not on this page · raw message
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c +77 -72
149 lines not on this page · raw message
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +26 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c +15 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_dev.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_dev.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/common.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +57 -1
58 lines not on this page · raw message
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ralink/rt2x00/rt2x00mac.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +12 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/phy.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8723be/phy.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/xen-netback/netback.c +40 -44
84 lines not on this page · raw message
drivers/pci/controller/dwc/pcie-designware-ep.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/phy/renesas/phy-rcar-gen3-usb2.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/regulator/core.c +30 -26
56 lines not on this page · raw message
drivers/scsi/device_handler/scsi_dh_alua.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/device_handler/scsi_dh_emc.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/device_handler/scsi_dh_rdac.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/scsi_error.c +39 -34
73 lines not on this page · raw message
drivers/staging/iio/impedance-analyzer/ad5933.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/cdns3/gadget.c +112 -38
150 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +18 -2
Lines of this file are not shown. View the raw message.
drivers/xen/gntdev-dmabuf.c +25 -25
50 lines not on this page · raw message
fs/btrfs/inode.c +20 -23
43 lines not on this page · raw message
fs/cifs/smb2pdu.h +24 -18
42 lines not on this page · raw message
fs/jfs/jfs_dmap.c +31 -26
57 lines not on this page · raw message
fs/namei.c +37 -23
60 lines not on this page · raw message
include/uapi/linux/netfilter/nf_tables.h +2 -0
Lines of this file are not shown. View the raw message.
kernel/async.c +63 -22
85 lines not on this page · raw message
kernel/trace/trace.c +40 -38
78 lines not on this page · raw message
lib/debugobjects.c +78 -122
200 lines not on this page · raw message
mm/util.c +50 -0
50 lines not on this page · raw message
net/ipv4/tcp.c +37 -8
45 lines not on this page · raw message
net/netfilter/ipset/ip_set_bitmap_gen.h +11 -3
Lines of this file are not shown. View the raw message.
net/netfilter/nft_set_pipapo.c +54 -54
108 lines not on this page · raw message
net/openvswitch/flow_netlink.c +33 -16
49 lines not on this page · raw message
scripts/decode_stacktrace.sh +52 -12
64 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/btf.c +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/pyperf180.c +22 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh +9 -0
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.