Skip to contentSkip to conversation

Linux 7.2.11

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Oct 15 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 7.2.11 kernel.

All users of the 7.2 kernel series must upgrade.

The updated 7.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-7.2.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/networking/strparser.rst                         |    2 
 Makefile                                                       |    2 
 arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi                 |   19 
 arch/arm64/include/asm/el2_setup.h                             |    5 
 arch/arm64/kernel/Makefile                                     |    3 
 arch/riscv/Kconfig                                             |    5 
 arch/riscv/Kconfig.errata                                      |    1 
 arch/riscv/include/asm/futex.h                                 |    2 
 arch/riscv/include/asm/scs.h                                   |   17 
 arch/riscv/include/asm/vector.h                                |    8 
 arch/riscv/include/uapi/asm/vendor/mips.h                      |    4 
 arch/riscv/kernel/entry.S                                      |    2 
 arch/riscv/kernel/patch.c                                      |    2 
 arch/riscv/kernel/ptrace.c                                     |    8 
 arch/riscv/lib/strnlen.S                                       |   20 
 arch/riscv/mm/extable.c                                        |    4 
 arch/um/drivers/vector_transports.c                            |    1 
 arch/x86/include/asm/cpufeatures.h                             |    3 
 arch/x86/include/asm/tlb.h                                     |    6 
 arch/x86/kernel/cpu/amd.c                                      |    4 
 drivers/android/binder/node.rs                                 |   20 
 drivers/android/binder/node/wrapper.rs                         |   34 +
 drivers/ata/libata-scsi.c                                      |   13 
 drivers/block/zloop.c                                          |   31 -
 drivers/bluetooth/btintel_pcie.c                               |   17 
 drivers/clk/qcom/gcc-eliza.c                                   |    6 
 drivers/clk/qcom/gcc-kaanapali.c                               |    6 
 drivers/clk/qcom/gpucc-glymur.c                                |    2 
 drivers/clk/qcom/gpucc-kaanapali.c                             |    2 
 drivers/edac/amd64_edac.c                                      |    4 
 drivers/gpio/gpio-exar.c                                       |    2 
 drivers/gpio/gpio-mpsse.c                                      |   24 
 drivers/gpio/gpio-xilinx.c                                     |    9 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c                     |    8 
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c                    |   77 +--
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c                        |   17 
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c                        |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c                      |   13 
 drivers/gpu/drm/amd/amdgpu/mes_userqueue.c                     |    9 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c          |   32 +
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h                          |    7 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c              |   26 -
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c        |   20 
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c                        |    5 
 drivers/gpu/drm/bridge/th1520-dw-hdmi.c                        |    8 
 drivers/gpu/drm/display/drm_dp_helper.c                        |    4 
 drivers/gpu/drm/drm_bridge.c                                   |    8 
 drivers/gpu/drm/drm_fb_helper.c                                |    6 
 drivers/gpu/drm/gud/gud_pipe.c                                 |    1 
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c                 |    2 
 drivers/gpu/drm/i915/gt/intel_rps.c                            |    3 
 drivers/gpu/drm/imagination/pvr_mmu.c                          |   25 
 drivers/gpu/drm/imagination/pvr_vm.c                           |    8 
 drivers/gpu/drm/panthor/panthor_sched.c                        |    3 
 drivers/gpu/drm/vc4/vc4_bo.c                                   |    5 
 drivers/gpu/drm/vc4/vc4_drv.c                                  |    5 
 drivers/gpu/drm/vc4/vc4_drv.h                                  |    2 
 drivers/gpu/drm/vc4/vc4_gem.c                                  |    8 
 drivers/gpu/drm/vc4/vc4_irq.c                                  |   24 
 drivers/gpu/drm/vc4/vc4_v3d.c                                  |   65 +-
 drivers/gpu/drm/vc4/vc4_validate.c                             |    2 
 drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c                   |   26 -
 drivers/gpu/drm/xe/display/xe_fb_pin.c                         |    6 
 drivers/gpu/drm/xe/xe_bo.c                                     |  139 ++++-
 drivers/gpu/drm/xe/xe_bo.h                                     |    2 
 drivers/gpu/drm/xe/xe_i2c.c                                    |    5 
 drivers/gpu/drm/xe/xe_lrc.c                                    |   38 -
 drivers/gpu/drm/xe/xe_mmio.c                                   |    5 
 drivers/gpu/drm/xe/xe_sysctrl_mailbox.c                        |   16 
 drivers/hid/hid-steam.c                                        |  246 ++++-----
 drivers/input/joystick/xpad.c                                  |    4 
 drivers/input/misc/ati_remote2.c                               |   12 
 drivers/iommu/dma-iommu.c                                      |    4 
 drivers/md/dm-crypt.c                                          |    7 
 drivers/md/dm-integrity.c                                      |    4 
 drivers/md/dm-ioctl.c                                          |   14 
 drivers/md/dm-snap.c                                           |   14 
 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/net/amt.c                                              |   48 -
 drivers/net/bareudp.c                                          |    3 
 drivers/net/bonding/bond_main.c                                |    8 
 drivers/net/can/dev/skb.c                                      |    4 
 drivers/net/can/usb/f81604.c                                   |    2 
 drivers/net/can/vxcan.c                                        |    3 
 drivers/net/dsa/microchip/ksz_common.h                         |    2 
 drivers/net/ethernet/airoha/airoha_eth.c                       |   32 +
 drivers/net/ethernet/airoha/airoha_eth.h                       |    2 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                      |  189 ++++---
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                      |    1 
 drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c             |   11 
 drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c |    4 
 drivers/net/ethernet/google/gve/gve_main.c                     |    8 
 drivers/net/ethernet/google/gve/gve_rx_dqo.c                   |   13 
 drivers/net/ethernet/ibm/ibmveth.c                             |   22 
 drivers/net/ethernet/intel/e1000e/netdev.c                     |    7 
 drivers/net/ethernet/intel/iavf/iavf.h                         |   11 
 drivers/net/ethernet/intel/iavf/iavf_main.c                    |   85 ++-
 drivers/net/ethernet/intel/iavf/iavf_virtchnl.c                |   99 +++
 drivers/net/ethernet/intel/ice/devlink/port.c                  |    2 
 drivers/net/ethernet/intel/ice/ice_eswitch.c                   |    2 
 drivers/net/ethernet/intel/ice/ice_txrx.c                      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c            |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c                |   13 
 drivers/net/ethernet/mellanox/mlx5/core/esw/adj_vport.c        |   20 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c              |   79 ++-
 drivers/net/ethernet/mellanox/mlx5/core/vport.c                |   24 
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h                 |    2 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c             |   10 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c          |    9 
 drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c             |   28 -
 drivers/net/ethernet/microchip/sparx5/sparx5_tc_matchall.c     |    1 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c              |   15 
 drivers/net/ethernet/xilinx/xilinx_axienet.h                   |    7 
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c              |   51 +-
 drivers/net/pfcp.c                                             |    7 
 drivers/net/team/team_core.c                                   |   16 
 drivers/net/team/team_mode_broadcast.c                         |    2 
 drivers/net/tun.c                                              |   23 
 drivers/net/usb/ax88179_178a.c                                 |    6 
 drivers/net/veth.c                                             |    1 
 drivers/net/virtio_net.c                                       |    2 
 drivers/net/wireguard/noise.c                                  |    7 
 drivers/net/wireguard/queueing.h                               |    2 
 drivers/net/wireless/ath/ath12k/core.c                         |   33 -
 drivers/net/wireless/ath/ath12k/core.h                         |    3 
 drivers/net/wireless/ath/ath12k/hif.h                          |    9 
 drivers/net/wireless/ath/ath12k/pci.c                          |    8 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c        |   27 -
 drivers/net/wireless/marvell/libertas/tx.c                     |    7 
 drivers/net/wireless/mediatek/mt76/mt76.h                      |   10 
 drivers/net/wireless/mediatek/mt76/mt7603/init.c               |    1 
 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h           |    1 
 drivers/net/wireless/mediatek/mt76/mt7915/init.c               |    6 
 drivers/net/wireless/mediatek/mt76/mt7915/main.c               |    2 
 drivers/net/wireless/mediatek/mt76/mt7925/mac.c                |    3 
 drivers/net/wireless/mediatek/mt76/mt7925/main.c               |   12 
 drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c           |  128 +++--
 drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h           |    2 
 drivers/net/wireless/mediatek/mt76/mt7996/init.c               |    3 
 drivers/net/wireless/mediatek/mt76/mt7996/main.c               |   10 
 drivers/net/wireless/mediatek/mt76/mt7996/mcu.h                |    3 
 drivers/net/wireless/mediatek/mt76/tx.c                        |   89 +++
 drivers/net/xen-netfront.c                                     |    4 
 drivers/nvme/target/core.c                                     |    2 
 drivers/nvme/target/pr.c                                       |    4 
 drivers/pmdomain/imx/imx8m-blk-ctrl.c                          |   15 
 drivers/pmdomain/rockchip/pm-domains.c                         |   20 
 drivers/power/sequencing/pwrseq-pcie-m2.c                      |    2 
 drivers/ptp/ptp_ocp.c                                          |    2 
 drivers/regulator/ltc3676.c                                    |   15 
 drivers/regulator/of_regulator.c                               |   24 
 drivers/regulator/tps6594-regulator.c                          |    6 
 drivers/scsi/ch.c                                              |   29 -
 drivers/scsi/qedi/qedi_main.c                                  |    3 
 drivers/spi/spi-nxp-fspi.c                                     |   22 
 drivers/spi/spi-sg2044-nor.c                                   |   56 +-
 drivers/tee/optee/ffa_abi.c                                    |   38 +
 drivers/tee/optee/optee_msg.h                                  |    4 
 drivers/tee/optee/smc_abi.c                                    |   17 
 drivers/tee/tee_shm.c                                          |    4 
 drivers/ufs/core/ufs-mcq.c                                     |   30 -
 drivers/ufs/core/ufshcd.c                                      |   53 +-
 drivers/ufs/host/ufs-mediatek.c                                |   18 
 fs/btrfs/inode.c                                               |    7 
 fs/btrfs/ioctl.c                                               |   31 -
 fs/btrfs/scrub.c                                               |    4 
 fs/btrfs/xattr.c                                               |   15 
 fs/dcache.c                                                    |    4 
 fs/fcntl.c                                                     |    3 
 fs/fs_context.c                                                |    4 
 fs/inode.c                                                     |   23 
 fs/mount.h                                                     |    6 
 fs/namei.c                                                     |   29 +
 fs/namespace.c                                                 |  254 +++++++---
 fs/nullfs.c                                                    |    4 
 fs/pnode.c                                                     |  108 +++-
 fs/verity/fsverity_private.h                                   |   15 
 fs/verity/open.c                                               |   13 
 fs/xfs/libxfs/xfs_exchmaps.c                                   |  103 ----
 fs/xfs/libxfs/xfs_log_format.h                                 |    4 
 fs/xfs/xfs_bmap_util.c                                         |   15 
 fs/xfs/xfs_exchrange.c                                         |   51 +-
 include/linux/can/core.h                                       |    3 
 include/linux/can/skb.h                                        |    4 
 include/linux/io_uring_types.h                                 |    2 
 include/linux/mount.h                                          |    2 
 include/linux/nsproxy.h                                        |    1 
 include/linux/nvme.h                                           |    4 
 include/linux/sched/ext.h                                      |    1 
 include/linux/virtio_net.h                                     |   60 --
 include/net/amt.h                                              |    4 
 include/net/bluetooth/rfcomm.h                                 |    1 
 include/net/can.h                                              |    2 
 include/net/cfg80211.h                                         |    1 
 include/net/ip.h                                               |    7 
 include/net/mac80211.h                                         |   14 
 include/net/strparser.h                                        |   10 
 io_uring/io_uring.c                                            |   13 
 io_uring/kbuf.c                                                |    6 
 io_uring/memmap.c                                              |   45 +
 io_uring/memmap.h                                              |    2 
 io_uring/net.c                                                 |    4 
 io_uring/register.c                                            |   21 
 io_uring/zcrx.c                                                |    2 
 kernel/cgroup/cpuset.c                                         |   40 +
 kernel/dma/swiotlb.c                                           |    6 
 kernel/fork.c                                                  |    3 
 kernel/nsproxy.c                                               |    2 
 kernel/sched/ext/ext.c                                         |   25 
 kernel/sched/ext/internal.h                                    |    5 
 kernel/sched/sched.h                                           |    1 
 kernel/workqueue.c                                             |    2 
 lib/dim/dim.c                                                  |   10 
 mm/mremap.c                                                    |   70 ++
 mm/pgtable-generic.c                                           |   20 
 mm/vma.c                                                       |   21 
 mm/vma.h                                                       |    7 
 net/bluetooth/hci_core.c                                       |    4 
 net/bluetooth/hci_sock.c                                       |    2 
 net/bluetooth/hci_sync.c                                       |   10 
 net/bluetooth/iso.c                                            |   52 +-
 net/bluetooth/mgmt.c                                           |    2 
 net/bluetooth/rfcomm/core.c                                    |  134 +++--
 net/bluetooth/rfcomm/sock.c                                    |    5 
 net/bluetooth/rfcomm/tty.c                                     |    2 
 net/bluetooth/sco.c                                            |   87 ++-
 net/bridge/br_multicast.c                                      |   23 
 net/bridge/netfilter/nf_conntrack_bridge.c                     |   10 
 net/can/af_can.c                                               |   47 +
 net/can/gw.c                                                   |    3 
 net/can/isotp.c                                                |   16 
 net/can/raw.c                                                  |   10 
 net/core/dev.c                                                 |   11 
 net/core/flow_dissector.c                                      |   11 
 net/core/skbuff.c                                              |    6 
 net/devlink/core.c                                             |   10 
 net/ipv4/cipso_ipv4.c                                          |    8 
 net/ipv4/fib_semantics.c                                       |    3 
 net/ipv4/fib_trie.c                                            |    2 
 net/ipv4/ip_output.c                                           |   10 
 net/ipv4/route.c                                               |    5 
 net/ipv4/tcp.c                                                 |    2 
 net/ipv4/udp.c                                                 |   11 
 net/ipv6/ip6_gre.c                                             |    7 
 net/ipv6/route.c                                               |    4 
 net/ipv6/udp.c                                                 |   13 
 net/mac80211/debugfs.c                                         |   13 
 net/mac80211/ieee80211_i.h                                     |    2 
 net/mac80211/main.c                                            |    1 
 net/mac80211/sta_info.c                                        |   17 
 net/mac80211/sta_info.h                                        |    3 
 net/mac80211/status.c                                          |    5 
 net/mac80211/tx.c                                              |   70 +-
 net/netfilter/nfnetlink_queue.c                                |    7 
 net/netfilter/xt_CHECKSUM.c                                    |    6 
 net/openvswitch/actions.c                                      |    7 
 net/openvswitch/datapath.c                                     |    8 
 net/packet/af_packet.c                                         |   28 -
 net/sched/cls_route.c                                          |    6 
 net/sched/em_text.c                                            |    3 
 net/sctp/socket.c                                              |    6 
 net/smc/af_smc.c                                               |    7 
 net/strparser/strparser.c                                      |    6 
 net/tipc/node.c                                                |   10 
 net/tipc/topsrv.c                                              |   80 ++-
 net/vmw_vsock/af_vsock.c                                       |    2 
 net/vmw_vsock/virtio_transport_common.c                        |    4 
 net/xfrm/xfrm_output.c                                         |   16 
 security/keys/key.c                                            |    6 
 security/keys/persistent.c                                     |   55 +-
 security/selinux/avc.c                                         |    5 
 security/selinux/hooks.c                                       |    9 
 sound/hda/codecs/side-codecs/tas2781_hda.c                     |   18 
 sound/pci/ctxfi/ctdaio.c                                       |    6 
 sound/soc/amd/yc/acp6x-mach.c                                  |    7 
 sound/soc/codecs/adau1372.c                                    |   18 
 sound/soc/samsung/i2s.c                                        |    8 
 sound/soc/sdw_utils/soc_sdw_utils.c                            |   35 +
 tools/testing/selftests/mm/hugetlb-mmap.c                      |    4 
 tools/testing/vma/tests/vma.c                                  |    4 
 285 files changed, 3402 insertions(+), 1600 deletions(-)

Aaron Ma (1):
wifi: mt76: mt7925: restore the legacy BSS after MLO teardown

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

Ahmed Abdelhaleem Ahmed (1):
scsi: ch: Do not keep references to data transfer element devices

Alan Previn (1):
drm/xe/mmio: Fix xe_mmio_wait32() to honor delay/sleep maximums

Aldo Ariel Panzardo (1):
Bluetooth: SCO: serialise sco_conn lifetime against sco_recv_scodata()

Alex Deucher (1):
drm/amdgpu: make Mac FB workaround generic

Alexey Charkov (2):
power: sequencing: pcie-m2: Fix leaking array from of_regulator_bulk_get_all()
regulator: of: fill in supply names in of_regulator_bulk_get_all()

Ali Ahmet Memis (1):
io_uring/memmap: account the pages a compound region really uses

Alice Ryhl (1):
rust_binder: reschedule node refcount update on thread exit

Alvin Šipraga (2):
ASoC: adau1372: allow sleepy powerdown GPIOs
ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes

Aurelien Jarno (1):
riscv: vector: Fix output operands in context save

Ben Cressey (2):
dm-crypt: reject the lmk IV mode with AEAD ciphers
dm-integrity: fix buffer overflow in inline mode with large tag size

Bihaan Sen (1):
Input: xpad - add support for 8BitDo Pro 2 Wired Controller for Xbox

Borislav Petkov (AMD) (1):

      x86/CPU/AMD: Fix AMD TLBI Erratum #1718

Bryan Fraschetti (1):
ice: Restore Ordered MMIO Writes for Tx Doorbells

Carlos Llamas (1):
selftests/mm: cleanup -Wformat issues in hugetlb-mmap

Chen Pei (1):
riscv: ptrace: reject CFI regset access when extensions are absent

Chengfeng Ye (6):
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
Bluetooth: hci_sync: Fix command skb lifetime during scan setup
Bluetooth: ISO: Reject concurrent BIS listener setup
Bluetooth: ISO: Serialize concurrent connect calls

Christian Brauner (29):
mount: keep a copied mount unbindable
fs: don't silently unmount busy mounts
namespace: reset the old parent's ->overmount in mnt_change_mountpoint()
statmount: read the parent of an unmounted mount under mount_lock
namespace: don't inherit MNT_UMOUNT in clone_mnt()
namespace: don't copy an unmounted mount tree
fs: refuse fspick() on internal superblocks
namespace: check the target before walking it in do_mount_setattr()
namespace: queue a mount only once for mount notifications
namespace: check a submount for references right before unmounting it
namespace: check a recursive bind mount for mount namespace loops
namespace: keep covered mounts covered in OPEN_TREE_NAMESPACE
namespace: look at the topmost mount for a mount namespace file
namespace: don't reconfigure internal superblocks via remount and umount
namespace: remove the fsnotify marks of a mount namespace in process context
namespace: check the mounts before reading their parents in pivot_root()
dcache: don't put a mountpoint on a dentry that's being removed
unshare: don't drop active namespace references that were never taken
namespace: don't let a pseudo dentry become the root of a mount
namespace: unhash a dentry before detaching the mounts on it
namei: don't reveal overmounted entries in refwalk
fcntl: refuse F_SET_RW_HINT on an immutable inode
namespace: refuse an automount below a mount that is in no namespace
nullfs: don't update the access time
namespace: never expire a locked mount
namespace: handle mount locking for automounts correctly
namespace: keep the lock on a mount that a propagated copy is moved beneath
mount: refuse MOVE_MOUNT_SET_GROUP on an unbindable mount
fs: don't let a migrating task hide its reference from do_umount()

Christian Göttsche (1):
selinux: fix data race on AVC latest_notif

Cristian Ciocaltea (2):
drm/bridge: Fix unlocked list_del in drm_bridge_add() drm/bridge: Fix unlocked list access in drm_bridge_attach()

Cristian Papa (1):
wifi: mt76: mt7603: initialize global station WCID

