Linux 5.10.273
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.273 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/arm64/silicon-errata.rst | 2 Documentation/networking/strparser.rst | 2 Makefile | 2 arch/arm64/Kconfig | 30 arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 9 arch/arm64/include/asm/cpucaps.h | 2 arch/arm64/kernel/cpu_errata.c | 23 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kvm/vgic/vgic-its.c | 8 arch/arm64/mm/fault.c | 14 arch/nios2/include/asm/checksum.h | 2 arch/s390/kvm/guestdbg.c | 2 arch/s390/kvm/kvm-s390.c | 4 arch/s390/pci/pci_sysfs.c | 3 arch/x86/events/intel/core.c | 10 arch/x86/events/perf_event.h | 2 arch/x86/kvm/mmu/mmu.c | 4 arch/x86/kvm/svm/svm.c | 3 arch/x86/kvm/vmx/nested.c | 18 arch/x86/kvm/x86.h | 4 crypto/drbg.c | 11 drivers/base/property.c | 19 drivers/block/loop.c | 10 drivers/block/zram/zram_drv.c | 6 drivers/bluetooth/btintel.c | 15 drivers/bluetooth/btqcomsmd.c | 10 drivers/bluetooth/btusb.c | 2 drivers/char/hw_random/stm32-rng.c | 12 drivers/dma/dmaengine.c | 30 drivers/edac/amd64_edac.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 11 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 25 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 17 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 9 drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 25 drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 2 drivers/gpu/drm/amd/amdgpu/vi.c | 21 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 drivers/gpu/drm/amd/display/dc/dce60/dce60_resource.c | 1 drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 10 drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomfwctrl.c | 11 drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 39 - drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 5 drivers/gpu/drm/drm_fb_helper.c | 8 drivers/gpu/drm/i915/display/intel_csr.c | 19 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 drivers/gpu/drm/i915/gt/intel_rps.c | 3 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 drivers/gpu/drm/msm/disp/mdp5/mdp5_ctl.c | 2 drivers/gpu/drm/msm/dsi/dsi.h | 8 drivers/gpu/drm/msm/dsi/dsi_cfg.h | 2 drivers/gpu/drm/msm/dsi/dsi_host.c | 46 - drivers/gpu/drm/msm/dsi/dsi_manager.c | 107 +- drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c | 2 drivers/gpu/drm/msm/dsi/pll/dsi_pll_14nm.c | 6 drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c | 2 drivers/gpu/drm/msm/msm_gpu.c | 1 drivers/gpu/drm/nouveau/nouveau_bo.c | 49 - drivers/gpu/drm/nouveau/nouveau_bo.h | 3 drivers/gpu/drm/nouveau/nouveau_chan.c | 2 drivers/gpu/drm/nouveau/nouveau_gem.c | 11 drivers/gpu/drm/radeon/radeon_bios.c | 6 drivers/gpu/drm/vc4/vc4_bo.c | 1 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 22 drivers/hid/hid-alps.c | 21 drivers/hid/hid-core.c | 26 drivers/hid/hid-steam.c | 211 +++-- drivers/hid/i2c-hid/i2c-hid-core.c | 5 drivers/hid/uhid.c | 8 drivers/hid/usbhid/hid-core.c | 11 drivers/hv/connection.c | 1 drivers/hv/vmbus_drv.c | 1 drivers/hwmon/drivetemp.c | 10 drivers/hwmon/gpio-fan.c | 8 drivers/hwtracing/coresight/coresight-etm3x-sysfs.c | 15 drivers/i2c/busses/i2c-at91-master.c | 8 drivers/i2c/busses/i2c-mxs.c | 5 drivers/i2c/busses/i2c-qcom-cci.c | 4 drivers/i2c/busses/i2c-wmt.c | 2 drivers/i2c/i2c-core-base.c | 14 drivers/i3c/master.c | 20 drivers/iio/accel/kxcjk-1013.c | 2 drivers/iio/accel/sca3000.c | 2 drivers/iio/adc/aspeed_adc.c | 4 drivers/iio/adc/max1363.c | 8 drivers/iio/adc/sun4i-gpadc-iio.c | 10 drivers/iio/gyro/adis16136.c | 2 drivers/iio/imu/adis16400.c | 2 drivers/iio/imu/adis16480.c | 4 drivers/iio/light/gp2ap020a00f.c | 2 drivers/iio/proximity/isl29501.c | 2 drivers/iio/proximity/pulsedlight-lidar-lite-v2.c | 4 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 3 drivers/input/keyboard/atkbd.c | 8 drivers/input/mouse/byd.c | 2 drivers/input/mouse/synaptics.c | 7 drivers/input/serio/i8042-acpipnpio.h | 9 drivers/input/touchscreen/s6sy761.c | 14 drivers/iommu/iommu.c | 3 drivers/isdn/capi/capi.c | 8 drivers/md/dm-cache-target.c | 59 - drivers/md/dm-crypt.c | 10 drivers/md/dm-ebs-target.c | 3 drivers/md/dm-integrity.c | 5 drivers/md/dm-ioctl.c | 15 drivers/md/dm-snap.c | 14 drivers/md/dm-table.c | 2 drivers/media/pci/saa7164/saa7164-core.c | 6 drivers/memstick/core/memstick.c | 8 drivers/memstick/host/rtsx_usb_ms.c | 31 drivers/mmc/host/cavium-octeon.c | 5 drivers/mmc/host/cavium-thunderx.c | 5 drivers/mmc/host/mtk-sd.c | 1 drivers/mmc/host/sdhci-sprd.c | 4 drivers/mmc/host/via-sdmmc.c | 4 drivers/mtd/devices/block2mtd.c | 2 drivers/mtd/nand/raw/cadence-nand-controller.c | 6 drivers/mtd/nand/raw/vf610_nfc.c | 85 +- drivers/mtd/nand/spi/core.c | 21 drivers/net/bonding/bond_main.c | 27 drivers/net/can/dev/dev.c | 2 drivers/net/can/slcan.c | 1 drivers/net/ethernet/amazon/ena/ena_netdev.c | 1 drivers/net/ethernet/broadcom/bcmsysport.c | 4 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 23 drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c | 4 drivers/net/ethernet/ibm/ibmveth.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 6 drivers/net/gtp.c | 18 drivers/net/team/team.c | 67 + drivers/net/team/team_mode_loadbalance.c | 4 drivers/net/usb/ax88179_178a.c | 6 drivers/net/usb/qmi_wwan.c | 1 drivers/net/vxlan/vxlan_core.c | 12 drivers/net/wireguard/noise.c | 7 drivers/net/wireless/ath/ath11k/mac.c | 1 drivers/net/wireless/ath/wcn36xx/dxe.c | 2 drivers/net/wireless/ath/wcn36xx/smd.c | 4 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 25 drivers/net/wireless/intel/iwlegacy/3945-mac.c | 1 drivers/net/wireless/intersil/p54/fwio.c | 42 - drivers/net/wireless/marvell/libertas/tx.c | 7 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 19 drivers/net/wireless/st/cw1200/bh.c | 8 drivers/net/wireless/st/cw1200/txrx.c | 14 drivers/net/wireless/ti/wl12xx/main.c | 9 drivers/net/wireless/ti/wl18xx/main.c | 2 drivers/net/wireless/ti/wlcore/main.c | 10 drivers/net/wireless/ti/wlcore/wlcore.h | 2 drivers/net/xen-netfront.c | 16 drivers/nvme/host/core.c | 3 drivers/nvme/host/multipath.c | 5 drivers/nvme/host/tcp.c | 118 ++- drivers/nvme/target/configfs.c | 9 drivers/nvme/target/core.c | 2 drivers/of/irq.c | 14 drivers/of/overlay.c | 14 drivers/opp/core.c | 6 drivers/pci/pci.c | 15 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 197 +++-- drivers/pinctrl/sunxi/pinctrl-sunxi.h | 100 -- drivers/power/supply/bq24257_charger.c | 16 drivers/power/supply/ds2780_battery.c | 2 drivers/power/supply/max17040_battery.c | 10 drivers/power/supply/rt9455_charger.c | 26 drivers/power/supply/ucs1002_power.c | 6 drivers/regulator/ltc3676.c | 15 drivers/rtc/rtc-spear.c | 11 drivers/s390/net/ctcm_mpc.c | 3 drivers/scsi/ch.c | 30 drivers/scsi/libiscsi.c | 14 drivers/scsi/qedi/qedi_main.c | 3 drivers/scsi/qla2xxx/qla_bsg.c | 41 + drivers/scsi/qla2xxx/qla_init.c | 17 drivers/scsi/qla2xxx/qla_iocb.c | 4 drivers/scsi/qla2xxx/qla_mbx.c | 4 drivers/scsi/qla2xxx/qla_mid.c | 33 drivers/scsi/qla2xxx/qla_nvme.c | 10 drivers/scsi/qla2xxx/qla_os.c | 10 drivers/scsi/sd_zbc.c | 11 drivers/scsi/st.c | 18 drivers/soc/rockchip/pm_domains.c | 20 drivers/spi/spi-bcm63xx.c | 6 drivers/staging/greybus/uart.c | 10 drivers/staging/media/zoran/zoran_card.c | 2 drivers/staging/octeon-usb/octeon-hcd.c | 2 drivers/staging/rtl8723bs/core/rtw_mlme.c | 5 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 4 drivers/staging/sm750fb/sm750.c | 2 drivers/staging/sm750fb/sm750.h | 2 drivers/staging/sm750fb/sm750_accel.c | 10 drivers/staging/sm750fb/sm750_accel.h | 4 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 drivers/target/iscsi/iscsi_target_configfs.c | 26 drivers/tee/optee/core.c | 26 drivers/thunderbolt/ctl.c | 47 - drivers/thunderbolt/xdomain.c | 4 drivers/tty/amiserial.c | 9 drivers/tty/serial/kgdboc.c | 9 drivers/tty/serial/max3100.c | 15 drivers/tty/serial/qcom_geni_serial.c | 5 drivers/tty/serial/serial-tegra.c | 18 drivers/tty/serial/serial_core.c | 11 drivers/tty/serial/vt8500_serial.c | 1 drivers/tty/tty_io.c | 54 - drivers/tty/tty_port.c | 43 - drivers/tty/vcc.c | 5 drivers/tty/vt/vc_screen.c | 25 drivers/tty/vt/vt.c | 5 drivers/usb/cdns3/cdns3-pci-wrap.c | 5 drivers/usb/cdns3/gadget.c | 4 drivers/usb/class/cdc-acm.c | 46 - drivers/usb/class/cdc-acm.h | 1 drivers/usb/core/hub.c | 7 drivers/usb/core/message.c | 8 drivers/usb/gadget/function/f_fs.c | 15 drivers/usb/gadget/function/f_mass_storage.c | 3 drivers/usb/gadget/function/f_uac1_legacy.c | 6 drivers/usb/gadget/udc/aspeed-vhub/core.c | 4 drivers/usb/gadget/udc/aspeed-vhub/dev.c | 2 drivers/usb/gadget/udc/aspeed-vhub/hub.c | 5 drivers/usb/gadget/udc/aspeed-vhub/vhub.h | 1 drivers/usb/gadget/udc/dummy_hcd.c | 4 drivers/usb/host/ohci-da8xx.c | 2 drivers/usb/host/ohci-s3c2410.c | 1 drivers/usb/host/ohci-spear.c | 4 drivers/usb/host/ohci-st.c | 1 drivers/usb/host/xhci.c | 12 drivers/usb/serial/bus.c | 6 drivers/usb/serial/cp210x.c | 1 drivers/usb/serial/generic.c | 10 drivers/usb/serial/option.c | 14 drivers/usb/serial/quatech2.c | 19 drivers/usb/serial/ssu100.c | 18 drivers/usb/serial/usb-serial.c | 185 +++- drivers/usb/serial/usb_wwan.c | 6 drivers/usb/storage/sierra_ms.c | 7 drivers/usb/typec/tcpm/tcpm.c | 37 drivers/usb/typec/ucsi/displayport.c | 9 drivers/usb/typec/ucsi/ucsi.c | 17 drivers/usb/typec/ucsi/ucsi_acpi.c | 18 drivers/virt/nitro_enclaves/ne_misc_dev.c | 1 drivers/watchdog/rtd119x_wdt.c | 21 fs/autofs/waitq.c | 25 fs/btrfs/scrub.c | 4 fs/ceph/export.c | 23 fs/ceph/mdsmap.c | 7 fs/cifs/cifsacl.c | 15 fs/cifs/cifsfs.c | 16 fs/cifs/cifsglob.h | 6 fs/cifs/connect.c | 1 fs/cifs/dir.c | 37 fs/cifs/inode.c | 29 fs/cifs/link.c | 15 fs/cifs/misc.c | 7 fs/cifs/smb1ops.c | 21 fs/cifs/smb2misc.c | 9 fs/cifs/smb2ops.c | 81 +- fs/cifs/smb2pdu.c | 79 +- fs/cifs/smb2pdu.h | 6 fs/cifs/transport.c | 70 + fs/dcache.c | 4 fs/f2fs/debug.c | 4 fs/f2fs/f2fs.h | 16 fs/f2fs/file.c | 5 fs/f2fs/gc.c | 30 fs/f2fs/gc.h | 14 fs/f2fs/recovery.c | 33 fs/f2fs/super.c | 4 fs/f2fs/sysfs.c | 8 fs/fcntl.c | 3 fs/fsopen.c | 3 fs/fuse/dir.c | 9 fs/fuse/file.c | 5 fs/inode.c | 15 fs/lockd/svcsubs.c | 2 fs/namespace.c | 115 ++- fs/nfsd/netns.h | 1 fs/nfsd/nfs2acl.c | 17 fs/nfsd/nfs4proc.c | 25 fs/nfsd/nfs4state.c | 3 fs/nfsd/vfs.c | 4 fs/notify/mark.c | 11 fs/ocfs2/dir.c | 71 + fs/ocfs2/dlm/dlmcommon.h | 2 fs/ocfs2/dlm/dlmdebug.c | 5 fs/ocfs2/dlm/dlmrecovery.c | 2 fs/pipe.c | 6 fs/unicode/utf8-core.c | 9 fs/verity/Kconfig | 3 fs/xfs/libxfs/xfs_alloc.c | 61 + fs/xfs/libxfs/xfs_bmap.c | 6 fs/xfs/libxfs/xfs_btree.c | 10 fs/xfs/libxfs/xfs_ialloc.c | 38 fs/xfs/libxfs/xfs_rtbitmap.c | 22 fs/xfs/libxfs/xfs_sb.c | 17 fs/xfs/xfs_bmap_item.c | 76 + fs/xfs/xfs_buf.c | 24 fs/xfs/xfs_buf.h | 14 fs/xfs/xfs_buf_item.c | 382 ++++++---- fs/xfs/xfs_buf_item.h | 3 fs/xfs/xfs_dquot_item.c | 5 fs/xfs/xfs_extfree_item.c | 2 fs/xfs/xfs_fsops.c | 2 fs/xfs/xfs_icache.c | 10 fs/xfs/xfs_inode.c | 9 fs/xfs/xfs_inode_item.c | 162 +++- fs/xfs/xfs_inode_item.h | 1 fs/xfs/xfs_log.c | 50 - fs/xfs/xfs_log_cil.c | 12 fs/xfs/xfs_log_priv.h | 7 fs/xfs/xfs_log_recover.c | 17 fs/xfs/xfs_qm.c | 7 fs/xfs/xfs_refcount_item.c | 60 - fs/xfs/xfs_rmap_item.c | 75 + fs/xfs/xfs_rtalloc.c | 20 fs/xfs/xfs_rtalloc.h | 4 fs/xfs/xfs_symlink.c | 4 fs/xfs/xfs_trace.h | 4 fs/xfs/xfs_trans.c | 6 fs/xfs/xfs_trans.h | 3 fs/xfs/xfs_trans_buf.c | 16 include/linux/can/dev.h | 1 include/linux/can/skb.h | 2 include/linux/device-mapper.h | 5 include/linux/devm-helpers.h | 79 ++ include/linux/dmaengine.h | 7 include/linux/fsnotify_backend.h | 1 include/linux/ftrace.h | 5 include/linux/futex.h | 14 include/linux/hid.h | 6 include/linux/highmem.h | 2 include/linux/i2c.h | 1 include/linux/if_team.h | 3 include/linux/if_vlan.h | 3 include/linux/key-type.h | 1 include/linux/key.h | 5 include/linux/kprobes.h | 1 include/linux/lockd/lockd.h | 2 include/linux/mm.h | 2 include/linux/mm_types.h | 4 include/linux/mount.h | 2 include/linux/netlink.h | 3 include/linux/property.h | 3 include/linux/qcom-geni-se.h | 15 include/linux/sched/signal.h | 5 include/linux/skbuff.h | 12 include/linux/tty.h | 2 include/linux/tty_driver.h | 5 include/linux/unicode.h | 1 include/linux/usb/serial.h | 1 include/net/bluetooth/hci_core.h | 4 include/net/bluetooth/rfcomm.h | 1 include/net/codel_impl.h | 1 include/net/net_namespace.h | 4 include/net/netfilter/nf_tables.h | 16 include/net/netns/xfrm.h | 1 include/net/strparser.h | 10 include/net/tcp.h | 4 include/uapi/linux/sched.h | 5 io_uring/io_uring.c | 9 kernel/audit_tree.c | 24 kernel/bpf/arraymap.c | 13 kernel/bpf/verifier.c | 7 kernel/events/core.c | 2 kernel/fork.c | 20 kernel/futex/core.c | 49 - kernel/kprobes.c | 27 kernel/params.c | 59 - kernel/ptrace.c | 3 kernel/signal.c | 8 kernel/time/clockevents.c | 33 kernel/time/tick-broadcast.c | 34 kernel/time/tick-internal.h | 2 kernel/trace/ftrace.c | 72 + kernel/trace/ring_buffer.c | 6 kernel/trace/trace.h | 4 kernel/trace/trace_events_filter.c | 6 kernel/trace/trace_events_hist.c | 48 - kernel/trace/trace_functions.c | 2 kernel/trace/trace_stack.c | 2 kernel/watch_queue.c | 11 kernel/workqueue.c | 2 mm/huge_memory.c | 3 mm/hugetlb.c | 22 mm/ioremap.c | 45 + mm/mmap.c | 31 mm/mremap.c | 29 mm/rmap.c | 6 net/bluetooth/hci_core.c | 12 net/bluetooth/hci_debugfs.c | 2 net/bluetooth/hci_sock.c | 2 net/bluetooth/l2cap_core.c | 7 net/bluetooth/l2cap_sock.c | 59 + net/bluetooth/mgmt.c | 9 net/bluetooth/rfcomm/core.c | 134 ++- net/bluetooth/rfcomm/sock.c | 5 net/bluetooth/rfcomm/tty.c | 16 net/bridge/br_multicast.c | 36 net/can/af_can.c | 6 net/can/bcm.c | 2 net/can/isotp.c | 11 net/can/j1939/socket.c | 1 net/can/j1939/transport.c | 2 net/can/raw.c | 7 net/core/filter.c | 8 net/core/flow_dissector.c | 26 net/core/net_namespace.c | 19 net/core/page_pool.c | 6 net/hsr/hsr_framereg.c | 4 net/ipv4/fib_semantics.c | 2 net/ipv4/ipconfig.c | 92 +- net/ipv4/ipmr.c | 3 net/ipv4/ipmr_base.c | 2 net/ipv4/tcp.c | 4 net/ipv4/tcp_bpf.c | 3 net/ipv4/tcp_dctcp.c | 2 net/ipv4/tcp_input.c | 6 net/ipv4/udp.c | 9 net/ipv6/ip6mr.c | 2 net/ipv6/seg6_iptunnel.c | 2 net/mac80211/chan.c | 36 net/mac80211/fils_aead.c | 8 net/mac80211/mesh_pathtbl.c | 16 net/mac80211/mlme.c | 4 net/mac80211/sta_info.c | 6 net/mac80211/tx.c | 6 net/netfilter/ipset/ip_set_bitmap_gen.h | 2 net/netfilter/ipvs/ip_vs_conn.c | 3 net/netfilter/ipvs/ip_vs_lblc.c | 4 net/netfilter/ipvs/ip_vs_lblcr.c | 3 net/netfilter/ipvs/ip_vs_sync.c | 33 net/netfilter/nf_tables_api.c | 23 net/netfilter/nf_tables_core.c | 29 net/netfilter/nf_tables_trace.c | 44 - net/netfilter/nft_flow_offload.c | 8 net/netlink/af_netlink.c | 24 net/netlink/genetlink.c | 28 net/openvswitch/actions.c | 7 net/openvswitch/conntrack.c | 23 net/openvswitch/datapath.c | 8 net/packet/af_packet.c | 6 net/rds/rdma_transport.c | 26 net/rds/tcp.c | 9 net/sched/act_api.c | 20 net/sched/cls_flower.c | 5 net/sched/cls_u32.c | 43 - net/sched/em_text.c | 3 net/sched/sch_codel.c | 2 net/sched/sch_fq_codel.c | 4 net/sctp/inqueue.c | 6 net/sctp/socket.c | 39 - net/smc/af_smc.c | 7 net/smc/smc_core.c | 14 net/strparser/strparser.c | 6 net/sunrpc/auth_gss/gss_rpc_xdr.c | 15 net/tipc/crypto.c | 20 net/tipc/node.c | 12 net/tipc/topsrv.c | 80 +- net/tls/tls_device.c | 7 net/vmw_vsock/af_vsock.c | 17 net/wireless/lib80211_crypt_tkip.c | 13 net/wireless/scan.c | 29 net/xfrm/xfrm_policy.c | 19 samples/pidfd/Makefile | 2 security/apparmor/include/label.h | 6 security/keys/key.c | 19 security/keys/keyctl.c | 15 security/keys/keyring.c | 153 ++-- security/keys/persistent.c | 55 - security/keys/process_keys.c | 5 security/keys/trusted-keys/trusted_tpm1.c | 2 security/selinux/avc.c | 5 security/selinux/hooks.c | 9 sound/core/seq/seq_clientmgr.c | 1 sound/core/seq/seq_compat.c | 2 sound/parisc/harmony.c | 13 sound/pci/pcxhr/pcxhr.c | 61 - sound/soc/codecs/cs42l52.c | 2 sound/soc/codecs/cs42l56.c | 2 sound/soc/codecs/max98371.c | 2 sound/soc/codecs/nau8822.c | 4 sound/soc/codecs/pcm3168a.c | 2 sound/soc/codecs/rt274.c | 4 sound/soc/codecs/wm8903.c | 2 sound/soc/codecs/wm8978.c | 4 sound/soc/samsung/i2s.c | 8 sound/soc/stm/stm32_spdifrx.c | 2 sound/usb/caiaq/device.c | 3 sound/usb/line6/playback.c | 7 sound/usb/misc/ua101.c | 9 tools/gpio/Makefile | 6 tools/perf/tests/bpf.c | 3 tools/perf/util/parse-events.c | 2 tools/testing/selftests/ftrace/test.d/filter/event-filter-incomplete.tc | 24 tools/thermal/tmon/tui.c | 2 496 files changed, 5370 insertions(+), 2605 deletions(-)
Abdurrahman Hussain (3):
of/overlay: put property on deadprops only after changeset add succeeds of/overlay: don't leak fragment references when changeset init fails of/overlay: don't create "//" paths for fragments targeting the root
Abhishek Ojha (1):
regulator: ltc3676: don't read the write-only HRST and CLIRQ registers
Adrian Betschart (1):
drm/amd/display: Don't replace a sink mode that shares the native totals
Adrian Hunter (2):
i3c: master: Do not treat master device as a duplicate target
i3c: master: Fix use-after-free of master->this
Adrian Martinez (1):
KEYS: Fix key_reject_and_link() race with keyring restriction
Ahmed Abdelhaleem Ahmed (1):
scsi: ch: Do not keep references to data transfer element devices
Alan Stern (1):
USB: gadget: dummy-hcd: Fix wait for outstanding request completions
Aldo Ariel Panzardo (1):
Bluetooth: mgmt: fix race in read_unconf_index_list()
Alex Deucher (1):
drm/amdgpu: make Mac FB workaround generic
Alexandru Hossu (1):
staging: rtl8723bs: fix OOB read in OnAssocRsp() IE loop
Amirmohammad Eftekhar (1):
KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry
Amit Pundir (1):
arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved
Amit Sunil Dhamne (1):
usb: typec: tcpm: constrain TCPM_SOURCING_VBUS event handling
Andre Eikmeyer (1):
drm/amdgpu: reset VI ASIC on MacBookPro15,1
Andrii Nakryiko (1):
bpf: fix potential 32-bit overflow when accessing ARRAY map element
Andy Shevchenko (4):
params: Do not go over the limit when getting the string length
params: Use size_add() for kmalloc()
params: Sort headers
params: Fix multi-line comment style
Angel Iglesias (1):
i2c: core: Introduce i2c_client_get_device_id helper function
Anjali Kulkarni (1):
netlink: Reverse the patch which removed filtering
Aohan Mei (4):
smb: client: reject userspace cifs.idmap descriptions
netfilter: nft_flow_offload: drop flowtable reference on init error path
net: rds: fix uninitialized trans dereference in CM event handler net/sched: cls_flower: validate mask pointer after nla_next()
Arka Mondal (3):
iio: gyro: adis16136: fix unprotected debugfs reads
iio: imu: adis16400: fix unprotected debugfs reads
iio: imu: adis16480: fix unprotected debugfs reads
Arnaldo Carvalho de Melo (1):
perf test bpf: Address error about non-null argument for epoll_pwait 2nd arg
Asad Kamal (1):
drm/amd/powerplay: fix VoltageObjectInfo zero-stride loop and OOB read
Aswin Karuvally (1):
s390/ctcm: Prevent XID null dereference
Avi Weiss (1):
ASoC: stm32: spdifrx: fix synchronization state check
Baokun Li (2):
fuse: fix invalidate lock leak on open O_TRUNC DAX failure
fuse: fix invalidate lock leak on setattr writeback failure
Bart Van Assche (1):
loop: Fix use-after-free issues
Bastien Nocera (1):
HID: hid-alps: Use pm_ptr instead of #ifdef CONFIG_PM
Beata Michalska (2):
arm64: errata: Factor out broken AMU const counter cap
arm64: errata: Add Cortex-A725 erratum 3821522 workaround
Ben Cressey (3):
dm-crypt: reject the lmk IV mode with AEAD ciphers
dm-crypt: fix a tiny race condition in crypt_dec_pending
dm-integrity: fix infinite loop on discard with large tag size
Bence Csókás (1):
dmaengine: Add devm_dma_request_chan()
Benjamin Berg (1):
wifi: cfg80211: avoid double free if updating BSS fails
Benjamin Marzinski (1):
dm cache: fix issue with background work locking
Benjamin Tissoires (1):
HID: core: introduce hid_safe_input_report()
Bjoern Doebel (1):
smb: client: avoid leaking refcount in cifs_queue_oplock_break()
Breno Leitao (1):
usb: xhci: bail out of setup if the controller is inaccessible
Can Peng (2):
hwrng: stm32 - Fix runtime PM cleanup on registration failure
spi: bcm63xx: disable clock on resume failure
Carlo Szelinsky (1):
USB: serial: option: add Quectel EG060W
Carlos Llamas (1):
HID: uhid: convert to hid_safe_input_report()
Cen Zhang (5):
ocfs2/dlm: Protect the recovery list during debugfs reads
keys: Avoid the owner account dereference in named keyring lookup
keys: Check the authorization payload in process keyring searches
keys: Protect the type name while describing a key
keys: Protect the read method check against type removal
Cen Zhang (Microsoft Security FORGE Labs) (1):
tcp: fix use-after-free in do_tcp_getsockopt(TCP_CC_INFO)
Cen Zhang (Microsoft) (1):
watch_queue: Fix note pool publication race in watch_queue_set_size()
Cezary Rojewski (1):
ASoC: codecs: rt274: Fix format setting for 44100 rate
Chandrashekar Devegowda (1):
Bluetooth: btintel: fix buffer over-read in btintel_hw_error()
Chao Yu (1):
f2fs: embed f2fs_gc_kthread in f2fs_sb_info
Charles Vosburgh (1):
sctp: validate chunk length in the inqueue parser
Chen Changcheng (1):
HID: alps: unregister DualPoint Stick input device on remove
Chen Cheng (1):
dm-integrity: require stable writes for internal hash modes
Chen Ni (1):
usb: ohci-spear: Remove unnecessary NULL check before clk_disable_unprepare()
ChenXiaoSong (2):
smb/client: use stack-allocated smb2_file_all_info in smb3_query_mf_symlink() smb/client: pass cifs_open_info_data to SMB2_open()
Chengchang Tang (1):
RDMA/hns: Fix WQ_MEM_RECLAIM warning
Chengfeng Ye (7):
KEYS: trusted: Fix TPM teardown ordering
Bluetooth: RFCOMM: Fix initial port reference race
Bluetooth: hci_core: Serialize ACL scheduling with channel deletion
tipc: hold a reference to nodes found by link name net/smc: protect clcsock lifetime in smc_getname
Bluetooth: hci_sock: Serialize dead-device detachment
tipc: protect node reset trace dump with node lock
Chris Mason (3):
nfsd: release path refs on follow_down() error
SUNRPC: fix gssx_dec_option_array error path bugs
SUNRPC: reject duplicate CREDS_VALUE options
Christian Borntraeger (2):
KVM: s390: Zero initialize data structures for inject_pfault_token
KVM: s390: Fix length check __import_wp_info()
Christian Brauner (13):
fs: refuse fspick() on internal superblocks
namespace: check a submount for references right before unmounting it
dcache: don't put a mountpoint on a dentry that's being removed
namespace: refuse an automount below a mount that is in no namespace
namespace: don't inherit MNT_UMOUNT in clone_mnt()
namespace: check the mounts before reading their parents in pivot_root()
namespace: unhash a dentry before detaching the mounts on it
namespace: don't copy an unmounted mount tree
fcntl: refuse F_SET_RW_HINT on an immutable inode
namespace: handle mount locking for automounts correctly
clone: add CLONE_AUTOREAP
unicode: free the map after a grace period
signal: don't retarget shared signals in a dying thread group
Christian Göttsche (1):
selinux: fix data race on AVC latest_notif
Christian König (1):
drm/nouveau: switch over to the new pin interface
Christophe JAILLET (2):
kernel/params.c: Use kstrtobool() instead of strtobool()
watchdog: rtd119x: Use devm_clk_get_enabled() helper
Chuck Lever (1):
nfsd: gate nfs2 setacl by argp->mask
Clément Léger (1):
of/irq: add missing of_node_put() for interrupt parent node
Cong Nguyen (2):
iio: proximity: pulsedlight: fix iio_device left registered on PM setup failure
iio: adc: max1363: sign-extend bipolar differential channel reads
Daehyeon Ko (4):
wifi: libipw: reject TKIP frames without a full MIC
nvme-multipath: fix underflow in ANA log bounds checks
thunderbolt: Reject oversized XDomain properties responses
sctp: revalidate output stream after association connect wait
Dan Carpenter (1):
HID: hid-steam: Fix cleanup in probe()
Daniel Wagner (1):
nvme-tcp: Do not reset transport on data digest errors
Daniil Stas (1):
hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occur
Dapeng Mi (1):
perf/x86/intel: Remove anythread_deprecated bit from perf_capabilities
Darrick J. Wong (7):
xfs: hoist recovered bmap intent checks out of xfs_bui_item_recover
xfs: improve the code that checks recovered bmap intent items
xfs: hoist recovered rmap intent checks out of xfs_rui_item_recover
xfs: improve the code that checks recovered rmap intent items
xfs: hoist recovered refcount intent checks out of xfs_cui_item_recover
xfs: improve the code that checks recovered refcount intent items
xfs: fix intermittent hang during quotacheck
Dave Airlie (1):
nouveau/gem: reserve the bo in the info ioctl around the vma lookup
Dave Chinner (11):
xfs: don't nest icloglock inside ic_callback_lock
xfs: convert XLOG_FORCED_SHUTDOWN() to xlog_is_shutdown()
xfs: log items should have a xlog pointer, not a mount
xfs: aborting inodes on shutdown may need buffer lock
xfs: remove xfs_buf_t typedef
xfs: buffer pins need to hold a buffer reference
xfs: xfs_ifree_cluster vs xfs_iflush_shutdown_abort deadlock
xfs: catch stale AGF/AGF metadata
xfs: rearrange code in xfs_buf_item.c
xfs: factor out stale buffer item completion
xfs: fix unmount hang with unflushable inodes stuck in the AIL
David Heidelberg (1):
Input: s6sy761 - fix resume ordering and restore sensing
David Rosca (1):
drm/amdgpu: Fix VCE 3 ring align_mask
Denis V. Lunev (1):
openvswitch: fix soft lockup in the netlink flow dump
Di Shen (1):
OPP: Fix race between OPP addition and lookup
Dibin Moolakadan Subrahmanian (1):
drm/i915/dmc: Harden DMC firmware payload parsing
Dmitry Baryshkov (2):
drm/msm/dsi: do not enable PHYs when called for the slave DSI interface drm/msm/dsi: rename dual DSI to bonded DSI
Donggeun Yoo (5):
tracing: Set the trace clock before registering the histogram trigger
tracing: Fix the shift out of bounds in the log2 histogram modifier
tracing: Save the event file instead of the compatible histogram
tracing: Unregister field variable histograms when the command fails
tracing: Fix 64-bit and signed histogram fields on 32-bit kernels
Doruk Tan Ozturk (1):
ocfs2: validate directory-index entry counts when reading metadata
Eric Biggers (2):
fsverity: add dependency on 64K or smaller pages
crypto: drbg - Fix ineffective sanity check
Eric Dumazet (5):
ipv6: sr: use skb_get_hash_net() in seg6_make_flowlabel()
bnxt_en: fix DMA mapping length for padded small packets
flow_dissector: avoid u16 truncation of skb->len when computing thoff
flow_dissector: avoid u16 truncation of hlen in bpf_flow_dissect()
net: initialize net->net_cookie at netns setup
Fan Wu (11):
wifi: rtl8xxxu: fix use-after-free from rx_urb_wq on stop
power: supply: rt9455: quiesce delayed work before teardown
mmc: via-sdmmc: cancel card-detect work on remove
power: supply: bq24257: fix use-after-free on remove
power: supply: ucs1002: fix use-after-free on remove
hwmon: (gpio-fan) Fix use-after-free in alarm work
wifi: wcn36xx: Fix potential use-after-free in TX ack timer teardown
usb: gadget: aspeed-vhub: cancel wake work on device removal
iio: light: gp2ap020a00f: drain irq_work after free_irq
usb: cdns3: fix use-after-free in cdns3_gadget_exit()
tty: serial: max3100: shut down timer before freeing port
Felix Fietkau (2):
wifi: mac80211: set info->band for 802.3 encap offload frames
netfilter: nf_tables: fix bidirectional offload regression
Felix Gu (2):
iio: adc: sun4i-gpadc-iio: clean up on thermal zone registration failure
iio: adc: sun4i-gpadc-iio: drop underflowing pm_runtime_put() calls
Fernando Fernandez Mancera (1):
net: openvswitch: validate transport header presence in set_ipv6_addr
Florian Eckert (1):
tools/thermal/tmon: Fix compilation warning for wrong format
Florian Fainelli (1):
net: systemport: Fix RUNT MIB counter register offset calculation
Florian Westphal (6):
netfilter: ipset: do not update comments from kernel-side adds
netfilter: nf_tables: avoid skb access on nf_stolen
net: add and use skb_get_hash_net
netfilter: nf_tables: fix crash when nf_trace is enabled
netlink: remove netlink_broadcast_filtered
netfilter: nf_tables: always increment set element count
Francisco Beltrán Millalén (1):
drm/amdgpu: reset VI ASIC on MacBookPro14,3
Frank Sorenson (7):
smb: client: fix OOB read/write from unvalidated DataOffset in coalesce_t2()
smb: client: fix potential OOB read in smb3_enum_snapshots()
smb: client: fix next_buffer UAF and NextCommand bounds in compound PDUs
smb: client: fix OOB struct field reads in move_smb2_ea_to_cifs()
cifs: fix loff_t underflow in cifs_remap_file_range() when len == 0
smb: client: split cifsFileInfo bitfields to avoid shared-byte RMW races
cifs: add revalidation on FSCTL failure in smb2_duplicate_extents()
Fredrik Nyberg (1):
net: usb: ax88179_178a: fix rx frame length for non-last packets
Fuad Tabba (1):
KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
Geliang Tang (1):
skmsg: Skip zero length skb in sk_msg_recvmsg
Genjian Zhang (1):
dm-ebs: fix incorrect device offset check in ebs_ctr()
Gilberto Conde (1):
net: usb: qmi_wwan: add Quectel EG120K-EA
Greg Kroah-Hartman (1):
Linux 5.10.273
Guangshuo Li (7):
media: saa7164: fix cleanup on resource allocation failure
net: ena: fix MMIO read buffer leak on probe failure
wifi: iwlegacy: 3945: free EEPROM data on remove drm/amdgpu: fix ACP MFD device leak on init failure
mmc: cavium-octeon: destroy slot platform devices on remove
mmc: cavium-thunderx: destroy slot platform devices on remove
mmc: sdhci-sprd: disable runtime PM on remove
Guo Xuenan (1):
xfs: fix super block buf log item UAF during force shutdown
Han Xu (1):
mtd: spinand: Enable QE on all dies
Hao Sun (1):
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS
Heyang Tan (1):
wifi: p54: validate firmware record lengths
Hidayath Khan (1):
net/smc: fix socket refcount leak in smc_switch_conns()
Hongjian Dai (1):
i2c: at91: release DMA channels when probe defers
Hui Peng (2):
usb: core: clear both ep_in and ep_out for non-ep0 control endpoints
sctp: copy zeroed stats to user in sctp_getsockopt_pr_streamstatus() when !streamoute
HyeongJun An (7):
ASoC: wm8903: Move the DRC QR threshold to the register that holds it
ASoC: cs42l56: Put the Limiter Cushion control on the limiter register
ASoC: cs42l52: Fix the NG Type Switch bit
ASoC: pcm3168a: Fix the DAC zero flag polarity bit
ASoC: max98371: Fix the Speaker DHT Min Volume bits
ASoC: wm8978: Fix the 128x oversampling switch bits
ASoC: nau8822: Fix the 128x oversampling switch bits
Hyunwoo Kim (2):
apparmor: fix out-of-bounds write when null terminating a label vec
KVM: x86/mmu: Preserve nested TDP shadow page tables if they are used as roots
Ian Lin (2):
USB: serial: option: add Compal EXM-G1x support
USB: serial: option: add Compal EXC-T1 support
Ido Schimmel (1):
ipv4: udp: Create exceptions before socket matching
Ilkka Lappeteläinen (1):
net/packet: prevent TX_RING byte count overflow
Ilya Maximets (1):
net: openvswitch: conntrack: fix helper UAF due to extensions realloc
Ilya Titov (1):
pinctrl: sunxi: keep a shadow copy of the data register output latches
Imre Kaloz (1):
drm/radeon: Read the VRAM VBIOS signature with readb()
Jakub Kicinski (1):
page_pool: always add GFP_NOWARN for ATOMIC allocations
Jamal Hadi Salim (3):
net/sched: fq_codel: match the no-drop threshold to the packet size net/sched: sch_codel: match the no-drop threshold to the packet size net/sched: em_text: reject unterminated algo before autoload
Jameson Thies (1):
usb: typec: ucsi: displayport: Current CAM OOB index fixup
Jann Horn (1):
futex: Fix mm reuse handling for FUT_OFF_MMSHARED
Jason A. Donenfeld (1):
wireguard: noise: reject response consumption after intermediate initiation
Jason Wang (1):
ALSA: pcxhr: use __func__ to get funcion's name in an output message
Jeff Jo (1):
tcp: refresh TS.Recent for accepted old ACKs
Jeff Layton (3):
nfsd: fix nfsd_file leak on inter-server COPY setup failure
nfsd: check nfsd4_acl_to_attr() return value in nfsd4_create()
nfsd: fix clock domain mismatch in clients_still_reclaiming()
Jeffin Philip (1):
usb: gadget: f_mass_storage: fix null pointer dereference in fsg_common_set_num_buffers()
Jens Axboe (1):
io_uring/rw: end write accounting from ->ki_complete
Jesse Zhang (1):
drm/amdgpu: don't drop the runtime PM reference twice in amdgpu_gpr
Jiacheng Yu (1):
params: fix charp corruption on allocation failure
Jiale Yao (1):
iio: accel: kxcjk-1013: reject duplicate event disable
Jiangshan Yi (1):
smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions
Jianing Li (1):
power: supply: max17040: drop incorrect I2C functionality check
Jiayuan Chen (1):
tls: device: fix out-of-bounds write in tls_append_frag()
Jie Deng (1):
usb: cdns3: Fix NULL pointer dereference in cdns3_pci_probe
Jinjiang Tu (1):
mm/rmap: fix missing barrier between anon_vma init and vma->anon_vma publish
Jinu Kim (1):
KVM: x86: Use active memslots for the per-vCPU MMIO cache
Jiri Slaby (SUSE) (1):
tty: introduce and use tty_port_tty_vhangup() helper
Johan Hovold (14):
USB: cdc-acm: fix racy TIOCMIWAIT implementation
USB: serial: fix port tear down use-after-free
tty: amiserial: fix broken TIOCMIWAIT
USB: serial: quatech2: fix baud rate overflow
USB: serial: ssu100: fix baud rate overflow
USB: serial: fix dynamic id driver deregistration race
tty: fix saved termios reset race
tty: tty_port: restore TTY_IO_ERROR on activation failure
tty: abort break signalling on hangup
serial: fix TIOCMIWAIT race
USB: serial: fix ioctl hangup race
USB: serial: clean up core error labels
USB: serial: fix driver deregistration order
tty: port: fix tty_port_tty_vhangup() race
Johannes Berg (1):
Revert "wifi: libertas: reject short monitor TX frames"
Jonas Köppeler (1):
net_sched: codel: fix stale state for empty flows in fq_codel
Jonathan Cameron (1):
device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.
Josef Bacik (2):
xen/netfront: drop RX packets with a short Ethernet header xen/netfront: don't leak the skb when xennet_fill_frags() fails
Joseph Qi (1):
ocfs2: validate dx_root extent list fields during block read
Joshua Rogers (2):
tty: vcc: zero-initialize control packet in vcc_send_ctl()
tty: vcc: hold port lock when clearing tty pointer in vcc_cleanup
Julian Anastasov (3):
ipvs: fix missing counter decrement in lblc
ipvs: do not create invisible templates
ipvs: filter some flags received in the backup server
Julian Sun (1):
nvmet: preserve device path on allocation failure
Jun Yang (2):
sctp: check RCV_SHUTDOWN after the sendmsg connect wait
net: bridge: mcast: don't truncate the port group walk on teardown
Jérémy Carrat (1):
USB: serial: cp210x: add Corsair AX1500i Power Supply
Jérémy Jean (3):
audit: fix exe mark UAF in kill_rules()
tipc: prevent GCM nonce reuse on peer key changes net/sched: fix use-after-free in __tcf_action_put()
Karl Mehltretter (2):
arm64: mm: Fix the lockless page-table walk in show_pte()
keys: finalize persistent keyring timeout after link attempt
Kavan Smith (1):
drm/msm/dsi: round 6G byte clock rate to the PLL-achievable value
Keith Busch (1):
nios2: fix __wsum type degradation in csum_fold()
Konrad Dybcio (1):
drm/msm/adreno: Assign msm_gpu->pdev earlier to avoid nullptrs
Krzysztof Karas (2):
drm/i915/gem: Prevent overstepping exec array boundary drm/i915/gt: Unmask interrupts only when ACTIVE is true
Kuan-Wei Chiu (1):
coresight: etm3x: Fix cntr_val_show() to match cntr_val_store() behavior
Kumar Kartikeya Dwivedi (1):
bpf: Do mark_chain_precision for ARG_CONST_ALLOC_SIZE_OR_ZERO
Kuniyuki Iwashima (2):
hsr: Remove WARN_ONCE() in hsr_addr_is_self().
vxlan: Fix potential null-ptr-deref in vxlan_gro_prepare_receive().
Kyle Zeng (8):
ALSA: seq: Clear variable event pointer on read
ALSA: seq: Serialize compat port-info ioctls
netlink: reset skb headers before unicast and multicast filtering
pipe: preserve existing fasync readers on writer setup failure
netlink: avoid hashing the network namespace pointer
fsnotify: prevent mark additions during connector teardown
tracing: Reject incomplete event filter expressions
keys: make keyring indexes independent of kernel addresses
Laurence Oberman (2):
scsi: st: Save the visited block for the partition the drive is in
scsi: st: Fix use-after-free race between st_remove() and st_open()
Lee Jones (2):
staging: sm750fb: sm750_accel: Provide description for 'accel' and fix function naming tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields
Leon Hwang (1):
kprobes: Skip disarmed probes when checking optkprobe overlap
Li RongQing (1):
net/mlx5e: Order ICOSQ cc update after CQ doorbell
Linfeng Sun (1):
scsi: target: iscsi: Fix race in discovery auth updates
Linmao Li (2):
Bluetooth: hci_core: Fix inquiry cache timestamps on 64-bit systems
Input: byd - synchronize timer deletion before freeing private data
Linus Torvalds (1):
security/keys: fix missed RCU read section on lookup
Liu Chao (1):
usb: gadget: f_uac1_legacy: validate bRequest index in generic_{set,get}_cmd
Loic Poulain (1):
i2c: qcom-cci: Fix HALT_ACK reset request being dropped
Longlong Xia (1):
zram: fix out-of-bounds access in read_block_state()
Lorenzo Stoakes (ARM) (3):
mm/mremap: fix locked_vm leak by splitting VMA for MREMAP_DONTUNMAP mm/mremap: fix locked_vm leak from MREMAP_DONTUNMAP self-merge mm/vmalloc: acquire init_mm lock on huge vmap to avoid ptdump UAF
Lovekesh Solanki (3):
Input: i8042 - add nomux quirk for Fujitsu LIFEBOOK U7410
Input: synaptics - add LEN205b entry to smbus_pnp_ids for ThinkPad T490
usb: hub: use shorter 120ms post resume hold for SS root hubs
Lu Baolu (1):
iommu: disable SVA when CONFIG_X86 is set
Ma Xinmeng (1):
dm-snap: reject the transient exception store for snapshot-merge
Maoyi Xie (1):
rds_tcp: close NULL deref window in rds_tcp_set_callbacks
Marc Harvey (2):
net: team: Remove unused team_mode_op, port_enabled
net: team: Rename port_disabled team mode op to port_tx_disabled
Marcus Folkesson (1):
HID: hid-alps: use default remove for hid device
Marek Szyprowski (1):
ASoC: samsung: i2s: enable op_clk in probe to balance runtime PM
Martino Papero (1):
Input: atkbd - skip deactivate for Lenovo IdeaPad Slim 3 15IWC11
Masami Hiramatsu (Google) (1):
kprobes: Protect kprobe_blacklist with RCU
Matthew Wilcox (Oracle) (2):
fs: Free any excess xarray nodes in clear_inode()
highmem: round down the address passed to kunmap_flush_on_unmap()
Matti Vaittinen (3):
workqueue: Add resource managed version of delayed work init
devm-helpers: Add resource managed version of work init
devm-helpers: Fix devm_delayed_work_autocancel() kerneldoc
Maxim Skokov (1):
Bluetooth: RFCOMM: free the skb when the DLC has no owner
Maíra Canal (1):
drm/vc4: Free the BO cache size list on teardown
Mehmet Fide (2):
mtd: rawnand: vf610_nfc: fix reads on chips with more than 64 bytes of OOB
mtd: rawnand: vf610_nfc: fix false bitflips on reads of erased pages
Michael Bommarito (2):
ceph: bound copied dentry name length in NFS export get_name
ceph: bound num_export_targets array for mds info v2/v3
Michael Kelley (1):
Drivers: hv: Don't reset VMBus connection state on error/exit paths
Michal Luczaj (1):
vsock: treat TCP_CLOSING as once-established
Michele Dionisio (1):
wifi: brcmfmac: fix P2P device removal race in brcmf_detach()
Mika Westerberg (1):
thunderbolt: Fix KASAN reported use-after-free when request is canceled
Mikhail Gavrilov (1):
Bluetooth: RFCOMM: connect the session socket without rfcomm_mutex
Mikulas Patocka (1):
dm: fix reading free memory in do_resume
Ming-Hung Tsai (1):
dm cache: fix demotion stats in passthrough mode
Mingming Cao (1):
ibmveth: h_free logical LAN on open-fail after register
Mingyu Wang (1):
tty: vt: fix memory leak in vc_allocate()
Muhammad Bilal (2):
staging: rtl8723bs: fix OOB read in rtw_restruct_wmm_ie()
staging: sm750fb: fix mono image source stride mismatch in lynxfb_ops_imageblit()
Myeonghun Pak (5):
usb: ohci-da8xx: disable controller wakeup on cleanup
usb: ohci-s3c2410: disable controller wakeup on removal
usb: ohci-st: disable controller wakeup on removal
usb: ohci-spear: disable controller wakeup on removal drm/aspeed: Balance the display clock enable on teardown
Namhyung Kim (1):
perf tools: Fix a asan issue in parse_events_multi_pmu_add()
Namjae Jeon (1):
smb: client: use finish_no_open() for non-regular inodes
Nguyen Ngoc Thang (3):
ALSA: caiaq: unregister the input device when probe fails
memstick: rtsx_usb_ms: complete requests after eject instead of dropping them drm/fb-helper: defer setup when fbdev_probe() fails, not just on -EAGAIN
Nickolai Zeldovich (1):
exit: fix lost-update race on the child_subreaper bitfields
Nicolas Escande (1):
wifi: ath11k: reset ar->num_stations on hardware start
Niklas Schnelle (1):
s390/pci: Fix leak of uninitialized kernel data in SCLP report
Nikola Prica (1):
PCI: Accept AtomicOps already enabled by the hypervisor
Nilesh Javali (10):
scsi: qla2xxx: Zero dport diagnostics buffer to avoid info leak
scsi: qla2xxx: Fix queue teardown NULL dma_free and bitmap locking
scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown
scsi: qla2xxx: Validate BSG request_len before reading vendor_cmd[]
scsi: qla2xxx: Null out freed pointers in qla2x00_mem_alloc() error path
scsi: qla2xxx: Fix 64G link speed reporting in get_data_rate
scsi: qla2xxx: Quiesce response IRQ before freeing request queue
scsi: qla2xxx: Use memset_io() to clear QLAFX00 request ring slot
scsi: qla2xxx: Initialize NVMe abort_work once at submission
scsi: qla2xxx: Fix NVMe abort reference leak on repeated abort
Oliver Hartkopp (1):
can: fix unique skb identifier regression under RPS
Orgad Shaneh (1):
usb: octeon-hcd: fix the FIFO-flush timeout computation
Oscar Ou (1):
lockd: fix swapped arguments in nlmsvc_match_ip()
Pablo Neira Ayuso (2):
netfilter: nf_tables: release flowtable after rcu grace period on error
netfilter: nf_tables: unconditionally bump set->nelems before insertion
Palla Raghunath (2):
dm ioctl: don't let data_start run past the buffer
Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown
Pannarat Wiriyaarritham (1):
usb: typec: ucsi: acpi: Assume UCSI 1.2 on Acer Nitro ANV15-41
Pauli Virtanen (2):
Bluetooth: L2CAP: access chan->conn safely in get/setsockopt
Bluetooth: L2CAP: refuse __l2cap_chan_add if chan already has conn
Paulo Alcantara (2):
smb: client: fix file type corruption in cifs_reparse_point_to_fattr()
smb: client: fix smbd_connection leak on cifs_get_tcp_session() error
Pavankumar Kondeti (1):
workqueue: Fix NULL current_pwq deref in chained work check
Pei Xiao (1):
mtd: block2mtd: Fix divide error when erase_size is zero
Peiyang He (1):
drm/nouveau: don't bump pin count on failed re-pin in nouveau_bo_pin_locked()
Pengpeng Hou (1):
iio: adc: aspeed: propagate reset deassert errors
Peter Xu (1):
mm/hugetlb: fix avoid_reserve to allow taking folio from subpool
Prashanth K (1):
usb: typec: ucsi: Get the connector fwnode based on reg value
Qing Ming (1):
gtp: serialize PDP context updates
Quchaosheng (1):
net/packet: guard the ll header push in packet_rcv_spkt()
Raj Ojha (1):
memstick: core: wait for request completion before freeing card
Raphaël Larocque (1):
Input: synaptics - limit T440p InterTouch quirk to LEN0036
Runyu Xiao (5):
ALSA: pcxhr: initialize mutexes before requesting threaded IRQ
ALSA: harmony: initialize locks before requesting IRQ
rtc: spear: initialize IRQ state before requesting alarm IRQ
mtd: rawnand: cadence: Initialize IRQ state before requesting IRQ
scsi: qedi: Initialize callback state before registration
Ruoyu Wang (2):
i2c: mxs: fix DMA channel leak on probe error
media: zoran: Avoid freeing a registered video_device twice
Sabrina Dubroca (1):
strparser: make sure __strp_recv isn't running before tearing down the parser
Sai Teja Aluvala (1):
Bluetooth: btintel: validate DDC record lengths
Salah Triki (2):
iio: accel: sca3000: fix frequency divider condition check
iio: proximity: isl29501: Fix return type of isl29501_register_write
Samuel Holland (1):
pinctrl: sunxi: Refactor register/offset calculation
Sang-Hoon Choi (3):
Bluetooth: hci_core: free the HCI ID if naming fails cxgb4/ch_ktls: disable softirqs around tid_list erases
nvmet: use the local P2P device on metadata allocation failure
Sanghyun Park (1):
vxlan: use one headroom snapshot for neighbour replies
Sasha Levin (3):
Revert "scsi: sd: sd_zbc: Use logical blocks as unit when querying zones"
samples: pidfd: fix userprogs typo
tools: gpio: fix building from the top level with O=
Sean Christopherson (1):
KVM: SVM: Use the active VMCB's MSR bitmap when checking if MSR is intercepted
Sebastian Andrzej Siewior (1):
ring-buffer: Acquire the lock with irqsave in rb_wake_up_waiters()
Sebastian Sjoholm (1):
USB: serial: option: add Quectel RG660QB
Sergey Senozhatsky (1):
zram: fixup read_block_state()
Shao-Fu Chen (1):
optee: register TEE devices only once fully initialized
Shawn Lin (3):
pmdomain: rockchip: fix clock leak on domain probe failure
pmdomain: rockchip: don't ignore clock lookup errors on attach
pmdomain: rockchip: propagate subdomain add errors
Simon Gassner (1):
serial: tegra: don't clear the Tx FIFO on an Rx-only reset
Stefan Wahren (1):
staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances
Stephen Smalley (1):
selinux: preserve NATIVE_LABELS on already-initialized sb in set_mnt_opts
Steve French (1):
smb3: make query_on_disk_id open context consistent and move to common code
Steven Rostedt (2):
ftrace: Take trace_array reference before accessing its ftrace_ops
ftrace: Synchronize the initialization of ftrace_ops
Sung Byeongchan (1):
autofs: ignore notification errors from a replaced pipe
Syed Labeeq Sajid Bukhari (1):
usb: storage: sierra_ms: reject short SWoC info transfers
Tahera Fahimi (1):
xfrm: prevent policy_hthresh.work from racing with netns teardown
Takashi Iwai (1):
ALSA: parisc: Fix assignment in if condition
Thomas Gleixner (1):
tick/broadcast: Plug clockevents replacement race
Thomas Weißschuh (1):
HID: core: remove #ifdef CONFIG_PM from hid_driver
Thorsten Blum (1):
net: ipconfig: Remove outdated comment and indent code block
Tianchu Chen (1):
wifi: cw1200: fix TX padding OOB read leaking heap data to device
Tibor Harcsa (1):
Bluetooth: btusb: Add IMC Networks QCA9377 to quirks table
Timur Kristóf (4):
drm/amd/pm/si: Check AMD_IS_MOBILITY flag for PPSMC_SYSTEMFLAG_GPIO_DC drm/amd/pm/si: Fix updating clock limits on AC/DC drm/amd/display: Mark DCE 6.4 as not APU
drm/amdgpu/sdma3: Work around POLL_REGMEM / FENCE hang
Tristan Madani (2):
nvme: add missing SRCU grace period in error path
wifi: wcn36xx: fix heap overflow from oversized firmware HAL response
Tzung-Bi Shih (1):
watchdog: rtd119x: Avoid division by zero
Usama Arif (1):
mm/huge_memory: transfer the pmd dirty bit to the folio on zap
Uwe Kleine-König (5):
Bluetooth: btqcomsmd: Convert to platform remove callback returning void
power: supply: rt9455: Convert to i2c's .probe_new()
power: supply: max17040: Convert to i2c's .probe_new()
wifi: wl12xx: Drop if with an always false condition
wifi: wlcore: Convert to platform remove callback returning void
Varun Prakash (1):
nvme-tcp: validate R2T PDU in nvme_tcp_handle_r2t()
Vicki Pfau (5):
HID: hid-steam: Make client_opened a counter
HID: steam: Fully unregister controller when hidraw is opened
HID: steam: Rearrange teardown sequence
HID: steam: Refactor registration
HID: steam: Clean up locking
Victor Nogueira (1):
net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode
Viken Dadhaniya (2):
tty: serial: qcom_geni_serial: Keep console RX functional after deep idle
soc: qcom: geni-se: Correct QUP Core ICC vote constants
Vishal Badole (1):
EDAC/amd64: Mask UMC chip select to the four implemented selects
Vivek BalachandharTN (1):
staging: rtl8723bs: fix spacing around operators
Wang Jianzheng (1):
pinctrl: sunxi: Use devm_clk_get_enabled() helpers
Weiming Shi (2):
net: team: fix NULL pointer dereference in team_xmit during mode change
net: team: stop reusing skb after queue override
Wenjie Qi (2):
f2fs: return writeback error from collapse range
f2fs: limit recovery filename logging to stored length
Wentao Liang (7):
drm/amdgpu: Fix runtime PM leak in amdgpu_debugfs_test_ib_show() of/irq: Fix remaining refcount leaks in of_irq_init()
kgdboc: Fix tty driver reference leak in configure_kgdboc()
serial: vt8500: Fix clock reference leak in vt8500_serial_probe()
wifi: wlcore: Fix runtime PM leak in wlcore_remove()
btrfs: scrub: fix local_root reference leak in scrub_print_warning_inode()
i2c: viai2c-wmt: Fix clock leak in wmt_i2c_probe()
Willem de Bruijn (1):
tcp: prevent collapsing skbs across boundary in rtx queue
Willian Oliveira (1):
drm/amdgpu/gfx6: fix firmware leak on teardown
Xiang Mei (4):
vlan: require the MAC header to be present in __vlan_insert_inner_tag()
ALSA: line6: reject oversized playback packets
ALSA: ua101: reject mismatched capture/playback packet sizes
net: bonding: fix use-after-free in bond_xmit_broadcast()
Xin Long (1):
openvswitch: add nf_ct_is_confirmed check before assigning the helper
XingWang Xiang (1):
genetlink: pin family module during policy dump
Xu Rao (1):
Bluetooth: btqcomsmd: destroy RPMsg endpoints before freeing hci_dev
Xu Yang (2):
device property: fix infinite loop in fwnode_for_each_child_node()
usb: typec: tcpm: fix debug accessory mode detection for sink ports
Xuanqiang Luo (1):
net/sched: act_api: release all action references on NEWACTION failure
Xueqin Luo (1):
power: supply: ds2780: Fix ds2780_get_capacity() returning raw value
Yehyeong Lee (5):
nvme-tcp: fix host memory disclosure on R2T for a read command
nvme-tcp: reject a read that transferred too few bytes
scsi: libiscsi: Reject a negative task index from parse_pdu_itt
scsi: libiscsi: Validate the ITT reflected in a Reject PDU
scsi: libiscsi: Validate the task named by a management response
Yi Yang (1):
vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF
Yibo Tan (1):
mmc: mtk-sd: Cancel request timeout work on remove
Yosry Ahmed (1):
KVM: nVMX: Service local TLB flushes on failed nested VM-Enter
Yuchao Zhang (1):
usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC
Yun Zhou (1):
xfs: don't hold buffer locks across sync transaction commit in xfs_sync_sb_buf
Yuqi Xu (3):
net: ipconfig: bound DHCP option construction
wifi: mac80211: handle empty FILS association request payload
tipc: destroy topsrv workqueues before closing connections
Yuxiao Wang (1):
nitro_enclaves: fix use-after-free on SLOT_ALLOC failure
Zack Rusin (1):
drm/vmwgfx: validate pitch coming from userspace
Zhang Changzhong (1):
net/sched: cls_u32: skip hash tables in u32_bind_class()
Zhao Dongdong (1):
USB: serial: option: add support for SIMCom SIM8260C
Zhao Li (5):
wifi: cfg80211: preserve hidden-group beacon IE ownership
wifi: mac80211: drain PS delivery work during station teardown
wifi: mac80211: release mesh path quota on failed additions
wifi: mac80211: keep fallback association elements alive
wifi: mac80211: account proxy paths against the mesh path limit
Zhengchuan Liang (1):
perf: Require kernel access for text poke events
Zhiling Zou (3):
ipvs: bound LBLCR and LBLC cache growth
wifi: mac80211: keep paired old chanctx alive
wifi: mac80211: count only matching reservations in reserved switch
Zihan Xi (6):
ipmr: account multicast table and route memory
smb: client: fix create context out-of-bounds reads
smb: client: validate POSIX create context length
smb: client: close handle after create-context parsing failure
smb: client: close completed creates on compound wait errors
ipv4: avoid divide by zero in fib_rebalance
Zixuan Chai (1):
net: bridge: avoid recursive multicast port cleanup
Zizhi Wo (1):
vt: skip screen update for DEC alignment test on backgroup consoles
성병찬 (1):
KEYS: Fix add_key() race with keyring restriction
Greg Kroah-Hartman
maintainerDocumentation/arm64/silicon-errata.rst +2 -0
@@ -128,6 +128,8 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A725 | #3821522 | ARM64_ERRATUM_3821522 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-X1 | #3324344 | ARM64_ERRATUM_3194386 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-X1 | #4193791 | ARM64_ERRATUM_4118414 |
Documentation/networking/strparser.rst +1 -1
@@ -77,7 +77,7 @@ Functions strp_done is called to release any resources held by the stream parser instance. This must be called after the stream processor - has been stopped. + has been stopped. The socket lock must not be held. ::
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 272 +SUBLEVEL = 273 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/Kconfig +30 -0
@@ -673,9 +673,17 @@ config ARM64_ERRATUM_1508412 If unsure, say Y. +config ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT + bool + # Targeting errata affecting AMEVCNTR01, the AMU constant counter. + # On affected CPUs the counter may not increment at the expected rate, + # making it unreliable. As a result, AMU users should treat it as + # unavailable rather than relying on misleading counter values. + config ARM64_ERRATUM_2457168 bool "Cortex-A510: 2457168: workaround for AMEVCNTR01 incrementing incorrectly" depends on ARM64_AMU_EXTN + select ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT default y help This option adds the workaround for ARM Cortex-A510 erratum 2457168.
@@ -691,6 +699,28 @@ config ARM64_ERRATUM_2457168 If unsure, say Y. +config ARM64_ERRATUM_3821522 + bool "Cortex-A725: 3821522: workaround for possible CNT_CYCLES increment error due to WFE/WFI" + depends on ARM64_AMU_EXTN + select ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT + default y + help + This option adds the workaround for ARM Cortex-A725 erratum 3821522. + + On affected A725 cores, the CNT_CYCLES event may incur a significant + increment error when entering and subsequently exiting WFx. + As a result, the CNT_CYCLES may diverge from the system counter + frequency at which it is expected to increment. + This renders the AMU counter AMEVCNTR01, that implements CNT_CYCLES, + being unreliable and unsuitable for use. + + Since there is no hardware workaround, reads of the affected CNT_CYCLES + counter return 0 in the relevant paths. This causes users of the counter + to treat it as unavailable and is functionally equivalent to firmware + disabling the affected counter. + + If unsure, say Y. + config ARM64_ERRATUM_3194386 bool "Cortex-*/Neoverse-*: workaround for MSR SSBS not self-synchronizing" default y
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +9 -0
@@ -85,6 +85,14 @@ hdmi_con: endpoint { }; }; + reserved-memory { + /* Cont splash region set up by the bootloader */ + cont_splash_mem: framebuffer@9d400000 { + reg = <0x0 0x9d400000 0x0 0x2400000>; + no-map; + }; + }; + lt9611_1v8: lt9611-vdd18-regulator { compatible = "regulator-fixed"; regulator-name = "LT9611_1V8";
@@ -488,6 +496,7 @@ &i2c14 { }; &mdss { + memory-region = <&cont_splash_mem>; status = "okay"; };
arch/arm64/include/asm/cpucaps.h +1 -1
@@ -67,7 +67,7 @@#define ARM64_MTE 57#define ARM64_WORKAROUND_1508412 58#define ARM64_SPECTRE_BHB 59 -#define ARM64_WORKAROUND_2457168 60 +#define ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT 60#define ARM64_WORKAROUND_1742098 61#define ARM64_WORKAROUND_SPECULATIVE_SSBS 62
arch/arm64/kernel/cpu_errata.c +18 -5
@@ -260,6 +260,20 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = { };#endif +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT +static const struct midr_range workaround_amu_constcnt_list[] = { +#ifdef CONFIG_ARM64_ERRATUM_2457168 +/* Cortex-A510 r0p0-r1p1 */ +MIDR_RANGE (MIDR_CORTEX_A510 ,0 ,0 ,1 ,1 ), +#endif +#ifdef CONFIG_ARM64_ERRATUM_3821522 +/* Cortex-A725 r0p0 - r0p2 */ +MIDR_RANGE (MIDR_CORTEX_A725 ,0 ,0 ,0 ,2 ), +#endif + {} +}; +#endif /* CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT */ +#ifdef CONFIG_CAVIUM_ERRATUM_27456 const struct midr_range cavium_erratum_27456_cpus[] = { /* Cavium ThunderX, T88 pass 1.x - 2.1 */
@@ -611,13 +625,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = { 1, 0), },#endif -#ifdef CONFIG_ARM64_ERRATUM_2457168 +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT { - .desc = "ARM erratum 2457168", - .capability = ARM64_WORKAROUND_2457168, + .desc = "Broken AMU AMEVCNTR01 (const counter)", + .capability = ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT, .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE, - /* Cortex-A510 r0p0-r1p1 */ - CAP_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1) + CAP_MIDR_RANGE_LIST(workaround_amu_constcnt_list) }, #endif #ifdef CONFIG_ARM64_ERRATUM_1742098
arch/arm64/kernel/cpufeature.c +1 -1
@@ -1608,7 +1608,7 @@ static void cpu_amu_enable(struct arm64_cpu_capabilities const *cap)cpumask_set_cpu (smp_processor_id (), &amu_cpus);/* 0 reference values signal broken/disabled counters */ -if (!this_cpu_has_cap (ARM64_WORKAROUND_2457168 )) +if (!this_cpu_has_cap (ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT ))init_cpu_freq_invariance_counters (); } }
arch/arm64/kvm/vgic/vgic-its.c +8 -0
@@ -2151,6 +2151,14 @@ static int vgic_its_save_ite(struct vgic_its *its, struct its_device *dev,u32 next_offset;u64 val; +/* +* MAPC with V=0 keeps the ITEs mapped but drops their collection, +* and with it the ICID. Save a zeroed entry, which the restore path +* reads back as invalid. +*/ +if (!ite->collection) +return vgic_its_write_entry_lock (its, gpa,0ULL , ite_esz); + next_offset =compute_next_eventid_offset (&dev->itt_head, ite); val = ((u64 )next_offset <<KVM_ITS_ITE_NEXT_SHIFT ) | ((u64)ite->irq->intid << KVM_ITS_ITE_PINTID_SHIFT) |
arch/arm64/mm/fault.c +10 -4
@@ -14,6 +14,7 @@#include <linux/mm.h> #include <linux/hardirq.h> #include <linux/init.h> +#include <linux/irqflags.h> #include <linux/kprobes.h> #include <linux/uaccess.h> #include <linux/page-flags.h>
@@ -116,6 +117,7 @@ static inline unsigned long mm_to_pgd_phys(struct mm_struct *mm)static void show_pte (unsigned long addr) {struct mm_struct *mm; +unsigned long flags;pgd_t *pgdp;pgd_t pgd;
@@ -139,6 +141,9 @@ static void show_pte(unsigned long addr)pr_alert ("%s pgtable: %luk pages, %llu-bit VAs, pgdp=%016lx\n" , mm == &init_mm ?"swapper" :"user" ,PAGE_SIZE /SZ_1K , vabits_actual,mm_to_pgd_phys (mm)); + +local_irq_save (flags); + pgdp =pgd_offset (mm, addr); pgd =READ_ONCE (*pgdp);pr_alert ("[%016lx] pgd=%016llx" , addr,pgd_val (pgd));
@@ -152,31 +157,32 @@ static void show_pte(unsigned long addr)if (pgd_none (pgd) ||pgd_bad (pgd))break ; - p4dp =p4d_offset (pgdp, addr); + p4dp =p4d_offset_lockless (pgdp, pgd, addr); p4d =READ_ONCE (*p4dp);pr_cont (", p4d=%016llx" ,p4d_val (p4d));if (p4d_none (p4d) ||p4d_bad (p4d))break ; - pudp =pud_offset (p4dp, addr); + pudp =pud_offset_lockless (p4dp, p4d, addr); pud =READ_ONCE (*pudp);pr_cont (", pud=%016llx" ,pud_val (pud));if (pud_none (pud) ||pud_bad (pud))break ; - pmdp =pmd_offset (pudp, addr); + pmdp =pmd_offset_lockless (pudp, pud, addr); pmd =READ_ONCE (*pmdp);pr_cont (", pmd=%016llx" ,pmd_val (pmd));if (pmd_none (pmd) ||pmd_bad (pmd))break ; - ptep =pte_offset_map (pmdp, addr); + ptep =pte_offset_map (&pmd, addr); pte =READ_ONCE (*ptep);pr_cont (", pte=%016llx" ,pte_val (pte));pte_unmap (ptep); }while (0 );pr_cont ("\n" ); +local_irq_restore (flags); }/*
arch/nios2/include/asm/checksum.h +1 -1
@@ -27,7 +27,7 @@ static inline __sum16 csum_fold(__wsum sum) "add %0, %0, r8\n" "nor %0, %0, %0\n" : "=r" (sum) - : "r" (sum << 16), "0" (sum) + : "r" ((__force u32)sum << 16), "0" (sum) : "r8");return (__force __sum16 ) sum; }
arch/s390/kvm/guestdbg.c +1 -1
@@ -184,7 +184,7 @@ static int __import_wp_info(struct kvm_vcpu *vcpu,if (wp_info->len <0 || wp_info->len >MAX_WP_SIZE )return -EINVAL ; - wp_info->old_data =kmalloc (bp_data->len,GFP_KERNEL ); + wp_info->old_data =kmalloc (wp_info->len,GFP_KERNEL );if (!wp_info->old_data)return -ENOMEM ;/* try to backup the original value */
arch/s390/kvm/kvm-s390.c +2 -2
@@ -3933,8 +3933,8 @@ long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable)static void __kvm_inject_pfault_token (struct kvm_vcpu *vcpu,bool start_token,unsigned long token) { -struct kvm_s390_interrupt inti; -struct kvm_s390_irq irq; +struct kvm_s390_interrupt inti = {}; +struct kvm_s390_irq irq = {};if (start_token) { irq.u.ext.ext_params2 = token;
arch/s390/pci/pci_sysfs.c +3 -0
@@ -125,6 +125,9 @@ static ssize_t report_error_write(struct file *filp, struct kobject *kobj,if (off || (count <sizeof (*report)))return -EINVAL ; +if (count < (report->length +sizeof (*report))) +return -EINVAL ; + ret =sclp_pci_report (report, zdev->fh, zdev->fid);return ret ? ret : count;
arch/x86/events/intel/core.c +3 -7
@@ -5022,12 +5022,6 @@ __init int intel_pmu_init(void)x86_add_quirk (intel_arch_events_quirk);/* Install first, so it runs last */ -if (version >=5 ) { - x86_pmu.intel_cap.anythread_deprecated = edx.split.anythread_deprecated; -if (x86_pmu.intel_cap.anythread_deprecated) -pr_cont (" AnyThread deprecated, " ); - } -/* * Install the hw-cache-events table: */
@@ -5554,8 +5548,10 @@ __init int intel_pmu_init(void) ((1LL << x86_pmu.num_counters_fixed)-1 ) <<INTEL_PMC_IDX_FIXED ;/* AnyThread may be deprecated on arch perfmon v5 or later */ -if (x86_pmu.intel_cap.anythread_deprecated) +if (version >=5 && edx.split.anythread_deprecated) { x86_pmu.format_attrs = intel_arch_formats_attr; +pr_cont ("AnyThread deprecated, " ); + }if (x86_pmu.event_constraints) {/*
arch/x86/events/perf_event.h +1 -1
@@ -587,7 +587,7 @@ union perf_capabilities { u64 pebs_baseline:1; u64 perf_metrics:1; u64 pebs_output_pt_available:1; - u64 anythread_deprecated:1; + u64 __reserved:1; };u64 capabilities; };
arch/x86/kvm/mmu/mmu.c +3 -1
@@ -2237,7 +2237,9 @@ static int mmu_page_zap_pte(struct kvm *kvm, struct kvm_mmu_page *sp,* avoids retaining a large number of stale nested SPs. */ if (tdp_enabled && invalid_list && - child->role.guest_mode && !child->parent_ptes.val) + child->role.guest_mode && + !child->root_count && + !child->parent_ptes.val)return kvm_mmu_prepare_zap_page (kvm, child, invalid_list); }
arch/x86/kvm/svm/svm.c +1 -2
@@ -616,8 +616,7 @@ static bool msr_write_intercepted(struct kvm_vcpu *vcpu, u32 msr)u32 offset;u32 *msrpm; - msrpm =is_guest_mode (vcpu) ?to_svm (vcpu)->nested.msrpm: -to_svm (vcpu)->msrpm; + msrpm =__va (__sme_clr (to_svm (vcpu)->vmcb->control.msrpm_base_pa)); offset =svm_msrpm_offset (msr); bit_write =2 * (msr &0x0f ) +1 ;
arch/x86/kvm/vmx/nested.c +17 -1
@@ -3490,13 +3490,29 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu, vmentry_fail_vmexit_guest_mode:if (vmcs12->cpu_based_vm_exec_control &CPU_BASED_USE_TSC_OFFSETTING ) vcpu->arch.tsc_offset -= vmcs12->tsc_offset; + +/* +* Handle any TLB flush requests that were queued for L2 if KVM made it +* far enough along to switch to L2 context. Note, loading host state +* will generate any flushes for L1 required by VM-Exit. +*/ +if (kvm_check_request (KVM_REQ_TLB_FLUSH_CURRENT , vcpu)) +kvm_vcpu_flush_tlb_current (vcpu); + +if (kvm_check_request (KVM_REQ_TLB_FLUSH_GUEST , vcpu)) { + ++vcpu->stat.tlb_flush; + kvm_x86_ops.tlb_flush_guest (vcpu); + } +leave_guest_mode (vcpu); vmentry_fail_vmexit:vmx_switch_vmcs (vcpu, &vmx->vmcs01); -if (!from_vmentry) +if (!from_vmentry) { +nested_ept_uninit_mmu_context (vcpu);return NVMX_VMENTRY_VMEXIT ; + }load_vmcs12_host_state (vcpu, vmcs12); vmcs12->vm_exit_reason = exit_reason.full;
arch/x86/kvm/x86.h +2 -2
@@ -164,7 +164,7 @@ static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu)static inline void vcpu_cache_mmio_info (struct kvm_vcpu *vcpu,gva_t gva,gfn_t gfn,unsigned access) { -u64 gen =kvm_memslots (vcpu->kvm)->generation; +u64 gen =kvm_vcpu_memslots (vcpu)->generation;if (unlikely (gen &KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS ))return ;
@@ -181,7 +181,7 @@ static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu,static inline bool vcpu_match_mmio_gen (struct kvm_vcpu *vcpu) { -return vcpu->arch.mmio_gen ==kvm_memslots (vcpu->kvm)->generation; +return vcpu->arch.mmio_gen ==kvm_vcpu_memslots (vcpu)->generation; }/*
crypto/drbg.c +5 -6
@@ -1975,7 +1975,6 @@ static int drbg_kcapi_seed(struct crypto_rng *tfm,*/ static inline int __init drbg_healthcheck_sanity (void ) { -int len =0 ;#define OUTBUFLEN 16unsigned char buf[OUTBUFLEN ];struct drbg_state *drbg =NULL ;
@@ -2017,12 +2016,12 @@ static inline int __init drbg_healthcheck_sanity(void) max_addtllen =drbg_max_addtl (drbg); max_request_bytes =drbg_max_request_bytes (drbg);drbg_string_fill (&addtl, buf, max_addtllen +1 ); -/* overflow addtllen with additonal info string */ - len =drbg_generate (drbg, buf,OUTBUFLEN , &addtl); -BUG_ON (0 < len); +/* overflow addtllen with additional info string */ + ret =drbg_generate (drbg, buf,OUTBUFLEN , &addtl); +BUG_ON (ret ==0 );/* overflow max_bits */ - len =drbg_generate (drbg, buf, (max_request_bytes +1 ),NULL ); -BUG_ON (0 < len); + ret =drbg_generate (drbg, buf, max_request_bytes +1 ,NULL ); +BUG_ON (ret ==0 );/* overflow max addtllen with personalization string */ ret =drbg_seed (drbg, &addtl, false);
drivers/base/property.c +16 -3
@@ -740,18 +740,31 @@ struct fwnode_handle * fwnode_get_next_child_node(const struct fwnode_handle *fwnode, struct fwnode_handle *child) { + const struct fwnode_handle *parent; + struct fwnode_handle *child_parent __free(fwnode_handle) = NULL;struct fwnode_handle *next; -if (IS_ERR_OR_NULL (fwnode)) +/* +* If this function is in a loop and the previous iteration returned +* an child from fwnode->secondary, then we need to use the secondary +* as parent rather than @fwnode. +*/ +if (child) { + child_parent =fwnode_get_parent (child); + parent = child_parent; + }else { + parent = fwnode; + } +if (IS_ERR_OR_NULL (parent))return NULL ;/* Try to find a child in primary fwnode */ - next =fwnode_call_ptr_op (fwnode, get_next_child_node, child); + next =fwnode_call_ptr_op (parent, get_next_child_node, child);if (next)return next;/* When no more children in primary, continue with secondary */ -return fwnode_call_ptr_op (fwnode->secondary, get_next_child_node, child); +return fwnode_get_next_child_node (parent->secondary,NULL ); }EXPORT_SYMBOL_GPL (fwnode_get_next_child_node);
drivers/block/loop.c +9 -1
@@ -2032,16 +2032,24 @@ static void loop_handle_cmd(struct loop_cmd *cmd)const bool write =op_is_write (req_op (rq));struct loop_device *lo = rq->q->queuedata;int ret =0 ; +const bool use_aio = cmd->use_aio;if (write && (lo->lo_flags &LO_FLAGS_READ_ONLY )) { ret = -EIO ; goto failed; } +/* +* do_req_filebacked() may call blk_mq_complete_request() synchronously +* or asynchronously if using aio. Hence, do not touch 'cmd' after +* do_req_filebacked() has returned unless we are sure that 'cmd' has +* not yet been completed. +*/ ret =do_req_filebacked (lo, rq); + failed:/* complete non-aio request */ -if (!cmd->use_aio || ret) { +if (!use_aio || ret) {if (ret == -EOPNOTSUPP ) cmd->ret = ret;else
drivers/block/zram/zram_drv.c +4 -2
@@ -882,8 +882,7 @@ static ssize_t read_block_state(struct file *file, char __user *buf,char *kbuf;ssize_t index, written =0 ;struct zram *zram = file->private_data; -unsigned long nr_pages = zram->disksize >>PAGE_SHIFT ; -struct timespec64 ts; +unsigned long nr_pages; kbuf =kvmalloc (count,GFP_KERNEL );if (!kbuf)
@@ -896,8 +895,11 @@ static ssize_t read_block_state(struct file *file, char __user *buf,return -EINVAL ; } + nr_pages = zram->disksize >>PAGE_SHIFT ; +for (index = *ppos; index < nr_pages; index++) {int copied; +struct timespec64 ts;zram_slot_lock (zram, index);if (!zram_allocated (zram, index))
drivers/bluetooth/btintel.c +12 -3
@@ -210,7 +210,8 @@ void btintel_hw_error(struct hci_dev *hdev, u8 code)return ; } -bt_dev_err (hdev,"Exception info %s" , (char *)(skb->data +1 )); +bt_dev_err (hdev,"Exception info %.*s" , (int )(skb->len -1 ), + (char *)(skb->data +1 ));kfree_skb (skb); }
@@ -284,8 +285,16 @@ int btintel_load_ddc_config(struct hci_dev *hdev, const char *ddc_name)/* DDC file contains one or more DDC structure which has * Length (1 byte), DDC ID (2 bytes), and DDC value (Length - 2). */ -while (fw->size > fw_ptr - fw->data) { -u8 cmd_plen = fw_ptr[0 ] +sizeof (u8); +while (fw->size > (size_t )(fw_ptr - fw->data)) { +size_t remaining = fw->size - (fw_ptr - fw->data); +unsigned int cmd_plen = fw_ptr[0 ] +1U ; + +if (cmd_plen <3 || cmd_plen >U8_MAX || cmd_plen > remaining) { +bt_dev_err (hdev,"Malformed DDC record (plen=%u, remaining=%zu)" , + cmd_plen, remaining); +release_firmware (fw); +return -EINVAL ; + } skb =__hci_cmd_sync (hdev,0xfc8b , cmd_plen, fw_ptr,HCI_INIT_TIMEOUT );
drivers/bluetooth/btqcomsmd.c +6 -4
@@ -188,7 +188,10 @@ static int btqcomsmd_probe(struct platform_device *pdev)return 0 ; hci_free_dev: +rpmsg_destroy_ept (btq->cmd_channel); +rpmsg_destroy_ept (btq->acl_channel);hci_free_dev (hdev); +return ret; destroy_cmd_channel:rpmsg_destroy_ept (btq->cmd_channel); destroy_acl_channel:
@@ -197,17 +200,16 @@ static int btqcomsmd_probe(struct platform_device *pdev)return ret; } -static int btqcomsmd_remove (struct platform_device *pdev) +static void btqcomsmd_remove (struct platform_device *pdev) {struct btqcomsmd *btq =platform_get_drvdata (pdev);hci_unregister_dev (btq->hdev); -hci_free_dev (btq->hdev);rpmsg_destroy_ept (btq->cmd_channel);rpmsg_destroy_ept (btq->acl_channel); -return 0 ; +hci_free_dev (btq->hdev); }static const struct of_device_id btqcomsmd_of_match[] = {
@@ -218,7 +220,7 @@ MODULE_DEVICE_TABLE(of, btqcomsmd_of_match);static struct platform_driver btqcomsmd_driver = { .probe = btqcomsmd_probe, - .remove = btqcomsmd_remove, + .remove_new = btqcomsmd_remove, .driver = { .name ="btqcomsmd" , .of_match_table = btqcomsmd_of_match,
drivers/bluetooth/btusb.c +2 -0
@@ -302,6 +302,8 @@ static const struct usb_device_id blacklist_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x13d3, 0x3501), .driver_info = BTUSB_QCA_ROME | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x13d3, 0x3503), .driver_info = BTUSB_QCA_ROME | + BTUSB_WIDEBAND_SPEECH }, /* QCA WCN6855 chipset */ { USB_DEVICE(0x0cf3, 0xe600), .driver_info = BTUSB_QCA_WCN6855 |
drivers/char/hw_random/stm32-rng.c +3 -9
@@ -156,18 +156,13 @@ static int stm32_rng_probe(struct platform_device *ofdev)pm_runtime_set_autosuspend_delay (dev,100 );pm_runtime_use_autosuspend (dev); -pm_runtime_enable (dev); + err =devm_pm_runtime_enable (dev); +if (err) +return err;return devm_hwrng_register (dev, &priv->rng); } -static int stm32_rng_remove (struct platform_device *ofdev) -{ -pm_runtime_disable (&ofdev->dev); - -return 0 ; -} -#ifdef CONFIG_PM static int stm32_rng_runtime_suspend (struct device *dev) {
@@ -209,7 +204,6 @@ static struct platform_driver stm32_rng_driver = { .of_match_table = stm32_rng_match, }, .probe = stm32_rng_probe, - .remove = stm32_rng_remove, };module_platform_driver (stm32_rng_driver);
drivers/dma/dmaengine.c +30 -0
@@ -934,6 +934,36 @@ void dma_release_channel(struct dma_chan *chan) }EXPORT_SYMBOL_GPL (dma_release_channel); +static void dmaenginem_release_channel (void *chan) +{ +dma_release_channel (chan); +} + +/** +* devm_dma_request_chan - try to allocate an exclusive slave channel +* @dev: pointer to client device structure +* @name: slave channel name +* +* Returns pointer to appropriate DMA channel on success or an error pointer. +* +* The operation is managed and will be undone on driver detach. +*/ + +struct dma_chan *devm_dma_request_chan (struct device *dev,const char *name) +{ +struct dma_chan *chan =dma_request_chan (dev, name); +int ret =0 ; + +if (!IS_ERR (chan)) + ret =devm_add_action_or_reset (dev, dmaenginem_release_channel, chan); + +if (ret) +return ERR_PTR (ret); + +return chan; +} +EXPORT_SYMBOL_GPL (devm_dma_request_chan); +/** * dmaengine_get - register interest in dma_channels */
drivers/edac/amd64_edac.c +1 -1
@@ -2669,7 +2669,7 @@ static void decode_umc_error(int node_id, struct mce *m) err.err_code =ERR_CHANNEL ; } - err.csrow = m->synd &0x7 ; + err.csrow = m->synd &0x3 ;if (umc_normaddr_to_sysaddr (m->addr, pvt->mc_node_id, err.channel, &sys_addr)) { err.err_code =ERR_NORM_ADDR ;
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c +8 -3
@@ -354,7 +354,7 @@ static int acp_hw_init(void *handle) r =device_for_each_child (adev->acp.parent, &adev->acp.acp_genpd->gpd, acp_genpd_add_device);if (r) - goto failure; + goto failure_remove_mfd;/* Assert Soft reset of ACP */ val =cgs_read_register (adev->acp.cgs_device, mmACP_SOFT_RESET);
@@ -371,7 +371,7 @@ static int acp_hw_init(void *handle)if (--count ==0 ) {dev_err (&adev->pdev->dev,"Failed to reset ACP\n" ); r = -ETIMEDOUT ; - goto failure; + goto failure_remove_mfd; }udelay (100 ); }
@@ -389,7 +389,7 @@ static int acp_hw_init(void *handle)if (--count ==0 ) {dev_err (&adev->pdev->dev,"Failed to reset ACP\n" ); r = -ETIMEDOUT ; - goto failure; + goto failure_remove_mfd; }udelay (100 ); }
@@ -399,6 +399,11 @@ static int acp_hw_init(void *handle)cgs_write_register (adev->acp.cgs_device, mmACP_SOFT_RESET, val);return 0 ; +failure_remove_mfd: +device_for_each_child (adev->acp.parent,NULL , + acp_genpd_remove_device); +mfd_remove_devices (adev->acp.parent); + failure:kfree (i2s_pdata);kfree (adev->acp.acp_res);
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +6 -19
@@ -968,7 +968,6 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf, {struct amdgpu_device *adev = f->f_inode->i_private;int r; -ssize_t result =0 ;uint32_t offset, se, sh, cu, wave, simd, thread, bank, *data;if (size >4096 || size &3 || *pos &3 )
@@ -1013,25 +1012,11 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,pm_runtime_mark_last_busy (adev_to_drm (adev)->dev);pm_runtime_put_autosuspend (adev_to_drm (adev)->dev); +amdgpu_virt_disable_access_debugfs (adev); -while (size) { -uint32_t value; - - value = data[result >>2 ]; - r =put_user (value, (uint32_t *)buf); -if (r) { -amdgpu_virt_disable_access_debugfs (adev); - goto err; - } - - result +=4 ; - buf +=4 ; - size -=4 ; - } - + r =copy_to_user (buf, data, size) ? -EFAULT : size;kfree (data); -amdgpu_virt_disable_access_debugfs (adev); -return result; +return r; err:pm_runtime_put_autosuspend (adev_to_drm (adev)->dev);
@@ -1259,8 +1244,10 @@ static int amdgpu_debugfs_test_ib(struct seq_file *m, void *data)/* Avoid accidently unparking the sched thread during GPU reset */ r =down_read_killable (&adev->reset_sem); -if (r) +if (r) { +pm_runtime_put_autosuspend (dev->dev);return r; + }/* hold on the scheduler */ for (i =0 ; i <AMDGPU_MAX_RINGS ; i++) {
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c +7 -10
@@ -489,20 +489,17 @@ void amdgpu_gmc_get_vbios_allocations(struct amdgpu_device *adev)case CHIP_RENOIR : adev->mman.keep_stolen_vga_memory = true;break ; -case CHIP_POLARIS10 : -case CHIP_POLARIS11 : -case CHIP_POLARIS12 : -/* MacBookPros with switchable graphics put VRAM at 0 when -* the iGPU is enabled which results in cursor issues if -* the cursor ends up at 0. Reserve vram at 0 in that case. -*/ -if (adev->gmc.vram_start ==0 ) - adev->mman.keep_stolen_vga_memory = true; -break ;default : adev->mman.keep_stolen_vga_memory = false;break ; } +/* MacBookPros with switchable graphics put VRAM at 0 when +* the iGPU is enabled which results in cursor issues if +* the cursor ends up at 0. Reserve vram at 0 in that case. +*/ +if ((adev->pdev->subsystem_vendor ==PCI_VENDOR_ID_APPLE ) && + (adev->gmc.vram_start ==0 )) + adev->mman.keep_stolen_vga_memory = true;if (!amdgpu_device_ip_get_ip_block (adev,AMD_IP_BLOCK_TYPE_DCE )) { size =0 ;
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +9 -0
@@ -3219,6 +3219,15 @@ static int gfx_v6_0_sw_fini(void *handle)amdgpu_gfx_rlc_fini (adev); +release_firmware (adev->gfx.pfp_fw); + adev->gfx.pfp_fw =NULL ; +release_firmware (adev->gfx.me_fw); + adev->gfx.me_fw =NULL ; +release_firmware (adev->gfx.ce_fw); + adev->gfx.ce_fw =NULL ; +release_firmware (adev->gfx.rlc_fw); + adev->gfx.rlc_fw =NULL ; +return 0 ; }
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +21 -4
@@ -458,6 +458,9 @@ static void sdma_v3_0_ring_emit_hdp_flush(struct amdgpu_ring *ring)else ref_and_mask =REG_SET_FIELD (ref_and_mask,GPU_HDP_FLUSH_DONE ,SDMA1 ,1 ); +/* Hang workaround */ +amdgpu_ring_write (ring,SDMA_PKT_NOP_HEADER_OP (SDMA_OP_NOP )); +amdgpu_ring_write (ring,SDMA_PKT_HEADER_OP (SDMA_OP_POLL_REGMEM ) |SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH (1 ) |SDMA_PKT_POLL_REGMEM_HEADER_FUNC (3 ));/* == */
@@ -483,6 +486,10 @@ static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se unsigned flags) {bool write64bit = flags &AMDGPU_FENCE_FLAG_64BIT ; + +/* Hang workaround */ +amdgpu_ring_write (ring,SDMA_PKT_NOP_HEADER_OP (SDMA_OP_NOP )); +/* write the fence */ amdgpu_ring_write (ring,SDMA_PKT_HEADER_OP (SDMA_OP_FENCE ));amdgpu_ring_write (ring,lower_32_bits (addr));
@@ -491,7 +498,11 @@ static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se/* optionally write high bits as well */ if (write64bit) { +/* Hang workaround */ +amdgpu_ring_write (ring,SDMA_PKT_NOP_HEADER_OP (SDMA_OP_NOP )); + addr +=4 ; +amdgpu_ring_write (ring,SDMA_PKT_HEADER_OP (SDMA_OP_FENCE ));amdgpu_ring_write (ring,lower_32_bits (addr));amdgpu_ring_write (ring,upper_32_bits (addr));
@@ -1043,6 +1054,9 @@ static void sdma_v3_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)uint32_t seq = ring->fence_drv.sync_seq;uint64_t addr = ring->fence_drv.gpu_addr; +/* Hang workaround */ +amdgpu_ring_write (ring,SDMA_PKT_NOP_HEADER_OP (SDMA_OP_NOP )); +/* wait for idle */ amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) | SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(0) |
@@ -1070,6 +1084,9 @@ static void sdma_v3_0_ring_emit_vm_flush(struct amdgpu_ring *ring, {amdgpu_gmc_emit_flush_gpu_tlb (ring, vmid, pd_addr); +/* Hang workaround */ +amdgpu_ring_write (ring,SDMA_PKT_NOP_HEADER_OP (SDMA_OP_NOP )); +/* wait for flush */ amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) | SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(0) |
@@ -1579,11 +1596,11 @@ static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = { .get_wptr = sdma_v3_0_ring_get_wptr, .set_wptr = sdma_v3_0_ring_set_wptr, .emit_frame_size = -6 +/* sdma_v3_0_ring_emit_hdp_flush */ +6 +1 +/* sdma_v3_0_ring_emit_hdp_flush */ 3 +/* hdp invalidate */ -6 +/* sdma_v3_0_ring_emit_pipeline_sync */ -VI_FLUSH_GPU_TLB_NUM_WREG *3 +6 +/* sdma_v3_0_ring_emit_vm_flush */ - 10 + 10 + 10, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */ +6 +1 +/* sdma_v3_0_ring_emit_pipeline_sync */ +VI_FLUSH_GPU_TLB_NUM_WREG *3 +6 +1 +/* sdma_v3_0_ring_emit_vm_flush */ + (10 + 1) * 3, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */ .emit_ib_size = 7 + 6, /* sdma_v3_0_ring_emit_ib */ .emit_ib = sdma_v3_0_ring_emit_ib, .emit_fence = sdma_v3_0_ring_emit_fence,
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c +1 -1
@@ -932,7 +932,7 @@ static const struct amdgpu_ring_funcs vce_v3_0_ring_phys_funcs = {static const struct amdgpu_ring_funcs vce_v3_0_ring_vm_funcs = { .type =AMDGPU_RING_TYPE_VCE , - .align_mask =0xf , + .align_mask =0x1f , .nop =VCE_CMD_NO_OP , .support_64bit_ptrs = false, .no_user_fence = true,
drivers/gpu/drm/amd/amdgpu/vi.c +21 -0
@@ -1058,10 +1058,31 @@ static uint64_t vi_get_pcie_replay_count(struct amdgpu_device *adev)return (nak_r + nak_g); } +struct vi_reset_quirk { +u16 device; +u16 subsystem_vendor; +u16 subsystem_device; +u8 revision; +}; + +static const struct vi_reset_quirk vi_reset_quirks[] = { + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x0190 ,0xe3 },/* Radeon Pro 555X */ + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x018f ,0xc2 },/* Radeon Pro 560X */ + {0x67ef ,PCI_VENDOR_ID_APPLE ,0x017a ,0xc7 },/* Radeon Pro 555 */ +}; +static bool vi_need_reset_on_init (struct amdgpu_device *adev) { +unsigned int i;u32 clock_cntl, pc; +for (i =0 ; i <ARRAY_SIZE (vi_reset_quirks); i++) +if (adev->pdev->device == vi_reset_quirks[i].device && + adev->pdev->subsystem_vendor == vi_reset_quirks[i].subsystem_vendor && + adev->pdev->subsystem_device == vi_reset_quirks[i].subsystem_device && + adev->pdev->revision == vi_reset_quirks[i].revision) +return true; +if (adev->flags &AMD_IS_APU )return false;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +6 -1
@@ -4710,11 +4710,16 @@ decide_crtc_timing_for_drm_display_mode(struct drm_display_mode *drm_mode,const struct drm_display_mode *native_mode, bool scale_enabled) { + /* Inserted modes copy the native sync; a sink mode with equal totals may not */ if (scale_enabled) {copy_crtc_timing_for_drm_display_mode (native_mode ,drm_mode ); } else if (native_mode->clock == drm_mode->clock && native_mode->htotal == drm_mode->htotal && - native_mode->vtotal == drm_mode->vtotal) { + native_mode->vtotal == drm_mode->vtotal && + native_mode->hsync_start == drm_mode->hsync_start && + native_mode->hsync_end == drm_mode->hsync_end && + native_mode->vsync_start == drm_mode->vsync_start && + native_mode->vsync_end == drm_mode->vsync_end) {copy_crtc_timing_for_drm_display_mode (native_mode, drm_mode); }else {/* no scaling nor amdgpu inserted, no need to patch */
drivers/gpu/drm/amd/display/dc/dce60/dce60_resource.c +0 -1
@@ -1359,7 +1359,6 @@ static bool dce64_construct( dc->caps.max_downscale_ratio =200 ; dc->caps.i2c_speed_in_khz =40 ; dc->caps.max_cursor_size =64 ; - dc->caps.is_apu = true;/************************************************* * Create resources *
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c +8 -2
@@ -224,15 +224,21 @@ static const ATOM_VOLTAGE_OBJECT_V3 *atomctrl_lookup_voltage_type_v3( unsigned int offset = offsetof(ATOM_VOLTAGE_OBJECT_INFO_V3_1, asVoltageObj[0]);uint8_t *start = (uint8_t *)voltage_object_info_table; -while (offset < size) { +while (offset +sizeof (ATOM_VOLTAGE_OBJECT_HEADER_V3 ) <= size) {const ATOM_VOLTAGE_OBJECT_V3 *voltage_object = (const ATOM_VOLTAGE_OBJECT_V3 *)(start + offset); +u16 obj_size; + + obj_size =le16_to_cpu (voltage_object->asGpioVoltageObj.sHeader.usSize); +if (obj_size <sizeof (voltage_object->asGpioVoltageObj.sHeader) || + offset + obj_size > size) +break ;if (voltage_type == voltage_object->asGpioVoltageObj.sHeader.ucVoltageType && voltage_mode == voltage_object->asGpioVoltageObj.sHeader.ucVoltageMode)return voltage_object; - offset +=le16_to_cpu (voltage_object->asGpioVoltageObj.sHeader.usSize); + offset += obj_size; }return NULL ;
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomfwctrl.c +8 -3
@@ -36,16 +36,21 @@ static const union atom_voltage_object_v4 *pp_atomfwctrl_lookup_voltage_type_v4( offsetof(struct atom_voltage_objects_info_v4_1, voltage_object[0]);unsigned long start = (unsigned long )voltage_object_info_table; -while (offset < size) { +while (offset +sizeof (struct atom_voltage_object_header_v4 ) <= size) {const union atom_voltage_object_v4 *voltage_object = (const union atom_voltage_object_v4 *)(start + offset); +u16 obj_size; + + obj_size =le16_to_cpu (voltage_object->gpio_voltage_obj.header.object_size); +if (obj_size <sizeof (voltage_object->gpio_voltage_obj.header) || + offset + obj_size > size) +break ;if (voltage_type == voltage_object->gpio_voltage_obj.header.voltage_type && voltage_mode == voltage_object->gpio_voltage_obj.header.voltage_mode)return voltage_object; - offset +=le16_to_cpu (voltage_object->gpio_voltage_obj.header.object_size); - + offset += obj_size; }return NULL ;
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c +20 -19
@@ -5164,7 +5164,8 @@ static int si_init_smc_table(struct amdgpu_device *adev)break ; } -if (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_HARDWAREDC ) +if ((adev->flags &AMD_IS_MOBILITY ) && + (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_HARDWAREDC )) table->systemFlags |=PPSMC_SYSTEMFLAG_GPIO_DC ;if (adev->pm.dpm.platform_caps &ATOM_PP_PLATFORM_CAP_REGULATOR_HOT ) {
@@ -7135,6 +7136,19 @@ static void si_parse_pplib_non_clock_info(struct amdgpu_device *adev, adev->pm.dpm.uvd_ps = rps; } +static void si_update_limits (struct amdgpu_clock_and_voltage_limits *limits, +struct rv7xx_pl *pl) +{ +if (pl->sclk > limits->sclk) + limits->sclk = pl->sclk; +if (pl->mclk > limits->mclk) + limits->mclk = pl->mclk; +if (pl->vddc > limits->vddc) + limits->vddc = pl->vddc; +if (pl->vddci > limits->vddci) + limits->vddci = pl->vddci; +} +static void si_parse_pplib_clock_info (struct amdgpu_device *adev,struct amdgpu_ps *rps,int index,union pplib_clock_info *clock_info)
@@ -7143,7 +7157,6 @@ static void si_parse_pplib_clock_info(struct amdgpu_device *adev,struct evergreen_power_info *eg_pi =evergreen_get_pi (adev);struct si_power_info *si_pi =si_get_pi (adev);struct si_ps *ps =si_get_ps (rps); -struct amdgpu_clock_and_voltage_limits *limits;u16 leakage_voltage;struct rv7xx_pl *pl = &ps->performance_levels[index];int ret;
@@ -7208,26 +7221,14 @@ static void si_parse_pplib_clock_info(struct amdgpu_device *adev,* VBIOS can contain conflicting values between: * - the maximum allowed clocks and voltages on AC or DC * - the clocks and voltages in power states on AC or DC +* +* Assume that the AC limits are the maximum of all power states, +* and the DC limits are the maximum of battery power states. */ +si_update_limits (&adev->pm.dpm.dyn_state.max_clock_voltage_on_ac, pl);if ((rps->class &ATOM_PPLIB_CLASSIFICATION_UI_MASK ) == -ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE ) - limits = &adev->pm.dpm.dyn_state.max_clock_voltage_on_ac; -else if ((rps->class &ATOM_PPLIB_CLASSIFICATION_UI_MASK ) ==ATOM_PPLIB_CLASSIFICATION_UI_BATTERY ) - limits = &adev->pm.dpm.dyn_state.max_clock_voltage_on_dc; -else - limits =NULL ; - -if (limits) { -if (pl->sclk > limits->sclk) - limits->sclk = pl->sclk; -if (pl->mclk > limits->mclk) - limits->mclk = pl->mclk; -if (pl->vddc > limits->vddc) - limits->vddc = pl->vddc; -if (pl->vddci > limits->vddci) - limits->vddci = pl->vddci; - } +si_update_limits (&adev->pm.dpm.dyn_state.max_clock_voltage_on_dc, pl); }union pplib_power_state {
drivers/gpu/drm/aspeed/aspeed_gfx_drv.c +2 -3
@@ -138,13 +138,12 @@ static int aspeed_gfx_load(struct drm_device *drm) }reset_control_deassert (priv->rst); - priv->clk =devm_clk_get (drm->dev,NULL ); + priv->clk =devm_clk_get_enabled (drm->dev,NULL );if (IS_ERR (priv->clk)) {dev_err (&pdev->dev, -"missing or invalid clk device tree entry" ); +"failed to get and enable clock\n" );return PTR_ERR (priv->clk); } -clk_prepare_enable (priv->clk);/* Sanitize control registers */ writel (0 , priv->base +CRT_CTRL1 );
drivers/gpu/drm/drm_fb_helper.c +4 -4
@@ -1802,11 +1802,11 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper,drm_client_modeset_probe (&fb_helper->client, width, height); ret =drm_fb_helper_single_fb_probe (fb_helper, bpp_sel);if (ret <0 ) { -if (ret == -EAGAIN ) { - fb_helper->preferred_bpp = bpp_sel; - fb_helper->deferred_setup = true; + fb_helper->preferred_bpp = bpp_sel; +/* modesets are probed but fb_helper->fb isn't; defer restore too */ + fb_helper->deferred_setup = true; +if (ret == -EAGAIN ) ret =0 ; - }mutex_unlock (&fb_helper->lock);return ret;
drivers/gpu/drm/i915/display/intel_csr.c +15 -4
@@ -439,7 +439,7 @@ static u32 parse_csr_fw_dmc(struct intel_csr *csr, }/* Cache the dmc header info. */ -if (mmio_count > mmio_count_max) { +if (!mmio_count || mmio_count > mmio_count_max) {DRM_ERROR ("DMC firmware has wrong mmio count %u\n" , mmio_count);return 0 ; }
@@ -454,12 +454,21 @@ static u32 parse_csr_fw_dmc(struct intel_csr *csr, csr->mmioaddr[i] =_MMIO (mmioaddr[i]); csr->mmiodata[i] = mmiodata[i]; } - csr->mmio_count = mmio_count; rem_size -= header_len_bytes;/* fw_size is in dwords, so multiplied by 4 to convert into bytes. */ - payload_size = dmc_header->fw_size *4 ; +if (check_mul_overflow (dmc_header->fw_size,4u , &payload_size)) { +DRM_ERROR ("DMC fw_size too large (%u dwords)\n" , + dmc_header->fw_size); +return 0 ; + } + +if (!payload_size) { +DRM_ERROR ("DMC firmware has empty payload\n" ); +return 0 ; + } +if (rem_size < payload_size) goto error_truncated;
@@ -467,7 +476,6 @@ static u32 parse_csr_fw_dmc(struct intel_csr *csr,DRM_ERROR ("DMC FW too big (%u bytes)\n" , payload_size);return 0 ; } - csr->dmc_fw_size = dmc_header->fw_size; csr->dmc_payload =kmalloc (payload_size,GFP_KERNEL );if (!csr->dmc_payload) {
@@ -475,6 +483,9 @@ static u32 parse_csr_fw_dmc(struct intel_csr *csr,return 0 ; } + csr->mmio_count = mmio_count; + csr->dmc_fw_size = dmc_header->fw_size; + payload = (u8 *)(dmc_header) + header_len_bytes;memcpy (csr->dmc_payload, payload, payload_size);
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +1 -1
@@ -1902,6 +1902,7 @@ static int eb_prefault_relocations(const struct i915_execbuffer *eb) static noinline int eb_relocate_parse_slow(struct i915_execbuffer *eb,struct i915_request *rq) { +const unsigned int count = eb->buffer_count;bool have_copy = false;struct eb_vma *ev;int err =0 ;
@@ -2028,7 +2029,6 @@ static noinline int eb_relocate_parse_slow(struct i915_execbuffer *eb, out:if (have_copy) { -const unsigned int count = eb->buffer_count;unsigned int i;for (i =0 ; i < count; i++) {
drivers/gpu/drm/i915/gt/intel_rps.c +2 -1
@@ -1702,7 +1702,8 @@ static void rps_work(struct work_struct *work) out:spin_lock_irq (>->irq_lock); -gen6_gt_pm_unmask_irq (gt, rps->pm_events); +if (intel_rps_is_active (rps)) +gen6_gt_pm_unmask_irq (gt, rps->pm_events);spin_unlock_irq (>->irq_lock); }
drivers/gpu/drm/msm/adreno/adreno_gpu.c +2 -0
@@ -907,6 +907,8 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, adreno_gpu->revn = adreno_gpu->info->revn; adreno_gpu->rev = config->rev; + gpu->pdev = pdev; + adreno_gpu_config.ioname ="kgsl_3d0_reg_memory" ; adreno_gpu_config.nr_rings = nr_rings;
drivers/gpu/drm/msm/disp/mdp5/mdp5_ctl.c +1 -1
@@ -728,7 +728,7 @@ struct mdp5_ctl_manager *mdp5_ctlm_init(struct drm_device *dev, }/* -* In Dual DSI case, CTL0 and CTL1 are always assigned to two DSI +* In bonded DSI case, CTL0 and CTL1 are always assigned to two DSI * interfaces to support single FLUSH feature (Flush CTL0 and CTL1 when * only write into CTL0's FLUSH register) to keep two DSI pipes in sync. * Single FLUSH is supported from hw rev v3.0.
drivers/gpu/drm/msm/dsi/dsi.h +4 -4
@@ -159,7 +159,7 @@ int msm_dsi_host_enable(struct mipi_dsi_host *host);int msm_dsi_host_disable (struct mipi_dsi_host *host);int msm_dsi_host_power_on (struct mipi_dsi_host *host,struct msm_dsi_phy_shared_timings *phy_shared_timings, -bool is_dual_dsi); +bool is_bonded_dsi);int msm_dsi_host_power_off (struct mipi_dsi_host *host);int msm_dsi_host_set_display_mode (struct mipi_dsi_host *host,const struct drm_display_mode *mode);
@@ -173,7 +173,7 @@ int msm_dsi_host_set_src_pll(struct mipi_dsi_host *host,void msm_dsi_host_reset_phy (struct mipi_dsi_host *host);void msm_dsi_host_get_phy_clk_req (struct mipi_dsi_host *host,struct msm_dsi_phy_clk_request *clk_req, -bool is_dual_dsi); +bool is_bonded_dsi);void msm_dsi_host_destroy (struct mipi_dsi_host *host);int msm_dsi_host_modeset_init (struct mipi_dsi_host *host,struct drm_device *dev);
@@ -195,8 +195,8 @@ int dsi_dma_base_get_6g(struct msm_dsi_host *msm_host, uint64_t *iova);int dsi_dma_base_get_v2 (struct msm_dsi_host *msm_host,uint64_t *iova);int dsi_clk_init_v2 (struct msm_dsi_host *msm_host);int dsi_clk_init_6g_v2 (struct msm_dsi_host *msm_host); -int dsi_calc_clk_rate_v2 (struct msm_dsi_host *msm_host,bool is_dual_dsi); -int dsi_calc_clk_rate_6g (struct msm_dsi_host *msm_host,bool is_dual_dsi); +int dsi_calc_clk_rate_v2 (struct msm_dsi_host *msm_host,bool is_bonded_dsi); +int dsi_calc_clk_rate_6g (struct msm_dsi_host *msm_host,bool is_bonded_dsi);/* dsi phy */ struct msm_dsi_phy ;
drivers/gpu/drm/msm/dsi/dsi_cfg.h +1 -1
@@ -47,7 +47,7 @@ struct msm_dsi_host_cfg_ops {void * (*tx_buf_get)(struct msm_dsi_host *msm_host);void (*tx_buf_put)(struct msm_dsi_host *msm_host);int (*dma_base_get)(struct msm_dsi_host *msm_host,uint64_t *iova); -int (*calc_clk_rate)(struct msm_dsi_host *msm_host,bool is_dual_dsi); +int (*calc_clk_rate)(struct msm_dsi_host *msm_host,bool is_bonded_dsi); };struct msm_dsi_cfg_handler {
drivers/gpu/drm/msm/dsi/dsi_host.c +29 -17
133 lines not on this page · raw message
drivers/gpu/drm/msm/dsi/dsi_manager.c +53 -54
321 lines not on this page · raw message
drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c +1 -1
@@ -124,7 +124,7 @@ struct dsi_pll_10nm {#define to_pll_10nm (x) container_of(x, struct dsi_pll_10nm, base)/* -* Global list of private DSI PLL struct pointers. We need this for Dual DSI +* Global list of private DSI PLL struct pointers. We need this for bonded DSI * mode, where the master PLL's clk_ops needs access the slave's private data */ static struct dsi_pll_10nm *pll_10nm_list[DSI_MAX ];
drivers/gpu/drm/msm/dsi/pll/dsi_pll_14nm.c +3 -3
@@ -152,7 +152,7 @@ struct dsi_pll_14nm {/* * Private struct for N1/N2 post-divider clocks. These clocks are similar to * the generic clk_divider class of clocks. The only difference is that it -* also sets the slave DSI PLL's post-dividers if in Dual DSI mode +* also sets the slave DSI PLL's post-dividers if in bonded DSI mode */ struct dsi_pll_14nm_postdiv {struct clk_hw hw;
@@ -168,7 +168,7 @@ struct dsi_pll_14nm_postdiv {#define to_pll_14nm_postdiv (_hw) container_of(_hw, struct dsi_pll_14nm_postdiv, hw)/* -* Global list of private DSI PLL struct pointers. We need this for Dual DSI +* Global list of private DSI PLL struct pointers. We need this for bonded DSI * mode, where the master PLL's clk_ops needs access the slave's private data */ static struct dsi_pll_14nm *pll_14nm_list[DSI_MAX ];
@@ -734,7 +734,7 @@ static int dsi_pll_14nm_postdiv_set_rate(struct clk_hw *hw, unsigned long rate, val |= value << shift;pll_write (base + REG_DSI_14nm_PHY_CMN_CLK_CFG0, val); -/* If we're master in dual DSI mode, then the slave PLL's post-dividers +/* If we're master in bonded DSI mode, then the slave PLL's post-dividers * follow the master's post dividers */ if (pll_14nm->uc ==MSM_DSI_PHY_MASTER ) {
drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c +1 -1
@@ -124,7 +124,7 @@ struct dsi_pll_7nm {#define to_pll_7nm (x) container_of(x, struct dsi_pll_7nm, base)/* -* Global list of private DSI PLL struct pointers. We need this for Dual DSI +* Global list of private DSI PLL struct pointers. We need this for bonded DSI * mode, where the master PLL's clk_ops needs access the slave's private data */ static struct dsi_pll_7nm *pll_7nm_list[DSI_MAX ];
drivers/gpu/drm/msm/msm_gpu.c +0 -1
@@ -921,7 +921,6 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,if (IS_ERR (gpu->gpu_cx)) gpu->gpu_cx =NULL ; - gpu->pdev = pdev;platform_set_drvdata (pdev, &gpu->adreno_smmu);msm_devfreq_init (gpu);
drivers/gpu/drm/nouveau/nouveau_bo.c +13 -36
108 lines not on this page · raw message
drivers/gpu/drm/nouveau/nouveau_bo.h +0 -3
@@ -40,9 +40,6 @@ struct nouveau_bo {struct nouveau_drm_tile *tile; -/* protect by the ttm reservation lock */ -int pin_refcnt; -struct ttm_bo_kmap_obj dma_buf_vmap; };
drivers/gpu/drm/nouveau/nouveau_chan.c +1 -1
@@ -107,7 +107,7 @@ nouveau_channel_del(struct nouveau_channel **pchan)nvif_object_dtor (&chan->push.ctxdma);nouveau_vma_del (&chan->push.vma);nouveau_bo_unmap (chan->push.buffer); -if (chan->push.buffer && chan->push.buffer->pin_refcnt) +if (chan->push.buffer && chan->push.buffer->bo.pin_count)nouveau_bo_unpin (chan->push.buffer);nouveau_bo_ref (NULL , &chan->push.buffer);kfree (chan);
drivers/gpu/drm/nouveau/nouveau_gem.c +10 -1
@@ -227,11 +227,20 @@ nouveau_gem_info(struct drm_file *file_priv, struct drm_gem_object *gem, rep->domain =NOUVEAU_GEM_DOMAIN_VRAM ; rep->offset = nvbo->offset;if (vmm->vmm.object.oclass >=NVIF_CLASS_VMM_NV50 ) { +int ret; + + ret =ttm_bo_reserve (&nvbo->bo, false, false,NULL ); +if (ret) +return ret; + vma =nouveau_vma_find (nvbo, vmm); -if (!vma) +if (!vma) { +ttm_bo_unreserve (&nvbo->bo);return -EINVAL ; + } rep->offset = vma->addr; +ttm_bo_unreserve (&nvbo->bo); } rep->size = nvbo->bo.mem.num_pages <<PAGE_SHIFT ;
drivers/gpu/drm/radeon/radeon_bios.c +5 -1
@@ -49,6 +49,7 @@static bool igp_read_bios_from_vram (struct radeon_device *rdev) {uint8_t __iomem *bios; +uint8_t val1, val2;resource_size_t vram_base;resource_size_t size =256 *1024 ;/* ??? */
@@ -63,7 +64,10 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)return false; } -if (size ==0 || bios[0 ] !=0x55 || bios[1 ] !=0xaa ) { + val1 =readb (&bios[0 ]); + val2 =readb (&bios[1 ]); + +if (size ==0 || val1 !=0x55 || val2 !=0xaa ) {iounmap (bios);return false; }
drivers/gpu/drm/vc4/vc4_bo.c +1 -0
@@ -1049,6 +1049,7 @@ static void vc4_bo_cache_destroy(struct drm_device *dev, void *unused)cancel_work_sync (&vc4->bo_cache.time_work);vc4_bo_cache_purge (dev); +kfree (vc4->bo_cache.size_list);for (i =0 ; i < vc4->num_labels; i++) {if (vc4->bo_labels[i].num_allocated) {
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +18 -4
@@ -151,6 +151,7 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,unsigned long kmap_num;SVGA3dCopyBox *box;unsigned box_count; +u64 src_extent;void *virtual;bool dummy;struct vmw_dma_cmd {
@@ -159,6 +160,8 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf, } *cmd;int i, ret; +BUILD_BUG_ON (sizeof (*srf->snooper.image) !=4 ); + cmd = container_of(header, struct vmw_dma_cmd, header);/* No snooper installed */
@@ -196,8 +199,19 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,return ; } +if (box->w ==0 || box->h ==0 ) +return ; + + src_extent = (u64)(box->h -1 ) * cmd->dma.guest.pitch + + (u64 )box->w *4 ; +if (src_extent > ((size_t )bo->num_pages <<PAGE_SHIFT )) { +DRM_ERROR ("Cursor snoop source of %llu bytes exceeds the %zu byte buffer\n" , + src_extent, (size_t )bo->num_pages <<PAGE_SHIFT ); +return ; + } + kmap_offset = cmd->dma.guest.ptr.offset >>PAGE_SHIFT ; - kmap_num = (64 *64 *4 ) >>PAGE_SHIFT ; + kmap_num =PFN_UP (src_extent); ret =ttm_bo_reserve (bo, true, false,NULL );if (unlikely (ret !=0 )) {
@@ -211,13 +225,13 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf, virtual =ttm_kmap_obj_virtual (&map, &dummy); -if (box->w ==64 && cmd->dma.guest.pitch ==64 *4 ) { +if (box->w ==64 && box->h ==64 && cmd->dma.guest.pitch ==64 *4 ) {memcpy (srf->snooper.image, virtual,64 *64 *4 ); }else { -/* Image is unsigned pointer. */ +/* The destination stride is in pixels. */ for (i =0 ; i < box->h; i++)memcpy (srf->snooper.image + i *64 , - virtual + i * cmd->dma.guest.pitch, + virtual + (size_t )i * cmd->dma.guest.pitch, box->w *4 ); }
drivers/hid/hid-alps.c +16 -5
@@ -827,7 +827,20 @@ static int alps_probe(struct hid_device *hdev, const struct hid_device_id *id)static void alps_remove (struct hid_device *hdev) { +struct alps_dev *data =hid_get_drvdata (hdev); + +/* +* input2 ("DualPoint Stick") is allocated separately and is not +* tracked in hdev->inputs, so the default remove path +* (hid_hw_stop -> hidinput_disconnect) does not unregister it. +* +* Stop the device first so that no URB callback can touch input2 +* while it is being unregistered, then drop it explicitly. +*/ hid_hw_stop (hdev); + +if (data->input2) +input_unregister_device (data->input2); }static const struct hid_device_id alps_id[] = {
@@ -847,14 +860,12 @@ static struct hid_driver alps_driver = { .name = "hid-alps", .id_table = alps_id, .probe = alps_probe, - .remove = alps_remove, .raw_event = alps_raw_event, .input_mapping = alps_input_mapping, .input_configured = alps_input_configured, -#ifdef CONFIG_PM - .resume = alps_post_resume, - .reset_resume = alps_post_reset, -#endif + .resume = pm_ptr(alps_post_resume), + .reset_resume = pm_ptr(alps_post_reset), + .remove = alps_remove, };module_hid_driver (alps_driver);
drivers/hid/hid-core.c +24 -2
@@ -1873,13 +1873,35 @@ EXPORT_SYMBOL_GPL(hid_report_raw_event);* @interrupt: distinguish between interrupt and control transfers * * This is data entry for lower layers. +* Legacy, please use hid_safe_input_report() instead. */ int hid_input_report (struct hid_device *hid,int type,u8 *data,u32 size,int interrupt) +{ +return hid_safe_input_report (hid, type, data, size, size, interrupt); +} +EXPORT_SYMBOL_GPL (hid_input_report); + +/** +* hid_safe_input_report - report data from lower layer (usb, bt...) +* +* @hid: hid device +* @type: HID report type (HID_*_REPORT) +* @data: report contents +* @bufsize: allocated size of the data buffer +* @size: useful size of data parameter +* @interrupt: distinguish between interrupt and control transfers +* +* This is data entry for lower layers. +* Please use this function instead of the non safe version because we provide +* here the size of the buffer, allowing hid-core to make smarter decisions +* regarding the incoming buffer. +*/ +int hid_safe_input_report (struct hid_device *hid,int type,u8 *data, +size_t bufsize,u32 size,int interrupt) {struct hid_report_enum *report_enum;struct hid_driver *hdrv;struct hid_report *report; -size_t bufsize = size;int ret =0 ;if (!hid)
@@ -1924,7 +1946,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, u32 size, int iup (&hid->driver_input_lock);return ret; } -EXPORT_SYMBOL_GPL (hid_input_report); +EXPORT_SYMBOL_GPL (hid_safe_input_report);bool hid_match_one_id (const struct hid_device *hdev,const struct hid_device_id *id)
drivers/hid/hid-steam.c +117 -94
416 lines not on this page · raw message
drivers/hid/i2c-hid/i2c-hid-core.c +3 -2
@@ -523,8 +523,9 @@ static void i2c_hid_get_input(struct i2c_hid *ihid)i2c_hid_dbg (ihid,"input: %*ph\n" , ret_size, ihid->inbuf);if (test_bit (I2C_HID_STARTED , &ihid->flags)) -hid_input_report (ihid->hid,HID_INPUT_REPORT , ihid->inbuf +2 , - ret_size -2 ,1 ); +hid_safe_input_report (ihid->hid,HID_INPUT_REPORT , + ihid->inbuf +2 , ihid->bufsize -2 , + ret_size -2 ,1 );return ; }
drivers/hid/uhid.c +4 -4
@@ -597,8 +597,8 @@ static int uhid_dev_input(struct uhid_device *uhid, struct uhid_event *ev)if (!uhid->running)return -EINVAL ; -hid_input_report (uhid->hid,HID_INPUT_REPORT , ev->u.input.data, -min_t (size_t, ev->u.input.size,UHID_DATA_MAX ),0 ); +hid_safe_input_report (uhid->hid,HID_INPUT_REPORT , ev->u.input.data,UHID_DATA_MAX , +min_t (size_t, ev->u.input.size,UHID_DATA_MAX ),0 );return 0 ; }
@@ -608,8 +608,8 @@ static int uhid_dev_input2(struct uhid_device *uhid, struct uhid_event *ev)if (!uhid->running)return -EINVAL ; -hid_input_report (uhid->hid,HID_INPUT_REPORT , ev->u.input2.data, -min_t (size_t, ev->u.input2.size,UHID_DATA_MAX ),0 ); +hid_safe_input_report (uhid->hid,HID_INPUT_REPORT , ev->u.input2.data,UHID_DATA_MAX , +min_t (size_t, ev->u.input2.size,UHID_DATA_MAX ),0 );return 0 ; }
drivers/hid/usbhid/hid-core.c +6 -5
@@ -281,9 +281,9 @@ static void hid_irq_in(struct urb *urb)break ;usbhid_mark_busy (usbhid);if (!test_bit (HID_RESUME_RUNNING , &usbhid->iofl)) { -hid_input_report (urb->context,HID_INPUT_REPORT , - urb->transfer_buffer, - urb->actual_length,1 ); +hid_safe_input_report (urb->context,HID_INPUT_REPORT , + urb->transfer_buffer, urb->transfer_buffer_length, + urb->actual_length,1 );/* * autosuspend refused while keys are pressed * because most keyboards don't wake up when
@@ -483,9 +483,10 @@ static void hid_ctrl(struct urb *urb)switch (status) {case 0 :/* success */ if (usbhid->ctrl[usbhid->ctrltail].dir ==USB_DIR_IN ) -hid_input_report (urb->context, +hid_safe_input_report (urb->context, usbhid->ctrl[usbhid->ctrltail].report->type, - urb->transfer_buffer, urb->actual_length,0 ); + urb->transfer_buffer, urb->transfer_buffer_length, + urb->actual_length,0 );break ;case -ESHUTDOWN :/* unplug */ unplug =1 ;
drivers/hv/connection.c +0 -1
@@ -264,7 +264,6 @@ int vmbus_connect(void) cleanup:pr_err ("Unable to connect to host\n" ); - vmbus_connection.conn_state =DISCONNECTED ;vmbus_disconnect ();kfree (msginfo);
drivers/hv/vmbus_drv.c +0 -1
@@ -2704,7 +2704,6 @@ static void __exit vmbus_exit(void)hv_remove_kexec_handler ();hv_remove_crash_handler (); - vmbus_connection.conn_state =DISCONNECTED ;hv_stimer_global_cleanup ();vmbus_disconnect ();hv_remove_vmbus_irq ();
drivers/hwmon/drivetemp.c +7 -3
@@ -165,6 +165,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st, {u8 scsi_cmd[MAX_COMMAND_SIZE ];int data_dir; +int err;memset (scsi_cmd,0 ,sizeof (scsi_cmd)); scsi_cmd[0 ] =ATA_16 ;
@@ -192,9 +193,12 @@ static int drivetemp_scsi_command(struct drivetemp_data *st, scsi_cmd[12 ] = lba_high; scsi_cmd[14 ] = ata_command; -return scsi_execute_req (st->sdev, scsi_cmd, data_dir, - st->smartdata,ATA_SECT_SIZE ,NULL ,HZ ,5 , -NULL ); + err =scsi_execute_req (st->sdev, scsi_cmd, data_dir, + st->smartdata,ATA_SECT_SIZE ,NULL ,HZ ,5 , +NULL ); +if (err >0 ) + err = -EIO ; +return err; } static int drivetemp_ata_command(struct drivetemp_data *st, u8 feature,
drivers/hwmon/gpio-fan.c +7 -1
@@ -12,6 +12,7 @@#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/irq.h> +#include <linux/devm-helpers.h> #include <linux/platform_device.h> #include <linux/err.h> #include <linux/mutex.h>
@@ -81,6 +82,7 @@ static DEVICE_ATTR_RO(fan1_alarm);static int fan_alarm_init (struct gpio_fan_data *fan_data) {int alarm_irq; +int err;struct device *dev = fan_data->dev;/*
@@ -91,7 +93,11 @@ static int fan_alarm_init(struct gpio_fan_data *fan_data)if (alarm_irq <=0 )return 0 ; -INIT_WORK (&fan_data->alarm_work, fan_alarm_notify); + err =devm_work_autocancel (dev, &fan_data->alarm_work, + fan_alarm_notify); +if (err) +return err; +irq_set_irq_type (alarm_irq,IRQ_TYPE_EDGE_BOTH );return devm_request_irq (dev, alarm_irq, fan_alarm_irq_handler,IRQF_SHARED ,"GPIO fan alarm" , fan_data);
drivers/hwtracing/coresight/coresight-etm3x-sysfs.c +4 -11
@@ -716,26 +716,19 @@ static DEVICE_ATTR_RW(cntr_rld_event);static ssize_t cntr_val_show (struct device *dev,struct device_attribute *attr,char *buf) { -int i, ret =0 ;u32 val;struct etm_drvdata *drvdata =dev_get_drvdata (dev->parent);struct etm_config *config = &drvdata->config;if (!local_read (&drvdata->mode)) {spin_lock (&drvdata->spinlock); -for (i =0 ; i < drvdata->nr_cntr; i++) - ret +=sprintf (buf,"counter %d: %x\n" , - i, config->cntr_val[i]); + val = config->cntr_val[config->cntr_idx];spin_unlock (&drvdata->spinlock); -return ret; - } - -for (i =0 ; i < drvdata->nr_cntr; i++) { - val =etm_readl (drvdata,ETMCNTVRn (i)); - ret +=sprintf (buf,"counter %d: %x\n" , i, val); + }else { + val =etm_readl (drvdata,ETMCNTVRn (config->cntr_idx)); } -return ret; +return sysfs_emit (buf,"%#x\n" , val); } static ssize_t cntr_val_store(struct device *dev,
drivers/i2c/busses/i2c-at91-master.c +7 -1
@@ -920,8 +920,14 @@ int at91_twi_probe_master(struct platform_device *pdev,at91_calc_twi_clock (dev); rc =at91_init_twi_recovery_info (pdev, dev); -if (rc == -EPROBE_DEFER ) +if (rc == -EPROBE_DEFER ) { +/* +* The DMA channels were already set up above, release them +* before deferring the probe so they are not leaked. +*/ +at91_twi_dma_release (dev);return rc; + } dev->adapter.algo = &at91_twi_algorithm; dev->adapter.quirks = &at91_twi_quirks;
drivers/i2c/busses/i2c-mxs.c +1 -4
@@ -840,7 +840,7 @@ static int mxs_i2c_probe(struct platform_device *pdev) }/* Setup the DMA */ - i2c->dmach =dma_request_chan (dev,"rx-tx" ); + i2c->dmach =devm_dma_request_chan (dev,"rx-tx" );if (IS_ERR (i2c->dmach)) {return dev_err_probe (dev,PTR_ERR (i2c->dmach),"Failed to request dma\n" );
@@ -878,9 +878,6 @@ static int mxs_i2c_remove(struct platform_device *pdev)i2c_del_adapter (&i2c->adapter); -if (i2c->dmach) -dma_release_channel (i2c->dmach); -writel (MXS_I2C_CTRL0_SFTRST , i2c->regs +MXS_I2C_CTRL0_SET );return 0 ;
drivers/i2c/busses/i2c-qcom-cci.c +2 -2
@@ -168,12 +168,12 @@ static irqreturn_t cci_isr(int irq, void *dev) }if (unlikely (val &CCI_IRQ_STATUS_0_I2C_M0_Q0Q1_HALT_ACK )) { - reset =CCI_RESET_CMD_M0_MASK ; + reset |=CCI_RESET_CMD_M0_MASK ; ret =IRQ_HANDLED ; }if (unlikely (val &CCI_IRQ_STATUS_0_I2C_M1_Q0Q1_HALT_ACK )) { - reset =CCI_RESET_CMD_M1_MASK ; + reset |=CCI_RESET_CMD_M1_MASK ; ret =IRQ_HANDLED ; }
drivers/i2c/busses/i2c-wmt.c +1 -1
@@ -391,7 +391,7 @@ static int wmt_i2c_probe(struct platform_device *pdev)return -EINVAL ; } - i2c_dev->clk =of_clk_get (np,0 ); + i2c_dev->clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (i2c_dev->clk)) {dev_err (&pdev->dev,"unable to request clock\n" );return PTR_ERR (i2c_dev->clk);
drivers/i2c/i2c-core-base.c +14 -0
@@ -2222,6 +2222,20 @@ int i2c_get_device_id(const struct i2c_client *client, }EXPORT_SYMBOL_GPL (i2c_get_device_id); +/** +* i2c_client_get_device_id - get the driver match table entry of a device +* @client: the device to query. The device must be bound to a driver +* +* Returns a pointer to the matching entry if found, NULL otherwise. +*/ +const struct i2c_device_id *i2c_client_get_device_id (const struct i2c_client *client) +{ +const struct i2c_driver *drv =to_i2c_driver (client->dev.driver); + +return i2c_match_id (drv->id_table, client); +} +EXPORT_SYMBOL_GPL (i2c_client_get_device_id); +/* ---------------------------------------------------- * the i2c address scanning function * Will not work for 10-bit addresses!
drivers/i3c/master.c +13 -7
@@ -575,6 +575,11 @@ static struct attribute *i3c_masterdev_attrs[] = { };ATTRIBUTE_GROUPS (i3c_masterdev); +static void i3c_master_free_i3c_dev (struct i3c_dev_desc *dev) +{ +kfree (dev); +} +static void i3c_masterdev_release (struct device *dev) {struct i3c_master_controller *master =dev_to_i3cmaster (dev);
@@ -587,6 +592,8 @@ static void i3c_masterdev_release(struct device *dev)i3c_bus_cleanup (bus);of_node_put (dev->of_node); + +i3c_master_free_i3c_dev (master->this); }static const struct device_type i3c_masterdev_type = {
@@ -774,11 +781,6 @@ static void i3c_device_release(struct device *dev)kfree (i3cdev); } -static void i3c_master_free_i3c_dev (struct i3c_dev_desc *dev) -{ -kfree (dev); -} -static struct i3c_dev_desc *i3c_master_alloc_i3c_dev (struct i3c_master_controller *master,const struct i3c_device_info *info)
@@ -1643,6 +1645,8 @@ int i3c_master_set_info(struct i3c_master_controller *master,return 0 ; err_free_dev: + master->bus.cur_master =NULL ; + master->this =NULL ;i3c_master_free_i3c_dev (i3cdev);return ret;
@@ -1663,7 +1667,8 @@ static void i3c_master_detach_free_devs(struct i3c_master_controller *master) i3cdev->boardinfo->init_dyn_addr, I3C_ADDR_SLOT_FREE); -i3c_master_free_i3c_dev (i3cdev); +if (i3cdev != master->this) +i3c_master_free_i3c_dev (i3cdev); } list_for_each_entry_safe(i2cdev, i2ctmp, &master->bus.devs.i2c,
@@ -1871,7 +1876,8 @@ i3c_master_search_i3c_dev_duplicate(struct i3c_dev_desc *refdev)struct i3c_dev_desc *i3cdev;i3c_bus_for_each_i3cdev (&master->bus, i3cdev) { -if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid) +if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid && + i3cdev != master->this)return i3cdev; }
drivers/iio/accel/kxcjk-1013.c +1 -1
@@ -934,7 +934,7 @@ static int kxcjk1013_write_event_config(struct iio_dev *indio_dev,struct kxcjk1013_data *data =iio_priv (indio_dev);int ret; -if (state && data->ev_enable_state) +if (state == data->ev_enable_state)return 0 ;mutex_lock (&data->mutex);
drivers/iio/accel/sca3000.c +1 -1
@@ -645,7 +645,7 @@ static int sca3000_write_raw_samp_freq(struct sca3000_state *st, int val)if (val == base_freq /2 ) ctrlval |=SCA3000_REG_OUT_CTRL_BUF_DIV_2 ; -if (val == base_freq /4 ) +else if (val == base_freq /4 ) ctrlval |=SCA3000_REG_OUT_CTRL_BUF_DIV_4 ;else if (val != base_freq)return -EINVAL ;
drivers/iio/adc/aspeed_adc.c +3 -1
@@ -221,7 +221,9 @@ static int aspeed_adc_probe(struct platform_device *pdev) ret =PTR_ERR (data->rst); goto reset_error; } -reset_control_deassert (data->rst); + ret =reset_control_deassert (data->rst); +if (ret) + goto reset_error; model_data =of_device_get_match_data (&pdev->dev);
drivers/iio/adc/max1363.c +8 -0
@@ -409,6 +409,14 @@ static int max1363_read_single_chan(struct iio_dev *indio_dev, } data = rxbuf[0 ]; } + +/* +* Differential channels are bipolar and the device returns the sample +* in two's complement, so sign-extend it from the resolution bit. +*/ +if (chan->differential) + data =sign_extend32 (data, st->chip_info->bits -1 ); + *val = data; error_ret:
drivers/iio/adc/sun4i-gpadc-iio.c +4 -6
@@ -645,10 +645,10 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)* thermal because no thermal DT node is found. */ if (IS_ERR (info->tzd) &&PTR_ERR (info->tzd) != -ENODEV ) { -dev_err (&pdev->dev, -"could not register thermal sensor: %ld\n" , -PTR_ERR (info->tzd)); -return PTR_ERR (info->tzd); + ret =dev_err_probe (&pdev->dev, +PTR_ERR (info->tzd), +"could not register thermal sensor\n" ); + goto err_map; } }
@@ -664,7 +664,6 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)if (!info->no_irq &&IS_ENABLED (CONFIG_THERMAL_OF ))iio_map_array_unregister (indio_dev); -pm_runtime_put (&pdev->dev);pm_runtime_disable (&pdev->dev);return ret;
@@ -675,7 +674,6 @@ static int sun4i_gpadc_remove(struct platform_device *pdev)struct iio_dev *indio_dev =platform_get_drvdata (pdev);struct sun4i_gpadc_iio *info =iio_priv (indio_dev); -pm_runtime_put (&pdev->dev);pm_runtime_disable (&pdev->dev);if (!IS_ENABLED (CONFIG_THERMAL_OF ))
drivers/iio/gyro/adis16136.c +1 -1
@@ -150,7 +150,7 @@ static int adis16136_debugfs_init(struct iio_dev *indio_dev)struct adis16136 *adis16136 =iio_priv (indio_dev);struct dentry *d =iio_get_debugfs_dentry (indio_dev); -debugfs_create_file_unsafe ("serial_number" ,0400 , +debugfs_create_file ("serial_number" ,0400 , d, adis16136, &adis16136_serial_fops);debugfs_create_file_unsafe ("product_id" ,0400 , d, adis16136, &adis16136_product_id_fops);
drivers/iio/imu/adis16400.c +1 -1
@@ -286,7 +286,7 @@ static int adis16400_debugfs_init(struct iio_dev *indio_dev)struct dentry *d =iio_get_debugfs_dentry (indio_dev);if (st->variant->flags &ADIS16400_HAS_SERIAL_NUMBER ) -debugfs_create_file_unsafe ("serial_number" ,0400 , +debugfs_create_file ("serial_number" ,0400 , d, st, &adis16400_serial_number_fops);if (st->variant->flags &ADIS16400_HAS_PROD_ID ) debugfs_create_file_unsafe("product_id", 0400,
drivers/iio/imu/adis16480.c +2 -2
@@ -286,9 +286,9 @@ static int adis16480_debugfs_init(struct iio_dev *indio_dev)struct adis16480 *adis16480 =iio_priv (indio_dev);struct dentry *d =iio_get_debugfs_dentry (indio_dev); -debugfs_create_file_unsafe ("firmware_revision" ,0400 , +debugfs_create_file ("firmware_revision" ,0400 , d, adis16480, &adis16480_firmware_revision_fops); -debugfs_create_file_unsafe ("firmware_date" ,0400 , +debugfs_create_file ("firmware_date" ,0400 , d, adis16480, &adis16480_firmware_date_fops);debugfs_create_file_unsafe ("serial_number" ,0400 , d, adis16480, &adis16480_serial_number_fops);
drivers/iio/light/gp2ap020a00f.c +2 -0
@@ -1571,6 +1571,7 @@ static int gp2ap020a00f_probe(struct i2c_client *client,iio_trigger_unregister (data->trig); error_free_irq:free_irq (client->irq, indio_dev); +irq_work_sync (&data->work); error_uninit_buffer:iio_triggered_buffer_cleanup (indio_dev); error_regulator_disable:
@@ -1593,6 +1594,7 @@ static int gp2ap020a00f_remove(struct i2c_client *client)iio_device_unregister (indio_dev);iio_trigger_unregister (data->trig);free_irq (client->irq, indio_dev); +irq_work_sync (&data->work);iio_triggered_buffer_cleanup (indio_dev);regulator_disable (data->vled_reg);
drivers/iio/proximity/isl29501.c +1 -1
@@ -227,7 +227,7 @@ static int isl29501_register_read(struct isl29501_private *isl29501,return ret; } -static u32 isl29501_register_write (struct isl29501_private *isl29501, +static int isl29501_register_write (struct isl29501_private *isl29501,enum isl29501_register_name name,u32 value) {
drivers/iio/proximity/pulsedlight-lidar-lite-v2.c +3 -1
@@ -297,12 +297,14 @@ static int lidar_probe(struct i2c_client *client, ret =pm_runtime_set_active (&client->dev);if (ret) - goto error_unreg_buffer; + goto error_unreg_dev;pm_runtime_enable (&client->dev);pm_runtime_idle (&client->dev);return 0 ; +error_unreg_dev: +iio_device_unregister (indio_dev); error_unreg_buffer:iio_triggered_buffer_cleanup (indio_dev);
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +2 -1
@@ -6087,7 +6087,8 @@ static int hns_roce_v2_init_eq_table(struct hns_roce_dev *hr_dev) goto err_request_irq_fail; } - hr_dev->irq_workq =alloc_ordered_workqueue ("hns_roce_irq_workq" ,0 ); + hr_dev->irq_workq =alloc_ordered_workqueue ("hns_roce_irq_workq" , +WQ_MEM_RECLAIM );if (!hr_dev->irq_workq) {dev_err (dev,"Create irq workqueue failed!\n" ); ret = -ENOMEM ;
drivers/input/keyboard/atkbd.c +8 -0
@@ -1954,6 +1954,14 @@ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = { }, .callback = atkbd_deactivate_fixup, }, + { +/* Lenovo IdeaPad Slim 3 15IWC11 (83RR) */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), + DMI_MATCH(DMI_PRODUCT_NAME, "83RR"), + }, + .callback = atkbd_deactivate_fixup, + }, {/* Xiaomi Book Pro 14 (TM2424) */ .matches = {
drivers/input/mouse/byd.c +1 -1
@@ -426,7 +426,7 @@ static void byd_disconnect(struct psmouse *psmouse)struct byd_data *priv = psmouse->private;if (priv) { -del_timer (&priv->timer); +timer_delete_sync (&priv->timer);kfree (psmouse->private); psmouse->private =NULL ; }
drivers/input/mouse/synaptics.c +5 -2
@@ -188,6 +188,7 @@ static const char * const smbus_pnp_ids[] = {"LEN2054" ,/* E480 */ "LEN2055" ,/* E580 */ "LEN2058" ,/* E490 */ +"LEN205b" ,/* T490 */ "LEN2068" ,/* T14 Gen 1 */ "SYN1221" ,/* TUXEDO InfinityBook Pro 14 v5 */ "SYN3003", /* HP EliteBook 850 G1 */
@@ -1805,8 +1806,10 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,return -ENXIO ; } -/* Disable intertouch on known-broken board revisions */ -if (info->board_id ==2722 ) { +/* Disable intertouch on known-broken T440p board revisions */ +if (info->board_id ==2722 && +psmouse_matches_pnp_id (psmouse, + (const char *const []){"LEN0036" ,NULL })) {psmouse_info (psmouse,"Disabling intertouch for board id %u\n" , info->board_id);
drivers/input/serio/i8042-acpipnpio.h +9 -0
@@ -660,6 +660,15 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { }, .driver_data = (void *)(SERIO_QUIRK_NOAUX) }, + { +/* Fujitsu LIFEBOOK U7410 */ +/* Mux mode also disturbs the EC keyboard, causing spurious ACKs */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU CLIENT COMPUTING LIMITED" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U7410"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX ) + }, {/* Gigabyte M912 */ .matches = {
drivers/input/touchscreen/s6sy761.c +13 -1
@@ -510,10 +510,22 @@ static int __maybe_unused s6sy761_suspend(struct device *dev)static int __maybe_unused s6sy761_resume (struct device *dev) {struct s6sy761_data *sdata =dev_get_drvdata (dev); +int err; + + err =s6sy761_power_on (sdata); +if (err) +return err;enable_irq (sdata->client->irq); -return s6sy761_power_on (sdata); +mutex_lock (&sdata->input->mutex); + +if (sdata->input->users) + err =i2c_smbus_write_byte (sdata->client,S6SY761_SENSE_ON ); + +mutex_unlock (&sdata->input->mutex); + +return err; }static const struct dev_pm_ops s6sy761_pm_ops = {
drivers/iommu/iommu.c +3 -0
@@ -2988,6 +2988,9 @@ iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata)struct iommu_sva *handle =ERR_PTR (-EINVAL );const struct iommu_ops *ops = dev->bus->iommu_ops; +if (IS_ENABLED (CONFIG_X86 )) +return ERR_PTR (-EOPNOTSUPP ); +if (!ops || !ops->sva_bind)return ERR_PTR (-ENODEV );
drivers/isdn/capi/capi.c +1 -7
@@ -303,15 +303,9 @@ static void capincci_alloc_minor(struct capidev *cdev, struct capincci *np)static void capincci_free_minor (struct capincci *np) {struct capiminor *mp = np->minorp; -struct tty_struct *tty;if (mp) { - tty =tty_port_tty_get (&mp->port); -if (tty) { -tty_vhangup (tty); -tty_kref_put (tty); - } - +tty_port_tty_vhangup (&mp->port);capiminor_free (mp); } }
drivers/md/dm-cache-target.c +31 -28
129 lines not on this page · raw message
drivers/md/dm-crypt.c +7 -3
@@ -1748,7 +1748,6 @@ static void crypt_dec_pending(struct dm_crypt_io *io) {struct crypt_config *cc = io->cc;struct bio *base_bio = io->base_bio; -blk_status_t error = io->error;if (!atomic_dec_and_test (&io->io_pending))return ;
@@ -1761,7 +1760,7 @@ static void crypt_dec_pending(struct dm_crypt_io *io)else kfree (io->integrity_metadata); - base_bio->bi_status = error; + base_bio->bi_status = io->error;/* * If we are running this function from our tasklet,
@@ -2869,8 +2868,13 @@ static int crypt_ctr_cipher_new(struct dm_target *ti, char *cipher_in, char *key } } -if (*ivmode && !strcmp (*ivmode,"lmk" )) +if (*ivmode && !strcmp (*ivmode,"lmk" )) { +if (crypt_integrity_aead (cc)) { + ti->error ="AEAD transforms not supported for LMK" ; +return -EINVAL ;
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7164/saa7164-core.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/cadence-nand-controller.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/vf610_nfc.c +70 -15
85 lines not on this page · raw message
drivers/net/ethernet/amazon/ena/ena_netdev.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bcmsysport.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +10 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/team/team.c +42 -25
67 lines not on this page · raw message
drivers/net/team/team_mode_loadbalance.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +23 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/3945-mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/fwio.c +37 -5
42 lines not on this page · raw message
drivers/net/wireless/marvell/libertas/tx.c +0 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +14 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ti/wlcore/wlcore.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/nvme/host/tcp.c +83 -35
118 lines not on this page · raw message
drivers/pinctrl/sunxi/pinctrl-sunxi.c +144 -53
197 lines not on this page · raw message
drivers/pinctrl/sunxi/pinctrl-sunxi.h +11 -89
100 lines not on this page · raw message
drivers/power/supply/max17040_battery.c +3 -7
Lines of this file are not shown. View the raw message.
drivers/scsi/qla2xxx/qla_bsg.c +40 -1
41 lines not on this page · raw message
drivers/staging/media/zoran/zoran_card.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/octeon-usb/octeon-hcd.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/target/iscsi/iscsi_target_configfs.c +19 -7
Lines of this file are not shown. View the raw message.
drivers/thunderbolt/ctl.c +23 -24
47 lines not on this page · raw message
drivers/tty/tty_io.c +37 -17
54 lines not on this page · raw message
drivers/tty/tty_port.c +35 -8
43 lines not on this page · raw message
drivers/usb/class/cdc-acm.c +22 -24
46 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/f_uac1_legacy.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/core.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/dev.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/hub.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/vhub.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/usb/serial/usb-serial.c +132 -53
185 lines not on this page · raw message
drivers/virt/nitro_enclaves/ne_misc_dev.c +1 -0
Lines of this file are not shown. View the raw message.
fs/cifs/smb2ops.c +62 -19
81 lines not on this page · raw message
fs/cifs/smb2pdu.c +55 -24
79 lines not on this page · raw message
fs/cifs/transport.c +54 -16
70 lines not on this page · raw message
fs/namespace.c +85 -30
115 lines not on this page · raw message
fs/ocfs2/dir.c +66 -5
71 lines not on this page · raw message
fs/xfs/libxfs/xfs_alloc.c +43 -18
61 lines not on this page · raw message
fs/xfs/xfs_bmap_item.c +48 -28
76 lines not on this page · raw message
fs/xfs/xfs_buf_item.c +246 -136
382 lines not on this page · raw message
fs/xfs/xfs_inode_item.c +133 -29
162 lines not on this page · raw message
fs/xfs/xfs_log.c +20 -30
50 lines not on this page · raw message
fs/xfs/xfs_refcount_item.c +38 -22
60 lines not on this page · raw message
fs/xfs/xfs_rmap_item.c +49 -26
75 lines not on this page · raw message
include/linux/devm-helpers.h new file +79 -0
79 lines not on this page · raw message
kernel/futex/core.c +26 -23
49 lines not on this page · raw message
kernel/params.c +35 -24
59 lines not on this page · raw message
kernel/trace/ftrace.c +50 -22
72 lines not on this page · raw message
kernel/trace/trace_events_hist.c +28 -20
48 lines not on this page · raw message
mm/ioremap.c +39 -6
45 lines not on this page · raw message
net/bluetooth/l2cap_sock.c +48 -11
59 lines not on this page · raw message
net/bluetooth/rfcomm/core.c +95 -39
134 lines not on this page · raw message
net/ipv4/ipconfig.c +47 -45
92 lines not on this page · raw message
net/netfilter/ipset/ip_set_bitmap_gen.h +1 -1
Lines of this file are not shown. View the raw message.
net/netfilter/nf_tables_trace.c +24 -20
44 lines not on this page · raw message
net/sched/cls_u32.c +33 -10
43 lines not on this page · raw message
net/tipc/topsrv.c +65 -15
80 lines not on this page · raw message
security/keys/keyring.c +82 -71
153 lines not on this page · raw message
security/keys/persistent.c +32 -23
55 lines not on this page · raw message
security/keys/trusted-keys/trusted_tpm1.c +1 -1
Lines of this file are not shown. View the raw message.
sound/pci/pcxhr/pcxhr.c +30 -31
61 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/filter/event-filter-incomplete.tc new file +24 -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.