Daehyeon Ko (9):
ipv4: stop PMTU walk when nexthop group shrinks
ipv4: stop exception dump when nexthop group shrinks
ipv4: stop route notification sizing when nexthop group shrinks
ipv4: do not warn on route notification size race
ipv6: do not warn on route notification size race
cipso: adjust cached option offsets when removing CIPSO vsock/virtio: account only unread bytes in read_skb()
tcp: reject net_iov in zerocopy receive mapping hints
ip6_gre: remove obsolete ERSPAN PMTU update

Daniel Machon (1):
net: sparx5: free the matchall entry on destroy

Darrick J. Wong (1):
xfs: fix exchange-range-to-eof file size exchange

Denis V. Lunev (1):
openvswitch: fix soft lockup in the netlink flow dump

Devin Wittmayer (2):
wifi: mt76: mt7925: don't put the band auto marker in TGID
wifi: mt76: mt792x: pick the SAR table layout from the table itself

Eric Biggers (1):
fsverity: RCU-delay the freeing of struct fsverity_info

Eric Dumazet (4):
bnxt_en: fix DMA mapping length for padded small packets
flow_dissector: avoid u16 truncation of skb->len when computing thoff
net: always dissect GSO packets in __virtio_net_hdr_to_skb()
flow_dissector: avoid u16 truncation of hlen in bpf_flow_dissect()

Eugene Gvozdetsky (1):
io_uring/register: don't exempt disabled rings from task restrictions

Fan Wu (3):
gpio: mpsse: fix race when arming the IRQ poll worker drm/vc4: drain the hangcheck timer and works on V3D unbind drm/xe/i2c: cancel the client work on remove

Felix Fietkau (7):
wifi: mt76: mt7996: program a link again if the driver holds it
wifi: mt76: mt7996: take over connection monitoring
wifi: mac80211: add AQL support for multicast packets
wifi: mac80211: add ieee80211_txq_aql_pending()
wifi: mt76: add PS buffering support for HW-managed TIM drivers
wifi: mt76: account non-AQL frames per peer rather than per link
wifi: mt76: use ALTX queue for packets to disassociated stations

Felix Gu (2):
drm/bridge: th1520-dw-hdmi: Fix error check on dw_hdmi_probe() return value drm/bridge: th1520-dw-hdmi: Fix remove() callback

Fernando Fernandez Mancera (1):
net: openvswitch: validate transport header presence in set_ipv6_addr

Filipe Manana (2):
btrfs: fix xattr replace when multiple xattrs are packed in the same item
btrfs: fix lost error return value in btrfs_listxattr()

Fredrik Nyberg (1):
net: usb: ax88179_178a: fix rx frame length for non-last packets

Fuad Tabba (1):
arm64/boot: Don't set PMUv3p9 FGT2 bits without PMUv3

Georgiy Osokin (1):
tee: shm: reject zero-sized allocations in tee_dyn_shm_alloc_helper()

Greg Kroah-Hartman (1):

      Linux 7.2.11

Guangshuo Li (3):
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

Guixin Liu (1):
nvmet: return Invalid Field for invalid NSIDs feature 82h

Gyeyoung Baek (2):
drm/imagination: Size page table preallocation by device address drm/imagination: Fix reference and vm_bo handling in remap()

Haibo Chen (1):
spi: spi-nxp-fspi: exit stop mode before waiting for DLL lock

Haishuang Yan (3):
devlink: fix devlink_rel reference leak when notify work is pending
pfcp: make sure the SEID is linear before reading it
bareudp: set the inner protocol to the protocol of the packet

Han Gao (2):
spi: sg2044-nor: Return transfer errors
spi: sg2044-nor: Honor SPI clock limits

Haojie Li (1):
drm/amdkfd: fix dma_buf reference leak in get_dmabuf_info

Haotian Zhang (1):
Input: ati_remote2 - fix type confusion in device attribute handlers

Harin Lee (1):
ALSA: ctxfi: Fix memory leakage when clearing DAO input mappers

Hengyu Liang (2):
ata: libata-scsi: do not lose CHECK CONDITION for failed ATAPI commands
io_uring: do not charge the SQ/CQ rings to RLIMIT_MEMLOCK

Hui Peng (1):
sctp: copy zeroed stats to user in sctp_getsockopt_pr_streamstatus() when !streamoute

Iaroslav Voitovych (1):
Bluetooth: MGMT: Fix status of pending commands flushed on power off

Ido Schimmel (3):
ipv6: Fix redirect exception creation for UDP/RAW sockets
ipv4: udp: Create exceptions before socket matching
ipv6: udp: Create exceptions before socket matching

Ilia Gavrilov (1):
vsock: Fix memory leak in vmci_transport_recv_dgram_cb()

Jakub Kicinski (3):
bonding: fix the program leak when XDP is replaced
net: make dev_xdp_sb_prog_count() see programs attached through a link Revert "net: stmmac: propagate PTP addend and system time programming errors"

Jamal Hadi Salim (1):
net/sched: em_text: reject unterminated algo before autoload

Jason A. Donenfeld (1):
wireguard: noise: reject response consumption after intermediate initiation

Jens Axboe (1):
io_uring/kbuf: don't charge provided buffer rings to RLIMIT_MEMLOCK

Jerome Tollet (2):
net/mlx5e: Prevent stale XSK buffer release on refill retry net/mlx5e: Prevent stale XSK buffer release on MPWQE refill retry

Jesse Zhang (2):
drm/amdgpu/userq: only accept doorbell BOs as queue doorbell drm/amdgpu/userq: return the memdup_user() error for the user MQD

Ji-Ze Hong (Peter Hong) (1):

      usb: f81604: fix struct f81604_int_data size mismatch

Johannes Berg (1):
Revert "wifi: libertas: reject short monitor TX frames"

Jose Ignacio Tornos Martinez (1):
iavf: send MAC change request synchronously

Josef Bacik (2):
xen/netfront: don't leak the skb when xennet_fill_frags() fails
net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()

Joshua Washington (3):
gve: fix napi_disable deadlock when attempting to disable XSK pools
gve: fix XSK buffer leak when rings are stopped
gve: fix XSK buffer leak on error descriptor

Junjie Cao (1):

      wifi: mt76: mt792x: treat 0xff ACPI SAR entries as no limit

Justin Chen (1):
net: bcmgenet: if UMAC was suspended in SW_RESET, restore it to SW_RESET

Karl Bonde Torp (1):
nvme: fix swapped ZRASF zone state values for full and read only

Karl Mehltretter (3):
arm64: irq: exclude the softirq stack switch from KCOV
keys: finalize persistent keyring timeout after link attempt
riscv: fix load_unaligned_zeropad() fixup for RV32

Krzysztof Furman (1):
Input: xpad - add support for Corsair Novablade Pro

Krzysztof Karas (2):
drm/i915/gem: Prevent overstepping exec array boundary drm/i915/gt: Unmask interrupts only when ACTIVE is true

Kuba Piecuch (2):
sched_ext: Generate qseq from a per-task counter
sched_ext: Call ops.dequeue() when a task arrives on a remote local DSQ

Leo Li (2):
drm/amd/display: Fix direct scanout alpha on some DRM_FORMATs drm/amd/display: disable self-refresh on tearing flips

Leo Yu-Chi Liang (1):
riscv: fix NR_CPUS range leaking 64-bit default onto 32-bit builds

Leto Liu (刘涛) (1):
net: airoha: Add retry mechanism to airoha_qdma_set_trtcm_param()

Li RongQing (1):
net/mlx5e: Order ICOSQ cc update after CQ doorbell

Lorenzo Bianconi (1):
net: stmmac: propagate PTP addend and system time programming errors

Lorenzo Stoakes (ARM) (2):
mm/mremap: fix locked_vm leak by splitting VMA for MREMAP_DONTUNMAP mm/mremap: fix locked_vm leak from MREMAP_DONTUNMAP self-merge

Lu Huang (1):
wifi: mt76: mt7996: fix uninitialized buf read in mt7996_variant_fem_init()

Luca Weiss (2):
clk: qcom: gcc-eliza: Fix always-enabling PCIE_RSCC clocks
clk: qcom: gcc-kaanapali: Fix always-enabling PCIE_RSCC clocks

Ma Xinmeng (1):
dm-snap: reject the transient exception store for snapshot-merge

Mahantesh Salimath (1):
tee: optee: ffa: support shared memory offsets on large-page kernels

Mallesh Koujalagi (1):
drm/xe/sysctrl: Fix mailbox header handling

Marek Szyprowski (2):
swiotlb: fix default_swiotlb_limit() for non-growable default pool
ASoC: samsung: i2s: enable op_clk in probe to balance runtime PM

Matthew Wilcox (Oracle) (1):
fs: Free any excess xarray nodes in clear_inode()

Maxim Skokov (1):
Bluetooth: RFCOMM: free the skb when the DLC has no owner

Maíra Canal (4):
drm/vc4: Free the BO cache size list on teardown drm/vc4: Use kvmalloc_objs() for the BO cache size list drm/vc4: Disable the V3D interrupt across runtime suspend drm/vc4: Fix binner slot allocation failing on an idle GPU

Michael Chan (2):
bnxt_en: Add bnxt_clear_bars() helper
bnxt_en: Fix driver init in kdump kernel

Michael Garland (1):
ASoC: amd: yc: Add DMI quirk for Acer Aspire Go 15 (AG15-21P)

Michael S. Tsirkin (1):
ipv4: validate checksum_start before completing checksum

Michele Dionisio (1):
wifi: brcmfmac: fix P2P device removal race in brcmf_detach()

Mikhail Gavrilov (3):
mm: don't schedule deferred kernel page table freeing while booting
Bluetooth: RFCOMM: connect the session socket without rfcomm_mutex drm/amdgpu: copy debugfs register data outside the GRBM/SRBM locks

Mikulas Patocka (1):
dm: fix reading free memory in do_resume

Ming Qian (1):
pmdomain: imx8m-blk-ctrl: Serialize power on/off across sibling domains

Mingming Cao (2):
ibmveth: h_free logical LAN on open-fail after register
ibmveth: fix TX LTB and filter unwind on open-fail

Mohamed Yassine Jebabli (1):
ALSA: hda/tas2781: Accept V1 calibration data without CRC

Myeonghun Pak (1):
drm/aspeed: Balance the display clock enable on teardown

Naomi Chu (1):
scsi: ufs: core: Hold a clock reference across the probe

Natasha Klaus (1):
io_uring/net: populate CONNECT filter fields for 24-byte sockaddr_in6

Nguyen Ngoc Thang (2):
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

Nicolas Cavallari (1):
wifi: mt76: mt7915: disable rx napi when removing device

Norbert Szetei (1):
xfs: stop exchanging reflink flags when exchanging mappings

Oleg Keri (1):
drm/dp: don't mark the AUX backlight enabled when enabling failed

Oliver Hartkopp (1):
can: fix unique skb identifier regression under RPS

Omar Ramadan (1):
amt: send the relay's General Query directly from the receive path

Or Har-Toov (2):
net/mlx5: Lag, split aggregate speed into oper and max helpers Revert "net/mlx5: E-Switch, preserve max tx speed on vport state modification"

Osama Abdelkader (1):
drm/panthor: validate userspace queue count against initialized firmware slot count

Ovidiu Panait (2):
net: stmmac: Do not advertise S-VLAN stripping when it is disabled
net: stmmac: Disable S-Tag processing on dwmac4

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

Pavan Chebbi (1):
bnxt_en: Re-write the BARs following any type of PCIe errors

Pavankumar Kondeti (1):
workqueue: Fix NULL current_pwq deref in chained work check

Peng Fan (1):
iommu/dma: skip swiotlb bounce for DMA_ATTR_MMIO in iommu_dma_map_phys

Pengpeng Hou (1):
scsi: ufs: mediatek: Handle mPHY power-on failures

Petr Machata (1):
mlxsw: spectrum_flower: Fix port range register leak in tmplt_create()

Quchaosheng (1):
net/packet: guard the ll header push in packet_rcv_spkt()

Quentin Freimanis (1):
net: sparx5: start the TOD counters on non-PTP lan969x variants

Raj Ojha (1):
memstick: core: wait for request completion before freeing card

Ramses de Norre (1):
wireguard: queueing: preserve tstamp_type when encapsulating packet

Ravindra (1):
Bluetooth: btintel_pcie: fix TX descriptor bounds check

Richard Fitzgerald (1):

      ASoC: sdw_utils: Switch CS35L56/57/62/63 to use OT25 DAI

Ridham Khurana (2):
gpio: xilinx: fix runtime PM leak on request error path
regulator: tps6594-regulator: Fix n_linear_ranges for TPS65224 BUCK2-4

Runyu Xiao (2):
scsi: qedi: Initialize callback state before registration
Bluetooth: btintel_pcie: use managed IRQ teardown

Sabrina Dubroca (1):
strparser: make sure __strp_recv isn't running before tearing down the parser

Sai Teja Aluvala (1):
Bluetooth: btintel_pcie: Add shared HW reset for clean start

Sajal Gupta (1):
drm/gud: don't keep a connector without a CRTC as connector_state

Saleel Kudchadker (1):
drm/amdkfd: align SDMA doorbell base for shader doorbell writes

Sang-Hoon Choi (3):
gpio: exar: initialize the ID before registering its cleanup cxgb4/ch_ktls: disable softirqs around tid_list erases
nvmet: use the local P2P device on metadata allocation failure

Sebastien Royen (1):
net: dsa: microchip: fix KSZ8765 fiber detection

Shao Mingyin (1):
riscv: lib: Fix ZBB strnlen wrap-around regression on huge counts

Shao-Fu Chen (1):
optee: register TEE devices only once fully initialized

Shashank Mohan Jain (1):
lib/dim: fix 32-bit overflow in dim_calc_stats() rates

Shawn Lin (3):
pmdomain: rockchip: don't ignore clock lookup errors on attach
pmdomain: rockchip: fix clock leak on domain probe failure
pmdomain: rockchip: propagate subdomain add errors

Shin'ichiro Kawasaki (1):
zloop: zero out only the unread tail of short reads

Stanley Jhu (2):
scsi: ufs: core: Avoid unsafe MMIO reads in ufshcd_mcq_compl_all_cqes_lock()
scsi: ufs: core: Decouple CQ sweep from request iterator in MCQ

Stefan Binding (1):
ASoC: sdw_utils: Add codec info for CS35L62

Stephen Smalley (1):
selinux: preserve NATIVE_LABELS on already-initialized sb in set_mnt_opts

Suraj Gupta (1):
net: xilinx: axienet: Free outstanding DMA buffers on dmaengine stop

Taniya Das (2):
clk: qcom: gpucc-glymur: Mark the GPU CX GDSC as votable
clk: qcom: gpucc-kaanapali: Mark the GPU CX GDSC as votable

Tao Gong (1):

      wifi: mt76: mt7996: fix struct mt7996_mcu_wed_rro_ba_delete_event layout

Thomas Hellström (2):
drm/xe: Fix shrinker accounting double-subtraction on nested external pins drm/xe: Fix stale pinned_link entry when fb-pin performs the final unpin

Tianyi Gao (1):
veth: fix peer NETDEV_XDP_ACT_NDO_XMIT after GRO is toggled while down

Tony Nguyen (1):
e1000e: add system to disable K1 list

Tristan Madani (1):
ice: fix metadata_dst refcount handling on representor teardown

Troy Mitchell (1):
riscv: vector: Fix data pointer constraints in context save/restore

Tvrtko Ursulin (1):

      drm/xe: Do not emit Wa_16010904313 twice

Vadim Fedorenko (1):
ptp: ocp: fix PCIe delay estimation calculation

Vicki Pfau (4):
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_route: reject change with no routing attribute

Vincent Jardin (3):
arm64: dts: lx2160a: fix incorrect pinmux
arm64: dts: lx2160a: fix IIC1 pinmux submask rejected by pinctrl-single
arm64: dts: lx2160a: fix the iic5 spi3 pinmux offset and value

Vishal Badole (1):
EDAC/amd64: Mask UMC chip select to the four implemented selects

Vitaly Prosyak (1):
drm/amdgpu: serialize vblank counter reads against GPU reset

Waiman Long (3):
cgroup/cpuset: Handle cpu hotplug race in guarantee_active_cpus() cgroup/cpuset: Don't access cpuset_cgrp_subsys.root in is_in_v2_mode() cgroup/cpuset: Call is_in_v2_mode() after acquiring cpuset_mutex in cpuset_handle_hotplug()

Wei-Jie Hung (1):
riscv: patch: fix handling of bpf-jit execmem addresses

Weiming Shi (2):
net: team: stop reusing skb after queue override
net: team: free skb when broadcast has no txable port

Wentao Liang (2):
btrfs: scrub: fix local_root reference leak in scrub_print_warning_inode() drm/vc4: Fix firmware reference leak in vc4_drm_bind()

Willem de Bruijn (1):
net/packet: call packet_parse_headers after virtio_net_hdr_to_skb

Xuanqiang Luo (1):
ice: fix use-after-free in dynamic port cleanup

Yang Xiuwei (4):
btrfs: always return -EIOCBQUEUED after btrfs_uring_read_extent_endio
btrfs: free iov when btrfs_uring_read_extent() fails
btrfs: unlock inode and extent in caller when io_uring read extent fails
btrfs: don't stash io_uring encoded data across -EAGAIN

Yibo Tan (1):
mmc: mtk-sd: Cancel request timeout work on remove

Yingying Tang (1):
Revert "wifi: ath12k: add panic handler"

Yuqi Xu (1):
tipc: destroy topsrv workqueues before closing connections

Zack Rusin (1):
drm/vmwgfx: validate pitch coming from userspace

Zixuan Chai (1):
net: bridge: avoid recursive multicast port cleanup

Ziyi Guo (2):
riscv: entry: gate shadow call stack reload on sstatus.SPP, not tp
riscv: futex: untag the user pointer before the atomic access

Zongmin Zhou (3):
riscv: errata: select RISCV_ALTERNATIVE_EARLY for THEAD GHOSTWRITE
riscv: hwprobe: use _BITULL() rather than BIT() in MIPS vendor uapi header
riscv: ptrace: Zero-initialize regset buffers before copyin

zjamg (1):
can: dev: init_can_skb(): restore skb header initialization

성병찬 (1):
KEYS: Fix add_key() race with keyring restriction

author maintainer
#1 lore raw
Documentation/networking/strparser.rst +1 -1
index 372106b61e65..d0804c88ad0a 100644
@@ -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
index be413b167b24..4b60c83ab75c 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 7
 PATCHLEVEL = 2
-SUBLEVEL = 10
+SUBLEVEL = 11
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi +13 -6
index 1d73abffa6b7..6ead557a8cf1 100644
@@ -1783,7 +1783,7 @@ esdhc0_clksync_pins: iic5-sdhc-clk-pins {
 			};
 
 			dspi2_miso_mosi_pins: iic5-spi3-pins {
-				pinctrl-single,bits = <0x3 (0x2 << 9) (0x7 << 9)>;
+				pinctrl-single,bits = <0x0 (0x3 << 9) (0x7 << 9)>;
 			};
 
 			i2c5_pins: iic6-i2c-pins {
@@ -1803,7 +1803,7 @@ fspi_data74_pins: xspi1-data74-pins {
 			};
 
 			gpio1_31_28_pins: xspi1-data74-gpio-pins {
-				pinctrl-single,bits = <0x0 0x1 (0x7 << 15)>;
+				pinctrl-single,bits = <0x0 (0x1 << 15) (0x7 << 15)>;
 			};
 
 			fspi_data30_pins: xspi1-data30-pins {
@@ -1811,7 +1811,7 @@ fspi_data30_pins: xspi1-data30-pins {
 			};
 
 			gpio1_27_24_pins: xspi1-data30-gpio-pins {
-				pinctrl-single,bits = <0x0 0x1 (0x7 << 18)>;
+				pinctrl-single,bits = <0x0 (0x1 << 18) (0x7 << 18)>;
 			};
 
 			fspi_dqs_sck_cs10_pins: xspi1-base-pins {
@@ -1819,7 +1819,7 @@ fspi_dqs_sck_cs10_pins: xspi1-base-pins {
 			};
 
 			gpio1_23_20_pins: xspi1-base-gpio-pins {
-				pinctrl-single,bits = <0x0 0x1 (0x7 << 21)>;
+				pinctrl-single,bits = <0x0 (0x1 << 21) (0x7 << 21)>;
 			};
 
 			esdhc0_cmd_data30_clk_vsel_pins: sdhc1-base-sdhc-vsel-pins {
@@ -1868,12 +1868,19 @@ i2c6_i2c7_pins: iic8-iic7-i2c-pins {
 			};
 
 			/* RCWSR14 */
+			/*
+			 * IIC1_PMUX is a single bit at RCWSR14[10], but bit-per-mux
+			 * uses the mask for the field to clear before applying the
+			 * value.
+			 * So bits 11 and 12, which are reserved, are written as 0
+			 * on every mux switch, it is harmless.
+			 */
 			i2c0_pins: iic1-i2c-pins {
-				pinctrl-single,bits = <0x8 0x0 (0x1 << 10)>;
+				pinctrl-single,bits = <0x8 0x0 (0x7 << 10)>;
 			};
 
 			gpio0_3_2_pins: iic1-gpio-pins {
-				pinctrl-single,bits = <0x8 (0x1 << 10) (0x1 << 10)>;
+				pinctrl-single,bits = <0x8 (0x1 << 10) (0x7 << 10)>;
 			};
 		};
 
arch/arm64/include/asm/el2_setup.h +3 -2
index 87560d8b254e..1da277baacf7 100644
@@ -421,8 +421,9 @@
 	mov	x2, xzr
 	mrs	x1, id_aa64dfr0_el1
 	ubfx	x1, x1, #ID_AA64DFR0_EL1_PMUVer_SHIFT, #4
-	cmp	x1, #ID_AA64DFR0_EL1_PMUVer_V3P9
-	b.lt	.Lskip_pmuv3p9_\@
+	cmp	x1, #ID_AA64DFR0_EL1_PMUVer_IMP_DEF
+	ccmp	x1, #ID_AA64DFR0_EL1_PMUVer_V3P9, #8, ne
+	b.lt	.Lskip_pmuv3p9_\@		// Skip if < PMUv3p9 or IMP_DEF
 
 	orr	x0, x0, #HDFGRTR2_EL2_nPMICNTR_EL0
 	orr	x0, x0, #HDFGRTR2_EL2_nPMICFILTR_EL0
arch/arm64/kernel/Makefile +3 -0
index d2690c3ec528..ea66339435bf 100644
@@ -25,6 +25,9 @@ KASAN_SANITIZE_stacktrace.o := n
 KCOV_INSTRUMENT_entry-common.o := n
 KCOV_INSTRUMENT_idle.o := n
 
+# Softirq stack switching can run outside interrupt context.
+KCOV_INSTRUMENT_irq.o := n
+
 # Object file lists.
 obj-y			:= debug-monitors.o entry.o irq.o fpsimd.o		\
 			   entry-common.o process.o ptrace.o			\
arch/riscv/Kconfig +3 -2
index f7028caaeae0..e5166df510bb 100644
@@ -450,9 +450,10 @@ config SMP
 config NR_CPUS
 	int "Maximum number of CPUs (2-512)"
 	depends on SMP
-	range 2 512 if !RISCV_SBI_V01
-	range 2 32 if RISCV_SBI_V01 && 32BIT
+	range 2 512 if !RISCV_SBI_V01 && 64BIT
+	range 2 128 if !RISCV_SBI_V01 && 32BIT
 	range 2 64 if RISCV_SBI_V01 && 64BIT
+	range 2 32 if RISCV_SBI_V01 && 32BIT
 	default "32" if 32BIT
 	default "64" if RISCV_SBI_V01 && 64BIT
 	default "256" if !RISCV_SBI_V01 && 64BIT
arch/riscv/Kconfig.errata +1 -0
index 3c945d086c7d..6121ba83cfa6 100644
@@ -146,6 +146,7 @@ config ERRATA_THEAD_PMU
 config ERRATA_THEAD_GHOSTWRITE
 	bool "Apply T-Head Ghostwrite errata"
 	depends on ERRATA_THEAD && RISCV_ISA_XTHEADVECTOR
+	select RISCV_ALTERNATIVE_EARLY
 	default y
 	help
 	  The T-Head C9xx cores have a vulnerability in the xtheadvector
arch/riscv/include/asm/futex.h +2 -0
index 90c86b115e00..6f3bc9bdb85e 100644
@@ -40,6 +40,7 @@ arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
 
 	if (!access_ok(uaddr, sizeof(u32)))
 		return -EFAULT;
+	uaddr = untagged_addr(uaddr);
 
 	switch (op) {
 	case FUTEX_OP_SET:
@@ -82,6 +83,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
 
 	if (!access_ok(uaddr, sizeof(u32)))
 		return -EFAULT;
+	uaddr = untagged_addr(uaddr);
 
 	__enable_user_access();
 	__asm__ __volatile__ (
arch/riscv/include/asm/scs.h +13 -4
index 023a412fe38d..49e40eef4ed7 100644
@@ -4,6 +4,7 @@
 
 #ifdef __ASSEMBLER__
 #include <asm/asm-offsets.h>
+#include <asm/csr.h>
 
 #ifdef CONFIG_SHADOW_CALL_STACK
 
@@ -22,9 +23,17 @@
 	REG_L	gp, TASK_TI_SCS_SP(tp)
 .endm
 
-/* Load task_scs_sp(current) to gp, but only if tp has changed. */
-.macro scs_load_current_if_task_changed prev
-	beq	\prev, tp, _skip_scs
+/*
+ * Load task_scs_sp(current) to gp, but only when the trap came from U-mode.
+ * The source privilege level is taken from the saved sstatus.SPP bit (written
+ * by hardware on trap entry), not by comparing tp.  tp is a user-writable
+ * register, so gating the shadow call stack reload on it let a user task that
+ * set tp == &current skip the reload and run the kernel with an attacker
+ * controlled gp (the shadow call stack pointer).
+ */
+.macro scs_load_current_if_from_user status, tmp
+	andi	\tmp, \status, SR_SPP
+	bnez	\tmp, _skip_scs
 	scs_load_current
 _skip_scs:
 .endm
@@ -42,7 +51,7 @@
 .endm
 .macro scs_load_current
 .endm
-.macro scs_load_current_if_task_changed prev
+.macro scs_load_current_if_from_user status, tmp
 .endm
 .macro scs_save_current
 .endm
arch/riscv/include/asm/vector.h +4 -4
index 00cb9c0982b1..8d736e826d84 100644
@@ -132,8 +132,8 @@ static __always_inline void __vstate_csr_save(struct __riscv_v_ext_state *dest)
 		"csrr	%0, " __stringify(CSR_VSTART) "\n\t"
 		"csrr	%1, " __stringify(CSR_VTYPE) "\n\t"
 		"csrr	%2, " __stringify(CSR_VL) "\n\t"
-		: "=r" (dest->vstart), "=r" (dest->vtype), "=r" (dest->vl),
-		"=r" (dest->vcsr) : :);
+		: "=r" (dest->vstart), "=r" (dest->vtype), "=r" (dest->vl)
+		: :);
 
 	if (has_xtheadvector()) {
 		unsigned long status;
@@ -225,7 +225,7 @@ static inline void __riscv_v_vstate_save(struct __riscv_v_ext_state *save_to,
 			"add		%1, %1, %0\n\t"
 			"vse8.v		v24, (%1)\n\t"
 			".option pop\n\t"
-			: "=&r" (vl) : "r" (datap) : "memory");
+			: "=&r" (vl), "+r" (datap) : : "memory");
 	}
 	riscv_v_disable();
 }
@@ -261,7 +261,7 @@ static inline void __riscv_v_vstate_restore(struct __riscv_v_ext_state *restore_
 			"add		%1, %1, %0\n\t"
 			"vle8.v		v24, (%1)\n\t"
 			".option pop\n\t"
-			: "=&r" (vl) : "r" (datap) : "memory");
+			: "=&r" (vl), "+r" (datap) : : "memory");
 	}
 	__vstate_csr_restore(restore_from);
 	riscv_v_disable();
arch/riscv/include/uapi/asm/vendor/mips.h +3 -1
index e65ab268b265..a31c23afe74f 100644
@@ -1,3 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 
-#define RISCV_HWPROBE_VENDOR_EXT_XMIPSEXECTL	BIT(0)
+#include <linux/const.h>
+
+#define RISCV_HWPROBE_VENDOR_EXT_XMIPSEXECTL	_BITULL(0)
arch/riscv/kernel/entry.S +1 -1
index d799c4e56f80..61b7a7716697 100644
@@ -208,7 +208,7 @@ SYM_CODE_START(handle_exception)
 	load_global_pointer
 
 	/* Load the kernel shadow call stack pointer if coming from userspace */
-	scs_load_current_if_task_changed s5
+	scs_load_current_if_from_user s1, s5
 
 #ifdef CONFIG_RISCV_ISA_V_PREEMPTIVE
 	move a0, sp
arch/riscv/kernel/patch.c +1 -1
index 16b243376f36..1e8f1ac5a755 100644
@@ -46,7 +46,7 @@ static __always_inline void *patch_map(void *addr, const unsigned int fixmap)
 
 	if (core_kernel_text(uintaddr) || is_kernel_exittext(uintaddr)) {
 		phys = __pa_symbol(addr);
-	} else if (IS_ENABLED(CONFIG_STRICT_MODULE_RWX)) {
+	} else if (IS_ENABLED(CONFIG_EXECMEM)) {
 		struct page *page = vmalloc_to_page(addr);
 
 		BUG_ON(!page);
arch/riscv/kernel/ptrace.c +8 -0
index f336a183667e..a0055743d3ba 100644
@@ -230,6 +230,7 @@ static int riscv_vr_set(struct task_struct *target,
 		return -ENODATA;
 
 	/* Copy rest of the vstate except datap */
+	memset(&ptrace_vstate, 0, sizeof(ptrace_vstate));
 	ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ptrace_vstate, 0,
 				 sizeof(struct __riscv_v_regset_state));
 	if (unlikely(ret))
@@ -299,6 +300,9 @@ static int riscv_cfi_get(struct task_struct *target,
 	struct user_cfi_state user_cfi;
 	struct pt_regs *regs;
 
+	if (!is_user_lpad_enabled() && !is_user_shstk_enabled())
+		return -EINVAL;
+
 	memset(&user_cfi, 0, sizeof(user_cfi));
 	regs = task_pt_regs(target);
 
@@ -337,8 +341,12 @@ static int riscv_cfi_set(struct task_struct *target,
 	struct user_cfi_state user_cfi;
 	struct pt_regs *regs;
 
+	if (!is_user_lpad_enabled() && !is_user_shstk_enabled())
+		return -EINVAL;
+
 	regs = task_pt_regs(target);
 
+	memset(&user_cfi, 0, sizeof(user_cfi));
 	ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &user_cfi, 0, -1);
 	if (ret)
 		return ret;
arch/riscv/lib/strnlen.S +18 -2
index a8911605c248..5b3bbf0a3098 100644
@@ -87,9 +87,25 @@ strnlen_zbb:
 	 * Aligned boundary.  Use the address of the last valid byte
 	 * (s + count - 1) to avoid loading a word past the count
 	 * boundary in the loop below.  count == 0 is handled above.
+	 *
+	 * Saturate the boundary when s + count would wrap around (very
+	 * large counts, e.g. SIZE_MAX passed by FORTIFY strcat/strlcat
+	 * with a destination whose size is unknown at compile time).
+	 * Without this, the wrapped boundary lands before s and the
+	 * pre-loop guard below always exits, returning a truncated
+	 * length.
+	 *
+	 * Clamping the increment to ~s (== SIZE_MAX - s) keeps the
+	 * computation branchless and wrap-free:
+	 *
+	 *     s + min(count - 1, ~s) == saturating_add(s, count - 1)
+	 *
+	 * Saturating makes the scan equivalent to strlen().
 	 */
-	add	t4, a0, a1
-	addi	t4, t4, -1
+	addi	t4, a1, -1	/* count - 1 */
+	not	t1, a0		/* SIZE_MAX - s */
+	minu	t4, t4, t1	/* clamp, so s + t4 can never wrap */
+	add	t4, a0, t4	/* saturated s + count - 1 */
 	andi	t4, t4, -SZREG
 
 	/* Get the first word.  */
arch/riscv/mm/extable.c +2 -2
index dd1530af3ef1..e252eba55ede 100644
@@ -68,8 +68,8 @@ ex_handler_load_unaligned_zeropad(const struct exception_table_entry *ex,
 
 	addr = regs_get_gpr(regs, reg_addr * sizeof(unsigned long));
 
-	offset = addr & 0x7UL;
-	addr &= ~0x7UL;
+	offset = addr & (sizeof(data) - 1);
+	addr &= ~(sizeof(data) - 1);
 
 	data = *(unsigned long *)addr >> (offset * 8);
 
arch/um/drivers/vector_transports.c +1 -0
index ddd127ee9678..e1fb2a76fdff 100644
@@ -209,6 +209,7 @@ static int raw_verify_header(
 	if ((vheader->flags & VIRTIO_NET_HDR_F_DATA_VALID) > 0)
 		return 1;
 
+	skb_set_network_header(skb, ETH_HLEN);
 	virtio_net_hdr_to_skb(skb, vheader, virtio_legacy_is_little_endian());
 	return 0;
 }
arch/x86/include/asm/cpufeatures.h +3 -0
index 1b4a48bff18f..caca69a4e6d5 100644
@@ -465,6 +465,8 @@
 #define X86_FEATURE_NO_NESTED_DATA_BP	(20*32+ 0) /* No Nested Data Breakpoints */
 #define X86_FEATURE_WRMSR_XX_BASE_NS	(20*32+ 1) /* WRMSR to {FS,GS,KERNEL_GS}_BASE is non-serializing */
 #define X86_FEATURE_LFENCE_RDTSC	(20*32+ 2) /* LFENCE always serializing / synchronizes RDTSC */
+
+#define X86_FEATURE_TLBSYNC_SFW_NO	(20*32+ 4) /* TLBI Erratum #1718 fixed in microcode */
 #define X86_FEATURE_VERW_CLEAR		(20*32+ 5) /* The memory form of VERW mitigates TSA */
 #define X86_FEATURE_NULL_SEL_CLR_BASE	(20*32+ 6) /* Null Selector Clears Base */
 
@@ -575,4 +577,5 @@
 #define X86_BUG_TSA			X86_BUG( 1*32+ 9) /* "tsa" CPU is affected by Transient Scheduler Attacks */
 #define X86_BUG_VMSCAPE			X86_BUG( 1*32+10) /* "vmscape" CPU is affected by VMSCAPE attacks from guests */
 #define X86_BUG_SEAMRET_INVD_VMCS	X86_BUG( 1*32+11) /* "seamret_invd_vmcs" SEAMRET from P-SEAMLDR clears the current VMCS */
+#define X86_BUG_TLBI			X86_BUG( 1*32+12) /* "tlbi" AMD TLBI Erratum #1718 */
 #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/tlb.h +6 -0
index 866ea78ba156..eba925c85f52 100644
@@ -110,6 +110,12 @@ static inline void __tlbsync(void)
 
 	/* TLBSYNC: supported in binutils >= 0.36. */
 	asm volatile(".byte 0x0f, 0x01, 0xff" ::: "memory");
+
+	if (!static_cpu_has_bug(X86_BUG_TLBI))
+		return;
+
+	/* TLBSYNC: supported in binutils >= 0.36. */
+	asm volatile(".byte 0x0f, 0x01, 0xff" ::: "memory");
 }
 #else
 /* Some compilers (I'm looking at you clang!) simply can't do DCE */
arch/x86/kernel/cpu/amd.c +4 -0
index d61df70d6875..89e3280475a9 100644
@@ -1047,6 +1047,10 @@ static void init_amd_zen5(struct cpuinfo_x86 *c)
 		msr_clear_bit(MSR_AMD64_CPUID_FN_7, 18);
 		pr_emerg_once("RDSEED32 is broken. Disabling the corresponding CPUID bit.\n");
 	}
+
+	if (cpu_has(c, X86_FEATURE_INVLPGB) &&
+	    !cpu_has(c, X86_FEATURE_TLBSYNC_SFW_NO))
+		set_cpu_bug(c, X86_BUG_TLBI);
 }
 
 static void init_amd(struct cpuinfo_x86 *c)
drivers/android/binder/node.rs +17 -3
index c10148e9069f..8f7aa867ce68 100644
@@ -49,9 +49,9 @@
 ///   about to drop the weak reference, then the strong increment could be processed after the
 ///   other thread has already exited, which would be too late.
 ///
-/// Note that trying to create a `ListArc` to the node can succeed even if `has_normal_push` is
+/// Note that trying to create a `ListArc` to the node can succeed even if `has_pushed_node` is
 /// set. This is because another thread might just have popped the node from a todo list, but not
-/// yet called `do_work`. However, if `has_normal_push` is false, then creating a `ListArc` should
+/// yet called `do_work`. However, if `has_pushed_node` is false, then creating a `ListArc` should
 /// always succeed.
 ///
 /// Like the other fields in `NodeInner`, the delivery state is protected by the process lock.
@@ -733,7 +733,21 @@ fn do_work(
         self.do_work_locked(writer, owner_inner)
     }
 
-    fn cancel(self: DArc<Self>) {}
+    fn cancel(self: DArc<Self>) {
+        let _drop_outside_lock;
+        let mut owner_inner = self.owner.inner.lock();
+
+        // We only do something on BINDER_THREAD_EXIT, not process exit.
+        if owner_inner.is_dead {
+            return;
+        }
+
+        // If BINDER_THREAD_EXIT is invoked on a thread with a pending node refcount update, we
+        // should move ourselves to ensure the refcount update is still delivered.
+        if let Some(node) = ListArc::try_from_arc_borrow(self.as_arc_borrow()) {
+            _drop_outside_lock = owner_inner.push_work(node);
+        }
+    }
 
     fn should_sync_wakeup(&self) -> bool {
         false
drivers/android/binder/node/wrapper.rs +33 -1
index 43294c050502..aeda07ff7218 100644
@@ -57,7 +57,39 @@ fn do_work(
         node.do_work_locked(writer, owner_inner)
     }
 
-    fn cancel(self: DArc<Self>) {}
+    fn cancel(self: DArc<Self>) {
+        let _drop_outside_lock;
+        let node = &self.node;
+        let mut owner_inner = node.owner.inner.lock();
+
+        // We only do something on BINDER_THREAD_EXIT, not process exit.
+        if owner_inner.is_dead {
+            return;
+        }
+
+        // We transfer the responsibility of the node refcount update to the scheduled Node because
+        // NodeWrapper has no way to re-create the ListArc.
+        let inner = node.inner.access_mut(&mut owner_inner);
+
+        let ds = &mut inner.delivery_state;
+        assert!(ds.has_pushed_wrapper);
+        assert!(ds.has_strong_zero2one);
+        ds.has_pushed_wrapper = false;
+
+        // We are changing the state to one where the Node is the strong zero2one update instead of
+        // the wrapper.
+        ds.has_weak_zero2one = false;
+
+        if !ds.has_pushed_node {
+            if let Some(node2) = ListArc::try_from_arc_borrow(node.as_arc_borrow()) {
+                ds.has_pushed_node = true;
+                _drop_outside_lock = owner_inner.push_work(node2);
+            } else {
+                // This can't actually happen.
+                ds.has_strong_zero2one = false;
+            }
+        }
+    }
 
     fn should_sync_wakeup(&self) -> bool {
         false
drivers/ata/libata-scsi.c +9 -4
index 3559485b5034..d06062abca9c 100644
@@ -3026,10 +3026,15 @@ static void atapi_qc_complete(struct ata_queued_cmd *qc)
 		if (qc->cdb[0] == ALLOW_MEDIUM_REMOVAL && qc->dev->sdev)
 			qc->dev->sdev->locked = 0;
 
-		if (cmd->result)
-			ata_scsi_qc_done(qc, false, 0);
-		else
-			ata_scsi_qc_done(qc, true, SAM_STAT_CHECK_CONDITION);
+		/*
+		 * Report CHECK CONDITION unless the command was terminated
+		 * with a host byte set. Only set the status byte, so that the
+		 * SCSI midlayer internal byte, which scsi_check_sense() may
+		 * have set from the sense data, is preserved.
+		 */
+		if (get_host_byte(cmd) == DID_OK)
+			set_status_byte(cmd, SAM_STAT_CHECK_CONDITION);
+		ata_scsi_qc_done(qc, false, 0);
 		goto schedule_deferred;
 	}
 
drivers/block/zloop.c +24 -7
index 1333fae05ac5..a011f3e518a5 100644
@@ -799,6 +799,27 @@ static void zloop_cmd_workfn(struct work_struct *work)
 	current->flags = orig_flags;
 }
 
+static void zloop_fill_zero_rq(struct request *rq, unsigned int zero_from)
+{
+	struct req_iterator iter;
+	struct bio_vec bv;
+	unsigned int pos = 0;
+	unsigned int end, off;
+
+	rq_for_each_segment(bv, rq, iter) {
+		end = pos + bv.bv_len;
+		if (end > zero_from) {
+			if (pos < zero_from)
+				off = zero_from - pos;
+			else
+				off = 0;
+			memzero_page(bv.bv_page, bv.bv_offset + off,
+				     bv.bv_len - off);
+		}
+		pos = end;
+	}
+}
+
 static void zloop_complete_rq(struct request *rq)
 {
 	struct zloop_cmd *cmd = blk_mq_rq_to_pdu(rq);
@@ -813,13 +834,9 @@ static void zloop_complete_rq(struct request *rq)
 			pr_err("Zone %u: failed read sector %llu, %llu sectors\n",
 			       zone_no, cmd->sector, cmd->nr_sectors);
 
-		if (cmd->ret >= 0 && cmd->ret != blk_rq_bytes(rq)) {
-			/* short read */
-			struct bio *bio;
-
-			__rq_for_each_bio(bio, rq)
-				zero_fill_bio(bio);
-		}
+		/* Short read. Zero out the unread tail beyond cmd->ret. */
+		if (cmd->ret >= 0 && cmd->ret != blk_rq_bytes(rq))
+			zloop_fill_zero_rq(rq, cmd->ret);
 		break;
 	case REQ_OP_WRITE:
 	case REQ_OP_ZONE_APPEND:
drivers/bluetooth/btintel_pcie.c +14 -3
index fdc1fd2586b9..ed4ba2e469ac 100644
@@ -401,7 +401,7 @@ static int btintel_pcie_send_sync(struct btintel_pcie_data *data,
 
 	tfd_index = data->ia.tr_hia[BTINTEL_PCIE_TXQ_NUM];
 
-	if (tfd_index > txq->count)
+	if (tfd_index >= txq->count)
 		return -ERANGE;
 
 	if (skb->len > BTINTEL_PCIE_BUFFER_SIZE - BTINTEL_PCIE_HCI_TYPE_LEN) {
@@ -1715,7 +1715,7 @@ static irqreturn_t btintel_pcie_irq_msix_handler(int irq, void *dev_id)
 static int btintel_pcie_setup_irq(struct btintel_pcie_data *data)
 {
 	int err;
-	int num_irqs, i;
+	int num_irqs, i, j;
 
 	for (i = 0; i < BTINTEL_PCIE_MSIX_VEC_MAX; i++)
 		data->msix_entries[i].entry = i;
@@ -1744,6 +1744,10 @@ static int btintel_pcie_setup_irq(struct btintel_pcie_data *data)
 						KBUILD_MODNAME,
 						msix_entry);
 		if (err) {
+			for (j = 0; j < i; j++)
+				devm_free_irq(&data->pdev->dev,
+					      data->msix_entries[j].vector,
+					      &data->msix_entries[j]);
 			pci_free_irq_vectors(data->pdev);
 			data->alloc_vecs = 0;
 			return err;
@@ -1815,6 +1819,13 @@ static int btintel_pcie_config_pcie(struct pci_dev *pdev,
 	if (IS_ERR(data->base_addr))
 		return PTR_ERR(data->base_addr);
 
+	/* Do shared hardware reset to ensure a clean start before
+	 * configuring interrupts.
+	 */
+	err = btintel_pcie_reset_bt(data);
+	if (err)
+		return err;
+
 	err = btintel_pcie_setup_irq(data);
 	if (err)
 		return err;
@@ -3003,7 +3014,7 @@ static void btintel_pcie_remove(struct pci_dev *pdev)
 		struct msix_entry *msix_entry;
 
 		msix_entry = &data->msix_entries[i];
-		free_irq(msix_entry->vector, msix_entry);
+		devm_free_irq(&pdev->dev, msix_entry->vector, msix_entry);
 	}
 
 	pci_free_irq_vectors(pdev);
drivers/clk/qcom/gcc-eliza.c +4 -2
index 3e26c7a1e5b5..fe18942a59ac 100644
@@ -3010,8 +3010,6 @@ static const u32 gcc_eliza_critical_cbcrs[] = {
 	0x26034, /* GCC_CAMERA_XO_CLK */
 	0x27004, /* GCC_DISP_AHB_CLK */
 	0x71004, /* GCC_GPU_CFG_AHB_CLK */
-	0x52010, /* GCC_PCIE_RSCC_CFG_AHB_CLK */
-	0x52010, /* GCC_PCIE_RSCC_XO_CLK */
 	0x32004, /* GCC_VIDEO_AHB_CLK */
 	0x32038, /* GCC_VIDEO_XO_CLK */
 };
@@ -3045,6 +3043,10 @@ static const struct regmap_config gcc_eliza_regmap_config = {
 
 static void clk_eliza_regs_configure(struct device *dev, struct regmap *regmap)
 {
+	/* Keep clocks always enabled */
+	regmap_update_bits(regmap, 0x52010, BIT(20), BIT(20)); /* GCC_PCIE_RSCC_CFG_AHB_CLK */
+	regmap_update_bits(regmap, 0x52010, BIT(21), BIT(21)); /* GCC_PCIE_RSCC_XO_CLK */
+
 	/* FORCE_MEM_CORE_ON for ufs phy ice core and gcc ufs phy axi clocks  */
 	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
 	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_axi_clk, true);
drivers/clk/qcom/gcc-kaanapali.c +4 -2
index 842c1a70c691..5bcbcd178657 100644
@@ -3464,8 +3464,6 @@ static const u32 gcc_kaanapali_critical_cbcrs[] = {
 	0x9f004, /* GCC_EVA_AHB_CLK */
 	0x9f024, /* GCC_EVA_XO_CLK */
 	0x71004, /* GCC_GPU_CFG_AHB_CLK */
-	0x52010, /* GCC_PCIE_RSCC_CFG_AHB_CLK */
-	0x52010, /* GCC_PCIE_RSCC_XO_CLK */
 	0x32004, /* GCC_VIDEO_AHB_CLK */
 	0x32040, /* GCC_VIDEO_XO_CLK */
 };
@@ -3480,6 +3478,10 @@ static const struct regmap_config gcc_kaanapali_regmap_config = {
 
 static void clk_kaanapali_regs_configure(struct device *dev, struct regmap *regmap)
 {
+	/* Keep clocks always enabled */
+	regmap_update_bits(regmap, 0x52010, BIT(20), BIT(20)); /* GCC_PCIE_RSCC_CFG_AHB_CLK */
+	regmap_update_bits(regmap, 0x52010, BIT(21), BIT(21)); /* GCC_PCIE_RSCC_XO_CLK */
+
 	/* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
 	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
 }
drivers/clk/qcom/gpucc-glymur.c +1 -1
index 001b2454786a..cac51de20b29 100644
@@ -510,7 +510,7 @@ static struct gdsc gpu_cc_cx_gdsc = {
 		.name = "gpu_cc_cx_gdsc",
 	},
 	.pwrsts = PWRSTS_OFF_ON,
-	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
+	.flags = RETAIN_FF_ENABLE | VOTABLE,
 };
 
 static struct clk_regmap *gpu_cc_glymur_clocks[] = {
drivers/clk/qcom/gpucc-kaanapali.c +1 -1
index ae5563e516f6..f75f2caa2205 100644
@@ -380,7 +380,7 @@ static struct gdsc gpu_cc_cx_gdsc = {
 		.name = "gpu_cc_cx_gdsc",
 	},
 	.pwrsts = PWRSTS_OFF_ON,
-	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
+	.flags = RETAIN_FF_ENABLE | VOTABLE,
 };
 
 static struct clk_regmap *gpu_cc_kaanapali_clocks[] = {
drivers/edac/amd64_edac.c +2 -2
index 475235c402e8..0c0d11c72925 100644
@@ -2796,13 +2796,13 @@ static inline void decode_bus_error(int node_id, struct mce *m)
  * the instance_id. For example, instance_id=0xYXXXXX where Y is the channel
  * number.
  *
- * For DRAM ECC errors, the Chip Select number is given in bits [2:0] of
+ * For DRAM ECC errors, the Chip Select number is given in bits [1:0] of
  * the MCA_SYND[ErrorInformation] field.
  */
 static void umc_get_err_info(struct mce *m, struct err_info *err)
 {
 	err->channel = (m->ipid & GENMASK(31, 0)) >> 20;
-	err->csrow = m->synd & 0x7;
+	err->csrow = m->synd & 0x3;
 }
 
 static void decode_umc_error(int node_id, struct mce *m)
drivers/gpio/gpio-exar.c +1 -1
index 9053662f1817..f629cc526f3e 100644
@@ -199,6 +199,7 @@ static int gpio_exar_probe(struct platform_device *pdev)
 	index = ida_alloc(&ida_index, GFP_KERNEL);
 	if (index < 0)
 		return index;
+	exar_gpio->index = index;
 
 	ret = devm_add_action_or_reset(dev, exar_devm_ida_free, exar_gpio);
 	if (ret)
@@ -214,7 +215,6 @@ static int gpio_exar_probe(struct platform_device *pdev)
 	exar_gpio->gpio_chip.set = exar_set_value;
 	exar_gpio->gpio_chip.base = -1;
 	exar_gpio->gpio_chip.ngpio = ngpios;
-	exar_gpio->index = index;
 	exar_gpio->first_pin = first_pin;
 
 	ret = devm_gpiochip_add_data(dev, &exar_gpio->gpio_chip, exar_gpio);
drivers/gpio/gpio-mpsse.c +22 -2
index a859deab2bca..5ce822c0ddcf 100644
@@ -10,6 +10,7 @@
 #include <linux/cleanup.h>
 #include <linux/gpio/driver.h>
 #include <linux/mutex.h>
+#include <linux/rcupdate.h>
 #include <linux/spinlock.h>
 #include <linux/usb.h>
 
@@ -24,6 +25,7 @@ struct mpsse_priv {
 	raw_spinlock_t irq_spin;     /* protects worker list */
 	atomic_t irq_type[16];	     /* pin -> edge detection type */
 	atomic_t irq_enabled;
+	atomic_t dying;		     /* no new workers after disconnect */
 	int id;
 
 	u8 gpio_outputs[2];	     /* Output states for GPIOs [L, H] */
@@ -46,6 +48,7 @@ struct mpsse_worker {
 	atomic_t       cancelled;
 	struct list_head    list;   /* linked list */
 	struct list_head destroy;   /* teardown linked list */
+	struct rcu_head      rcu;   /* deferred free for dying path */
 };
 
 struct bulk_desc {
@@ -525,10 +528,24 @@ static void gpio_mpsse_irq_enable(struct irq_data *irqd)
 		worker->priv = priv;
 		INIT_LIST_HEAD(&worker->list);
 		INIT_WORK(&worker->work, gpio_mpsse_poll);
-		schedule_work(&worker->work);
 
-		scoped_guard(raw_spinlock_irqsave, &priv->irq_spin)
+		scoped_guard(raw_spinlock_irqsave, &priv->irq_spin) {
+			if (atomic_read(&priv->dying)) {
+				/*
+				 * Cannot kfree() here: this callback
+				 * runs with the IRQ descriptor's raw
+				 * spinlock held and kfree() may sleep
+				 * on PREEMPT_RT. The worker is not
+				 * yet published, so the deferred free
+				 * is unobservable.
+				 */
+				kfree_rcu(worker, rcu);
+				return;
+			}
+
 			list_add(&worker->list, &priv->workers);
+			schedule_work(&worker->work);
+		}
 	}
 }
 
@@ -704,6 +721,9 @@ static void gpio_mpsse_disconnect(struct usb_interface *intf)
 {
 	struct mpsse_priv *priv = usb_get_intfdata(intf);
 
+	scoped_guard(raw_spinlock_irqsave, &priv->irq_spin)
+		atomic_set(&priv->dying, 1);
+
 	/*
 	 * Lock prevents double-free of worker from here and the teardown
 	 * step at the beginning of gpio_mpsse_poll
drivers/gpio/gpio-xilinx.c +1 -8
index 532205175827..9406ce85f933 100644
@@ -271,14 +271,7 @@ static void xgpio_save_regs(struct xgpio_instance *chip)
 
 static int xgpio_request(struct gpio_chip *chip, unsigned int offset)
 {
-	int ret;
-
-	ret = pm_runtime_get_sync(chip->parent);
-	/*
-	 * If the device is already active pm_runtime_get() will return 1 on
-	 * success, but gpio_request still needs to return 0.
-	 */
-	return ret < 0 ? ret : 0;
+	return pm_runtime_resume_and_get(chip->parent);
 }
 
 static void xgpio_free(struct gpio_chip *chip, unsigned int offset)
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +6 -2
index 4b29e7eee610..299baecb83eb 100644
@@ -597,14 +597,18 @@ int amdgpu_amdkfd_get_dmabuf_info(struct amdgpu_device *adev, int dma_buf_fd,
 		/* first get metadata_size by buffer = NULL */
 		r = amdgpu_bo_get_metadata(bo, NULL, 0,
 					   metadata_size, NULL);
+		if (r)
+			goto out_put;
 
 		/* user buf_size is bigger than bo metadata_size
 		 * allocate a buf at kernel space and copy */
 		if (*metadata_size <= buffer_size) {
 			*metadata_buffer = kzalloc(*metadata_size, GFP_KERNEL);
 
-			if (!*metadata_buffer)
-				return -ENOMEM;
+			if (!*metadata_buffer) {
+				r = -ENOMEM;
+				goto out_put;
+			}
 
 			r = amdgpu_bo_get_metadata(bo, *metadata_buffer, *metadata_size,
 						   NULL, &metadata_flags);
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +46 -31

127 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c +7 -10
index 5d6149ba7ab7..8fb3ebe4c299 100644
@@ -1089,20 +1089,17 @@ void amdgpu_gmc_init_vga_resv_regions(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_sriov_vf(adev) ||
 	    !amdgpu_device_has_display_hardware(adev)) {
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +5 -0
index 8bb9c198ddec..872cce1115a9 100644
@@ -30,6 +30,7 @@
 #include <drm/amdgpu_drm.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_vblank.h>
 #include "amdgpu_uvd.h"
 #include "amdgpu_vce.h"
 #include "atom.h"
@@ -1631,6 +1632,9 @@ u32 amdgpu_get_vblank_counter_kms(struct drm_crtc *crtc)
 		DRM_ERROR("Invalid crtc %u\n", pipe);
 		return -EINVAL;
 	}
+	if (!down_read_trylock(&adev->reset_domain->sem))
+		return drm_crtc_vblank_count(crtc);
+
 
 	/* The hw increments its frame counter at start of vsync, not at start
 	 * of vblank, as is required by DRM core vblank counter handling.
@@ -1676,6 +1680,7 @@ u32 amdgpu_get_vblank_counter_kms(struct drm_crtc *crtc)
 		DRM_DEBUG_VBL("NULL mode info! Returned count may be wrong.\n");
 	}
 
+	up_read(&adev->reset_domain->sem);
 	return count;
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c +12 -1
index 655429c40351..0c3fa2d60555 100644
@@ -439,6 +439,7 @@ amdgpu_userq_get_doorbell_index(struct amdgpu_userq_mgr *uq_mgr,
 	u64 doorbell_index;
 	struct drm_gem_object *gobj;
 	struct amdgpu_userq_obj *db_obj = db_info->db_obj;
+	struct amdgpu_bo *abo;
 	int r, db_size;
 
 	gobj = drm_gem_object_lookup(filp, db_info->doorbell_handle);
@@ -447,7 +448,17 @@ amdgpu_userq_get_doorbell_index(struct amdgpu_userq_mgr *uq_mgr,
 		return -EINVAL;
 	}
 
-	db_obj->obj = amdgpu_bo_ref(gem_to_amdgpu_bo(gobj));
+	/*
+	 * Pinning a regular BO into the doorbell domain would discard its
+	 * contents, possibly those of a buffer shared by another client.
+	 */
+	abo = gem_to_amdgpu_bo(gobj);
+	if (!(abo->preferred_domains & AMDGPU_GEM_DOMAIN_DOORBELL)) {
+		drm_gem_object_put(gobj);
+		return -EINVAL;
+	}
+
+	db_obj->obj = amdgpu_bo_ref(abo);
 	drm_gem_object_put(gobj);
 
 	r = amdgpu_bo_reserve(db_obj->obj, true);
drivers/gpu/drm/amd/amdgpu/mes_userqueue.c +3 -6
index 4e44a581a78a..e4bd6e5509b5 100644
@@ -304,8 +304,7 @@ static int mes_userq_mqd_create(struct amdgpu_usermode_queue *queue,
 
 		compute_mqd = memdup_user(u64_to_user_ptr(mqd_user->mqd), mqd_user->mqd_size);
 		if (IS_ERR(compute_mqd)) {
-			DRM_ERROR("Failed to read user MQD\n");
-			r = -ENOMEM;
+			r = PTR_ERR(compute_mqd);
 			goto free_mqd;
 		}
 
@@ -349,8 +348,7 @@ static int mes_userq_mqd_create(struct amdgpu_usermode_queue *queue,
 
 		mqd_gfx_v11 = memdup_user(u64_to_user_ptr(mqd_user->mqd), mqd_user->mqd_size);
 		if (IS_ERR(mqd_gfx_v11)) {
-			DRM_ERROR("Failed to read user MQD\n");
-			r = -ENOMEM;
+			r = PTR_ERR(mqd_gfx_v11);
 			goto free_mqd;
 		}
 
@@ -394,8 +392,7 @@ static int mes_userq_mqd_create(struct amdgpu_usermode_queue *queue,
 
 		mqd_sdma_v11 = memdup_user(u64_to_user_ptr(mqd_user->mqd), mqd_user->mqd_size);
 		if (IS_ERR(mqd_sdma_v11)) {
-			DRM_ERROR("Failed to read sdma user MQD\n");
-			r = -ENOMEM;
+			r = PTR_ERR(mqd_sdma_v11);
 			goto free_mqd;
 		}
 
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +26 -6
index 487cf746c450..ed9344259079 100644
@@ -599,12 +599,32 @@ static int allocate_doorbell(struct qcm_process_device *qpd,
 		 * we need the physical sdma engine id in order to get the
 		 * correct doorbell offset.
 		 */
-		uint32_t valid_id = idx_offset[qpd->dqm->dev->node_id *
-					       get_num_all_sdma_engines(qpd->dqm) +
-					       q->properties.sdma_engine_id]
-						+ (q->properties.sdma_queue_id & 1)
-						* KFD_QUEUE_DOORBELL_MIRROR_OFFSET
-						+ (q->properties.sdma_queue_id >> 1);
+		u32 engine_base = idx_offset[dev->node_id *
+					     get_num_all_sdma_engines(qpd->dqm) +
+					     q->properties.sdma_engine_id];
+		u32 valid_id;
+
+		/*
+		 * With the aqua_vanjaram doorbell layout, a shader doorbell
+		 * write whose 32-byte block starts in the previous engine's
+		 * range rings that engine instead. Engine ranges are 10
+		 * indices apart (sdma_doorbell_range = 20 dwords, halved for
+		 * 8-byte doorbells, in aqua_vanjaram_doorbell_index_init()),
+		 * which puts odd engines 2 indices into a shared block.
+		 * Aligning costs at most 2 indices, and 8 queues per engine use
+		 * only 4 of the 10, so the aligned base stays in range. The
+		 * 512-index mirror offset keeps the alignment.
+		 */
+		if (KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 3) ||
+		    KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 4) ||
+		    KFD_GC_VERSION(dev) == IP_VERSION(9, 5, 0))
+			engine_base = ALIGN(engine_base,
+					    KFD_SDMA_SHADER_DOORBELL_GRANULARITY);
+
+		valid_id = engine_base +
+			   (q->properties.sdma_queue_id & 1) *
+			   KFD_QUEUE_DOORBELL_MIRROR_OFFSET +
+			   (q->properties.sdma_queue_id >> 1);
 
 		if (restore_id && *restore_id != valid_id)
 			return -EINVAL;
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +7 -0
index 4d65f94da4d8..993d98374253 100644
@@ -132,6 +132,13 @@
  */
 #define KFD_QUEUE_DOORBELL_MIRROR_OFFSET 512
 
+/*
+ * On GC 9.4.3, 9.4.4 and 9.5.0, doorbell writes issued from shaders are
+ * routed to an SDMA engine at 32-byte granularity, i.e. 4 indices with the
+ * 8-byte SDMA doorbells used on SOC15.
+ */
+#define KFD_SDMA_SHADER_DOORBELL_GRANULARITY 4
+
 /**
  * enum kfd_ioctl_flags - KFD ioctl flags
  * Various flags that can be set in &amdkfd_ioctl_desc.flags to control how
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +25 -1
index 4ee7db8a6a22..b92d129962b2 100644
@@ -7260,10 +7260,15 @@ 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 || (
 	    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)) {
 		if (native_mode->crtc_clock)
 			copy_crtc_timing_for_drm_display_mode(native_mode, drm_mode);
 	} else {
@@ -10397,6 +10402,13 @@ static void amdgpu_dm_enable_self_refresh(struct amdgpu_display_manager *dm,
 	struct amdgpu_dm_connector *aconn =
 		(struct amdgpu_dm_connector *)acrtc_state->stream->dm_stream_context;
 
+	if (!acrtc_state->base.async_flip) {
+		amdgpu_dm_psr_set_event(dm, acrtc_state->stream, false,
+			psr_event_immediate_flip, false);
+		amdgpu_dm_replay_set_event(dm, acrtc_state->stream, false,
+			replay_event_immediate_flip, false);
+	}
+
 	/* Decrement skip count when SR is enabled and we're doing fast updates. */
 	if (acrtc_state->update_type == UPDATE_TYPE_FAST &&
 	    (psr->psr_feature_enabled || pr->replay_feature_enabled)) {
@@ -10810,6 +10822,18 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_commit *state,
 			spin_unlock_irqrestore(&pcrtc->dev->event_lock, flags);
 		}
 		mutex_lock(&dm->dc_lock);
+		/*
+		 * Tearing (immediate) flips cannot work with panel self-refresh
+		 * features. The event is cleared by
+		 * amdgpu_dm_enable_self_refresh() once async flips stop.
+		 */
+		if (immediate_flip) {
+			dc_exit_ips_for_hw_access(dm->dc);
+			amdgpu_dm_psr_set_event(dm, acrtc_state->stream, true,
+				psr_event_immediate_flip, true);
+			amdgpu_dm_replay_set_event(dm, acrtc_state->stream, true,
+				replay_event_immediate_flip, true);
+		}
 		update_planes_and_stream_adapter(dm->dc,
 					 acrtc_state->update_type,
 					 planes_count,
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +1 -19
index cfd76c54f652..1d69ecae10a4 100644
@@ -110,25 +110,7 @@ void amdgpu_dm_plane_fill_blending_from_plane_state(const struct drm_plane_state
 
 	if (plane_state->pixel_blend_mode == DRM_MODE_BLEND_PREMULTI ||
 		plane_state->pixel_blend_mode == DRM_MODE_BLEND_COVERAGE) {
-		static const uint32_t alpha_formats[] = {
-			DRM_FORMAT_ARGB8888,
-			DRM_FORMAT_RGBA8888,
-			DRM_FORMAT_ABGR8888,
-			DRM_FORMAT_ARGB2101010,
-			DRM_FORMAT_ABGR2101010,
-			DRM_FORMAT_ARGB16161616,
-			DRM_FORMAT_ABGR16161616,
-			DRM_FORMAT_ARGB16161616F,
-		};
-		uint32_t format = plane_state->fb->format->format;
-		unsigned int i;
-
-		for (i = 0; i < ARRAY_SIZE(alpha_formats); ++i) {
-			if (format == alpha_formats[i]) {
-				*per_pixel_alpha = true;
-				break;
-			}
-		}
+		*per_pixel_alpha = plane_state->fb->format->has_alpha;
 
 		if (*per_pixel_alpha && plane_state->pixel_blend_mode == DRM_MODE_BLEND_COVERAGE)
 			*pre_multiplied_alpha = false;
drivers/gpu/drm/aspeed/aspeed_gfx_drv.c +2 -3
index d4577663a1f0..aa36b79d0f6c 100644
@@ -189,13 +189,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/bridge/th1520-dw-hdmi.c +4 -4
index cbea8b14cd4b..2fa7f2d46b3d 100644
@@ -135,8 +135,8 @@ static int th1520_dw_hdmi_probe(struct platform_device *pdev)
 	plat_data->priv_data = hdmi;
 
 	hdmi->dw_hdmi = dw_hdmi_probe(pdev, plat_data);
-	if (IS_ERR(hdmi))
-		return PTR_ERR(hdmi);
+	if (IS_ERR(hdmi->dw_hdmi))
+		return PTR_ERR(hdmi->dw_hdmi);
 
 	platform_set_drvdata(pdev, hdmi);
 
@@ -145,9 +145,9 @@ static int th1520_dw_hdmi_probe(struct platform_device *pdev)
 
 static void th1520_dw_hdmi_remove(struct platform_device *pdev)
 {
-	struct dw_hdmi *hdmi = platform_get_drvdata(pdev);
+	struct th1520_hdmi *hdmi = platform_get_drvdata(pdev);
 
-	dw_hdmi_remove(hdmi);
+	dw_hdmi_remove(hdmi->dw_hdmi);
 }
 
 static const struct of_device_id th1520_dw_hdmi_of_table[] = {
drivers/gpu/drm/display/drm_dp_helper.c +3 -1
index e623ccb4c1d8..488fd123a01a 100644
@@ -4634,7 +4634,9 @@ static int dp_aux_backlight_update_status(struct backlight_device *bd)
 
 	if (!backlight_is_blank(bd)) {
 		if (!bl->enabled) {
-			drm_edp_backlight_enable(bl->aux, &bl->info, brightness);
+			ret = drm_edp_backlight_enable(bl->aux, &bl->info, brightness);
+			if (ret)
+				return ret;
 			bl->enabled = true;
 			return 0;
 		}
drivers/gpu/drm/drm_bridge.c +6 -2
index 687b36eea0c7..9124cbe1ff88 100644
@@ -414,8 +414,10 @@ void drm_bridge_add(struct drm_bridge *bridge)
 	 * in bridge_lingering_list. Remove it or bridge_lingering_list will be
 	 * corrupted when adding this bridge to bridge_list below.
 	 */
+	mutex_lock(&bridge_lock);
 	if (!list_empty(&bridge->list))
 		list_del_init(&bridge->list);
+	mutex_unlock(&bridge_lock);
 
 	mutex_init(&bridge->hpd_mutex);
 
@@ -556,8 +558,10 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
 	if (!bridge->container)
 		DRM_WARN("DRM bridge corrupted or not allocated by devm_drm_bridge_alloc()\n");
 
-	if (list_empty(&bridge->list))
-		DRM_WARN("Missing drm_bridge_add() before attach\n");
+	scoped_guard(mutex, &bridge_lock) {
+		if (list_empty(&bridge->list))
+			DRM_WARN("Missing drm_bridge_add() before attach\n");
+	}
 
 	drm_bridge_get(bridge);
 
drivers/gpu/drm/drm_fb_helper.c +3 -3
index 80ca785bdb26..3dfa64dc3109 100644
@@ -1724,10 +1724,10 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
 
 	ret = drm_fb_helper_single_fb_probe(fb_helper);
 	if (ret < 0) {
-		if (ret == -EAGAIN) {
-			fb_helper->deferred_setup = true;
+		/* 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);
 
 		goto err_drm_fb_helper_release_info;
drivers/gpu/drm/gud/gud_pipe.c +1 -0
index aa7792966287..5aa5ac2f3727 100644
@@ -507,6 +507,7 @@ int gud_plane_atomic_check(struct drm_plane *plane,
 	for_each_new_connector_in_state(state, connector, connector_state, i) {
 		if (connector_state->crtc)
 			break;
+		connector_state = NULL;
 	}
 
 	/*
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +1 -1
index 1f303d4eaa4d..d5aadced7da0 100644
@@ -1766,6 +1766,7 @@ static int eb_reinit_userptr(struct i915_execbuffer *eb)
 
 static noinline int eb_relocate_parse_slow(struct i915_execbuffer *eb)
 {
+	const unsigned int count = eb->buffer_count;
 	bool have_copy = false;
 	struct eb_vma *ev;
 	int err = 0;
@@ -1868,7 +1869,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
index a33b19c04737..0f9b4f1dd3cb 100644
@@ -1904,7 +1904,8 @@ static void rps_work(struct work_struct *work)
 
 out:
 	spin_lock_irq(gt->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(gt->irq_lock);
 }
 
drivers/gpu/drm/imagination/pvr_mmu.c +12 -13
index 62eae7fcd5a2..67e73d7d5d0e 100644
@@ -2337,7 +2337,7 @@ void pvr_mmu_op_context_destroy(struct pvr_mmu_op_context *op_ctx)
  * @ctx: MMU context associated with owning VM context.
  * @sgt: Scatter gather table containing pages pinned for use by this context.
  * @device_addr: Virtual device address at the start of the requested mapping.
- * @sgt_offset: Start offset of the requested device-virtual memory mapping.
+ * @sgt_offset: Offset into @sgt of the start of the requested mapping.
  * @size: Size in bytes of the requested device-virtual memory mapping. For an
  * unmapping, this should be zero so that no page tables are allocated.
  *
@@ -2350,7 +2350,6 @@ struct pvr_mmu_op_context *
 pvr_mmu_op_context_create(struct pvr_mmu_context *ctx, struct sg_table *sgt,
 			  u64 device_addr, u64 sgt_offset, u64 size)
 {
-	u64 start_addr = device_addr + sgt_offset;
 	int err;
 
 	struct pvr_mmu_op_context *op_ctx = kzalloc_obj(*op_ctx);
@@ -2365,18 +2364,18 @@ pvr_mmu_op_context_create(struct pvr_mmu_context *ctx, struct sg_table *sgt,
 
 	if (size) {
 		/*
-		 * The number of page table objects we need to prealloc is
-		 * indicated by the mapping size, start address and the sizes
-		 * of the areas mapped per PT or PD. The range calculation is
-		 * identical to that for the index into a table for a device
-		 * address, so we reuse those functions here.
+		 * The page tables needed are set by the device-virtual range
+		 * being mapped: one level 1 table per 1GiB region and one
+		 * level 0 table per 2MiB region the range touches. Tables that
+		 * already exist are not consumed, so this is an upper bound.
 		 */
-		const u32 l1_start_idx = pvr_page_table_l2_idx(start_addr);
-		const u32 l1_end_idx = pvr_page_table_l2_idx(start_addr + size);
-		const u32 l1_count = l1_end_idx - l1_start_idx + 1;
-		const u32 l0_start_idx = pvr_page_table_l1_idx(start_addr);
-		const u32 l0_end_idx = pvr_page_table_l1_idx(start_addr + size);
-		const u32 l0_count = l0_end_idx - l0_start_idx + 1;
+		const u64 last_addr = device_addr + size - 1;
+		const u64 l1_count =
+			(last_addr >> ROGUE_MMUCTRL_VADDR_PC_INDEX_SHIFT) -
+			(device_addr >> ROGUE_MMUCTRL_VADDR_PC_INDEX_SHIFT) + 1;
+		const u64 l0_count =
+			(last_addr >> ROGUE_MMUCTRL_VADDR_PD_INDEX_SHIFT) -
+			(device_addr >> ROGUE_MMUCTRL_VADDR_PD_INDEX_SHIFT) + 1;
 
 		/*
 		 * Alloc and push page table entries until we have enough of
drivers/gpu/drm/imagination/pvr_vm.c +4 -4
index 55cc999f3708..cbdd15ed74fd 100644
@@ -418,6 +418,8 @@ pvr_vm_gpuva_unmap(struct drm_gpuva_op *op, void *op_ctx)
 static int
 pvr_vm_gpuva_remap(struct drm_gpuva_op *op, void *op_ctx)
 {
+	/* The split parts belong to the object of the mapping being split. */
+	struct drm_gpuvm_bo *vm_bo = op->remap.unmap->va->vm_bo;
 	struct pvr_vm_bind_op *ctx = op_ctx;
 	u64 va_start = 0, va_range = 0;
 	int err;
@@ -433,14 +435,12 @@ pvr_vm_gpuva_remap(struct drm_gpuva_op *op, void *op_ctx)
 	drm_gpuva_remap(&ctx->prev_va->base, &ctx->next_va->base, &op->remap);
 
 	if (op->remap.prev) {
-		pvr_gem_object_get(gem_to_pvr_gem(ctx->prev_va->base.gem.obj));
-		drm_gpuva_link(&ctx->prev_va->base, ctx->gpuvm_bo);
+		drm_gpuva_link(&ctx->prev_va->base, vm_bo);
 		ctx->prev_va = NULL;
 	}
 
 	if (op->remap.next) {
-		pvr_gem_object_get(gem_to_pvr_gem(ctx->next_va->base.gem.obj));
-		drm_gpuva_link(&ctx->next_va->base, ctx->gpuvm_bo);
+		drm_gpuva_link(&ctx->next_va->base, vm_bo);
 		ctx->next_va = NULL;
 	}
 
drivers/gpu/drm/panthor/panthor_sched.c +3 -0
index 369ee06434bb..765b895619e8 100644
@@ -3675,6 +3675,9 @@ int panthor_group_create(struct panthor_file *pfile,
 	    hweight64(group_args->tiler_core_mask) < group_args->max_tiler_cores)
 		return -EINVAL;
 
+	if (group_args->queues.count > sched->cs_slot_count)
+		return -EINVAL;
+
 	group = kzalloc_obj(*group);
 	if (!group)
 		return -ENOMEM;
drivers/gpu/drm/vc4/vc4_bo.c +3 -2
index 49ea2ed0996b..7b8b3364000f 100644
@@ -204,7 +204,7 @@ static struct list_head *vc4_get_cache_list_for_size(struct drm_device *dev,
 		struct list_head *new_list;
 		uint32_t i;
 
-		new_list = kmalloc_objs(struct list_head, new_size);
+		new_list = kvmalloc_objs(struct list_head, new_size);
 		if (!new_list)
 			return NULL;
 
@@ -224,7 +224,7 @@ static struct list_head *vc4_get_cache_list_for_size(struct drm_device *dev,
 		for (i = vc4->bo_cache.size_list_size; i < new_size; i++)
 			INIT_LIST_HEAD(&new_list[i]);
 
-		kfree(vc4->bo_cache.size_list);
+		kvfree(vc4->bo_cache.size_list);
 		vc4->bo_cache.size_list = new_list;
 		vc4->bo_cache.size_list_size = new_size;
 	}
@@ -1052,6 +1052,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);
+	kvfree(vc4->bo_cache.size_list);
 
 	for (i = 0; i < vc4->num_labels; i++) {
 		if (vc4->bo_labels[i].num_allocated) {
drivers/gpu/drm/vc4/vc4_drv.c +4 -1
index 616caf9d9915..7b64e1ed02d4 100644
@@ -360,8 +360,11 @@ static int vc4_drm_bind(struct device *dev)
 	}
 
 	ret = aperture_remove_all_conflicting_devices(driver->name);
-	if (ret)
+	if (ret) {
+		if (firmware)
+			rpi_firmware_put(firmware);
 		goto err;
+	}
 
 	if (firmware) {
 		ret = rpi_firmware_property(firmware,
drivers/gpu/drm/vc4/vc4_drv.h +1 -1
index 0f5958c1e6b6..b0e82c2dc1ba 100644
@@ -1051,7 +1051,7 @@ void vc4_plane_async_set_fb(struct drm_plane *plane,
 /* vc4_v3d.c */
 extern struct platform_driver vc4_v3d_driver;
 extern const struct of_device_id vc4_v3d_dt_match[];
-int vc4_v3d_get_bin_slot(struct vc4_dev *vc4);
+int vc4_v3d_get_bin_slot(struct vc4_dev *vc4, long timeout);
 int vc4_v3d_bin_bo_get(struct vc4_dev *vc4, bool *used);
 void vc4_v3d_bin_bo_put(struct vc4_dev *vc4);
 int vc4_v3d_pm_get(struct vc4_dev *vc4);
drivers/gpu/drm/vc4/vc4_gem.c +7 -1
index e231c906709c..6ee4bd77d433 100644
@@ -877,11 +877,17 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
 		drm_gem_object_put(&bo->base.base);
 	}
 
-	/* Free up the allocation of any bin slots we used. */
+	/* Free up the allocation of any bin slots we used. Jobs that ran to
+	 * completion had their slots released in vc4_irq_finish_render_job().
+	 * Only jobs that never completed still have slots to be released here.
+	 */
 	spin_lock_irqsave(&vc4->job_lock, irqflags);
 	vc4->bin_alloc_used &= ~exec->bin_slots;
 	spin_unlock_irqrestore(&vc4->job_lock, irqflags);
 
+	/* Let anyone waiting on the binner pool retry. */
+	wake_up_all(&vc4->job_wait_queue);
+
 	/* Release the reference on the binner BO if needed. */
 	if (exec->bin_bo_used)
 		vc4_v3d_bin_bo_put(vc4);
drivers/gpu/drm/vc4/vc4_irq.c +8 -16
index 7877d493d80e..dc10d3a4d90f 100644
@@ -74,7 +74,7 @@ vc4_overflow_mem_work(struct work_struct *work)
 
 	bo = vc4->bin_bo;
 
-	bin_bo_slot = vc4_v3d_get_bin_slot(vc4);
+	bin_bo_slot = vc4_v3d_get_bin_slot(vc4, msecs_to_jiffies(500));
 	if (bin_bo_slot < 0) {
 		drm_err(&vc4->base, "Couldn't allocate binner overflow mem\n");
 		goto complete;
@@ -165,6 +165,10 @@ vc4_irq_finish_render_job(struct drm_device *dev)
 	trace_vc4_rcl_end_irq(dev, exec->seqno);
 
 	vc4->finished_seqno++;
+
+	vc4->bin_alloc_used &= ~exec->bin_slots;
+	exec->bin_slots = 0;
+
 	list_move_tail(&exec->head, &vc4->job_done_list);
 
 	nextbin = vc4_first_bin_job(vc4);
@@ -276,7 +280,7 @@ vc4_irq_disable(struct drm_device *dev)
 	V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);
 
 	/* Finish any interrupt handler still in flight. */
-	synchronize_irq(vc4->irq);
+	disable_irq(vc4->irq);
 
 	cancel_work_sync(&vc4->overflow_mem_work);
 }
@@ -284,7 +288,6 @@ vc4_irq_disable(struct drm_device *dev)
 int vc4_irq_install(struct drm_device *dev, int irq)
 {
 	struct vc4_dev *vc4 = to_vc4_dev(dev);
-	int ret;
 
 	if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4))
 		return -ENODEV;
@@ -298,19 +301,8 @@ int vc4_irq_install(struct drm_device *dev, int irq)
 	init_waitqueue_head(&vc4->job_wait_queue);
 	INIT_WORK(&vc4->overflow_mem_work, vc4_overflow_mem_work);
 
-	/* Clear any pending interrupts someone might have left around
-	 * for us.
-	 */
-	V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);
-
-	ret = devm_request_irq(dev->dev, irq, vc4_irq, 0,
-			       dev_name(dev->dev), dev);
-	if (ret)
-		return ret;
-
-	vc4_irq_enable(dev);
-
-	return 0;
+	return devm_request_irq(dev->dev, irq, vc4_irq, IRQF_NO_AUTOEN,
+				dev_name(dev->dev), dev);
 }
 
 void vc4_irq_uninstall(struct drm_device *dev)
drivers/gpu/drm/vc4/vc4_v3d.c +35 -30

119 lines not on this page · raw message

drivers/gpu/drm/vc4/vc4_validate.c +1 -1
index d2a65c968b1f..565227657b43 100644
@@ -402,7 +402,7 @@ validate_tile_binning_config(VALIDATE_ARGS)
 		return -EINVAL;
 	}
 
-	bin_slot = vc4_v3d_get_bin_slot(vc4);
+	bin_slot = vc4_v3d_get_bin_slot(vc4, MAX_SCHEDULE_TIMEOUT);
 	if (bin_slot < 0) {
 		if (bin_slot != -EINTR && bin_slot != -ERESTARTSYS) {
 			drm_err(dev, "Failed to allocate binner memory: %d\n",
drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c +21 -5
index d1e7df500190..5a69606a0593 100644
@@ -324,6 +324,7 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,
 	unsigned long kmap_num;
 	SVGA3dCopyBox *box;
 	u32 box_count;
+	u64 src_extent;
 	void *virtual;
 	bool is_iomem;
 	struct vmw_dma_cmd {
@@ -335,6 +336,8 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,
 		vmw_surface_get_desc(VMW_CURSOR_SNOOP_FORMAT);
 	const u32 image_pitch = VMW_CURSOR_SNOOP_WIDTH * desc->pitchBytesPerBlock;
 
+	BUILD_BUG_ON(sizeof(*srf->snooper.image) != desc->pitchBytesPerBlock);
+
 	cmd = container_of(header, struct vmw_dma_cmd, header);
 
 	/* No snooper installed, nothing to copy */
@@ -372,8 +375,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 * desc->pitchBytesPerBlock;
+	if (src_extent > bo->base.size) {
+		DRM_ERROR("Cursor snoop source of %llu bytes exceeds the %zu byte buffer\n",
+			  src_extent, bo->base.size);
+		return;
+	}
+
 	kmap_offset = cmd->dma.guest.ptr.offset >> PAGE_SHIFT;
-	kmap_num = (VMW_CURSOR_SNOOP_HEIGHT * image_pitch) >> PAGE_SHIFT;
+	kmap_num = PFN_UP(src_extent);
 
 	ret = ttm_bo_reserve(bo, true, false, NULL);
 	if (unlikely(ret != 0)) {
@@ -387,14 +401,16 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,
 
 	virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
 
-	if (box->w == VMW_CURSOR_SNOOP_WIDTH && cmd->dma.guest.pitch == image_pitch) {
+	if (box->w == VMW_CURSOR_SNOOP_WIDTH &&
+	    box->h == VMW_CURSOR_SNOOP_HEIGHT &&
+	    cmd->dma.guest.pitch == image_pitch) {
 		memcpy(srf->snooper.image, virtual,
 		       VMW_CURSOR_SNOOP_HEIGHT * image_pitch);
 	} else {
-		/* Image is unsigned pointer. */
+		/* The destination stride is in pixels. */
 		for (i = 0; i < box->h; i++)
-			memcpy(srf->snooper.image + i * image_pitch,
-			       virtual + i * cmd->dma.guest.pitch,
+			memcpy(srf->snooper.image + i * VMW_CURSOR_SNOOP_WIDTH,
+			       virtual + (size_t)i * cmd->dma.guest.pitch,
 			       box->w * desc->pitchBytesPerBlock);
 	}
 	srf->snooper.id++;
drivers/gpu/drm/xe/display/xe_fb_pin.c +3 -3
index 73469ea5f333..f1dbdc802df8 100644
@@ -356,7 +356,7 @@ static struct i915_vma *__xe_pin_fb_vma(struct drm_gem_object *obj, bool is_dpt,
 		drm_exec_retry_on_contention(&exec);
 		xe_validation_retry_on_oom(&ctx, &ret);
 		if (!ret)
-			ttm_bo_pin(&bo->ttm);
+			xe_bo_pin_account(bo);
 	}
 	if (ret)
 		goto err;
@@ -373,7 +373,7 @@ static struct i915_vma *__xe_pin_fb_vma(struct drm_gem_object *obj, bool is_dpt,
 
 err_unpin:
 	ttm_bo_reserve(&bo->ttm, false, false, NULL);
-	ttm_bo_unpin(&bo->ttm);
+	xe_bo_unpin_account(bo);
 	ttm_bo_unreserve(&bo->ttm);
 err:
 	kfree(vma);
@@ -393,7 +393,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 		xe_ggtt_node_remove(vma->node, false);
 
 	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
-	ttm_bo_unpin(&vma->bo->ttm);
+	xe_bo_unpin_account(vma->bo);
 	ttm_bo_unreserve(&vma->bo->ttm);
 	kfree(vma);
 }
drivers/gpu/drm/xe/xe_bo.c +105 -34

212 lines not on this page · raw message

drivers/gpu/drm/xe/xe_bo.h +2 -0
index a9e5e1bb8e4f..f9c8c73a1e69 100644
@@ -228,6 +228,8 @@ int xe_bo_pin_external(struct xe_bo *bo, bool in_place, struct drm_exec *exec);
 int xe_bo_pin(struct xe_bo *bo, struct drm_exec *exec);
 void xe_bo_unpin_external(struct xe_bo *bo);
 void xe_bo_unpin(struct xe_bo *bo);
+void xe_bo_pin_account(struct xe_bo *bo);
+void xe_bo_unpin_account(struct xe_bo *bo);
 int xe_bo_validate(struct xe_bo *bo, struct xe_vm *vm, bool allow_res_evict,
 		   struct drm_exec *exec);
 
drivers/gpu/drm/xe/xe_i2c.c +4 -1
index b376a9167cc1..3127fb89d965 100644
@@ -330,12 +330,15 @@ static void xe_i2c_remove(void *data)
 	xe_i2c_irq_reset(xe);
 	xe_amc_exit(i2c);
 
+	/* Stop the notifier from arming the client work before teardown. */
+	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
+	cancel_work_sync(&i2c->work);
+
 	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++) {
 		i2c_unregister_device(i2c->client[i]);
 		i2c->client[i] = NULL;
 	}
 
-	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
 	xe_i2c_unregister_adapter(i2c);
 	xe->i2c = NULL;
 }
drivers/gpu/drm/xe/xe_lrc.c +25 -13
index 9f8217ff1904..224e64bccaeb 100644
@@ -1099,8 +1099,7 @@ static void xe_lrc_finish(struct xe_lrc *lrc)
 #define CONTEXT_ACTIVE XE_LRC_CTX_TIMESTAMP_ACTIVE
 static ssize_t setup_utilization_wa(struct xe_lrc *lrc,
 				    struct xe_hw_engine *hwe,
-				    u32 *batch,
-				    size_t max_len)
+				    u32 *batch, size_t max_len, bool indirect)
 {
 	u32 *cmd = batch;
 
@@ -1131,19 +1130,25 @@ static ssize_t setup_utilization_wa(struct xe_lrc *lrc,
 }
 
 static ssize_t setup_timestamp_wa(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
-				  u32 *batch, size_t max_len)
+				  u32 *batch, size_t max_len, bool indirect)
 {
 	const u32 ts_addr = __xe_lrc_ctx_timestamp_ggtt_addr(lrc);
 	u32 *cmd = batch;
 
-	if (!XE_GT_WA(lrc->gt, 16010904313) ||
-	    !(hwe->class == XE_ENGINE_CLASS_RENDER ||
-	      hwe->class == XE_ENGINE_CLASS_COMPUTE ||
-	      hwe->class == XE_ENGINE_CLASS_COPY ||
+	if (!XE_GT_WA(lrc->gt, 16010904313))
+		return 0;
+
+	if (!indirect &&
+	    !(hwe->class == XE_ENGINE_CLASS_COPY ||
 	      hwe->class == XE_ENGINE_CLASS_VIDEO_DECODE ||
 	      hwe->class == XE_ENGINE_CLASS_VIDEO_ENHANCE))
 		return 0;
 
+	if (indirect &&
+	    !(hwe->class == XE_ENGINE_CLASS_RENDER ||
+	      hwe->class == XE_ENGINE_CLASS_COMPUTE))
+		return 0;
+
 	if (xe_gt_WARN_ON(lrc->gt, max_len < 12))
 		return -ENOSPC;
 
@@ -1169,7 +1174,8 @@ static ssize_t setup_timestamp_wa(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
 
 static ssize_t setup_configfs_post_ctx_restore_bb(struct xe_lrc *lrc,
 						  struct xe_hw_engine *hwe,
-						  u32 *batch, size_t max_len)
+						  u32 *batch, size_t max_len,
+						  bool indirect)
 {
 	struct xe_device *xe = gt_to_xe(lrc->gt);
 	const u32 *user_batch;
@@ -1198,7 +1204,8 @@ static ssize_t setup_configfs_post_ctx_restore_bb(struct xe_lrc *lrc,
 
 static ssize_t setup_configfs_mid_ctx_restore_bb(struct xe_lrc *lrc,
 						 struct xe_hw_engine *hwe,
-						 u32 *batch, size_t max_len)
+						 u32 *batch, size_t max_len,
+						 bool indirect)
 {
 	struct xe_device *xe = gt_to_xe(lrc->gt);
 	const u32 *user_batch;
@@ -1227,7 +1234,8 @@ static ssize_t setup_configfs_mid_ctx_restore_bb(struct xe_lrc *lrc,
 
 static ssize_t setup_invalidate_state_cache_wa(struct xe_lrc *lrc,
 					       struct xe_hw_engine *hwe,
-					       u32 *batch, size_t max_len)
+					       u32 *batch, size_t max_len,
+					       bool indirect)
 {
 	u32 *cmd = batch;
 
@@ -1247,7 +1255,8 @@ static ssize_t setup_invalidate_state_cache_wa(struct xe_lrc *lrc,
 
 static ssize_t setup_invalidate_auxccs_wa(struct xe_lrc *lrc,
 					  struct xe_hw_engine *hwe,
-					  u32 *batch, size_t max_len)
+					  u32 *batch, size_t max_len,
+					  bool indirect)
 {
 	struct xe_gt *gt = lrc->gt;
 	u32 *(*emit)(struct xe_gt *gt, u32 *cmd) =
@@ -1264,7 +1273,7 @@ static ssize_t setup_invalidate_auxccs_wa(struct xe_lrc *lrc,
 
 struct bo_setup {
 	ssize_t (*setup)(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
-			 u32 *batch, size_t max_size);
+			 u32 *batch, size_t max_size, bool indirect);
 };
 
 struct bo_setup_state {
@@ -1273,6 +1282,7 @@ struct bo_setup_state {
 	struct xe_hw_engine	*hwe;
 	size_t			max_size;
 	size_t                  reserve_dw;
+	bool			indirect;
 	unsigned int		offset;
 	const struct bo_setup	*funcs;
 	unsigned int		num_funcs;
@@ -1298,7 +1308,8 @@ static int setup_bo(struct bo_setup_state *state)
 
 	for (size_t i = 0; i < state->num_funcs; i++) {
 		ssize_t len = state->funcs[i].setup(state->lrc, state->hwe,
-						    state->ptr, remain);
+						    state->ptr, remain,
+						    state->indirect);
 
 		remain -= len;
 
@@ -1404,6 +1415,7 @@ setup_indirect_ctx(struct xe_lrc *lrc, struct xe_hw_engine *hwe)
 	struct bo_setup_state state = {
 		.lrc = lrc,
 		.hwe = hwe,
+		.indirect = true,
 		.max_size = (63 * 64) /* max 63 cachelines */,
 		.buffer = NULL,
 		.offset = __xe_lrc_indirect_ctx_offset(lrc),
drivers/gpu/drm/xe/xe_mmio.c +3 -2
index 78adb303b663..6907c1127d32 100644
@@ -288,6 +288,7 @@ u64 xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg)
 	return (u64)udw << 32 | ldw;
 }
 
+#define __XE_MMIO_WAIT_MAX_BACKOFF_100MS (100 * USEC_PER_MSEC)
 static int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val,
 			    u32 timeout_us, u32 *out_val, bool atomic, bool expect_match)
 {
@@ -318,10 +319,10 @@ static int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u
 			wait = ktime_us_delta(end, cur);
 
 		if (atomic)
-			udelay(wait);
+			udelay(min_t(s64, wait, (MAX_UDELAY_MS * 1000)));
 		else
 			usleep_range(wait, wait << 1);
-		wait <<= 1;
+		wait = min_t(s64, wait << 1, __XE_MMIO_WAIT_MAX_BACKOFF_100MS);
 	}
 
 	if (ret != 0) {
drivers/gpu/drm/xe/xe_sysctrl_mailbox.c +8 -8
index 72baf1aa4b3a..a0179e62abaa 100644
@@ -19,20 +19,20 @@
 #include "xe_sysctrl_mailbox_types.h"
 
 struct xe_sysctrl_mailbox_msg_hdr {
-	__le32 data;
-} __packed;
+	u32 data;
+};
 
 #define XE_SYSCTRL_HDR_GROUP_ID(hdr) \
-	FIELD_GET(SYSCTRL_HDR_GROUP_ID_MASK, le32_to_cpu((hdr)->data))
+	FIELD_GET(SYSCTRL_HDR_GROUP_ID_MASK, (hdr)->data)
 
 #define XE_SYSCTRL_HDR_COMMAND(hdr) \
-	FIELD_GET(SYSCTRL_HDR_COMMAND_MASK, le32_to_cpu((hdr)->data))
+	FIELD_GET(SYSCTRL_HDR_COMMAND_MASK, (hdr)->data)
 
 #define XE_SYSCTRL_HDR_IS_RESPONSE(hdr) \
-	FIELD_GET(SYSCTRL_HDR_IS_RESPONSE, le32_to_cpu((hdr)->data))
+	FIELD_GET(SYSCTRL_HDR_IS_RESPONSE, (hdr)->data)
 
 #define XE_SYSCTRL_HDR_RESULT(hdr) \
-	FIELD_GET(SYSCTRL_HDR_RESULT_MASK, le32_to_cpu((hdr)->data))
+	FIELD_GET(SYSCTRL_HDR_RESULT_MASK, (hdr)->data)
 
 static bool sysctrl_wait_bit_clear(struct xe_sysctrl *sc, u32 bit_mask,
 				   unsigned int timeout_ms)
@@ -126,8 +126,8 @@ static int sysctrl_prepare_command(struct xe_device *xe,
 		return -ENOMEM;
 
 	hdr = (struct xe_sysctrl_mailbox_msg_hdr *)buffer;
-	hdr->data = cpu_to_le32(FIELD_PREP(SYSCTRL_HDR_GROUP_ID_MASK, group_id) |
-				     FIELD_PREP(SYSCTRL_HDR_COMMAND_MASK, command));
+	hdr->data = FIELD_PREP(SYSCTRL_HDR_GROUP_ID_MASK, group_id) |
+		    FIELD_PREP(SYSCTRL_HDR_COMMAND_MASK, command);
 
 	if (data_in && data_in_len)
 		memcpy(buffer + sizeof(*hdr), data_in, data_in_len);
drivers/hid/hid-steam.c +115 -131

516 lines not on this page · raw message

drivers/input/joystick/xpad.c +4 -0
index 6406ceab988a..810e52782ae8 100644
@@ -302,6 +302,8 @@ static const struct xpad_device {
 	{ 0x17ef, 0x6182, "Lenovo Legion Controller for Windows", 0, XTYPE_XBOX360 },
 	{ 0x1949, 0x041a, "Amazon Game Controller", 0, XTYPE_XBOX360 },
 	{ 0x1a86, 0xe310, "Legion Go S", 0, XTYPE_XBOX360 },
+	{ 0x1b1c, 0x2b1f, "Corsair Novablade Pro (Wired)", 0, XTYPE_XBOX360 },
+	{ 0x1b1c, 0x2b2b, "Corsair Novablade Pro (2.4 GHz Receiver)", 0, XTYPE_XBOX360 },
 	{ 0x1bad, 0x0002, "Harmonix Rock Band Guitar", 0, XTYPE_XBOX360 },
 	{ 0x1bad, 0x0003, "Harmonix Rock Band Drumkit", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x1bad, 0x0130, "Ion Drum Rocker", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 },
@@ -379,6 +381,7 @@ static const struct xpad_device {
 	{ 0x2993, 0x2001, "TECNO Pocket Go", 0, XTYPE_XBOX360 },
 	{ 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE },
 	{ 0x2dc8, 0x200f, "8BitDo Ultimate 3-mode Controller for Xbox", MAP_SHARE_BUTTON, XTYPE_XBOXONE },
+	{ 0x2dc8, 0x201e, "8BitDo Pro 2 Wired Controller for Xbox", MAP_SHARE_BUTTON, XTYPE_XBOXONE },
 	{ 0x2dc8, 0x3106, "8BitDo Ultimate Wireless / Pro 2 Wired Controller", 0, XTYPE_XBOX360 },
 	{ 0x2dc8, 0x3109, "8BitDo Ultimate Wireless Bluetooth", 0, XTYPE_XBOX360 },
 	{ 0x2dc8, 0x310a, "8BitDo Ultimate 2C Wireless Controller", 0, XTYPE_XBOX360 },
@@ -545,6 +548,7 @@ static const struct usb_device_id xpad_table[] = {
 	XPAD_XBOX360_VENDOR(0x17ef),		/* Lenovo */
 	XPAD_XBOX360_VENDOR(0x1949),		/* Amazon controllers */
 	XPAD_XBOX360_VENDOR(0x1a86),		/* Nanjing Qinheng Microelectronics (WCH) */
+	XPAD_XBOX360_VENDOR(0x1b1c),		/* Corsair controllers */
 	XPAD_XBOX360_VENDOR(0x1bad),		/* Harmonix Rock Band guitar and drums */
 	XPAD_XBOX360_VENDOR(0x1ee9),		/* ZOTAC Technology Limited */
 	XPAD_XBOX360_VENDOR(0x20bc),		/* BETOP wireless dongles */
drivers/input/misc/ati_remote2.c +4 -8
index 8db2dca84975..3e0f874e9b16 100644
@@ -672,8 +672,7 @@ static ssize_t ati_remote2_show_channel_mask(struct device *dev,
 					     struct device_attribute *attr,
 					     char *buf)
 {
-	struct usb_device *udev = to_usb_device(dev);
-	struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
+	struct usb_interface *intf = to_usb_interface(dev);
 	struct ati_remote2 *ar2 = usb_get_intfdata(intf);
 
 	return sprintf(buf, "0x%04x\n", ar2->channel_mask);
@@ -683,8 +682,7 @@ static ssize_t ati_remote2_store_channel_mask(struct device *dev,
 					      struct device_attribute *attr,
 					      const char *buf, size_t count)
 {
-	struct usb_device *udev = to_usb_device(dev);
-	struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
+	struct usb_interface *intf = to_usb_interface(dev);
 	struct ati_remote2 *ar2 = usb_get_intfdata(intf);
 	unsigned int mask;
 	int r;
@@ -720,8 +718,7 @@ static ssize_t ati_remote2_show_mode_mask(struct device *dev,
 					  struct device_attribute *attr,
 					  char *buf)
 {
-	struct usb_device *udev = to_usb_device(dev);
-	struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
+	struct usb_interface *intf = to_usb_interface(dev);
 	struct ati_remote2 *ar2 = usb_get_intfdata(intf);
 
 	return sprintf(buf, "0x%02x\n", ar2->mode_mask);
@@ -731,8 +728,7 @@ static ssize_t ati_remote2_store_mode_mask(struct device *dev,
 					   struct device_attribute *attr,
 					   const char *buf, size_t count)
 {
-	struct usb_device *udev = to_usb_device(dev);
-	struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
+	struct usb_interface *intf = to_usb_interface(dev);
 	struct ati_remote2 *ar2 = usb_get_intfdata(intf);
 	unsigned int mask;
 	int err;
drivers/iommu/dma-iommu.c +2 -2
index ae814d8c99c0..5f901b4baf21 100644
@@ -1228,9 +1228,9 @@ dma_addr_t iommu_dma_map_phys(struct device *dev, phys_addr_t phys, size_t size,
 	 * If both the physical buffer start address and size are page aligned,
 	 * we don't need to use a bounce page.
 	 */
-	if (dev_use_swiotlb(dev, size, dir) &&
+	if (!(attrs & DMA_ATTR_MMIO) && dev_use_swiotlb(dev, size, dir) &&
 	    iova_unaligned(iovad, phys, size)) {
-		if (attrs & (DMA_ATTR_MMIO | DMA_ATTR_REQUIRE_COHERENT))
+		if (attrs & DMA_ATTR_REQUIRE_COHERENT)
 			return DMA_MAPPING_ERROR;
 
 		phys = iommu_dma_map_swiotlb(dev, phys, size, dir, attrs);
drivers/md/dm-crypt.c +6 -1
index 608b617fb817..ee36789a7f0d 100644
@@ -2895,8 +2895,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;
+		}
 		cc->tfms_count = 64;
+	}
 
 	if (*ivmode && !strcmp(*ivmode, "essiv")) {
 		if (!*ivopts) {
drivers/md/dm-integrity.c +2 -2
index 86fc35e76a0f..4bda7b5dba1a 100644
@@ -2721,7 +2721,7 @@ static void dm_integrity_inline_recheck(struct work_struct *w)
 	outgoing_data = dio->integrity_payload + PAGE_SIZE;
 
 	while (dio->bio_details.bi_iter.bi_size) {
-		char digest[HASH_MAX_DIGESTSIZE];
+		char digest[MAX_T(size_t, HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
 		int r;
 		struct bio_integrity_payload *bip;
 		struct bio_vec bv;
@@ -2788,7 +2788,7 @@ static inline bool dm_integrity_check(struct dm_integrity_c *ic, struct dm_integ
 	unsigned pos = 0;
 
 	while (dio->bio_details.bi_iter.bi_size) {
-		char digest[HASH_MAX_DIGESTSIZE];
+		char digest[MAX_T(size_t, HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
 		struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
 		char *mem = integrity_kmap(ic, bv.bv_page);
 		integrity_sector_checksum(ic, &dio->ahash_req, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, digest);
drivers/md/dm-ioctl.c +11 -3
index 61af2a437a05..d3430825acad 100644
@@ -658,10 +658,16 @@ static void *get_result_buffer(struct dm_ioctl *param, size_t param_size,
 {
 	param->data_start = align_ptr(param + 1) - (void *) param;
 
-	if (param->data_start < param_size)
+	if (param->data_start < param_size) {
 		*len = param_size - param->data_start;
-	else
+	} else {
+		/*
+		 * The buffer can be as small as offsetof(*param, data), which
+		 * is less than sizeof(*param), so don't run off the end of it.
+		 */
 		*len = 0;
+		param->data_start = param_size;
+	}
 
 	return ((void *) param) + param->data_start;
 }
@@ -1289,6 +1295,7 @@ static int do_resume(struct dm_ioctl *param)
 	/* Do we need to load a new map ? */
 	if (new_map) {
 		sector_t old_size, new_size;
+		blk_mode_t new_map_mode;
 
 		dm_ima_context_table_op(md, ima_context, DM_IMA_TABLE_SAVE);
 		/* Suspend if it isn't already suspended */
@@ -1321,6 +1328,7 @@ static int do_resume(struct dm_ioctl *param)
 			}
 		}
 
+		new_map_mode = dm_table_get_mode(new_map);
 		old_size = dm_get_size(md);
 		old_map = dm_swap_table(md, new_map);
 		if (IS_ERR(old_map)) {
@@ -1336,7 +1344,7 @@ static int do_resume(struct dm_ioctl *param)
 		if (old_size && new_size && old_size != new_size)
 			need_resize_uevent = true;
 
-		if (dm_table_get_mode(new_map) & BLK_OPEN_WRITE)
+		if (new_map_mode & BLK_OPEN_WRITE)
 			set_disk_ro(dm_disk(md), 0);
 		else
 			set_disk_ro(dm_disk(md), 1);
drivers/md/dm-snap.c +14 -0
index 1489fda9d24a..02e3cc473026 100644
@@ -1294,6 +1294,20 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 		goto bad_store;
 	}
 
+	/*
+	 * snapshot-merge requires the optional prepare_merge/commit_merge
+	 * callbacks; the transient exception store does not implement them.
+	 * The handover path checks this in __validate_exception_handover(),
+	 * but a directly constructed snapshot-merge never goes through it.
+	 */
+	if (dm_target_is_snapshot_merge(ti) &&
+	    (!s->store->type->prepare_merge ||
+	     !s->store->type->commit_merge)) {
+		ti->error = "Snapshot exception store does not support snapshot-merge.";
+		r = -EINVAL;
+		goto bad_hash_tables;
+	}
+
 	argv += args_used;
 	argc -= args_used;
 
drivers/memstick/core/memstick.c +2 -6
index e03989c4e99e..0d15f48ef51d 100644
@@ -370,9 +370,7 @@ int memstick_set_rw_addr(struct memstick_dev *card)
 {
 	card->next_request = h_memstick_set_rw_addr;
 	memstick_new_req(card->host);
-	if (!wait_for_completion_timeout(&card->mrq_complete,
-			msecs_to_jiffies(500)))
-		card->current_mrq.error = -ETIMEDOUT;
+	wait_for_completion(&card->mrq_complete);
 
 	return card->current_mrq.error;
 }
@@ -405,9 +403,7 @@ static struct memstick_dev *memstick_alloc_card(struct memstick_host *host)
 
 		card->next_request = h_memstick_read_dev_id;
 		memstick_new_req(host);
-		if (!wait_for_completion_timeout(&card->mrq_complete,
-				msecs_to_jiffies(500)))
-			card->current_mrq.error = -ETIMEDOUT;
+		wait_for_completion(&card->mrq_complete);
 
 		if (card->current_mrq.error)
 			goto err_out;
drivers/memstick/host/rtsx_usb_ms.c +11 -20
index beadc389f15f..d5b3a96fc609 100644
@@ -27,7 +27,6 @@ struct rtsx_usb_ms {
 	struct memstick_host	*msh;
 	struct memstick_request	*req;
 
-	struct mutex		host_mutex;
 	struct work_struct	handle_req;
 	struct delayed_work	poll_card;
 
@@ -514,6 +513,13 @@ static void rtsx_usb_ms_handle_req(struct work_struct *work)
 	struct memstick_host *msh = host->msh;
 	int rc;
 
+	/* Fail requests after eject so their waiters are released. */
+	if (host->eject) {
+		while (!memstick_next_req(msh, &host->req))
+			host->req->error = -ENOMEDIUM;
+		return;
+	}
+
 	if (!host->req) {
 		pm_runtime_get_sync(ms_dev(host));
 		do {
@@ -547,8 +553,7 @@ static void rtsx_usb_ms_request(struct memstick_host *msh)
 
 	dev_dbg(ms_dev(host), "--> %s\n", __func__);
 
-	if (!host->eject)
-		schedule_work(&host->handle_req);
+	schedule_work(&host->handle_req);
 }
 
 static int rtsx_usb_ms_set_param(struct memstick_host *msh,
@@ -781,7 +786,6 @@ static int rtsx_usb_ms_drv_probe(struct platform_device *pdev)
 	host->power_mode = MEMSTICK_POWER_OFF;
 	platform_set_drvdata(pdev, host);
 
-	mutex_init(&host->host_mutex);
 	INIT_WORK(&host->handle_req, rtsx_usb_ms_handle_req);
 
 	INIT_DELAYED_WORK(&host->poll_card, rtsx_usb_ms_poll_card);
@@ -812,27 +816,12 @@ static void rtsx_usb_ms_drv_remove(struct platform_device *pdev)
 {
 	struct rtsx_usb_ms *host = platform_get_drvdata(pdev);
 	struct memstick_host *msh = host->msh;
-	int err;
 
 	host->eject = true;
 	msh->removing = true;
-	cancel_work_sync(&host->handle_req);
+	flush_work(&host->handle_req);
 	cancel_delayed_work_sync(&host->poll_card);
 
-	mutex_lock(&host->host_mutex);
-	if (host->req) {
-		dev_dbg(ms_dev(host),
-			"%s: Controller removed during transfer\n",
-			dev_name(&msh->dev));
-		host->req->error = -ENOMEDIUM;
-		do {
-			err = memstick_next_req(msh, &host->req);
-			if (!err)
-				host->req->error = -ENOMEDIUM;
-		} while (!err);
-	}
-	mutex_unlock(&host->host_mutex);
-
 	/* Balance possible unbalanced usage count
 	 * e.g. unconditional module removal
 	 */
@@ -841,6 +830,8 @@ static void rtsx_usb_ms_drv_remove(struct platform_device *pdev)
 
 	pm_runtime_disable(ms_dev(host));
 	memstick_remove_host(msh);
+	/* No card, no new requests; wait for the last failed one to finish. */
+	cancel_work_sync(&host->handle_req);
 	dev_dbg(ms_dev(host),
 		": Realtek USB Memstick controller has been removed\n");
 	memstick_free_host(msh);
drivers/mmc/host/cavium-octeon.c +4 -1
index 8a0daddd9200..1c219cf35a8e 100644
@@ -301,9 +301,12 @@ static void octeon_mmc_remove(struct platform_device *pdev)
 	u64 dma_cfg;
 	int i;
 
-	for (i = 0; i < CAVIUM_MAX_MMC; i++)
+	for (i = 0; i < CAVIUM_MAX_MMC; i++) {
 		if (host->slot[i])
 			cvm_mmc_of_slot_remove(host->slot[i]);
+		if (host->slot_pdev[i])
+			of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL);
+	}
 
 	dma_cfg = readq(host->dma_base + MIO_EMM_DMA_CFG(host));
 	dma_cfg &= ~MIO_EMM_DMA_CFG_EN;
drivers/mmc/host/cavium-thunderx.c +4 -1
index 84ff6d82ae3c..2635ac94ec5d 100644
@@ -173,9 +173,12 @@ static void thunder_mmc_remove(struct pci_dev *pdev)
 	u64 dma_cfg;
 	int i;
 
-	for (i = 0; i < CAVIUM_MAX_MMC; i++)
+	for (i = 0; i < CAVIUM_MAX_MMC; i++) {
 		if (host->slot[i])
 			cvm_mmc_of_slot_remove(host->slot[i]);
+		if (host->slot_pdev[i])
+			of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL);
+	}
 
 	dma_cfg = readq(host->dma_base + MIO_EMM_DMA_CFG(host));
 	dma_cfg &= ~MIO_EMM_DMA_CFG_EN;
drivers/mmc/host/mtk-sd.c +1 -0
index b2680cc054bd..d70e37eb1cb5 100644
@@ -3216,6 +3216,7 @@ static void msdc_drv_remove(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, NULL);
 	mmc_remove_host(mmc);
+	cancel_delayed_work_sync(&host->req_timeout);
 	msdc_deinit_hw(host);
 	msdc_gate_clock(host);
 
drivers/mmc/host/sdhci-sprd.c +4 -0
index 3584a2b314a9..0c8f389fe584 100644
@@ -890,6 +890,10 @@ static void sdhci_sprd_remove(struct platform_device *pdev)
 	struct sdhci_host *host = platform_get_drvdata(pdev);
 	struct sdhci_sprd_host *sprd_host = TO_SPRD_HOST(host);
 
+	pm_runtime_get_sync(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
+	pm_runtime_put_noidle(&pdev->dev);
+
 	sdhci_remove_host(host, 0);
 
 	clk_disable_unprepare(sprd_host->clk_sdio);
drivers/net/amt.c +15 -33

96 lines not on this page · raw message

drivers/net/bareudp.c +2 -1
index 5ef841c85526..2bfad8653be6 100644
@@ -355,7 +355,7 @@ static int bareudp_xmit_skb(struct sk_buff *skb, struct net_device *dev,
 	if (err)
 		goto free_dst;
 
-	skb_set_inner_protocol(skb, bareudp->ethertype);
+	skb_set_inner_protocol(skb, skb->protocol);
 	udp_tunnel_xmit_skb(rt, sk, skb, saddr, info->key.u.ipv4.dst,
 			    tos, ttl, df, sport, bareudp->port,
 			    !net_eq(bareudp->net, dev_net(bareudp->dev)),
@@ -423,6 +423,7 @@ static int bareudp6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
 	if (err)
 		goto free_dst;
 
+	skb_set_inner_protocol(skb, skb->protocol);
 	daddr = info->key.u.ipv6.dst;
 	udp_tunnel6_xmit_skb(dst, sk, skb, dev,
 			     &saddr, &daddr, prio, ttl,
drivers/net/bonding/bond_main.c +4 -4
index 34c5bbbed9ae..507d655eca21 100644
@@ -5738,12 +5738,12 @@ static int bond_xdp_set(struct net_device *dev, struct bpf_prog *prog,
 			bpf_prog_inc(prog);
 	}
 
-	if (prog) {
+	if (prog && !old_prog)
 		static_branch_inc(&bpf_master_redirect_enabled_key);
-	} else if (old_prog) {
-		bpf_prog_put(old_prog);
+	else if (!prog && old_prog)
 		static_branch_dec(&bpf_master_redirect_enabled_key);
-	}
+	if (old_prog)
+		bpf_prog_put(old_prog);
 
 	return 0;
 
drivers/net/can/dev/skb.c +4 -0
index 95fcdc1026f8..14edec5afb57 100644
@@ -210,6 +210,10 @@ static void init_can_skb(struct sk_buff *skb)
 {
 	skb->pkt_type = PACKET_BROADCAST;
 	skb->ip_summed = CHECKSUM_UNNECESSARY;
+
+	skb_reset_mac_header(skb);
+	skb_reset_network_header(skb);
+	skb_reset_transport_header(skb);
 }
 
 struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf)
drivers/net/can/usb/f81604.c +1 -1
index f12318268e46..4c147b9d6d69 100644
@@ -169,7 +169,7 @@ struct f81604_int_data {
 	u8 rxerr;
 	u8 txerr;
 	u8 val;
-} __packed __aligned(4);
+} __packed;
 
 struct f81604_sff {
 	__be16 id;
drivers/net/can/vxcan.c +3 -0
index e882250180ef..f365deafaf54 100644
@@ -78,6 +78,9 @@ static netdev_tx_t vxcan_xmit(struct sk_buff *oskb, struct net_device *dev)
 
 	/* reset CAN GW hop counter */
 	csx->can_gw_hops = 0;
+	/* start with new CAN skb UID in the other namespace */
+	csx->can_skb_uid = 0;
+
 	skb->pkt_type   = PACKET_BROADCAST;
 	skb->dev        = peer;
 	skb->ip_summed  = CHECKSUM_UNNECESSARY;
drivers/net/dsa/microchip/ksz_common.h +1 -1
index b4a5673ba365..8f6ac13b5b18 100644
@@ -778,7 +778,7 @@ static inline bool ksz_is_sgmii_port(struct ksz_device *dev, int port)
 #define KSZ88_FAMILY_ID			0x88
 #define KSZ8895_FAMILY_ID		0x95
 
-#define KSZ8_PORT_STATUS_0		0x08
+#define KSZ8_PORT_STATUS_0		0x18
 #define KSZ8_PORT_FIBER_MODE		BIT(7)
 
 #define SW_CHIP_ID_M			GENMASK(7, 4)
drivers/net/ethernet/airoha/airoha_eth.c +26 -6
index 2fc8c91f210c..d4faf4503487 100644
@@ -2716,14 +2716,34 @@ static int airoha_qdma_set_trtcm_param(struct airoha_qdma *qdma, int channel,
 		     FIELD_PREP(TRTCM_METER_GROUP_MASK, group) |
 		     FIELD_PREP(TRTCM_PARAM_INDEX_MASK, idx) |
 		     FIELD_PREP(TRTCM_PARAM_RATE_TYPE_MASK, mode);
+	int i;
 
-	airoha_qdma_wr(qdma, REG_TRTCM_DATA_LOW(addr), val);
-	airoha_qdma_wr(qdma, REG_TRTCM_CFG_PARAM(addr), config);
+	/*
+	 * HW might be in the middle of bucket handling and might
+	 * require an additional try to actually apply the new TRTCM
+	 * config.
+	 */
+	for (i = 0; i < TRTCM_CONFIG_RETRY_MAX; i++) {
+		u32 data = 0;
 
-	return read_poll_timeout(airoha_qdma_rr, val,
-				 val & TRTCM_PARAM_RW_DONE_MASK,
-				 USEC_PER_MSEC, 10 * USEC_PER_MSEC, true,
-				 qdma, REG_TRTCM_CFG_PARAM(addr));
+		airoha_qdma_wr(qdma, REG_TRTCM_DATA_LOW(addr), val);
+		airoha_qdma_wr(qdma, REG_TRTCM_CFG_PARAM(addr), config);
+
+		if (read_poll_timeout(airoha_qdma_rr, data,
+				      data & TRTCM_PARAM_RW_DONE_MASK,
+				      USEC_PER_MSEC, 10 * USEC_PER_MSEC,
+				      true, qdma, REG_TRTCM_CFG_PARAM(addr)))
+			continue;
+
+		if (airoha_qdma_get_trtcm_param(qdma, channel, addr, param,
+						mode, &data, NULL))
+			continue;
+
+		if (data == val)
+			return 0;
+	}
+
+	return -EBUSY;
 }
 
 static int airoha_qdma_set_trtcm_config(struct airoha_qdma *qdma, int channel,
drivers/net/ethernet/airoha/airoha_eth.h +2 -0
index 70f16189b258..dc0c29001f81 100644
@@ -171,6 +171,8 @@ enum trtcm_param {
 #define TRTCM_TOKEN_RATE_MASK			GENMASK(23, 6)
 #define TRTCM_TOKEN_RATE_FRACTION_MASK		GENMASK(5, 0)
 
+#define TRTCM_CONFIG_RETRY_MAX			2
+
 enum airoha_dma_map_type {
 	AIROHA_DMA_UNMAPPED,
 	AIROHA_DMA_MAP_SINGLE,
drivers/net/ethernet/broadcom/bnxt/bnxt.c +120 -69

55 lines not on this page · raw message

drivers/net/ethernet/broadcom/bnxt/bnxt.h +0 -1
index 4dbcd08ef7c3..a939f4ed1007 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +11 -0
index 96d5d4f7f51f..984432952963 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c +2 -2
index f5acd4be1e69..dbec95b49777 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/google/gve/gve_main.c +4 -4
index e4d78ae52daf..0dd04ee30c9a 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/google/gve/gve_rx_dqo.c +12 -1
index 0ece2f6fdffb..2e6d6abbddfc 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/ibm/ibmveth.c +12 -10
index 73e051d26b9d..abebdb1fc262 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/intel/e1000e/netdev.c +7 -0
index 844f31ab37ad..c282f65199e4 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/intel/iavf/iavf.h +9 -2
index 050f8241ef5e..5fcbfa0ca855 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/intel/iavf/iavf_main.c +67 -18

85 lines not on this page · raw message

drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +89 -10

99 lines not on this page · raw message

drivers/net/ethernet/intel/ice/devlink/port.c +1 -1
index 2a2e56777f9f..3ede24649002 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/intel/ice/ice_eswitch.c +1 -1
index b069e6c514fb..6e7bba473898 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/intel/ice/ice_txrx.c +2 -2
index c04c5856dad6..4e26ace793ec 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c +2 -0
index 4f984f6a2cb9..55ec6387ab28 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +9 -4
index 6fc6605d2054..c75b064b0416 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/esw/adj_vport.c +0 -20
index 7950b82d8b8a..3624c680a861 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +57 -22

79 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/vport.c +0 -24
index 8aa94ec87a0e..edac2d694e0f 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlxsw/spectrum.h +2 -0
index b03ff9e044f9..10af08ce72ef 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c +8 -2
index cb232accb296..f7be4f3a1518 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c +7 -2
index 353fd9ca89a6..5e4632cb792d 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c +16 -12
index 5953e04ef14e..2826e48af103 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/microchip/sparx5/sparx5_tc_matchall.c +1 -0
index 702257979462..146d7f28e8f3 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +13 -2
index 010fef79ec01..0da3da7d0d1b 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/xilinx/xilinx_axienet.h +5 -2
index fcd3aaef27fc..c63d99686d0b 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/xilinx/xilinx_axienet_main.c +42 -9

51 lines not on this page · raw message

drivers/net/pfcp.c +7 -0
index 8bbaf167db75..08557c038180 100644

Lines of this file are not shown. View the raw message.

drivers/net/team/team_core.c +8 -8
index feaa75fbf8fc..3bf7c80f1d8e 100644

Lines of this file are not shown. View the raw message.

drivers/net/team/team_mode_broadcast.c +2 -0
index 61d7d79f0c36..69dc25a5847a 100644

Lines of this file are not shown. View the raw message.

drivers/net/tun.c +14 -9
index 5bbe3123979e..dcd39815205a 100644

Lines of this file are not shown. View the raw message.

drivers/net/usb/ax88179_178a.c +3 -3
index 81d8412ce8e2..cba1dc95d359 100644

Lines of this file are not shown. View the raw message.

drivers/net/veth.c +1 -0
index 2780b2dd073d..4f145c5f686e 100644

Lines of this file are not shown. View the raw message.

drivers/net/virtio_net.c +2 -0
index bf82ef9874ab..daab43ac92ce 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireguard/noise.c +4 -3
index 9c0a09bf6c95..ec2513d6dfab 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireguard/queueing.h +2 -0
index 79b6d70de236..663b19b78395 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath12k/core.c +1 -32
index 5cdf4973d986..992602965fb4 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath12k/core.h +0 -3
index f28d2e90b67b..708479df4b89 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath12k/hif.h +0 -9
index 4de8667690e9..aecdb0c5f285 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath12k/pci.c +0 -8
index fee4129ea405..a41544665080 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +25 -2
index d2ae67985606..92ec269f43b2 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/marvell/libertas/tx.c +0 -7
index 13d08022e414..27304a98787d 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt76.h +10 -0
index 476578e2fbf0..9188a27e7865 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7603/init.c +1 -0
index 10f2ec70c792..218ec406d2a8 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -0
index a9a4a87ae0a7..fe03bc70e63a 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7915/init.c +6 -0
index 2ab38f9e5258..e768f4f72ed8 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7915/main.c +2 -0
index 4783e5f52d22..1830398ff719 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7925/mac.c +2 -1
index b52b67833060..8603915ddc2e 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7925/main.c +12 -0
index 9f080da13341..e6e5c26307a1 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c +85 -43

128 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h +2 -0
index 474033073831..1d42f24b05f6 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7996/init.c +2 -1
index fa74aba42690..95fb30404b85 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7996/main.c +9 -1
index c6140412ed32..ae006f29091f 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7996/mcu.h +3 -0
index c673e986ecb5..288b923750c0 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/tx.c +80 -9

89 lines not on this page · raw message

drivers/net/xen-netfront.c +3 -1
index d269457e839e..fdcb91042f29 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/target/core.c +1 -1
index 2aa9ded7d551..0b1f800c6cc8 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/target/pr.c +4 -0
index ad07f55e7f17..acb44df15fc7 100644

Lines of this file are not shown. View the raw message.

drivers/pmdomain/imx/imx8m-blk-ctrl.c +15 -0
index 99d100e1d923..62c4f829605c 100644

Lines of this file are not shown. View the raw message.

drivers/pmdomain/rockchip/pm-domains.c +17 -3
index 490bbb1d1d8e..b57581b367a9 100644

Lines of this file are not shown. View the raw message.

drivers/power/sequencing/pwrseq-pcie-m2.c +2 -0
index ddfe6ca82494..c59c487c43e3 100644

Lines of this file are not shown. View the raw message.

drivers/ptp/ptp_ocp.c +1 -1
index 3d26ec1f7b9e..a8cba2f64b98 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/ltc3676.c +12 -3
index 768cdce0d4ec..1ec218951829 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/of_regulator.c +17 -7
index c0cc6cc0afd8..785b7a11dfc6 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/tps6594-regulator.c +3 -3
index 31a5218d5510..503b89a2f5f8 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ch.c +9 -20
index 4010fdbf813c..c36539c83ed1 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qedi/qedi_main.c +1 -2
index 227ff7bd1bdc..f394fcbb97e7 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-nxp-fspi.c +14 -8
index 4425132432ec..e0c88e9f8183 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-sg2044-nor.c +48 -8

56 lines not on this page · raw message

drivers/tee/optee/ffa_abi.c +26 -12
index 633715b98625..d027fe7ce86f 100644

Lines of this file are not shown. View the raw message.

drivers/tee/optee/optee_msg.h +2 -2
index 7d9b12e71c03..6c3043f8da33 100644

Lines of this file are not shown. View the raw message.

drivers/tee/optee/smc_abi.c +8 -9
index b8a2bdac3208..51624443359b 100644

Lines of this file are not shown. View the raw message.

drivers/tee/tee_shm.c +4 -0
index 6742b3579c86..daa4af1e089e 100644

Lines of this file are not shown. View the raw message.

drivers/ufs/core/ufs-mcq.c +17 -13
index 13b60a2d06db..967b51ca57a0 100644

Lines of this file are not shown. View the raw message.

drivers/ufs/core/ufshcd.c +26 -27

53 lines not on this page · raw message

drivers/ufs/host/ufs-mediatek.c +16 -2
index 3991a51263a6..a2defbe3b748 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/inode.c +3 -4
index 7fe0a63d690a..579b82e27b5a 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/ioctl.c +16 -15
index a537036303a4..833052306964 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/scrub.c +3 -1
index 3b3f04521369..9db8f8b6d3d5 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/xattr.c +11 -4
index ab55d10bd71f..cb001a211f55 100644

Lines of this file are not shown. View the raw message.

fs/dcache.c +3 -1
index 073c2ce2d444..d6fbb4fa7dbc 100644

Lines of this file are not shown. View the raw message.

fs/fcntl.c +3 -0
index c158f082f1da..9b71bc9d71d1 100644

Lines of this file are not shown. View the raw message.

fs/fs_context.c +4 -0
index 23ad66cd94e1..a50584df97be 100644

Lines of this file are not shown. View the raw message.

fs/inode.c +10 -13
index c6b08e8c5f62..efa801f3eb11 100644

Lines of this file are not shown. View the raw message.

fs/mount.h +5 -1
index 94fcc306d21e..2223fb141499 100644

Lines of this file are not shown. View the raw message.

fs/namei.c +29 -0
index 19ce43c9a6e6..27e0637bfdda 100644

Lines of this file are not shown. View the raw message.

fs/namespace.c +191 -63

254 lines not on this page · raw message

fs/nullfs.c +2 -2
index fdbd3e5d3d71..20d3aa627a47 100644

Lines of this file are not shown. View the raw message.

fs/pnode.c +90 -18

108 lines not on this page · raw message

fs/verity/fsverity_private.h +14 -1
index 881d46f25e08..6f85f63861aa 100644

Lines of this file are not shown. View the raw message.

fs/verity/open.c +12 -1
index d0c56a7faa3b..52c8cd014921 100644

Lines of this file are not shown. View the raw message.

fs/xfs/libxfs/xfs_exchmaps.c +14 -89

103 lines not on this page · raw message

fs/xfs/libxfs/xfs_log_format.h +1 -3
index a4e1b3eb425c..6e620380d5dc 100644

Lines of this file are not shown. View the raw message.

fs/xfs/xfs_bmap_util.c +6 -9
index c88b9ade7389..2ea650767805 100644

Lines of this file are not shown. View the raw message.

fs/xfs/xfs_exchrange.c +37 -14

51 lines not on this page · raw message

include/linux/can/core.h +2 -1
index 3287232e3cad..2de74c2b78b6 100644

Lines of this file are not shown. View the raw message.

include/linux/can/skb.h +3 -1
index a70a02967071..5d27843862fc 100644

Lines of this file are not shown. View the raw message.

include/linux/io_uring_types.h +2 -0
index dac5b2cb8aaa..20116462cf3d 100644

Lines of this file are not shown. View the raw message.

include/linux/mount.h +1 -1
index acfe7ef86a1b..b16ba5d45605 100644

Lines of this file are not shown. View the raw message.

include/linux/nsproxy.h +1 -0
index 5a67648721c7..dc2447f5f092 100644

Lines of this file are not shown. View the raw message.

include/linux/nvme.h +2 -2
index 041f30931a90..03ddd2c6d7fa 100644

Lines of this file are not shown. View the raw message.

include/linux/sched/ext.h +1 -0
index 87e353f7e011..67a97429d8a6 100644

Lines of this file are not shown. View the raw message.

include/linux/virtio_net.h +25 -35

60 lines not on this page · raw message

include/net/amt.h +0 -4
index a0255491f5b0..2846dde0cadc 100644

Lines of this file are not shown. View the raw message.

include/net/bluetooth/rfcomm.h +1 -0
index 102c278e3584..9dc5fd4cb8c8 100644

Lines of this file are not shown. View the raw message.

include/net/can.h +2 -0
index 6db9e826f0e0..2b8af2598732 100644

Lines of this file are not shown. View the raw message.

include/net/cfg80211.h +1 -0
index f5abf1db7558..7354ba079363 100644

Lines of this file are not shown. View the raw message.

include/net/ip.h +7 -0
index 6f602df72ee6..d07c2c573024 100644

Lines of this file are not shown. View the raw message.

include/net/mac80211.h +13 -1
index 36055d40172a..7b610dfee286 100644

Lines of this file are not shown. View the raw message.

include/net/strparser.h +5 -5
index 0ed73e364faa..881b7ae34498 100644

Lines of this file are not shown. View the raw message.

io_uring/io_uring.c +8 -5
index c5404fbe3f7e..3d8c8a50fd31 100644

Lines of this file are not shown. View the raw message.

io_uring/kbuf.c +3 -3
index 1cf5be62bb65..5065a3eff809 100644

Lines of this file are not shown. View the raw message.

io_uring/memmap.c +34 -11

45 lines not on this page · raw message

io_uring/memmap.h +1 -1
index f4cfbb6b9a1f..0714bb5a9616 100644

Lines of this file are not shown. View the raw message.

io_uring/net.c +3 -1
index e6847fb084ab..37fc7baa55b2 100644

Lines of this file are not shown. View the raw message.

io_uring/register.c +15 -6
index 02bc103bcc9d..dab3eb4258df 100644

Lines of this file are not shown. View the raw message.

io_uring/zcrx.c +1 -1
index 1b6832f6e10f..0a9e8a58b99a 100644

Lines of this file are not shown. View the raw message.

kernel/cgroup/cpuset.c +32 -8
index c43f15c9917c..501f12de533f 100644

Lines of this file are not shown. View the raw message.

kernel/dma/swiotlb.c +3 -3
index bd5393133753..08ded023328f 100644

Lines of this file are not shown. View the raw message.

kernel/fork.c +2 -1
index b22b5ba9a543..854448152696 100644

Lines of this file are not shown. View the raw message.

kernel/nsproxy.c +1 -1
index d9d3d5973bf5..3fb1595a4a59 100644

Lines of this file are not shown. View the raw message.

kernel/sched/ext/ext.c +17 -8
index cd7cbd1c99a2..a9f33e2b17ac 100644

Lines of this file are not shown. View the raw message.

kernel/sched/ext/internal.h +5 -0
index b295991b9f10..3cd223c6d763 100644

Lines of this file are not shown. View the raw message.

kernel/sched/sched.h +0 -1
index f76e6f7f4a01..a6c6f8165eec 100644

Lines of this file are not shown. View the raw message.

kernel/workqueue.c +1 -1
index 53608ac01fab..cb7055aee3af 100644

Lines of this file are not shown. View the raw message.

lib/dim/dim.c +7 -3
index 97c3d084ebf0..7f3eebae73cb 100644

Lines of this file are not shown. View the raw message.

mm/mremap.c +52 -18

70 lines not on this page · raw message

mm/pgtable-generic.c +19 -1
index b91b1a98029c..cd227fc05d2d 100644

Lines of this file are not shown. View the raw message.

mm/vma.c +18 -3
index 8f7f77a4c7ce..07881c0987cf 100644

Lines of this file are not shown. View the raw message.

mm/vma.h +6 -1
index 8e4b61a7304c..3d2fa4f0d777 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_core.c +4 -0
index aea017ee5b0a..b19e68844e1a 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_sock.c +2 -0
index 6d56c77741e1..81068b585764 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_sync.c +9 -1
index 17882feeeeee..110135848bd6 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/iso.c +42 -10

52 lines not on this page · raw message

net/bluetooth/mgmt.c +1 -1
index 2a177cd17a9e..7928d9e45f98 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/rfcomm/core.c +95 -39

134 lines not on this page · raw message

net/bluetooth/rfcomm/sock.c +4 -1
index d2855f9b3abc..0a6ba8ca230f 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/rfcomm/tty.c +1 -1
index dc3cdf614def..198c7dd1a95b 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/sco.c +65 -22

87 lines not on this page · raw message

net/bridge/br_multicast.c +18 -5
index 2191d35d9fa0..79b6fe54a7cb 100644

Lines of this file are not shown. View the raw message.

net/bridge/netfilter/nf_conntrack_bridge.c +7 -3
index 7ecb8a26bfa3..b5444335b86f 100644

Lines of this file are not shown. View the raw message.

net/can/af_can.c +36 -11

47 lines not on this page · raw message

net/can/gw.c +3 -0
index 0ec99f68aa45..5793cb2420ed 100644

Lines of this file are not shown. View the raw message.

net/can/isotp.c +10 -6
index 155530aedce2..f5dc9d04bd68 100644

Lines of this file are not shown. View the raw message.

net/can/raw.c +7 -3
index 82d9c0499c95..0acd4f6c6dd6 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +7 -4
index 6f75d1d1af32..1a06976e1956 100644

Lines of this file are not shown. View the raw message.

net/core/flow_dissector.c +10 -1
index 8aa4f9b4df81..1be6c739e3c7 100644

Lines of this file are not shown. View the raw message.

net/core/skbuff.c +5 -1
index 88febbc5803e..fa5c1c15d417 100644

Lines of this file are not shown. View the raw message.

net/devlink/core.c +8 -2
index fe9f6a0a67d5..42c16940e4c4 100644

Lines of this file are not shown. View the raw message.

net/ipv4/cipso_ipv4.c +8 -0
index a05aa075de1a..1aacbbeffbc6 100644

Lines of this file are not shown. View the raw message.

net/ipv4/fib_semantics.c +3 -0
index 0c25f6dfb8a6..92cfc838e5d3 100644

Lines of this file are not shown. View the raw message.

net/ipv4/fib_trie.c +0 -2
index 6badad29593b..58be0752b035 100644

Lines of this file are not shown. View the raw message.

net/ipv4/ip_output.c +7 -3
index a24cc8ee11d3..eaa6fabda347 100644

Lines of this file are not shown. View the raw message.

net/ipv4/route.c +5 -0
index f07231447883..196ca7e8acff 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp.c +2 -0
index 47a34a993972..93efc948d2be 100644

Lines of this file are not shown. View the raw message.

net/ipv4/udp.c +11 -0
index 59afce196079..a50dccfbf420 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ip6_gre.c +0 -7
index e6913a7f6881..6d7c547232a2 100644

Lines of this file are not shown. View the raw message.

net/ipv6/route.c +1 -3
index 8fddcc631fcb..5d80a025c3e6 100644

Lines of this file are not shown. View the raw message.

net/ipv6/udp.c +13 -0
index 15e032194ecc..b73cf02ac1b6 100644

Lines of this file are not shown. View the raw message.

net/mac80211/debugfs.c +11 -2
index f36cc2590305..3a671225c127 100644

Lines of this file are not shown. View the raw message.

net/mac80211/ieee80211_i.h +2 -0
index 011ec7fbb711..2854dcc86b21 100644

Lines of this file are not shown. View the raw message.

net/mac80211/main.c +1 -0
index 8edfef2b57f8..d5ef44f2b3f2 100644

Lines of this file are not shown. View the raw message.

net/mac80211/sta_info.c +16 -1
index 01d70f71c43e..ce7a3f839ce2 100644

Lines of this file are not shown. View the raw message.

net/mac80211/sta_info.h +2 -1
index 5da3142d8516..ee0d32877c5b 100644

Lines of this file are not shown. View the raw message.

net/mac80211/status.c +3 -2
index e10e5bcc279b..a9da9fe87cf1 100644

Lines of this file are not shown. View the raw message.

net/mac80211/tx.c +46 -24

70 lines not on this page · raw message

net/netfilter/nfnetlink_queue.c +7 -0
index ec5e7716df8b..8a5240a9be22 100644

Lines of this file are not shown. View the raw message.

net/netfilter/xt_CHECKSUM.c +5 -1
index 9d99f5a3d176..1fb0f8118404 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/actions.c +6 -1
index dc5ff859f114..27152bca8a8c 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/datapath.c +8 -0
index b601e4859de9..21bc56e79627 100644

Lines of this file are not shown. View the raw message.

net/packet/af_packet.c +17 -11
index 8865c1a42667..52ae3d875e97 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_route.c +6 -0
index 0f211f030fd9..dca812a75269 100644

Lines of this file are not shown. View the raw message.

net/sched/em_text.c +3 -0
index 4132f8c3c5fc..bc45edb8c03b 100644

Lines of this file are not shown. View the raw message.

net/sctp/socket.c +1 -5
index 4652fd90d9a6..e35692dd8d30 100644

Lines of this file are not shown. View the raw message.

net/smc/af_smc.c +6 -1
index e9f93b3ab435..8b3ee70f8433 100644

Lines of this file are not shown. View the raw message.

net/strparser/strparser.c +5 -1
index a23f4b4dfc67..d5b17d099a0e 100644

Lines of this file are not shown. View the raw message.

net/tipc/node.c +9 -1
index 683a136e53ef..5a7487dab31d 100644

Lines of this file are not shown. View the raw message.

net/tipc/topsrv.c +65 -15

80 lines not on this page · raw message

net/vmw_vsock/af_vsock.c +2 -0
index 4a1dfde8414f..f271a095996c 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/virtio_transport_common.c +3 -1
index 8becad81279c..1f3fd0895f7c 100644

Lines of this file are not shown. View the raw message.

net/xfrm/xfrm_output.c +11 -5
index e305ba32e356..f1f612cd7b43 100644

Lines of this file are not shown. View the raw message.

security/keys/key.c +3 -3
index b34a64d81d47..a438c4508595 100644

Lines of this file are not shown. View the raw message.

security/keys/persistent.c +32 -23

55 lines not on this page · raw message

security/selinux/avc.c +3 -2
index 221c41978dc5..436b9af7b92c 100644

Lines of this file are not shown. View the raw message.

security/selinux/hooks.c +8 -1
index 5832131f29c4..cf7297072ec0 100644

Lines of this file are not shown. View the raw message.

sound/hda/codecs/side-codecs/tas2781_hda.c +15 -3
index b22f93424c62..e0da299df780 100644

Lines of this file are not shown. View the raw message.

sound/pci/ctxfi/ctdaio.c +5 -1
index 69aacd06716c..59ed96fb938a 100644

Lines of this file are not shown. View the raw message.

sound/soc/amd/yc/acp6x-mach.c +7 -0
index 79858fc94806..7eaf15a27b7b 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/adau1372.c +14 -4
index cc174ec3a1f8..c3d3be898ba6 100644

Lines of this file are not shown. View the raw message.

sound/soc/samsung/i2s.c +8 -0
index f80e8d498156..525126ecb0c3 100644

Lines of this file are not shown. View the raw message.

sound/soc/sdw_utils/soc_sdw_utils.c +32 -3
index 5266720e58b3..a47f34afd1d1 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/mm/hugetlb-mmap.c +2 -2
index 0f2aad1b7dbd..2edbc992e6bc 100644

Lines of this file are not shown. View the raw message.

tools/testing/vma/tests/vma.c +2 -2
index 754a2da06321..b7563ff20277 100644

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.