Linux 6.18.54
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.54 kernel.
All users of the 6.18 kernel series must upgrade.
The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-devices-platform-trackpoint | 2 Documentation/hwmon/cgbc-hwmon.rst | 42 Documentation/netlink/specs/rt-neigh.yaml | 3 Documentation/networking/ip-sysctl.rst | 4 Makefile | 2 arch/arm/mach-socfpga/Kconfig | 2 arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 1 arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 10 arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 10 arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 10 arch/arm64/include/asm/percpu.h | 20 arch/arm64/kernel/hibernate-asm.S | 2 arch/arm64/kernel/hibernate.c | 4 arch/mips/cavium-octeon/octeon-platform.c | 4 arch/powerpc/kernel/iommu.c | 2 arch/powerpc/kvm/book3s_hv_nested.c | 2 arch/powerpc/kvm/book3s_hv_uvmem.c | 5 arch/x86/Kconfig.cpu | 11 arch/x86/Makefile | 5 arch/x86/entry/entry_fred.c | 11 arch/x86/include/asm/text-patching.h | 4 arch/x86/kernel/alternative.c | 53 arch/x86/kernel/cpu/microcode/intel.c | 26 arch/x86/kernel/kprobes/core.c | 5 drivers/acpi/processor_driver.c | 2 drivers/ata/libahci.c | 15 drivers/ata/libahci_platform.c | 2 drivers/block/sunvdc.c | 9 drivers/bluetooth/btintel_pcie.c | 8 drivers/bluetooth/btmtk.c | 7 drivers/bluetooth/btmtksdio.c | 4 drivers/bluetooth/btqca.c | 37 drivers/bluetooth/btusb.c | 17 drivers/bluetooth/hci_qca.c | 80 drivers/clk/clk-scpi.c | 2 drivers/dma/dmaengine.c | 10 drivers/dma/mmp_pdma.c | 2 drivers/dma/sprd-dma.c | 3 drivers/dma/sun6i-dma.c | 9 drivers/dma/ti/k3-udma-glue.c | 5 drivers/dma/xilinx/xilinx_dma.c | 26 drivers/firmware/arm_scpi.c | 4 drivers/gpio/gpio-virtuser.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 48 drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c | 2 drivers/gpu/drm/drm_atomic_uapi.c | 13 drivers/gpu/drm/gud/gud_pipe.c | 7 drivers/gpu/drm/msm/adreno/adreno_device.c | 2 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 1 drivers/gpu/drm/msm/dp/dp_display.c | 21 drivers/gpu/drm/msm/dsi/dsi_host.c | 36 drivers/gpu/drm/msm/hdmi/hdmi_phy.c | 8 drivers/gpu/drm/msm/msm_drv.c | 2 drivers/gpu/drm/msm/msm_gem.h | 3 drivers/gpu/drm/msm/msm_gem_vma.c | 2 drivers/gpu/drm/msm/msm_ringbuffer.c | 2 drivers/gpu/drm/msm/msm_ringbuffer.h | 1 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 3 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 2 drivers/gpu/drm/vc4/vc4_kms.c | 2 drivers/gpu/drm/xe/xe_mmio_gem.c | 33 drivers/gpu/drm/xe/xe_mmio_gem.h | 2 drivers/gpu/drm/xe/xe_shrinker.c | 62 drivers/hid/hid-asus.c | 34 drivers/hid/hid-logitech-hidpp.c | 24 drivers/hwmon/cgbc-hwmon.c | 129 drivers/hwmon/gpio-fan.c | 4 drivers/hwmon/hp-wmi-sensors.c | 32 drivers/hwmon/pmbus/pmbus.h | 3 drivers/hwmon/pmbus/tps53679.c | 11 drivers/hwmon/pwm-fan.c | 13 drivers/hwmon/w83791d.c | 1 drivers/hwmon/w83793.c | 4 drivers/i2c/busses/i2c-at91-core.c | 3 drivers/i2c/busses/i2c-at91-master.c | 12 drivers/i2c/busses/i2c-at91.h | 1 drivers/i2c/busses/i2c-imx.c | 3 drivers/i2c/busses/i2c-qcom-cci.c | 20 drivers/i2c/i2c-atr.c | 1 drivers/infiniband/core/iwpm_util.c | 9 drivers/infiniband/core/mad.c | 3 drivers/infiniband/core/ucma.c | 7 drivers/infiniband/core/verbs.c | 12 drivers/infiniband/hw/bnxt_re/main.c | 10 drivers/infiniband/hw/efa/efa_com.c | 7 drivers/infiniband/hw/efa/efa_com.h | 1 drivers/infiniband/hw/efa/efa_main.c | 33 drivers/infiniband/hw/hfi1/file_ops.c | 23 drivers/infiniband/hw/irdma/verbs.c | 2 drivers/infiniband/hw/mlx4/sysfs.c | 4 drivers/infiniband/hw/mlx5/main.c | 7 drivers/infiniband/sw/rxe/rxe_mcast.c | 50 drivers/infiniband/sw/rxe/rxe_mr.c | 3 drivers/infiniband/sw/rxe/rxe_odp.c | 16 drivers/infiniband/sw/rxe/rxe_verbs.c | 13 drivers/infiniband/sw/siw/siw_cm.c | 7 drivers/infiniband/sw/siw/siw_qp_rx.c | 2 drivers/infiniband/ulp/ipoib/ipoib.h | 7 drivers/infiniband/ulp/ipoib/ipoib_ib.c | 12 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 16 drivers/infiniband/ulp/iser/iser_initiator.c | 16 drivers/infiniband/ulp/isert/ib_isert.c | 22 drivers/infiniband/ulp/isert/ib_isert.h | 2 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 drivers/infiniband/ulp/rtrs/rtrs-clt.h | 2 drivers/input/evdev.c | 2 drivers/input/input-compat.c | 2 drivers/input/joystick/xpad.c | 10 drivers/input/keyboard/adp5588-keys.c | 12 drivers/input/keyboard/atkbd.c | 8 drivers/input/misc/soc_button_array.c | 16 drivers/input/mouse/synaptics.c | 8 drivers/input/rmi4/rmi_driver.c | 13 drivers/input/rmi4/rmi_smbus.c | 10 drivers/input/serio/hp_sdc.c | 2 drivers/input/serio/i8042-acpipnpio.h | 7 drivers/input/touchscreen/cyttsp5.c | 1 drivers/input/touchscreen/eeti_ts.c | 1 drivers/media/i2c/video-i2c.c | 5 drivers/memstick/core/ms_block.c | 2 drivers/misc/ntsync.c | 6 drivers/mmc/core/bus.c | 2 drivers/mmc/core/host.c | 1 drivers/mmc/core/sdio_uart.c | 3 drivers/mmc/host/mmc_hsq.c | 8 drivers/mmc/host/mmc_spi.c | 1 drivers/mmc/host/mmci.c | 3 drivers/mmc/host/mxcmmc.c | 4 drivers/mmc/host/rtsx_pci_sdmmc.c | 5 drivers/mmc/host/sdhci-of-aspeed.c | 5 drivers/mmc/host/sdhci_am654.c | 43 drivers/mmc/host/sh_mmcif.c | 3 drivers/net/ethernet/broadcom/Kconfig | 1 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 239 - drivers/net/ethernet/broadcom/genet/bcmgenet.h | 5 drivers/net/ethernet/cadence/macb_ptp.c | 9 drivers/net/ethernet/cortina/gemini.c | 2 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 42 drivers/net/ethernet/meta/fbnic/fbnic_txrx.h | 9 drivers/net/ethernet/microchip/lan743x_main.c | 2 drivers/net/ethernet/socionext/netsec.c | 2 drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 19 drivers/net/fddi/skfp/skfddi.c | 3 drivers/net/phy/mediatek/mtk-phy-lib.c | 27 drivers/net/wireless/ath/ath11k/mac.c | 25 drivers/net/wireless/ath/wcn36xx/dxe.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c | 4 drivers/net/wireless/intel/ipw2x00/Kconfig | 1 drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c | 130 drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 6 drivers/net/wireless/intel/iwlegacy/common.c | 2 drivers/net/wireless/intersil/p54/eeprom.c | 22 drivers/net/wireless/marvell/libertas_tf/main.c | 2 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 12 drivers/net/wireless/marvell/mwifiex/pcie.c | 2 drivers/net/wireless/marvell/mwifiex/scan.c | 54 drivers/net/wireless/marvell/mwifiex/util.c | 10 drivers/net/wireless/microchip/wilc1000/cfg80211.c | 14 drivers/net/wireless/microchip/wilc1000/wlan.c | 9 drivers/net/wireless/realtek/rtw88/tx.c | 2 drivers/net/wireless/rsi/rsi_91x_mgmt.c | 2 drivers/net/wireless/ti/wlcore/main.c | 4 drivers/net/wireless/virtual/mac80211_hwsim.c | 39 drivers/net/wireless/virtual/virt_wifi.c | 4 drivers/net/wwan/mhi_wwan_mbim.c | 28 drivers/net/wwan/t7xx/t7xx_netdev.c | 4 drivers/perf/arm-cmn.c | 10 drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c | 4 drivers/phy/mediatek/phy-mtk-hdmi-mt8195.h | 3 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 310 + drivers/power/sequencing/Kconfig | 3 drivers/power/sequencing/core.c | 11 drivers/scsi/fnic/fdls_disc.c | 730 +-- drivers/scsi/fnic/fip.c | 119 drivers/scsi/fnic/fip.h | 2 drivers/scsi/fnic/fnic.h | 79 drivers/scsi/fnic/fnic_fcs.c | 166 drivers/scsi/fnic/fnic_fdls.h | 2 drivers/scsi/fnic/fnic_isr.c | 41 drivers/scsi/fnic/fnic_main.c | 89 drivers/scsi/fnic/fnic_scsi.c | 264 - drivers/scsi/qla2xxx/qla_os.c | 2 drivers/scsi/scsi.c | 24 drivers/soc/samsung/exynos-pmu.c | 7 drivers/soundwire/cadence_master.c | 7 drivers/spi/spi-fsl-qspi.c | 5 drivers/spi/spi-qpic-snand.c | 4 drivers/spi/spi-virtio.c | 2 drivers/spi/spi-zynqmp-gqspi.c | 34 drivers/watchdog/da9062_wdt.c | 4 drivers/watchdog/da9063_wdt.c | 4 drivers/watchdog/digicolor_wdt.c | 13 drivers/watchdog/msc313e_wdt.c | 16 drivers/watchdog/rtd119x_wdt.c | 7 drivers/watchdog/rzv2h_wdt.c | 7 drivers/watchdog/sp5100_tco.c | 6 drivers/watchdog/starfive-wdt.c | 2 fs/9p/vfs_addr.c | 29 fs/btrfs/dev-replace.c | 1 fs/btrfs/disk-io.c | 4 fs/btrfs/file.c | 4 fs/btrfs/free-space-tree.c | 14 fs/btrfs/inode.c | 3 fs/btrfs/tree-checker.c | 2 fs/btrfs/uuid-tree.c | 120 fs/btrfs/verity.c | 47 fs/btrfs/volumes.c | 153 fs/btrfs/xattr.c | 36 fs/dax.c | 9 fs/exec.c | 29 fs/smb/client/cifs_fs_sb.h | 1 fs/smb/client/cifsfs.c | 12 fs/smb/client/cifssmb.c | 2 fs/smb/client/connect.c | 10 fs/smb/client/file.c | 28 fs/smb/client/misc.c | 12 fs/smb/client/reparse.c | 4 fs/smb/client/reparse.h | 7 fs/smb/client/sess.c | 106 fs/smb/client/smb2inode.c | 11 fs/smb/client/smb2ops.c | 51 fs/smb/client/smb2pdu.c | 13 fs/smb/client/trace.h | 1 fs/smb/server/server.c | 2 fs/smb/server/smb2pdu.c | 89 fs/smb/server/smb2pdu.h | 1 fs/smb/server/smb_common.c | 20 fs/xfs/libxfs/xfs_bmap.c | 2 fs/xfs/libxfs/xfs_da_btree.c | 2 fs/xfs/libxfs/xfs_da_btree.h | 2 fs/xfs/libxfs/xfs_rmap.h | 2 fs/xfs/scrub/attr_repair.c | 4 fs/xfs/scrub/bmap.c | 6 fs/xfs/scrub/common.c | 6 fs/xfs/scrub/common.h | 4 fs/xfs/scrub/dir_repair.c | 4 fs/xfs/scrub/dirtree.c | 4 fs/xfs/scrub/inode.c | 6 fs/xfs/scrub/nlinks.c | 2 fs/xfs/scrub/reap.c | 3 fs/xfs/scrub/rtbitmap.c | 4 fs/xfs/scrub/rtsummary.c | 4 fs/xfs/scrub/tempfile.c | 29 fs/xfs/xfs_inode.h | 3 include/keys/request_key_auth-type.h | 2 include/linux/ieee80211.h | 5 include/linux/mm.h | 4 include/net/bluetooth/coredump.h | 2 include/net/mac80211.h | 5 include/net/netns/xfrm.h | 2 include/net/sock.h | 2 include/sound/soc.h | 3 include/sound/soc_sdw_utils.h | 42 kernel/dma/coherent.c | 3 kernel/dma/swiotlb.c | 4 kernel/exit.c | 12 kernel/fork.c | 4 kernel/sched/core.c | 6 kernel/signal.c | 117 kernel/time/namespace.c | 2 kernel/time/posix-cpu-timers.c | 40 mm/filemap.c | 2 mm/huge_memory.c | 86 mm/memblock.c | 18 mm/memcontrol.c | 2 mm/mlock.c | 2 mm/mremap.c | 9 mm/swapfile.c | 2 mm/vma.c | 6 net/atm/pppoatm.c | 42 net/bluetooth/coredump.c | 65 net/bluetooth/eir.c | 10 net/bluetooth/hci_codec.c | 36 net/bluetooth/hci_core.c | 18 net/bluetooth/hci_sync.c | 2 net/bluetooth/iso.c | 53 net/bluetooth/rfcomm/sock.c | 13 net/bridge/br_mst.c | 20 net/core/drop_monitor.c | 12 net/core/neighbour.c | 56 net/core/skbuff.c | 32 net/core/sock.c | 16 net/ipv4/esp4.c | 6 net/ipv4/icmp.c | 17 net/ipv4/ip_tunnel_core.c | 16 net/ipv4/sysctl_net_ipv4.c | 4 net/ipv4/tcp_input.c | 3 net/ipv4/tcp_ulp.c | 4 net/ipv4/xfrm4_input.c | 2 net/ipv6/esp6.c | 6 net/ipv6/route.c | 22 net/ipv6/seg6_local.c | 3 net/ipv6/tcp_ipv6.c | 3 net/ipv6/xfrm6_input.c | 2 net/ipv6/xfrm6_output.c | 10 net/mac80211/Makefile | 1 net/mac80211/cfg.c | 63 net/mac80211/debugfs.c | 2 net/mac80211/debugfs_netdev.c | 9 net/mac80211/ieee80211_i.h | 5 net/mac80211/iface.c | 79 net/mac80211/main.c | 4 net/mac80211/mesh.c | 34 net/mac80211/michael.c | 83 net/mac80211/michael.h | 22 net/mac80211/offchannel.c | 7 net/mac80211/pm.c | 8 net/mac80211/scan.c | 2 net/mac80211/tdls.c | 19 net/mac80211/tx.c | 107 net/mac80211/util.c | 3 net/mac80211/wpa.c | 1 net/netfilter/nf_flow_table_core.c | 12 net/netfilter/nf_nat_core.c | 46 net/netfilter/nf_tables_api.c | 22 net/netfilter/nft_nat.c | 2 net/openvswitch/conntrack.c | 2 net/packet/af_packet.c | 4 net/packet/internal.h | 2 net/psp/psp_sock.c | 4 net/rds/ib_cm.c | 2 net/sched/act_api.c | 11 net/sched/sch_hhf.c | 9 net/unix/garbage.c | 17 net/wireless/Makefile | 2 net/wireless/core.c | 126 net/wireless/core.h | 10 net/wireless/michael-mic.c | 86 net/wireless/rdev-ops.h | 3 net/wireless/scan.c | 43 net/wireless/util.c | 35 net/xfrm/espintcp.c | 6 net/xfrm/xfrm_input.c | 65 net/xfrm/xfrm_iptfs.c | 12 net/xfrm/xfrm_state.c | 9 net/xfrm/xfrm_user.c | 37 rust/kernel/net/phy.rs | 38 scripts/generate_rust_target.rs | 5 security/keys/encrypted-keys/encrypted.c | 20 security/keys/gc.c | 4 security/keys/request_key_auth.c | 12 security/keys/trusted-keys/trusted_tpm2.c | 12 security/landlock/net.c | 14 security/selinux/avc.c | 5 security/selinux/hooks.c | 150 security/selinux/include/objsec.h | 10 sound/core/init.c | 3 sound/core/pcm_timer.c | 7 sound/hda/common/controller.c | 2 sound/soc/amd/acp/acp-sdw-legacy-mach.c | 33 sound/soc/amd/acp/acp-sdw-sof-mach.c | 31 sound/soc/codecs/hdmi-codec.c | 6 sound/soc/codecs/rt712-sdca-dmic.c | 14 sound/soc/intel/boards/sof_sdw.c | 21 sound/soc/sdw_utils/soc_sdw_bridge_cs35l56.c | 4 sound/soc/sdw_utils/soc_sdw_utils.c | 59 sound/soc/soc-pcm.c | 18 sound/soc/ux500/ux500_msp_i2s.h | 4 sound/usb/6fire/comm.c | 42 sound/usb/6fire/comm.h | 2 sound/usb/6fire/midi.c | 43 sound/usb/6fire/midi.h | 2 sound/usb/6fire/pcm.c | 138 sound/usb/6fire/pcm.h | 5 sound/usb/bcd2000/bcd2000.c | 33 sound/usb/card.h | 3 sound/usb/endpoint.c | 16 sound/virtio/virtio_card.c | 4 tools/perf/util/hist.h | 8 tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c | 2 tools/testing/selftests/landlock/audit.h | 121 tools/testing/selftests/landlock/audit_test.c | 4 tools/testing/selftests/landlock/fs_test.c | 1874 +++++++++- tools/testing/selftests/landlock/net_test.c | 169 385 files changed, 7026 insertions(+), 2963 deletions(-)
Aamir Ahmed (1):
Bluetooth: eir: validate service data length before reading UUID
Ahmed Naseef (1):
net: phy: mediatek: do not report link and per-speed LED rules together
Alberto Carboneri (1):
scsi: core: Validate MODE SENSE lengths in scsi_cdl_enable()
Alex Bereza (2):
dmaengine: xilinx_dma: Fix hardware buffer descriptor reuse order
dmaengine: xilinx_dma: Fix hardware buffer descriptor chain after cyclic DMA
Alexander Chesnokov (1):
dmaengine: ti: k3-udma-glue: fix NULL dereference in k3_udma_glue_release_rx_chn()
Alexei Turtanov (1):
Input: atkbd - skip deactivate for Xiaomi Redmi Book Pro 16 2026
Alexey Klimov (1):
soc: samsung: exynos-pmu: fix use-after-free of interrupt generator node
Ali Ahmet Memis (1):
wifi: wilc1000: fix out-of-bounds read in P2P public action frames
Alvin Šipraga (1):
Input: adp5588-keys - cache GPIO state before registering the gpiochip
Amit Machhiwal (2):
KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()
KVM: PPC: Book3S HV: fix secure device page leak on uv_page_in() failure
Andrea Mayer (1):
seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation
AngeloGioacchino Del Regno (2):
phy: mediatek: phy-mtk-hdmi-mt8195: Fix PLL calc divisor overflow
phy: mediatek: phy-mtk-hdmi-mt8195: Fix TMDS clk bit ratio setting
Antheas Kapenekakis (1):
HID: asus: fortify keyboard handshake
Aohan Mei (1):
rds: ib: use rds_conn_drop() on protocol version mismatch
April Cardenas (1):
smb/client: send lease break ACKs thru correct session for multiuser mounts
Arash Golgol (1):
media: video-i2c: fix buffer queue ordering
Arun Easi (1):
scsi: fnic: Fix missed link-up when critical IRQ targets offline CPU
Baineng Shou (1):
dmaengine: mmp_pdma: fix wrong sg length in mmp_pdma_prep_slave_sg()
Bard Liao (2):
soundwire: cadence_master: wait and cancel cdns->work before clock stop
ASoC: sdw_utils: subtract the endpoint that is not present
Bartosz Golaszewski (3):
power: sequencing: don't call .post_enable() if pwrseq_unit_enable() failed
power: sequencing: fix NULL-pointer dereference in pwrseq_unit_new()
power: sequencing: fix NULL-pointer dereference in pwrseq_device_register()
Benjamin Berg (1):
wifi: mac80211: track MU-MIMO configuration on disabled interfaces
Benoît Sevens (1):
HID: logitech-hidpp: fix race condition when accessing stale stack pointer
Biju Das (1):
power: sequencing: Fix build issue with COMPILE_TEST
Bitterblue Smith (1):
wifi: rtw88: TX QOS Null data the same way as Null data
Bogdan Nicolae (1):
wifi: brcmfmac: cyw: pass PMKID to firmware if present
Bradley Morgan (1):
arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
Breno Leitao (1):
arm64: hibernate: clone only the linear map that exists at runtime
Carolina Jubran (1):
IB/IPoIB: Avoid restoring OPER_UP after multicast flush
Cen Zhang (1):
KEYS: encrypted: fix integer overflow of datablob_len
Chandrashekar Devegowda (1):
Bluetooth: btintel_pcie: validate TX skb length in send_sync
Chang S. Bae (2):
x86/build/64: Prevent native builds from generating EGPR use x86/microcode/intel: Reject problematic loading on Granite Rapids systems
Charles Keepax (2):
ASoC: sdw_utils: Add codec_conf for every DAI
ASoC: intel: sof_sdw: Add ability to have auxiliary devices
Chengfeng Ye (2):
Bluetooth: hci_sync: Serialize local codec list cleanup
xfrm: serialize state GC with device state flush
Chengjun Yao (1):
drm/amdgpu: fix rmmio iounmap skipped on device removal
Chris Lu (1):
Bluetooth: btmtk: fix wrong status for short WMT FUNC_CTRL events
Chris Sommers (1):
Input: i8042 - add quirk for Acer Aspire Go 15 AG15-42P
Christian Göttsche (1):
selinux: always fill AVC decision in avc_has_perm_noaudit()
Christian Lugnberg (2):
dmaengine: sun6i: fix non-atomic read of DMA position registers
dmaengine: sun6i: fix undefined behaviour in sun6i_dma_tx_status
Christoph Hellwig (3):
xfs: add a xfs_rmap_inode_owner helper
xfs: convert xchk_inode_xref_set_corrupt to xchk_ip_xref_set_corrupt
xfs: remove the i_ino field in struct xfs_inode
Chunfeng Song (1):
rust: net: phy: fix off-by-one bit positions in device status accessors
Claudiu Beznea (1):
phy: renesas: rcar-gen3-usb2: Avoid long delay in atomic context
Cong Nguyen (1):
hwmon: (gpio-fan) return IRQ_HANDLED from the shared alarm IRQ handler
Daehyeon Ko (1):
wifi: libipw: reject TKIP frames without a full MIC
Daniel Linjama (1):
btrfs: handle lack of space when cleaning up verity items
Daniel Zahka (1):
net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb()
Darrick J. Wong (1):
xfs: fix under-reservation of blocks when repairing sf directories
David Howells (1):
9p: Fix v9fs_issue_write() to update i_size and remote_i_size
Devin Wittmayer (1):
wifi: mac80211: refuse to make a monitor active when it has no queue
Diogo Ivo (Schneider Electric) (4):
mmc: sdhci_am654: Move tuning_loop to local variable
mmc: sdhci_am654: Reset command and data lines on failed tuning
mmc: sdhci_am654: Clear ITAPDLY on tuning failure
mmc: sdhci_am654: Fallback to DT-provided itap delay on DDR50 tuning failure
Dmitriy Chumachenko (1):
drm/amdgpu: check ras and obj before dereference
Dmitriy Okunev (1):
net: mvpp2: prevent buffer overflow in page_pool allocation
Dmitry Antipov (1):
wifi: mac80211: fix list iteration in ieee80211_add_virtual_monitor()
Dmitry Baryshkov (2):
drm/msm/dsi: round the byte clock rate after reparenting to the PHY PLL
Bluetooth: qca: enable pwrseq support for WCN39xx devices
Dmitry Torokhov (2):
Input: rmi_smbus - fix out-of-bounds read in rmi_smb_write_block()
Input: synaptics-rmi4 - fix GPF in suspend and resume when unbound
Dong Chenchen (2):
ipv4: icmp: reject RTN_UNREACHABLE input routes in icmp_route_lookup
xfrm: Fix dev use-after-free in xfrm async resumption
Donggeun Yoo (2):
dma-coherent: report a failed reserved memory assignment
swiotlb: use the adjusted address for the highmem page lookup
Doruk Tan Ozturk (1):
wifi: mwifiex: bound the pairwise-cipher OUI walk to the IE length
Eric Biggers (3):
wifi: ipw2x00: Rename michael_mic() to libipw_michael_mic()
wifi: mac80211, cfg80211: Export michael_mic() and move it to cfg80211
wifi: ipw2x00: Use michael_mic() from cfg80211Eric Dumazet (8):
xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()
tcp: do not let tcp_rmem be set below 4096
pppoatm: ensure a writable skb header and linear data
drop_monitor: synchronize tracepoint unregistration on error path
drop_monitor: use timer_shutdown_sync() to prevent timer rearming during teardown
drop_monitor: fix out-of-bounds write in reset_per_cpu_data()
net: lock the socket in sock_gettstamp()
net: skbuff: do not leave stale header offsets after pskb_carve()
Erich Sartison (1):
Input: xpad - add support for Victrix Pro BFG Controller
Fan Wu (6):
mmc: core: Cancel SDIO IRQ work before freeing host
mmc: hsq: Fix use-after-free in retry work
mmc: mmci: Fix use-after-free in busy-timeout work
mmc: mxcmmc: cancel data work and watchdog on remove
wifi: wcn36xx: Fix potential use-after-free in TX ack timer teardown
smb: client: fix cifsFileInfo reference leak in deferred close
Felix Gu (1):
mmc: sdio_uart: fix xmit_fifo leak when the port table is full
Fernando Fernandez Mancera (1):
netfilter: nf_tables: fix device name and prefix match in hook lookup
Filipe Manana (3):
btrfs: tree-checker: print dev extent offset in error message
btrfs: abort transaction on failure to update inode for hole punching and reflinking
btrfs: check if there is space for chunk item when validating sys chunk array
Florian Maillard (1):
mmc: rtsx_pci_sdmmc: ignore broken write-protect on ThinkPad X260
Frank Sorenson (8):
smb: client: reject short Next offsets in parse_server_interfaces()
smb: client: fix next_buffer UAF and NextCommand bounds in compound PDUs
smb: client: fix OOB struct field reads in move_smb2_ea_to_cifs()
smb: client: fix potential OOB read in smb3_enum_snapshots()
smb: client: fix server->total_read for compound encrypted PDUs
smb: client: fix missing lower-bound check on DFS referral string offsets
smb: client: fix missing iov bounds check in parse_posix_sids()
smb: client: fix reparse buffer bounds in cifs_query_reparse_point()
Frieder Schrempf (1):
spi: fsl-qspi: Reprogram the clock rate when the operation frequency changes
Gabor Juhos (1):
spi: spi-qpic-snand: avoid writing QPIC_EBI2_ECC_BUF_CFG register
Gang Yan (1):
RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access
Greg Kroah-Hartman (1):
Linux 6.18.54
Gris Ge (1):
net: ip_tunnel: initialize options_len before referencing options
Guanghui Yang (1):
btrfs: clear free space tree creation state on rebuild failure
Guanglei Zhu (3):
net: wwan: t7xx: validate the netif index in t7xx_ccmni_recv_skb()
net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain
net: wwan: mhi_wwan_mbim: check skb_copy_bits() return value
Guangshuo Li (5):
i2c: imx: disable autosuspend on remove
hwmon: (w83791d) remove fan/pwm 4-5 sysfs group on remove
hwmon: (w83793) release probe data through kref drm/msm/adreno: fix autosuspend cleanup during teardown drm/msm/hdmi_phy: fix runtime PM cleanup on probe failure
Guoqing Jiang (1):
RDMA/siw: Clear association under lock if siw_qp_modify fails in siw_accept
Günther Noack (3):
selftests/landlock: Use an actual chardev for MAKE_CHAR audit test selftests/landlock: Add tests for whiteout object creation selftests/landlock: Add audit test for whiteout object creation
Hans de Goede (2):
Input: soc_button_array - fix MS Surface Pro 11 probe failure
Input: soc_button_array - check btns_desc->package.count
Hao-Qun Huang (1):
spi: virtio: Use the per-transfer bits per word
Henry Martin (1):
xfrm: iptfs: fix runt reassembly panic from short inner tot_len
Hohyun Sim (1):
net: fddi: skfp: fix NULL deref when setting the MAC address while down
Hongling Zeng (1):
btrfs: take commit root semaphore when iterating in mark_block_group_to_copy()
HyeongJun An (1):
ASoC: hdmi-codec: Report a change when the channel status moves
Hyunwoo Kim (1):
exec: Cleanup POSIX timers right after de_thread()
Ibrahim Abdelkader (1):
Bluetooth: hci_qca: Do not write to the serial port after it is closed
Ido Schimmel (2):
ipv6: Select best matching nexthop object in fib6_table_lookup()
ipv6: Honor oif when choosing nexthop for locally generated traffic
Ilia Levi (2):
drm/xe/mmio_gem: forbid VMA split drm/xe/mmio_gem: use write-back mapping for dummy page
Inbal Schussheim (1):
tcp: exclude old ACKs from tcp fast path
Itai Handler (1):
spi: spi-zynqmp-gqspi: stop the controller on shutdown
Iván Ezequiel Rodriguez (3):
Input: evdev - zero absinfo before partial copy in EVIOCSABS
Input: zero ff_effect before compat copy in input_ff_effect_from_user
ntsync: reject wait ioctls with zero owner
Jacob Moroni (1):
RDMA/irdma: Enforce local fence for IB_WR_REG_MR
Jakub Kicinski (1):
eth: fbnic: ring the doorbell if a burst ends in a drop
Jamal Hadi Salim (1):
net/sched: hhf: cap hh_flows_limit at change time
James Clark (1):
net: macb: fix ordering around PTP timestamp read
James Seo (1):
hwmon: (hp-wmi-sensors) Improve raw WMI string handling
Jarkko Sakkinen (1):
KEYS: trusted: Fix tpm2_load_cmd() boundary check
Jeffin Philip (1):
RDMA/core: fix refcount bug in iwpm_get_nlmsg_request()
Jens Axboe (1):
sunvdc: fix -EIO issue due to lack of retries
Jeremy Nyberg (1):
Input: xpad - fix PDP Marvel Xbox 360 controller
Jesse Casco (1):
drm/msm/dp: skip PUSH_IDLE when the link was never enabled
Jianbo Liu (1):
xfrm: Refactor xfrm_input lock to reduce contention with RSS
Jiangshan Yi (3):
ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
wifi: brcmsmac: fix UAF in brcms_free_timer()
wifi: libertas_tf: fix UAF in lbtf_free_adapter()
Jinke Han (1):
x86/kprobes: Fix crash when probing CS CALL instructions
Johannes Berg (26):
wifi: cfg80211: don't get the radio mask for netdev-less wdevs
wifi: cfg80211: check IP header size in cfg80211_classify8021d()
wifi: cfg80211: don't free driver-owned scan requests
wifi: cfg80211: only group hidden BSSes with beacon entries
wifi: cfg80211: don't filter by BSS type when removing stale entries
wifi: mac80211: don't start a ROC while scanning
wifi: mac80211: don't warn when an IBSS has no channel to scan
wifi: mac80211: don't offload TC setup on AP_VLAN interfaces
wifi: mac80211: suppress chanctx warning for debugfs reset
wifi: mac80211: abort chanswitch when leaving a mesh
wifi: mac80211: reset state when starting AP fails
wifi: cfg80211: restore netns_immutable on failures
wifi: cfg80211: undo netns switch if renaming the wiphy fails
wifi: mac80211: unlist vifs when their netdev is unregistered
wifi: cfg80211: get the wiphy out of a dying network namespace
wifi: mac80211_hwsim: don't hand frames to mac80211 while stopping
wifi: mac80211: don't allow injecting frames wider than the chanctx
wifi: mac80211: reset the AP_VLAN tailroom counter on ifdown
wifi: mac80211: require a peer station for TDLS setup confirm
wifi: mac80211: don't allow link changes when iface is down
wifi: mac80211: don't RCU-dereference the mesh CSA settings we just set
wifi: mac80211: don't access the TSF of a down interface
wifi: mac80211: add HE 6 GHz capability in the scan elems len
wifi: mac80211: mesh: reset the CSA state when leaving
wifi: mac80211: mesh: release the channel if start fails
wifi: mac80211: set up the TX info early to fix failure paths
Jonghyuk Kim(MalHyuk) (1):
drm/msm: RCU-free the scheduler-containing ring and VM objects
Joseph Qi (1):
smb: client: fix use-after-free of iface in cifs_try_adding_channels()
Josh Poimboeuf (1):
x86/alternative: Refactor INT3 call emulation selftest
Juan Perdomo (1):
Bluetooth: RFCOMM: avoid socket lock inversion in listener cleanup
Jérémy Jean (1):
RDMA/siw: Bound fragmented header copies by the remaining length
Karan Tilak Kumar (4):
scsi: fnic: Rename fnic_scsi_fcpio_reset()
scsi: fnic: Bump up version number
scsi: fnic: Make debug logging protocol independent
scsi: fnic: Bump up version number again
Karl Mehltretter (9):
scsi: qla2xxx: Fix the ql2xfc2target parameter description drm/msm: Fix the separate_gpu_kms parameter description drm/msm/adreno: Fix the skip_gpu parameter description
keys: fix lost wakeup when reaping a dead key type
Input: trackpoint - fix the inertia attribute name in the ABI document drm/vc4: Use managed KMS polling to fix UAF on unbind
wifi: brcmfmac: fix lost 802.1x TX completion wakeup
selinux: preserve user SID across nested backing files
selinux: recheck intermediate backing files on mprotect()
Koichiro Den (1):
arm64: dts: renesas: r8a779f0: Set UFS lane count
Krystian Kaniewski (1):
RDMA/core: Reject unregistering netdevs in ib_get_eth_speed
Kuninori Morimoto (2):
ASoC: sdw_utils: tidyup .count_sidecar
ASoC: sdw_utils: tidyup asoc_sdw_parse_sdw_endpoints()
Kuniyuki Iwashima (6):
neighbour: Enforce min/max to NDTPA_INTERVAL_PROBE_TIME_MS.
neighbour: Convert RTM_GETNEIGHTBL to RCU.
neighbour: Add missing RCU annotation for neightbl_dump_info().
neighbour: Skip default parms when resumed in neightbl_dump_info().
tcp: Don't call skb_clone_and_charge_r() for close()d listener in tcp_v6_do_rcv().
af_unix: Unify scc_index when finalising SCC in __unix_walk_scc().
Kyle Zeng (1):
xfrm: fix compat ALLOCSPI request use-after-free
Lachlan Hodges (1):
wifi: mac80211: include TIM bitmap control for buffered S1G mcast traffic
Laxman Acharya Padhya (1):
Bluetooth: hci_codec: validate vendor codec count length
Leon Romanovsky (2):
RDMA/efa: Keep admin queues alive while IRQ is registered RDMA/efa: Keep EQ resources alive while IRQ is registered
Li Jun (2):
watchdog: da9062: fix suspend/resume handling of HW_RUNNING watchdog
watchdog: da9063: fix suspend/resume handling of HW_RUNNING watchdog
Li RongQing (1):
RDMA/mad: Fix receive buffer leak when PKey enforcement fails
Linkai Gong (3):
RDMA/bnxt_re: check create_singlethread_workqueue() in DCB setup
i2c: atr: fix dangling adapter pointer on add failure
Input: cyttsp5 - clamp the HID report size before memcpy
Linmao Li (1):
wifi: mwifiex: prevent authentication frame length truncation
Linus Walleij (1):
net: ethernet: cortina: Ack RX overrun interrupt correctly
Liu Zhenlong (1):
i2c: qcom-cci: fix device_node refcount leak in cci_probe()/cci_remove()
Lorenzo Bianconi (2):
net: stmmac: do not overwrite phc_index when no PTP clock is registered
net: stmmac: propagate FPE preemption-class mapping errors
Lorenzo Stoakes (ARM) (3):
mm/mremap: account mm->locked_vm correctly for MREMAP_DONTUNMAP mm/huge_memory: bypass THP tuneables for huge pfnmap mappings mm/vma: correctly unaccount on mmap_prepare() failure
Luiz Augusto von Dentz (2):
Bluetooth: ISO: Fix parent socket leak in iso_conn_ready()
Bluetooth: ISO: set BT_LISTEN before requesting a BIG sync
Lyude Paul (4):
Revert "nouveau/gsp: fix suspend/resume regression on r570 firmware" drm/nouveau/gsp: Increase delay for magic sleep in r535_gsp_fini() drm/nouveau/gsp/r570: Set GcOff = 0 in fbsr drm/nouveau/gsp/r570: Enable S/R Display workaround in GSP
Maher Azzouzi (1):
esp: downgrade zerocopy managed frags before mutating skb frags
Maoyi Xie (3):
keys: translate request_key_auth pid for the reading procfs instance time/namespace: Export init_time_ns and do_timens_ktime_to_host()
ntsync: Honour caller's time namespace for absolute MONOTONIC timeouts
Mariano Baragiola (1):
wifi: virt_wifi: free skb when disconnected
Mark Amirkan (3):
net: lan743x: fix RX checksum use-after-free net/packet: clear RX owner on VNET header error net/packet: avoid truncating TPACKET_V3 private size
Mark Rutland (3):
arm64: percpu: Fix this_cpu_write() casting
arm64: percpu: Fix this_cpu_and() mask generation
arm64: percpu: Fix LSE operations on {8,16}-bit types
Matthew Schwartz (1):
x86/fred: Reconstruct the #GP context for rejected INT instructions
Matthieu Buffet (3):
landlock: Fix TCP Fast Open connection bypass selftests/landlock: Add test for TCP fast open selftests/landlock: Add missing connect(minimal AF_UNSPEC) test
Maximilian Heyne (1):
selftests/landlock: Explicitly disable audit in teardowns
Meijing Zhao (1):
mm: memblock: show all region flags in debugfs
Mengshi Wu (1):
Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
Michael Bommarito (1):
RDMA/rxe: insert mcg into mcg_tree only after rxe_mcast_add() succeeds
Mickaël Salaün (3):
selftests/landlock: Fix socket file descriptor leaks in audit helpers selftests/landlock: Increase default audit socket timeout selftests/landlock: Add disconnected leafs and branch test suites
Mike Lothian (1):
drm/amdgpu: hold a runtime PM reference for P2P dma-buf attachments
Muhammad Bilal (1):
hwmon: (hp-wmi-sensors) Fix use-after-free in fungible_show()
Myeonghun Pak (1):
mmc: sdhci-of-aspeed: Remove children before releasing SDC resources
Namjae Jeon (5):
ksmbd: return buffer overflow for partial filesystem info
ksmbd: fix partial file information responses
ksmbd: keep compound responses on query info errors
ksmbd: fix partial normalized name responses
Revert "ksmbd: Fix to handle removal of rfc1002 header from smb_hdr"
Nguyen Ngoc Thang (1):
ALSA: pcm: set timer->private_data before registering the PCM timer
Nhat Pham (1):
mm, swap: fix SWAP_USAGE_OFFLIST_BIT collision with real usage count
Nicolai Buchwitz (2):
net: bcmgenet: convert RX path to page_pool
net: bcmgenet: restore the hardware filters on open
Nicolas Escande (1):
wifi: ath11k: cleanup arsta in ath11k_mac_peer_cleanup_all()
Nicolas Thibert (1):
Bluetooth: btusb: fix NXP IW610 composite device handling
Niklas Cassel (1):
ata: libahci: clear PxCLBU and PxFBU for AHCI_HFLAG_32BIT_ONLY
Nikolay Aleksandrov (1):
net: bridge: mst: move switchdev call outside rcu
Norbert Szetei (1):
RDMA/rxe: validate access flags before swapping the MR's PD
Nuno Sá (1):
hwmon: (pmbus/core) increase number of phases and add new mask
Or Har-Toov (1):
RDMA/mlx5: Remove warn on missing representor in query_port_speed
Orgad Shaneh (1):
MIPS: Octeon: apply USB FDT fixups also when USB is modular
Ovidiu Panait (3):
arm64: dts: renesas: r9a09g057: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g056: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g047: Switch GBETH TX queue scheduling to WRR
Pablo Neira Ayuso (2):
netfilter: nf_nat: unregister and release hooks on error
netfilter: flowtable: hold reference on ct until flow is released
Paulo Alcantara (4):
smb: client: cancel reconnect work in clean_demultiplex_info()
smb: client: fix rlist race and missing initialization
smb: client: fix smbd_connection leak on cifs_get_tcp_session() error
smb: client: fix unaligned access in WSL reparse point parser
Peng Hao (1):
wifi: mwifiex: fix IRQ leak using wrong index in MSI-X error path
Pengpeng Hou (2):
ARM: socfpga: select the PL310 erratum 753970 workaround
wifi: mwifiex: validate scan response extents
Peter Zijlstra (1):
futex: Also allocate private hash on vfork()
Pierre-Eric Pelloux-Prayer (1):
drm/amdgpu: lock bo before calling amdgpu_vm_bo_update_shared
Quanye Yang (2):
RDMA/rtrs-clt: Fix CQ pool leak when connect is interrupted RDMA/ucma: Serialize join and leave on copy_to_user failure
Rafael J. Wysocki (1):
ACPI: processor: Update cpuidle driver check in __acpi_processor_start()
Raphaël Larocque (1):
Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
Richard Fitzgerald (3):
ASoC: Rename snd_soc_dai_link_ch_map.ch_mask to cpu_ch_mask
ASoC: Add codec_ch_mask to snd_soc_dai_link_ch_map
ASoC: soc-pcm: Apply snd_soc_dai_link_ch_map.codec_ch_mask to codec params
Rik van Riel (1):
wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver
Roberts Kursitis (1):
Input: xpad - add support for Azeron devices
Roshan Kumar (1):
xfrm: iptfs: fix stack OOB read in iptfs_skb_reset_frag_walk()
Runyu Xiao (4):
gpio: virtuser: skip free_irq when no IRQ is installed
mmc: sh_mmcif: initialize IRQ-thread mutex before requesting interrupt
Input: hp_sdc - shut down kicker timer on module exit
wifi: wlcore: release runtime PM ref on regdomain config failure
Ruoyu Wang (1):
dmaengine: sprd: Fix runtime PM reference leak in probe
Sabrina Dubroca (1):
xfrm: avoid RCU warnings around the per-netns netlink socket
Sai Teja Aluvala (1):
Bluetooth: btintel_pcie: fix off-by-one bounds check in RX submit
Saim Shujah (1):
drm/msm/dpu: clear pending peripheral flush state
Sajal Gupta (1):
drm/gud: fix out-of-bounds write in gud_plane_atomic_check()
Sanman Pradhan (2):
hwmon: (pmbus/tps53679) Fix TPS53676 phase page decoding
hwmon: (pmbus/tps53679) Select page 0 for single-page TPS53676
Sasha Levin (2):
Revert "perf annotate: Fix build with NO_SLANG=1"
ASoC: ux500: Parenthesize MSP_{RX,TX}_CLKPOL_BIT() arguments
Seunguk Shin (1):
fs/dax: check zero or empty entry before converting xarray entry
Shakeel Butt (2):
memcg: avoid charging the root memcg from obj_cgroup_charge_pages() mm/mlock: use the IRQ-safe accessor for NR_MLOCK in __munlock_folio()
Shengzhuo Wei (4):
i2c: at91: release DMA channels on remove and probe error
i2c: imx: release DMA channels on probe error
wifi: p54: validate curve data length in the calibration curve converters
wifi: p54: require a full exp_if record in PDR_INTERFACE_LIST
Shivank Garg (3):
dmaengine: Fix device kref underflow in dma_chan_put()
dmaengine: fix use-after-free in dma_chan_put() and dma_release_channel()
dmaengine: wait for RCU readers before releasing dma_device
Shivaprasad G Bhat (1):
powerpc/iommu: Fix the overflow validation in iommu_tce_check_ioba
Shmulik Cohen (2):
wifi: libipw: reject too-short beacon and probe responses
wifi: libipw: reject too-short association responses
Shouping Wang (1):
perf/arm-cmn: Fix wp_dev_sel2 setting for multi-DTM configurations
Shuangpeng Bai (1):
IB/mlx4: Fix use-after-free on pkey sysfs registration failure
Shuhei Takeshita (2):
IB/hfi1: Resolve the credit-return buffer through the send context's node IB/hfi1: Fix the PIO_CRED credit-return mmap
Shuicheng Lin (2):
drm/xe/mmio_gem: Revoke drm_vma_node on xe_mmio_gem destroy drm/xe/shrinker: Return the freed page count through a parameter
Siwei Zhang (1):
xfrm: use hlist_del_init_rcu for state_cache and state_cache_input
Slavin Liu (1):
ALSA: hda: trace PCM open only after assigning a stream
Sophie D (1):
drm/gud: Ignore damage clips in full update mode
Stanislaw Gruszka (1):
wifi: iwlegacy: fix broadcast stations deallocation
Sun YangKai (1):
btrfs: more trivial BTRFS_PATH_AUTO_FREE conversions
Takashi Iwai (4):
ALSA: bcd2000: Fix race between rawmidi and disconnect
ALSA: usb: 6fire: Avoid embedded URBs
ALSA: core: Fix potential UAF after asynchronous card release
ALSA: usb-audio: Optimize the copy of packet sizes for implicit fb handling
Thadeu Lima de Souza Cascardo (1):
drm: Fix drm_pending_vblank_event leak in error path for out_fence_ptr
ThangNN99 (1):
Bluetooth: hci_core: Fix queuing tx_work after workqueue is drained
Theodor Arsenij Larionov Trichkine (1):
netfilter: nft_nat: fully initialise new_addr in netmap setup
Thomas Gleixner (3):
posix-cpu-timers: Prevent freeing a timer which is queued on the expiry list
signal: Move MMCID exit out of sighand lock
signal: Prevent exec() race
Thomas Huth (1):
kselftest/arm64: Fix size of thread_data values for pthread_join()
Thomas Richard (congatec GmbH) (2):
hwmon: (cgbc-hwmon) Fix current sensors ID lookup
hwmon: (cgbc-hwmon) Add missing sensors
Tianchu Chen (2):
wifi: rsi: fix heap OOB write on key removal
wifi: wilc1000: fix RX buffer OOB-write in wilc_wlan_handle_isr_ext()
Tingmao Wang (1):
selftests/landlock: Add tests for access through disconnected paths
Tzung-Bi Shih (6):
Bluetooth: btmtksdio: Fix PM runtime reference leak in shutdown
watchdog: digicolor: Avoid division by zero
watchdog: msc313e: Fix premature reset during timeout update
watchdog: msc313e: Propagate error code in resume()
watchdog: rtd119x: Avoid division by zero
watchdog: rzv2h: Avoid division by zero
Vijendar Mukunda (3):
ASoC: amd: acp: bounds-check SoundWire link ID in machine drivers
ASoC: amd: acp: refactor codec config count in SOF SoundWire machine driver
ASoC: amd: acp: fix ffs() operator precedence for SoundWire link ID
Vivek Sahu (1):
Bluetooth: qca: Refactor code on the basis of chipset names
Weiming Shi (2):
RDMA/rxe: Restore HMM_PFN_WRITE check in ODP write paths
Bluetooth: coredump: Quiesce dump work on unregister
Wenjie Qi (1):
mm: filemap: retain mapped dropbehind folios
Wentao Liang (4):
ata: libahci_platform: Fix device reference leak in ahci_platform_get_resources()
cifs: Fix server use-after-free in cifs_chan_skip_or_disable()
watchdog: sp5100_tco: Fix pci_dev reference leak in sp5100_tco_init()
watchdog: starfive-wdt: Fix runtime PM leak in starfive_wdt_pm_start()
William Bright (1):
drm/msm/dp: fix link bandwidth check when wide bus is enabled
Wyatt Feng (1):
net: xfrm: reject unrepresentable espintcp transport headers
Xiang Mei (2):
ALSA: 6fire: fix OOB write from device-reported iso length
ALSA: usb-audio: Clamp implicit feedback packet count to URB capacity
Xixin Liu (2):
firmware: arm_scpi: reject DVFS OPP count above MAX_DVFS_OPPS
clk: scpi: bound-check DVFS index in scpi_dvfs_recalc_rate
Xu Rao (1):
mmc: spi: reset bytes_xfered before retrying CRC failures
Xuanqiang Luo (1):
net/sched: act_api: release tail references on DELACTION failure
Yehyeong Lee (2):
IB/iser: reject a remote invalidation of an unregistered direction IB/isert: wait for deferred control PDU completions before releasing the connection
Yibo Tan (1):
hwmon: (pwm-fan) Stop RPM timer before freeing tach data
Yifei Gao (1):
memstick: ms_block: destroy io_queue workqueue on removal
Yige Jiang (1):
net: netsec: fix device_node reference leak on phy_np
Yuho Choi (1):
ALSA: virtio: reset device before deleting virtqueues
Zhao Li (1):
wifi: mwifiex: validate action frame fixed fields
Zhiling Zou (3):
openvswitch: avoid reallocating confirmed conntrack labels
ipv6: xfrm: use full sockets in local error paths
xfrm: save input state data before secpath resets
Zhu Ling (1):
mmc: core: Fix OF node reference leak on card add failure
Zihan Xi (1):
wifi: virt_wifi: don't transfer operstate before register
Zijun Hu (1):
Bluetooth: hci_qca: fix NULL pointer dereference in qca_setup() for non-serdev device
Zizhi Wo (1):
smb: client: fix busy dentry warning on unmount after DIO
hpp.iscas (1):
Input: eeti_ts - publish the OF module alias
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-devices-platform-trackpoint +1 -1
@@ -5,7 +5,7 @@ Contact: [email protected] Description: (RW) Trackpoint sensitivity. -What: /sys/devices/platform/i8042/.../intertia +What: /sys/devices/platform/i8042/.../inertia Date: Aug, 2005 KernelVersion: 2.6.14 Contact: [email protected]
Documentation/hwmon/cgbc-hwmon.rst +26 -16
60 lines not on this page · raw message
Documentation/netlink/specs/rt-neigh.yaml +3 -0
@@ -341,6 +341,9 @@ attribute-sets: - name: interval-probe-time-ms type: u64 + checks: + min: 1 + max: 86400000 operations: enum-model: directional
Documentation/networking/ip-sysctl.rst +3 -1
@@ -230,7 +230,7 @@ neigh/default/unres_qlen - INTEGER neigh/default/interval_probe_time_ms - INTEGER The probe interval for neighbor entries with NTF_MANAGED flag, - the min value is 1. + the min value is 1, and the max value is 86400000 (1 day). Default: 5000
@@ -844,6 +844,8 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max case this value is ignored. Default: between 131072 and 32MB, depending on RAM size. + Each of the three values cannot be set below 4096. + tcp_sack - BOOLEAN Enable select acknowledgments (SACKS).
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 53 +SUBLEVEL = 54 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm/mach-socfpga/Kconfig +1 -1
@@ -16,7 +16,7 @@ menuconfig ARCH_INTEL_SOCFPGA select ARM_ERRATA_775420 select PL310_ERRATA_588369 select PL310_ERRATA_727915 - select PL310_ERRATA_753970 if PL310 + select PL310_ERRATA_753970 select PL310_ERRATA_769419 select RESET_CONTROLLER
arch/arm64/boot/dts/renesas/r8a779f0.dtsi +1 -0
@@ -891,6 +891,7 @@ ufs: ufs@e6860000 { clocks = <&cpg CPG_MOD 1514>, <&ufs30_clk>; clock-names = "fck", "ref_clk"; freq-table-hz = <200000000 200000000>, <38400000 38400000>; + lanes-per-direction = <1>; power-domains = <&sysc R8A779F0_PD_ALWAYS_ON>; resets = <&cpg 1514>; status = "disabled";
arch/arm64/boot/dts/renesas/r9a09g047.dtsi +10 -0
@@ -973,23 +973,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -1073,23 +1078,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/boot/dts/renesas/r9a09g056.dtsi +10 -0
@@ -827,23 +827,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -928,23 +933,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/boot/dts/renesas/r9a09g057.dtsi +10 -0
@@ -1160,23 +1160,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -1261,23 +1266,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/include/asm/percpu.h +10 -10
@@ -77,7 +77,7 @@ __percpu_##name##_case_##sz(void *ptr, unsigned long val) \ " stxr" #sfx "\t%w[loop], %" #w "[tmp], %[ptr]\n" \ " cbnz %w[loop], 1b", \ /* LSE atomics */ \ -#op_lse "\t%" #w "[val], %" #w "[tmp], %[ptr]\n" \ +#op_lse #sfx "\t%" #w "[val], %" #w "[tmp], %[ptr]\n" \ __nops(3)) \ : [loop] "=&r" (loop), [tmp] "=&r" (tmp), \ [ptr] "+Q"(*(u##sz *)ptr) \
@@ -98,7 +98,7 @@ __percpu_##name##_return_case_##sz(void *ptr, unsigned long val) \ " stxr" #sfx "\t%w[loop], %" #w "[ret], %[ptr]\n" \ " cbnz %w[loop], 1b", \ /* LSE atomics */ \ -#op_lse "\t%" #w "[val], %" #w "[ret], %[ptr]\n" \ +#op_lse #sfx "\t%" #w "[val], %" #w "[ret], %[ptr]\n" \ #op_llsc "\t%" #w "[ret], %" #w "[ret], %" #w "[val]\n" \ __nops(2)) \ : [loop] "=&r" (loop), [ret] "=&r" (ret), \
@@ -179,13 +179,13 @@ PERCPU_RET_OP(add, add, ldadd) _pcp_protect_return(__percpu_read_64, pcp)#define this_cpu_write_1 (pcp, val) \ - _pcp_protect(__percpu_write_8, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_8, pcp, (unsigned long)(val))#define this_cpu_write_2 (pcp, val) \ - _pcp_protect(__percpu_write_16, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_16, pcp, (unsigned long)(val))#define this_cpu_write_4 (pcp, val) \ - _pcp_protect(__percpu_write_32, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_32, pcp, (unsigned long)(val))#define this_cpu_write_8 (pcp, val) \ - _pcp_protect(__percpu_write_64, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_64, pcp, (unsigned long)(val))#define this_cpu_add_1 (pcp, val) \ _pcp_protect(__percpu_add_case_8, pcp, val)
@@ -206,13 +206,13 @@ PERCPU_RET_OP(add, add, ldadd) _pcp_protect_return(__percpu_add_return_case_64, pcp, val)#define this_cpu_and_1 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_8, pcp, ~val) + _pcp_protect(__percpu_andnot_case_8, pcp, ~(u8)(val))#define this_cpu_and_2 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_16, pcp, ~val) + _pcp_protect(__percpu_andnot_case_16, pcp, ~(u16)(val))#define this_cpu_and_4 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_32, pcp, ~val) + _pcp_protect(__percpu_andnot_case_32, pcp, ~(u32)(val))#define this_cpu_and_8 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_64, pcp, ~val) + _pcp_protect(__percpu_andnot_case_64, pcp, ~(u64)(val))#define this_cpu_or_1 (pcp, val) \ _pcp_protect(__percpu_or_case_8, pcp, val)
arch/arm64/kernel/hibernate-asm.S +2 -0
@@ -89,6 +89,8 @@ alternative_insn "dc cvau, x4", "dc civac, x4", ARM64_WORKAROUND_CLEAN_CACHE isb cbz x24, 3f /* Do we need to re-initialise EL2? */ + mov x1, x24 + mov x0, #HVC_SET_VECTORS hvc #0 3: ret SYM_CODE_END(swsusp_arch_suspend_exit)
arch/arm64/kernel/hibernate.c +2 -2
@@ -423,8 +423,8 @@ int __nocfi swsusp_arch_resume(void)* Create a second copy of just the linear map, and use this when * restoring. */ - rc =trans_pgd_create_copy (&trans_info, &tmp_pg_dir,PAGE_OFFSET , -PAGE_END ); + rc =trans_pgd_create_copy (&trans_info, &tmp_pg_dir, +_PAGE_OFFSET (vabits_actual),PAGE_END );if (rc)return rc;
arch/mips/cavium-octeon/octeon-platform.c +2 -2
@@ -18,7 +18,7 @@#include <asm/octeon/octeon.h> #include <asm/octeon/cvmx-helper-board.h> -#ifdef CONFIG_USB +#if IS_ENABLED (CONFIG_USB )#include <linux/usb/ehci_def.h> #include <linux/usb/ehci_pdriver.h> #include <linux/usb/ohci_pdriver.h>
@@ -1080,7 +1080,7 @@ int __init octeon_prune_device_tree(void) ; } -#ifdef CONFIG_USB +#if IS_ENABLED (CONFIG_USB )/* OHCI/UHCI USB */ alias_prop =fdt_getprop (initial_boot_params, aliases,"uctl" ,NULL );
arch/powerpc/kernel/iommu.c +1 -1
@@ -1075,7 +1075,7 @@ int iommu_tce_check_ioba(unsigned long page_shift,if (ioba < offset)return -EINVAL ; -if ((ioba +1 ) > (offset + size)) +if ((ioba + npages < ioba) || (ioba - offset + npages > size))return -EINVAL ;return 0 ;
arch/powerpc/kvm/book3s_hv_nested.c +2 -0
@@ -1204,8 +1204,10 @@ static void kvmhv_emulate_tlbie_all_lpid(struct kvm_vcpu *vcpu, int ric)spin_lock (&kvm->mmu_lock);idr_for_each_entry (&kvm->arch.kvm_nested_guest_idr, gp, lpid) { + ++gp->refcnt;spin_unlock (&kvm->mmu_lock);kvmhv_emulate_tlbie_lpid (vcpu, gp, ric); +kvmhv_put_nested (gp);spin_lock (&kvm->mmu_lock); }spin_unlock (&kvm->mmu_lock);
arch/powerpc/kvm/book3s_hv_uvmem.c +4 -1
@@ -779,8 +779,11 @@ static int kvmppc_svm_page_in(struct vm_area_struct *vma,if (spage) { ret =uv_page_in (kvm->arch.lpid, pfn << page_shift, gpa,0 , page_shift); -if (ret) +if (ret) { +unlock_page (dpage); +put_page (dpage); goto out_finalize; + } } }
arch/x86/Kconfig.cpu +11 -0
@@ -255,10 +255,21 @@ config CC_HAS_MARCH_NATIVE # usage warnings that only appear wth '-march=native'. depends on CC_IS_GCC || CLANG_VERSION >= 190100 +config RUSTC_HAS_APXF + # The kernel isn't ready for in-kernel APX instructions. Without + # explicit frontend gating of APX, the backend may emit those + # instructions in native builds. + # + # Rust 1.88 added the `apxf` feature option, but versions before 1.93 + # emit an `apxf` target attribute that only LLVM 23+ can interpret. + def_bool (RUSTC_VERSION >= 108800 && RUSTC_LLVM_MAJOR_VERSION >= 23) || \ + RUSTC_VERSION >= 109300 + config X86_NATIVE_CPU bool "Build and optimize for local/native CPU" depends on X86_64 depends on CC_HAS_MARCH_NATIVE + depends on !RUST || RUSTC_HAS_APXF help Optimize for the current CPU used to compile the kernel. Use this option if you intend to build the kernel for your
arch/x86/Makefile +5 -0
@@ -168,6 +168,11 @@ else ifdef CONFIG_X86_NATIVE_CPU KBUILD_CFLAGS += -march=native + # Prevent the compiler from generating EGPR use. The kernel is + # not yet prepared for general in-kernel use. + KBUILD_CFLAGS += $(call cc-option,-mno-apx-features=egpr) + + # generate_rust_target.rs handles Rust APX gating. KBUILD_RUSTFLAGS += -Ctarget-cpu=native else KBUILD_CFLAGS += -march=x86-64 -mtune=generic
arch/x86/entry/entry_fred.c +10 -1
@@ -10,6 +10,7 @@#include <asm/desc.h> #include <asm/fred.h> #include <asm/idtentry.h> +#include <asm/processor-flags.h> #include <asm/syscall.h> #include <asm/trapnr.h> #include <asm/traps.h>
@@ -71,7 +72,15 @@ static noinstr void fred_intx(struct pt_regs *regs)#endif default : -return exc_general_protection (regs,0 ); +/* +* Reconstruct the #GP fault state that IDT delivery would produce. +* Clear the software event flag so ERETU with TF set does not trap +* before the resumed instruction. See prevent_single_step_upon_eretu(). +*/ + regs->ip -= regs->fred_ss.insnlen; + regs->flags |=X86_EFLAGS_RF ; + regs->fred_ss.swevent =0 ; +return exc_general_protection (regs, (regs->fred_ss.vector <<3 ) |2 ); } }
arch/x86/include/asm/text-patching.h +2 -2
@@ -164,9 +164,9 @@ unsigned long int3_emulate_pop(struct pt_regs *regs) }static __always_inline -void int3_emulate_call(struct pt_regs *regs, unsigned long func) +void int3_emulate_call(struct pt_regs *regs, unsigned long ip, unsigned long func) { -int3_emulate_push (regs, regs->ip -INT3_INSN_SIZE +CALL_INSN_SIZE ); +int3_emulate_push (regs, ip);int3_emulate_jmp (regs, func); }
arch/x86/kernel/alternative.c +30 -23
93 lines not on this page · raw message
arch/x86/kernel/cpu/microcode/intel.c +26 -0
@@ -257,6 +257,26 @@ static void save_microcode_patch(struct microcode_intel *patch)pr_err ("Unable to allocate microcode memory size: %u\n" , size); } +static bool revision_is_safe (struct cpu_signature *sig,u32 rev) +{ +u32 vfm =IFM (x86_family (sig->sig),x86_model (sig->sig)); + +/* +* Erratum GNR98 can cause #MCs if "jumping over" revision 0x1000405. +* Avoid the jumps. +*/ +if (vfm ==INTEL_GRANITERAPIDS_X && +x86_stepping (sig->sig) ==1 && + sig->pf &0x95 && + sig->rev <0x1000405 && + rev >0x1000405 ) { +pr_err_once ("Erratum GNR98: skipping revision 0x%x.\n" , rev); +return false; + } + +return true; +} +/* Scan blob for microcode matching the boot CPUs family, model, stepping */ static __init struct microcode_intel *scan_microcode(void *data, size_t size, struct ucode_cpu_info *uci,
@@ -278,6 +298,9 @@ static __init struct microcode_intel *scan_microcode(void *data, size_t size,if (!intel_find_matching_signature (data, &uci->cpu_sig))continue ; +if (!revision_is_safe (&uci->cpu_sig, mc_header->rev)) +continue ; +/* * For saving the early microcode, find the matching revision which * was loaded on the BSP.
@@ -534,6 +557,9 @@ static enum ucode_state parse_microcode_blobs(int cpu, struct iov_iter *iter)if (!intel_find_matching_signature (mc, &uci->cpu_sig))continue ; +if (!revision_is_safe (&uci->cpu_sig, mc_header.rev)) +continue ; + is_safe =ucode_validate_minrev (&mc_header);if (force_minrev && !is_safe)continue ;
arch/x86/kernel/kprobes/core.c +2 -3
@@ -511,10 +511,9 @@ NOKPROBE_SYMBOL(kprobe_emulate_ret);static void kprobe_emulate_call (struct kprobe *p,struct pt_regs *regs) { -unsigned long func = regs->ip -INT3_INSN_SIZE + p->ainsn.size; +unsigned long ip = regs->ip -INT3_INSN_SIZE + p->ainsn.size; - func += p->ainsn.rel32; -int3_emulate_call (regs, func); +int3_emulate_call (regs, ip, ip + p->ainsn.rel32); }NOKPROBE_SYMBOL (kprobe_emulate_call);
drivers/acpi/processor_driver.c +1 -1
@@ -166,7 +166,7 @@ static int __acpi_processor_start(struct acpi_device *device)if (result && !IS_ENABLED (CONFIG_ACPI_CPU_FREQ_PSS ))dev_dbg (&device->dev,"CPPC data invalid or not present\n" ); -if (!cpuidle_get_driver () ||cpuidle_get_driver () == &acpi_idle_driver) +if (cpuidle_get_driver () == &acpi_idle_driver)acpi_processor_power_init (pr);acpi_pss_perf_init (pr);
drivers/ata/libahci.c +14 -1
@@ -748,15 +748,28 @@ void ahci_start_fis_rx(struct ata_port *ap)struct ahci_port_priv *pp = ap->private_data;u32 tmp; -/* set FIS registers */ +/* +* On HBAs that only support 32-bit addressing PxCLBU is read only '0'. +* When applying the AHCI_HFLAG_32BIT_ONLY quirk, PxCLBU is RW, and the +* reset value is Implementation Specific, so we need to clear it to 0. +*/ if (hpriv->cap &HOST_CAP_64 )writel ((pp->cmd_slot_dma >>16 ) >>16 , port_mmio +PORT_LST_ADDR_HI ); +else if (hpriv->flags &AHCI_HFLAG_32BIT_ONLY ) +writel (0 , port_mmio +PORT_LST_ADDR_HI );writel (pp->cmd_slot_dma &0xffffffff , port_mmio +PORT_LST_ADDR ); +/* +* On HBAs that only support 32-bit addressing PxFBU is read only '0'. +* When applying the AHCI_HFLAG_32BIT_ONLY quirk, PxFBU is RW, and the +* reset value is Implementation Specific, so we need to clear it to 0. +*/ if (hpriv->cap &HOST_CAP_64 )writel ((pp->rx_fis_dma >>16 ) >>16 , port_mmio +PORT_FIS_ADDR_HI ); +else if (hpriv->flags &AHCI_HFLAG_32BIT_ONLY ) +writel (0 , port_mmio +PORT_FIS_ADDR_HI );writel (pp->rx_fis_dma &0xffffffff , port_mmio +PORT_FIS_ADDR );/* enable FIS reception */
drivers/ata/libahci_platform.c +1 -1
@@ -623,10 +623,10 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,of_platform_device_create (child,NULL ,NULL ); port_dev =of_find_device_by_node (child); -if (port_dev) { rc =ahci_platform_get_regulator (hpriv, port, &port_dev->dev); +put_device (&port_dev->dev);if (rc == -EPROBE_DEFER ) goto err_out; }
drivers/block/sunvdc.c +8 -1
@@ -556,6 +556,7 @@ static blk_status_t vdc_queue_rq(struct blk_mq_hw_ctx *hctx,struct vdc_port *port = hctx->queue->queuedata;struct vio_dring_state *dr;unsigned long flags; +int ret; dr = &port->vio.drings[VIO_DRIVER_TX_RING ];
@@ -577,7 +578,13 @@ static blk_status_t vdc_queue_rq(struct blk_mq_hw_ctx *hctx,return BLK_STS_DEV_RESOURCE ; } -if (__send_request (bd->rq) <0 ) { + ret =__send_request (bd->rq); +if (ret == -EAGAIN ) { +spin_unlock_irqrestore (&port->vio.lock, flags); +/* already spun for 10msec, defer 10msec and retry */ +blk_mq_delay_kick_requeue_list (hctx->queue,10 ); +return BLK_STS_DEV_RESOURCE ; + }else if (ret <0 ) {spin_unlock_irqrestore (&port->vio.lock, flags);return BLK_STS_IOERR ; }
drivers/bluetooth/btintel_pcie.c +7 -1
@@ -361,6 +361,12 @@ static int btintel_pcie_send_sync(struct btintel_pcie_data *data,if (tfd_index > txq->count)return -ERANGE ; +if (skb->len >BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ) { +bt_dev_err (hdev,"TX skb too large (%u > %u)" , skb->len, +BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ); +return -EMSGSIZE ; + } +/* Firmware raises alive interrupt on HCI_OP_RESET or * BTINTEL_HCI_OP_RESET */
@@ -459,7 +465,7 @@ static int btintel_pcie_submit_rx(struct btintel_pcie_data *data) frbd_index = data->ia.tr_hia[BTINTEL_PCIE_RXQ_NUM ]; -if (frbd_index > rxq->count) +if (frbd_index >= rxq->count)return -ERANGE ;/* Prepare for RX submit. It updates the FRBD with the address of DMA
drivers/bluetooth/btmtk.c +6 -1
@@ -709,7 +709,12 @@ static int btmtk_usb_hci_wmt_sync(struct hci_dev *hdev,case BTMTK_WMT_FUNC_CTRL :if (!skb_pull_data (data->evt_skb,sizeof (wmt_evt_funcc->status))) { - status =BTMTK_WMT_ON_UNDONE ; +/* A plain enable/disable request is acked with just +* the WMT header and no trailing status word; the +* result is carried in the header's own flag byte. +*/ + status = wmt_evt->whdr.flag ?BTMTK_WMT_ON_UNDONE : +BTMTK_WMT_ON_DONE ;break ; }
drivers/bluetooth/btmtksdio.c +1 -3
@@ -1245,10 +1245,8 @@ static int btmtksdio_shutdown(struct hci_dev *hdev) wmt_params.status =NULL ; err =mtk_hci_wmt_sync (hdev, &wmt_params); -if (err <0 ) { +if (err <0 )bt_dev_err (hdev,"Failed to send wmt func ctrl (%d)" , err); -return err; - } ignore_wmt_cmd:pm_runtime_put_noidle (bdev->dev);
drivers/bluetooth/btqca.c +19 -18
@@ -818,6 +818,14 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,snprintf (config.fwname,sizeof (config.fwname),"qca/%s" , rampatch_name); }else {switch (soc_type) { +case QCA_QCA2066 : +snprintf (config.fwname,sizeof (config.fwname), +"qca/hpbtfw%02x.tlv" , rom_ver); +break ; +case QCA_QCA6390 : +snprintf (config.fwname,sizeof (config.fwname), +"qca/htbtfw%02x.tlv" , rom_ver); +break ;case QCA_WCN3950 :snprintf (config.fwname,sizeof (config.fwname),"qca/cmbtfw%02x.tlv" , rom_ver);
@@ -832,14 +840,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,snprintf (config.fwname,sizeof (config.fwname),"qca/apbtfw%02x.tlv" , rom_ver);break ; -case QCA_QCA2066 : -snprintf (config.fwname,sizeof (config.fwname), -"qca/hpbtfw%02x.tlv" , rom_ver); -break ; -case QCA_QCA6390 : -snprintf (config.fwname,sizeof (config.fwname), -"qca/htbtfw%02x.tlv" , rom_ver); -break ;case QCA_WCN6750 :/* Choose mbn file by default.If mbn file is not found * then choose tlv file
@@ -887,6 +887,16 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, } }else {switch (soc_type) { +case QCA_QCA2066 : +qca_get_nvm_name_by_board (config.fwname, +sizeof (config.fwname), +"hpnv" , soc_type, ver, + rom_ver, boardid); +break ; +case QCA_QCA6390 : +snprintf (config.fwname,sizeof (config.fwname), +"qca/htnv%02x.bin" , rom_ver); +break ;case QCA_WCN3950 :if (le32_to_cpu (ver.soc_id) ==QCA_WCN3950_SOC_ID_T ) variant ="t" ;
@@ -909,15 +919,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,snprintf (config.fwname,sizeof (config.fwname),"qca/apnv%02x.bin" , rom_ver);break ; -case QCA_QCA2066 : -qca_get_nvm_name_by_board (config.fwname, -sizeof (config.fwname),"hpnv" , soc_type, ver, - rom_ver, boardid); -break ; -case QCA_QCA6390 : -snprintf (config.fwname,sizeof (config.fwname), -"qca/htnv%02x.bin" , rom_ver); -break ;case QCA_WCN6750 :snprintf (config.fwname,sizeof (config.fwname),"qca/msnv%02x.bin" , rom_ver);
@@ -944,9 +945,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, }switch (soc_type) { -case QCA_WCN3991 :case QCA_QCA2066 :case QCA_QCA6390 : +case QCA_WCN3991 :case QCA_WCN6750 :case QCA_WCN6855 :case QCA_WCN7850 :
drivers/bluetooth/btusb.c +17 -0
@@ -70,6 +70,15 @@ static struct usb_driver btusb_driver;#define BTUSB_BROKEN_EXT_SCAN BIT(29)static const struct usb_device_id btusb_table[] = { +/* +* NXP IW610 (0471:0215): the composite device reports Bluetooth +* class at the whole-device level, so the generic entry below +* would also match this WiFi vendor interface. Ignore it here +* first so mwifiex-nxp can bind it instead. +*/ + {USB_DEVICE_AND_INTERFACE_INFO (0x0471 ,0x0215 ,0xff ,0xff ,0xff ), + .driver_info =BTUSB_IGNORE }, +/* Generic Bluetooth USB device */ {USB_DEVICE_INFO (0xe0 ,0x01 ,0x01 ) },
@@ -474,6 +483,14 @@ static const struct usb_device_id quirks_table[] = { { USB_DEVICE(0x1286, 0x2046), .driver_info = BTUSB_MARVELL }, { USB_DEVICE(0x1286, 0x204e), .driver_info = BTUSB_MARVELL }, +/* +* NXP IW610 BT interfaces (Marvell-lineage silicon, same quirk as +* the 0x1286 entries above). Scoped to the BT interface class, +* not just VID/PID -- see the btusb_table entry above. +*/ + { USB_DEVICE_AND_INTERFACE_INFO(0x0471, 0x0215, 0xe0, 0x01, 0x01), + .driver_info = BTUSB_MARVELL }, +/* Intel Bluetooth devices */ { USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_COMBINED }, { USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED },
drivers/bluetooth/hci_qca.c +52 -28
186 lines not on this page · raw message
drivers/clk/clk-scpi.c +1 -1
@@ -85,7 +85,7 @@ static unsigned long scpi_dvfs_recalc_rate(struct clk_hw *hw,int idx = clk->scpi_ops->dvfs_get_idx (clk->id);const struct scpi_opp *opp; -if (idx <0 ) +if (idx <0 || idx >= clk->info->count)return 0 ; opp = clk->info->opps + idx;
drivers/dma/dmaengine.c +8 -2
@@ -428,6 +428,7 @@ static void dma_device_release(struct kref *ref)list_del_rcu (&device->global_node);dma_channel_rebalance (); +synchronize_rcu ();if (device->device_release) device->device_release (device);
@@ -495,10 +496,13 @@ static int dma_chan_get(struct dma_chan *chan)*/ static void dma_chan_put (struct dma_chan *chan) { +struct module *owner; +/* This channel is not in use, bail out */ if (!chan->client_count)return ; + owner =dma_chan_to_owner (chan); chan->client_count--;/* This channel is not in use anymore, free it */
@@ -515,8 +519,10 @@ static void dma_chan_put(struct dma_chan *chan) chan->route_data =NULL ; } -dma_device_put (chan->device); -module_put (dma_chan_to_owner (chan)); +/* This channel is not in use anymore, drop the device ref */ +if (!chan->client_count) +dma_device_put (chan->device); +module_put (owner); }enum dma_status dma_sync_wait (struct dma_chan *chan,dma_cookie_t cookie)
drivers/dma/mmp_pdma.c +1 -1
@@ -701,7 +701,7 @@ mmp_pdma_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,for_each_sg (sgl, sg, sg_len, i) { addr =sg_dma_address (sg); - avail =sg_dma_len (sgl); + avail =sg_dma_len (sg); do { len = min_t(size_t, avail, PDMA_MAX_DESC_BYTES);
drivers/dma/sprd-dma.c +1 -2
@@ -1212,7 +1212,7 @@ static int sprd_dma_probe(struct platform_device *pdev) ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 ) - goto err_rpm; + goto err_register; ret =dma_async_device_register (&sdev->dma_dev);if (ret <0 ) {
@@ -1234,7 +1234,6 @@ static int sprd_dma_probe(struct platform_device *pdev) err_register:pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev); -err_rpm:sprd_dma_disable (sdev);return ret; }
drivers/dma/sun6i-dma.c +5 -4
@@ -354,8 +354,10 @@ static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan)size_t bytes;dma_addr_t pos; - pos =readl (pchan->base +DMA_CHAN_LLI_ADDR ); - bytes =readl (pchan->base +DMA_CHAN_CUR_CNT ); +do { + pos =readl (pchan->base +DMA_CHAN_LLI_ADDR ); + bytes =readl (pchan->base +DMA_CHAN_CUR_CNT ); + }while (pos !=readl (pchan->base +DMA_CHAN_LLI_ADDR ));if (pos ==LLI_LAST_ITEM )return bytes;
@@ -969,7 +971,6 @@ static enum dma_status sun6i_dma_tx_status(struct dma_chan *chan,struct sun6i_pchan *pchan = vchan->phy;struct sun6i_dma_lli *lli;struct virt_dma_desc *vd; -struct sun6i_desc *txd;enum dma_status ret;unsigned long flags;size_t bytes =0 ;
@@ -981,9 +982,9 @@ static enum dma_status sun6i_dma_tx_status(struct dma_chan *chan,spin_lock_irqsave (&vchan->vc.lock, flags); vd =vchan_find_desc (&vchan->vc, cookie); - txd =to_sun6i_desc (&vd->tx);if (vd) { +struct sun6i_desc *txd =to_sun6i_desc (&vd->tx);for (lli = txd->v_lli; lli !=NULL ; lli = lli->v_lli_next) bytes += lli->len; }else if (!pchan || !pchan->desc) {
drivers/dma/ti/k3-udma-glue.c +3 -2
@@ -1243,8 +1243,9 @@ void k3_udma_glue_release_rx_chn(struct k3_udma_glue_rx_channel *rx_chn) rx_chn->psil_paired = false; } -for (i =0 ; i < rx_chn->flow_num; i++) -k3_udma_glue_release_rx_flow (rx_chn, i); +if (rx_chn->flows) +for (i =0 ; i < rx_chn->flow_num; i++) +k3_udma_glue_release_rx_flow (rx_chn, i);if (xudma_rflow_is_gp (rx_chn->common.udmax, rx_chn->flow_id_base)) xudma_free_gp_rflow_range(rx_chn->common.udmax,
drivers/dma/xilinx/xilinx_dma.c +18 -8
@@ -754,15 +754,25 @@ xilinx_aximcdma_alloc_tx_segment(struct xilinx_dma_chan *chan)return segment; } -static void xilinx_dma_clean_hw_desc (struct xilinx_axidma_desc_hw *hw) +static void xilinx_dma_clean_hw_desc (struct xilinx_dma_chan *chan, +struct xilinx_axidma_tx_segment *segment) { -u32 next_desc = hw->next_desc; -u32 next_desc_msb = hw->next_desc_msb; +dma_addr_t next; +u32 i; -memset (hw,0 ,sizeof (struct xilinx_axidma_desc_hw )); +/* +* Restore the buffer descriptor's next descriptor pointer to the value +* set up in xilinx_dma_alloc_chan_resources(). Otherwise using the DMA +* in cyclic mode leaves the next descriptor pointer altered and +* prevents subsequent non-cyclic transfers. +*/ + i = segment - chan->seg_v; + next = chan->seg_p + +sizeof (*chan->seg_v) * ((i +1 ) %XILINX_DMA_NUM_DESCS ); - hw->next_desc = next_desc; - hw->next_desc_msb = next_desc_msb; +memset (&segment->hw,0 ,sizeof (segment->hw)); + segment->hw.next_desc =lower_32_bits (next); + segment->hw.next_desc_msb =upper_32_bits (next); }static void xilinx_mcdma_clean_hw_desc (struct xilinx_aximcdma_desc_hw *hw)
@@ -784,7 +794,7 @@ static void xilinx_mcdma_clean_hw_desc(struct xilinx_aximcdma_desc_hw *hw)static void xilinx_dma_free_tx_segment (struct xilinx_dma_chan *chan,struct xilinx_axidma_tx_segment *segment) { -xilinx_dma_clean_hw_desc (&segment->hw); +xilinx_dma_clean_hw_desc (chan, segment);list_add_tail (&segment->node, &chan->free_seg_list); }
@@ -918,9 +928,9 @@ static void xilinx_dma_free_descriptors(struct xilinx_dma_chan *chan)spin_lock_irqsave (&chan->lock, flags); -xilinx_dma_free_desc_list (chan, &chan->pending_list);xilinx_dma_free_desc_list (chan, &chan->done_list);xilinx_dma_free_desc_list (chan, &chan->active_list); +xilinx_dma_free_desc_list (chan, &chan->pending_list);spin_unlock_irqrestore (&chan->lock, flags); }
drivers/firmware/arm_scpi.c +2 -2
@@ -631,8 +631,8 @@ static struct scpi_dvfs_info *scpi_dvfs_get_info(u8 domain)if (ret)return ERR_PTR (ret); -if (!buf.opp_count) -return ERR_PTR (-ENOENT ); +if (!buf.opp_count || buf.opp_count >MAX_DVFS_OPPS ) +return ERR_PTR (-EINVAL ); info =kmalloc (sizeof (*info),GFP_KERNEL );if (!info)
drivers/gpio/gpio-virtuser.c +2 -1
@@ -697,7 +697,8 @@ static int gpio_virtuser_interrupts_set(void *data, u64 val)atomic_set (&ld->irq, irq); }else { irq =atomic_xchg (&ld->irq,0 ); -free_irq (irq, ld); +if (irq) +free_irq (irq, ld); }return 0 ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -4
@@ -5098,7 +5098,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)void amdgpu_device_fini_sw (struct amdgpu_device *adev) { -int i, idx; +int i;bool px;amdgpu_device_ip_fini (adev);
@@ -5140,11 +5140,9 @@ void amdgpu_device_fini_sw(struct amdgpu_device *adev)if ((adev->pdev->class >>8 ) ==PCI_CLASS_DISPLAY_VGA )vga_client_unregister (adev->pdev); -if (drm_dev_enter (adev_to_drm (adev), &idx)) { - +if (adev->rmmio) {iounmap (adev->rmmio); adev->rmmio =NULL ; -drm_dev_exit (idx); }if (IS_ENABLED (CONFIG_PERF_EVENTS ))
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +48 -0
75 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c +1 -1
@@ -533,7 +533,7 @@ static void nbio_v7_9_handle_ras_controller_intr_no_bifring(struct amdgpu_device RAS_CNTLR_INTERRUPT_CLEAR, 1);WREG32_SOC15 (NBIO ,0 , regBIF_BX0_BIF_DOORBELL_INT_CNTL, bif_doorbell_intr_cntl); -if (!ras->disable_ras_err_cnt_harvest) { +if (ras && !ras->disable_ras_err_cnt_harvest && obj) {/* * clear error status after ras_controller_intr * according to hw team and count ue number
drivers/gpu/drm/drm_atomic_uapi.c +10 -3
@@ -1244,10 +1244,12 @@ static int prepare_signaling(struct drm_device *dev,struct dma_fence *fence;struct drm_out_fence_state *f; + ret = -ENOMEM ; + f =krealloc (*fence_state,sizeof (**fence_state) * (*num_fences +1 ),GFP_KERNEL );if (!f) -return -ENOMEM ; + goto err_free_event;memset (&f[*num_fences],0 ,sizeof (*f));
@@ -1256,12 +1258,12 @@ static int prepare_signaling(struct drm_device *dev, fence =drm_crtc_create_fence (crtc);if (!fence) -return -ENOMEM ; + goto err_free_event; ret =setup_out_fence (&f[(*num_fences)++], fence);if (ret) {dma_fence_put (fence); -return ret; + goto err_free_event; } crtc_state->event->base.fence = fence;
@@ -1317,6 +1319,11 @@ static int prepare_signaling(struct drm_device *dev, }return 0 ; + +err_free_event: +drm_event_cancel_free (dev, &crtc_state->event->base); + crtc_state->event =NULL ; +return ret; } static void complete_signaling(struct drm_device *dev,
drivers/gpu/drm/gud/gud_pipe.c +5 -2
@@ -482,6 +482,9 @@ int gud_plane_atomic_check(struct drm_plane *plane,if (!new_plane_state->visible)return 0 ; +if (gdrm->flags &GUD_DISPLAY_FLAG_FULL_UPDATE ) + new_plane_state->ignore_damage_clips = true; +if (old_plane_state->rotation != new_plane_state->rotation) crtc_state->mode_changed = true;
@@ -562,8 +565,8 @@ int gud_plane_atomic_check(struct drm_plane *plane, goto out; } - req->properties[num_properties + i].prop =cpu_to_le16 (prop); - req->properties[num_properties + i].val =cpu_to_le64 (val); + req->properties[num_properties].prop =cpu_to_le16 (prop); + req->properties[num_properties].val =cpu_to_le64 (val); num_properties++; }
drivers/gpu/drm/msm/adreno/adreno_device.c +1 -1
@@ -25,7 +25,7 @@ MODULE_PARM_DESC(disable_acd, "Forcefully disable GPU ACD");module_param_unsafe (disable_acd, bool,0400 );static bool skip_gpu; -MODULE_PARM_DESC (no_gpu,"Disable GPU driver register (0=enable GPU driver register (default), 1=skip GPU driver register" ); +MODULE_PARM_DESC (skip_gpu,"Disable GPU driver register (0=enable GPU driver register (default), 1=skip GPU driver register" );module_param (skip_gpu, bool,0400 );extern const struct adreno_gpulist a2xx_gpulist;
drivers/gpu/drm/msm/adreno/adreno_gpu.c +2 -0
@@ -1245,6 +1245,8 @@ void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)for (i =0 ; i <ARRAY_SIZE (adreno_gpu->info->fw); i++)release_firmware (adreno_gpu->fw[i]); +pm_runtime_dont_use_autosuspend (&gpu->pdev->dev); +if (priv &&pm_runtime_enabled (&priv->gpu_pdev->dev))pm_runtime_disable (&priv->gpu_pdev->dev);
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +1 -0
@@ -118,6 +118,7 @@ static inline void dpu_hw_ctl_clear_pending_flush(struct dpu_hw_ctl *ctx) ctx->pending_intf_flush_mask =0 ; ctx->pending_wb_flush_mask =0 ; ctx->pending_cwb_flush_mask =0 ; + ctx->pending_periph_flush_mask =0 ; ctx->pending_merge_3d_flush_mask =0 ; ctx->pending_dsc_flush_mask =0 ; ctx->pending_cdm_flush_mask =0 ;
drivers/gpu/drm/msm/dp/dp_display.c +19 -2
@@ -930,6 +930,7 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,u32 mode_rate_khz =0 , supported_rate_khz =0 , mode_bpp =0 ;struct msm_dp *dp;int mode_pclk_khz = mode->clock; +int link_pclk_khz;bool is_yuv_420; dp =to_dp_bridge (bridge)->msm_dp_display;
@@ -951,6 +952,8 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,if (is_yuv_420 && !msm_dp_display->panel->vsc_sdp_supported)return MODE_NO_420 ; + link_pclk_khz = is_yuv_420 ? mode_pclk_khz /2 : mode_pclk_khz; +if (is_yuv_420 || msm_dp_display->wide_bus_supported) mode_pclk_khz /=2 ;
@@ -962,9 +965,9 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, mode_bpp = default_bpp; mode_bpp =msm_dp_panel_get_mode_bpp (msm_dp_display->panel, - mode_bpp, mode_pclk_khz); + mode_bpp, link_pclk_khz); - mode_rate_khz = mode_pclk_khz * mode_bpp; + mode_rate_khz = link_pclk_khz * mode_bpp; supported_rate_khz = link_info->num_lanes * link_info->rate *8 ;if (mode_rate_khz > supported_rate_khz)
@@ -1647,6 +1650,20 @@ void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); +/* +* If .atomic_enable() bailed out - link training failure is the common +* case - the mainlink was never brought up and ->power_on stayed false. +* Driving the PUSH_IDLE pattern into a controller that was never +* enabled times out, and .atomic_post_disable() then drops the +* controller's runtime-PM reference without tearing the PHY back down, +* because msm_dp_display_disable() returns early on !power_on. On +* glymur (Snapdragon X2 Elite) that combination is answered by a +* TrustZone-level SOCCP/ADSP force-stop and a silent SoC reset. +* There is nothing to push idle, so leave it alone. +*/ +if (!dp->power_on) +return ; +msm_dp_ctrl_push_idle (msm_dp_display->ctrl); }
drivers/gpu/drm/msm/dsi/dsi_host.c +19 -17
@@ -129,7 +129,7 @@ struct msm_dsi_host {struct clk *dsi_pll_pixel_clk;unsigned long byte_clk_rate; -unsigned long byte_intf_clk_rate; +bool byte_intf_clk_div_2;unsigned long pixel_clk_rate;unsigned long esc_clk_rate;
@@ -381,8 +381,20 @@ int msm_dsi_runtime_resume(struct device *dev)int dsi_link_clk_set_rate_6g (struct msm_dsi_host *msm_host) { +unsigned long byte_intf_clk_rate; +long rounded_byte_clk_rate;int ret; + rounded_byte_clk_rate =clk_round_rate (msm_host->byte_clk, + msm_host->byte_clk_rate); +if (rounded_byte_clk_rate <0 ) { +pr_err ("%s: failed to round byte clock rate, %ld\n" , + __func__, rounded_byte_clk_rate); +return rounded_byte_clk_rate; + } + + msm_host->byte_clk_rate = rounded_byte_clk_rate; +DBG ("Set clk rates: pclk=%lu, byteclk=%lu" , msm_host->pixel_clk_rate, msm_host->byte_clk_rate);
@@ -400,7 +412,11 @@ int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host) }if (msm_host->byte_intf_clk) { - ret =clk_set_rate (msm_host->byte_intf_clk, msm_host->byte_intf_clk_rate); + byte_intf_clk_rate = msm_host->byte_clk_rate; +if (msm_host->byte_intf_clk_div_2) + byte_intf_clk_rate /=2 ; + + ret =clk_set_rate (msm_host->byte_intf_clk, byte_intf_clk_rate);if (ret) {pr_err ("%s: Failed to set rate byte intf clk, %d\n" , __func__, ret);
@@ -668,24 +684,12 @@ static void dsi_calc_pclk(struct msm_dsi_host *msm_host, bool is_bonded_dsi)int dsi_calc_clk_rate_6g (struct msm_dsi_host *msm_host,bool is_bonded_dsi) { -long rounded_byte_clk_rate; -if (!msm_host->mode) {pr_err ("%s: mode not set\n" , __func__);return -EINVAL ; }dsi_calc_pclk (msm_host, is_bonded_dsi); - - rounded_byte_clk_rate =clk_round_rate (msm_host->byte_clk, - msm_host->byte_clk_rate); -if (rounded_byte_clk_rate <0 ) { -pr_err ("%s: failed to round byte clock rate, %ld\n" , - __func__, rounded_byte_clk_rate); -return rounded_byte_clk_rate; - } - - msm_host->byte_clk_rate = rounded_byte_clk_rate; msm_host->esc_clk_rate =clk_get_rate (msm_host->esc_clk);return 0 ; }
@@ -2470,9 +2474,7 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, goto unlock_ret; } - msm_host->byte_intf_clk_rate = msm_host->byte_clk_rate; -if (phy_shared_timings->byte_intf_clk_div_2) - msm_host->byte_intf_clk_rate /=2 ; + msm_host->byte_intf_clk_div_2 = phy_shared_timings->byte_intf_clk_div_2;msm_dsi_sfpb_config (msm_host, true);
drivers/gpu/drm/msm/hdmi/hdmi_phy.c +6 -2
@@ -168,13 +168,13 @@ static int msm_hdmi_phy_probe(struct platform_device *pdev) ret =msm_hdmi_phy_resource_enable (phy);if (ret) -return ret; + goto err_pm_disable; ret =msm_hdmi_phy_pll_init (pdev, phy->cfg->type);if (ret) {DRM_DEV_ERROR (dev,"couldn't init PLL\n" );msm_hdmi_phy_resource_disable (phy); -return ret; + goto err_pm_disable; }msm_hdmi_phy_resource_disable (phy);
@@ -182,6 +182,10 @@ static int msm_hdmi_phy_probe(struct platform_device *pdev)platform_set_drvdata (pdev, phy);return 0 ; + +err_pm_disable: +pm_runtime_disable (dev); +return ret; }static void msm_hdmi_phy_remove (struct platform_device *pdev)
drivers/gpu/drm/msm/msm_drv.c +1 -1
@@ -55,7 +55,7 @@ MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=on (default), 0=disabmodule_param (modeset, bool,0600 );static bool separate_gpu_kms; -MODULE_PARM_DESC (separate_gpu_drm,"Use separate DRM device for the GPU (0=single DRM device for both GPU and display (default), 1=two DRM devices)" ); +MODULE_PARM_DESC (separate_gpu_kms,"Use separate DRM device for the GPU (0=single DRM device for both GPU and display (default), 1=two DRM devices)" );module_param (separate_gpu_kms, bool,0400 );DECLARE_FAULT_ATTR (fail_gem_alloc);
drivers/gpu/drm/msm/msm_gem.h +3 -0
@@ -68,6 +68,9 @@ struct msm_gem_vm {/** @base: Inherit from drm_gpuvm. */ struct drm_gpuvm base; +/** @rcu: RCU-delayed free so an exported sched fence->sched stays valid. */ +struct rcu_head rcu; +/** * @sched: Scheduler used for asynchronous VM_BIND request. *
drivers/gpu/drm/msm/msm_gem_vma.c +1 -1
@@ -166,7 +166,7 @@ msm_gem_vm_free(struct drm_gpuvm *gpuvm)dma_fence_put (vm->last_fence);put_pid (vm->pid);kfree (vm->log); -kfree (vm); +kfree_rcu (vm, rcu); }/**
drivers/gpu/drm/msm/msm_ringbuffer.c +1 -1
@@ -140,5 +140,5 @@ void msm_ringbuffer_destroy(struct msm_ringbuffer *ring)msm_gem_kernel_put (ring->bo, ring->gpu->vm); -kfree (ring); +kfree_rcu (ring, rcu); }
drivers/gpu/drm/msm/msm_ringbuffer.h +1 -0
@@ -53,6 +53,7 @@ struct msm_ringbuffer {/* * The job scheduler for this ring. */ +struct rcu_head rcu;struct drm_gpu_scheduler sched;bool sched_initialized;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c +1 -1
@@ -208,7 +208,7 @@ r535_fbsr_resume(struct nvkm_gsp *gsp) }static int -r535_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) +r535_fbsr_suspend (struct nvkm_gsp *gsp) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +6 -2
@@ -1748,7 +1748,7 @@ r535_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend) sr->sysmemAddrOfSuspendResumeData = gsp->sr.radix3.lvl0.addr; sr->sizeOfSuspendResumeData = len; - ret = rm->api->fbsr->suspend (gsp, suspend ==NVKM_RUNTIME_SUSPEND ); + ret = rm->api->fbsr->suspend (gsp);if (ret) {nvkm_gsp_mem_dtor (&gsp->sr.meta);nvkm_gsp_radix3_dtor (gsp, &gsp->sr.radix3);
@@ -1760,8 +1760,12 @@ r535_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend)* TODO: Debug the GSP firmware / RPC handling to find out why * without this Turing (but none of the other architectures) * ends up resetting all channels after resume. +* Additionally, runtime suspend on other architectures quickly +* becomes unreliable without this sleep. If you're experiencing +* issues with runtime suspend, try bumping this delay up and +* sending a patch if it fixes your GPU. */ -msleep (50 ); +msleep (200 ); } ret =r535_gsp_rpc_unloading_guest_driver (gsp, suspend);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c +4 -4
@@ -62,7 +62,7 @@ r570_fbsr_resume(struct nvkm_gsp *gsp) }static int -r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size,bool runtime) +r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size) {NV2080_CTRL_INTERNAL_FBSR_INIT_PARAMS *ctrl;struct nvkm_gsp_object memlist;
@@ -81,7 +81,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size, bool runtim ctrl->hClient = gsp->internal.client.object.handle; ctrl->hSysMem = memlist.handle; ctrl->sysmemAddrOfSuspendResumeData = gsp->sr.meta.addr; - ctrl->bEnteringGcoffState = runtime ?1 :0 ; + ctrl->bEnteringGcoffState =0 ; ret =nvkm_gsp_rm_ctrl_wr (&gsp->internal.device.subdevice, ctrl);if (ret)
@@ -92,7 +92,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size, bool runtim }static int -r570_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) +r570_fbsr_suspend (struct nvkm_gsp *gsp) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
@@ -133,7 +133,7 @@ r570_fbsr_suspend(struct nvkm_gsp *gsp, bool runtime)return ret;/* Initialise FBSR on RM. */ - ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size, runtime); + ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size);if (ret) {nvkm_gsp_sg_free (device, &gsp->sr.fbsr);return ret;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +2 -1
@@ -207,7 +207,8 @@ r570_gsp_set_rmargs(struct nvkm_gsp *gsp, bool resume) args->srInitArguments.bInPMTransition =0 ; }else { args->srInitArguments.oldLevel =NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3 ; - args->srInitArguments.flags =0 ; + args->srInitArguments.flags = +GPU_STATE_FLAGS_PRESERVING |GPU_STATE_FLAGS_PM_TRANSITION ; args->srInitArguments.bInPMTransition =1 ; }
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h +8 -0
@@ -523,6 +523,14 @@ typedef struct#define NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3 (0x00000003U) +#define GPU_STATE_FLAGS_PRESERVING BIT(0) // GPU state is preserved +#define GPU_STATE_FLAGS_VGA_TRANSITION BIT(1) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_TRANSITION BIT(2) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_SUSPEND BIT(3) +#define GPU_STATE_FLAGS_PM_HIBERNATE BIT(4) +#define GPU_STATE_FLAGS_GC6_TRANSITION BIT(5) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_FAST_UNLOAD BIT(6) // Used during windows restart, skips stateDestroy steps + typedef struct { // Magic for verification by secure ucode
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h +1 -1
@@ -79,7 +79,7 @@ struct nvkm_rm_api { } *device;const struct nvkm_rm_api_fbsr { -int (*suspend)(struct nvkm_gsp *,bool runtime); +int (*suspend)(struct nvkm_gsp *);void (*resume)(struct nvkm_gsp *); } *fbsr;
drivers/gpu/drm/vc4/vc4_kms.c +1 -1
@@ -1162,7 +1162,7 @@ int vc4_kms_load(struct drm_device *dev)drm_mode_config_reset (dev); -drm_kms_helper_poll_init (dev); +drmm_kms_helper_poll_init (dev);return 0 ; }
drivers/gpu/drm/xe/xe_mmio_gem.c +18 -15
@@ -39,10 +39,20 @@ struct xe_mmio_gem {phys_addr_t phys_addr; }; +static int xe_mmio_gem_vm_may_split (struct vm_area_struct *area,unsigned long addr) +{ +/* +* Forbid splitting. Together with VM_DONTEXPAND, this keeps the VMA +* matching the GEM object exactly. +*/ +return -EINVAL ; +} +static const struct vm_operations_struct vm_ops = { .open = drm_gem_vm_open, .close = drm_gem_vm_close, .fault = xe_mmio_gem_vm_fault, + .may_split = xe_mmio_gem_vm_may_split, };static const struct drm_gem_object_funcs xe_mmio_gem_funcs = {
@@ -128,14 +138,16 @@ static void xe_mmio_gem_free(struct drm_gem_object *base)/** * xe_mmio_gem_destroy - Destroy the GEM object that exposes an MMIO region * @gem: the GEM object to destroy +* @file: DRM file descriptor previously passed to xe_mmio_gem_create() * * This function releases resources associated with the GEM object created by * xe_mmio_gem_create(). * * See: "Exposing MMIO regions to userspace" */ -void xe_mmio_gem_destroy (struct xe_mmio_gem *gem) +void xe_mmio_gem_destroy (struct xe_mmio_gem *gem,struct drm_file *file) { +drm_vma_node_revoke (&gem->base.vma_node, file);xe_mmio_gem_free (&gem->base); }
@@ -162,14 +174,13 @@ static void xe_mmio_gem_release_dummy_page(struct drm_device *dev, void *res)__free_page ((struct page *)res); } -static vm_fault_t xe_mmio_gem_vm_fault_dummy_page (struct vm_area_struct *vma) +static vm_fault_t xe_mmio_gem_vm_fault_dummy_page (struct vm_fault *vmf) { +struct vm_area_struct *vma = vmf->vma;struct drm_gem_object *base = vma->vm_private_data;struct drm_device *dev = base->dev; -vm_fault_t ret =VM_FAULT_NOPAGE ;struct page *page;unsigned long pfn; -unsigned long i; page =alloc_page (GFP_KERNEL | __GFP_ZERO);if (!page)
@@ -180,16 +191,8 @@ static vm_fault_t xe_mmio_gem_vm_fault_dummy_page(struct vm_area_struct *vma) pfn =page_to_pfn (page); -/* Map the entire VMA to the same dummy page */ -for (i =0 ; i < base->size; i +=PAGE_SIZE ) { -unsigned long addr = vma->vm_start + i; - - ret =vmf_insert_pfn (vma, addr, pfn); -if (ret &VM_FAULT_ERROR ) -break ; - } - -return ret; +return vmf_insert_pfn_prot (vma, vmf->address, pfn, +vm_get_page_prot (vma->vm_flags)); }static vm_fault_t xe_mmio_gem_vm_fault (struct vm_fault *vmf)
@@ -209,7 +212,7 @@ static vm_fault_t xe_mmio_gem_vm_fault(struct vm_fault *vmf)* It is assumed the userspace will receive the notification via some * other channel (e.g. drm uevent). */ -return xe_mmio_gem_vm_fault_dummy_page (vma); +return xe_mmio_gem_vm_fault_dummy_page (vmf); }for (i =0 ; i < base->size; i +=PAGE_SIZE ) {
drivers/gpu/drm/xe/xe_mmio_gem.h +1 -1
@@ -15,6 +15,6 @@ struct xe_mmio_gem;struct xe_mmio_gem *xe_mmio_gem_create (struct xe_device *xe,struct drm_file *file,phys_addr_t phys_addr,size_t size);u64 xe_mmio_gem_mmap_offset (struct xe_mmio_gem *gem); -void xe_mmio_gem_destroy (struct xe_mmio_gem *gem); +void xe_mmio_gem_destroy (struct xe_mmio_gem *gem,struct drm_file *file);#endif /* _XE_MMIO_GEM_H_ */
drivers/gpu/drm/xe/xe_shrinker.c +26 -36
122 lines not on this page · raw message
drivers/hid/hid-asus.c +30 -4
@@ -48,7 +48,7 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");#define FEATURE_REPORT_ID 0x0d#define INPUT_REPORT_ID 0x5d#define FEATURE_KBD_REPORT_ID 0x5a -#define FEATURE_KBD_REPORT_SIZE 16 +#define FEATURE_KBD_REPORT_SIZE 64#define FEATURE_KBD_LED_REPORT_ID1 0x5d#define FEATURE_KBD_LED_REPORT_ID2 0x5e
@@ -393,15 +393,41 @@ static int asus_kbd_set_report(struct hid_device *hdev, const u8 *buf, size_t bustatic int asus_kbd_init (struct hid_device *hdev,u8 report_id) { +/* +* The handshake is first sent as a set_report, then retrieved +* from a get_report. They should be equal. +*/ const u8 buf[] = { report_id,0x41 ,0x53 ,0x55 ,0x53 ,0x20 ,0x54 ,0x65 ,0x63 ,0x68 ,0x2e ,0x49 ,0x6e ,0x63 ,0x2e ,0x00 };int ret; ret =asus_kbd_set_report (hdev, buf,sizeof (buf)); -if (ret <0 ) -hid_err (hdev,"Asus failed to send init command: %d\n" , ret); +if (ret <0 ) { +hid_err (hdev,"Asus handshake %02x failed to send: %d\n" , + report_id, ret); +return ret; + } -return ret; + u8 *readbuf __free(kfree) = kzalloc(FEATURE_KBD_REPORT_SIZE, GFP_KERNEL); +if (!readbuf) +return -ENOMEM ; + + ret =hid_hw_raw_request (hdev, report_id, readbuf, +FEATURE_KBD_REPORT_SIZE ,HID_FEATURE_REPORT , +HID_REQ_GET_REPORT ); +if (ret <0 ) { +hid_warn (hdev,"Asus handshake %02x failed to receive ack: %d\n" , + report_id, ret); + }else if (memcmp (readbuf, buf,sizeof (buf)) !=0 ) { +hid_warn (hdev,"Asus handshake %02x returned invalid response: %*ph\n" , + report_id,FEATURE_KBD_REPORT_SIZE , readbuf); + } + +/* +* Do not return error if handshake is wrong until this is +* verified to work for all devices. +*/ +return 0 ; } static int asus_kbd_get_functions(struct hid_device *hdev,
drivers/hid/hid-logitech-hidpp.c +17 -7
@@ -305,21 +305,22 @@ static int __do_hidpp_send_message_sync(struct hidpp_device *hidpp,if (ret) {dbg_hid ("__hidpp_send_report returned err: %d\n" , ret);memset (response,0 ,sizeof (struct hidpp_report )); -return ret; + goto out; }if (!wait_event_timeout (hidpp->wait, hidpp->answer_available,5 *HZ )) {dbg_hid ("%s:timeout waiting for response\n" , __func__);memset (response,0 ,sizeof (struct hidpp_report )); -return -ETIMEDOUT ; + ret = -ETIMEDOUT ; + goto out; }if (response->report_id ==REPORT_ID_HIDPP_SHORT && response->rap.sub_id ==HIDPP_ERROR ) { ret = response->rap.params[1 ];dbg_hid ("%s:got hidpp error %02X\n" , __func__, ret); -return ret; + goto out; } if ((response->report_id == REPORT_ID_HIDPP_LONG ||
@@ -327,10 +328,14 @@ static int __do_hidpp_send_message_sync(struct hidpp_device *hidpp, response->fap.feature_index == HIDPP20_ERROR) { ret = response->fap.params[1 ];dbg_hid ("%s:got hidpp 2.0 error %02X\n" , __func__, ret); -return ret; + goto out; } -return 0 ; + ret =0 ; + +out: + hidpp->send_receive_buf =NULL ; +return ret; }/*
@@ -3838,8 +3843,7 @@ static int hidpp_input_configured(struct hid_device *hdev,static int hidpp_raw_hidpp_event (struct hidpp_device *hidpp,u8 *data,int size) { -struct hidpp_report *question = hidpp->send_receive_buf; -struct hidpp_report *answer = hidpp->send_receive_buf; +struct hidpp_report *question, *answer;struct hidpp_report *report = (struct hidpp_report *)data;int ret;int last_online;
@@ -3849,6 +3853,12 @@ static int hidpp_raw_hidpp_event(struct hidpp_device *hidpp, u8 *data,* previously sent command. */ if (unlikely (mutex_is_locked (&hidpp->send_mutex))) { + question = hidpp->send_receive_buf; + answer = hidpp->send_receive_buf; + +if (!question) +return 0 ; +/* * Check for a correct hidpp20 answer or the corresponding * error
drivers/hwmon/cgbc-hwmon.c +80 -49
192 lines not on this page · raw message
drivers/hwmon/gpio-fan.c +2 -2
@@ -68,7 +68,7 @@ static irqreturn_t fan_alarm_irq_handler(int irq, void *dev_id)schedule_work (&fan_data->alarm_work); -return IRQ_NONE ; +return IRQ_HANDLED ; } static ssize_t fan1_alarm_show(struct device *dev,
@@ -103,7 +103,7 @@ static int fan_alarm_init(struct gpio_fan_data *fan_data)irq_set_irq_type (alarm_irq,IRQ_TYPE_EDGE_BOTH );return devm_request_irq (dev, alarm_irq, fan_alarm_irq_handler, -IRQF_SHARED ,"GPIO fan alarm" , fan_data); +0 ,"GPIO fan alarm" , fan_data); }/*
drivers/hwmon/hp-wmi-sensors.c +24 -8
@@ -526,14 +526,12 @@ static int check_wobj(const union acpi_object *wobj,for (prop =0 ; prop <= last_prop; prop++) { type = elements[prop].type; valid_type = property_map[prop]; -if (type != valid_type) { -if (type ==ACPI_TYPE_BUFFER && - valid_type ==ACPI_TYPE_STRING && -is_raw_wmi_string (elements[prop].buffer.pointer, - elements[prop].buffer.length)) -continue ; +if (type ==ACPI_TYPE_BUFFER && +is_raw_wmi_string (elements[prop].buffer.pointer, + elements[prop].buffer.length)) + type =ACPI_TYPE_STRING ; +if (type != valid_type)return -EINVAL ; - } }return 0 ;
@@ -579,6 +577,7 @@ static int check_numeric_sensor_wobj(const union acpi_object *wobj,int prop =HP_WMI_PROPERTY_NAME ;acpi_object_type valid_type;union acpi_object *elements; +union acpi_object *element;u32 elem_count;int last_prop;bool is_new;
@@ -602,13 +601,20 @@ static int check_numeric_sensor_wobj(const union acpi_object *wobj, elem_count > HP_WMI_MAX_PROPERTIES)return -EINVAL ; - type = elements[HP_WMI_PROPERTY_SIZE ].type; + element = &elements[HP_WMI_PROPERTY_SIZE ]; + type = element->type;switch (type) {case ACPI_TYPE_INTEGER : is_new = true; last_prop =HP_WMI_PROPERTY_RATE_UNITS ;break ; +case ACPI_TYPE_BUFFER : +if (!is_raw_wmi_string (element->buffer.pointer, + element->buffer.length)) +return -EINVAL ; + fallthrough; +case ACPI_TYPE_STRING : is_new = false; last_prop =HP_WMI_PROPERTY_CURRENT_READING ;
@@ -631,6 +637,10 @@ static int check_numeric_sensor_wobj(const union acpi_object *wobj,for (i =0 ; i < elem_count && prop <= last_prop; i++, prop++) { type = elements[i].type; valid_type = hp_wmi_property_map[prop]; +if (type ==ACPI_TYPE_BUFFER && +is_raw_wmi_string (elements[i].buffer.pointer, + elements[i].buffer.length)) + type =ACPI_TYPE_STRING ;if (type != valid_type)return -EINVAL ;
@@ -651,6 +661,10 @@ static int check_numeric_sensor_wobj(const union acpi_object *wobj,/* PossibleStates[0] has already been type-checked. */ for (j =0 ; i +1 < elem_count && j +1 < count; j++) { type = elements[++i].type; +if (type ==ACPI_TYPE_BUFFER && +is_raw_wmi_string (elements[i].buffer.pointer, + elements[i].buffer.length)) + type =ACPI_TYPE_STRING ;if (type != valid_type)return -EINVAL ; }
@@ -1247,7 +1261,9 @@ static int fungible_show(struct seq_file *seqf, enum hp_wmi_property prop)break ;case HP_WMI_PROPERTY_CURRENT_STATE : +mutex_lock (&state->lock);seq_printf (seqf,"%s\n" , nsensor->current_state); +mutex_unlock (&state->lock);break ;case HP_WMI_PROPERTY_UNIT_MODIFIER :
drivers/hwmon/pmbus/pmbus.h +2 -1
@@ -242,6 +242,7 @@ enum pmbus_regs {/* * OPERATION */ +#define PB_OPERATION_CONTROL_V_SRC GENMASK(5, 4)#define PB_OPERATION_CONTROL_ON BIT(7)/*
@@ -386,7 +387,7 @@ enum pmbus_sensor_classes { };#define PMBUS_PAGES 32/* Per PMBus specification */ -#define PMBUS_PHASES 10/* Maximum number of phases per page */ +#define PMBUS_PHASES 16/* Maximum number of phases per page */ /* Functionality bit mask */ #define PMBUS_HAVE_VIN BIT(0)
drivers/hwmon/pmbus/tps53679.c +10 -1
@@ -187,7 +187,7 @@ static int tps53676_identify(struct i2c_client *client,return -EIO ;for (i =0 ; i <2 *TPS53676_MAX_PHASES ; i +=2 ) {if (buf[i +1 ] &0x80 ) { -if (buf[i] &0x08 ) +if (buf[i] &BIT (4 )) phases_b++;else phases_a++;
@@ -200,6 +200,15 @@ static int tps53676_identify(struct i2c_client *client,if (phases_b >0 ) { info->pages =2 ; info->phases[1 ] = phases_b; + }else { +/* +* pmbus_set_page() does not update the PAGE register on +* single-page devices, so select page 0 explicitly in case +* the boot firmware left the device on another page. +*/ + ret =i2c_smbus_write_byte_data (client,PMBUS_PAGE ,0 ); +if (ret <0 ) +return ret; }return 0 ; }
drivers/hwmon/pwm-fan.c +12 -1
@@ -484,7 +484,6 @@ static void pwm_fan_cleanup(void *__ctx) {struct pwm_fan_ctx *ctx = __ctx; -timer_delete_sync (&ctx->rpm_timer);if (ctx->pwm_shutdown) { ctx->enable_mode = pwm_enable_reg_enable;__set_pwm (ctx, ctx->pwm_shutdown);
@@ -495,6 +494,13 @@ static void pwm_fan_cleanup(void *__ctx) } } +static void pwm_fan_timer_cleanup (void *__ctx) +{ +struct pwm_fan_ctx *ctx = __ctx; + +timer_shutdown_sync (&ctx->rpm_timer); +} +static int pwm_fan_probe (struct platform_device *pdev) {struct thermal_cooling_device *cdev;
@@ -649,6 +655,10 @@ static int pwm_fan_probe(struct platform_device *pdev) }if (ctx->tach_count >0 ) { + ret =devm_add_action_or_reset (dev, pwm_fan_timer_cleanup, ctx); +if (ret) +return ret; + ctx->sample_start =ktime_get ();mod_timer (&ctx->rpm_timer, jiffies +HZ );
@@ -704,6 +714,7 @@ static void pwm_fan_shutdown(struct platform_device *pdev) {struct pwm_fan_ctx *ctx =platform_get_drvdata (pdev); +pwm_fan_timer_cleanup (ctx);pwm_fan_cleanup (ctx); }
drivers/hwmon/w83791d.c +1 -0
@@ -1415,6 +1415,7 @@ static void w83791d_remove(struct i2c_client *client)struct w83791d_data *data =i2c_get_clientdata (client);hwmon_device_unregister (data->hwmon_dev); +sysfs_remove_group (&client->dev.kobj, &w83791d_group_fanpwm45);sysfs_remove_group (&client->dev.kobj, &w83791d_group); }
drivers/hwmon/w83793.c +3 -1
@@ -1928,7 +1928,9 @@ static int w83793_probe(struct i2c_client *client)for (i =0 ; i <ARRAY_SIZE (w83793_temp); i++)device_remove_file (dev, &w83793_temp[i].dev_attr); free_mem: -kfree (data); +mutex_lock (&watchdog_data_mutex); +kref_put (&data->kref, w83793_release_resources); +mutex_unlock (&watchdog_data_mutex); exit:return err; }
drivers/i2c/busses/i2c-at91-core.c +3 -0
@@ -255,6 +255,7 @@ static int at91_twi_probe(struct platform_device *pdev)if (rc) {pm_runtime_disable (dev->dev);pm_runtime_set_suspended (dev->dev); +at91_twi_dma_release (dev);return rc; }
@@ -270,6 +271,8 @@ static void at91_twi_remove(struct platform_device *pdev)i2c_del_adapter (&dev->adapter); +at91_twi_dma_release (dev); +pm_runtime_disable (dev->dev);pm_runtime_set_suspended (dev->dev); }
drivers/i2c/busses/i2c-at91-master.c +11 -1
@@ -817,11 +817,21 @@ static int at91_twi_configure_dma(struct at91_twi_dev *dev, u32 phy_addr) error:if (ret != -EPROBE_DEFER )dev_info (dev->dev,"can't get DMA channel, continue without DMA support\n" ); +at91_twi_dma_release (dev); +return ret; +} + +void at91_twi_dma_release (struct at91_twi_dev *dev) +{ +struct at91_twi_dma *dma = &dev->dma; +if (dma->chan_rx)dma_release_channel (dma->chan_rx);if (dma->chan_tx)dma_release_channel (dma->chan_tx); -return ret; + dma->chan_rx =NULL ; + dma->chan_tx =NULL ; + dev->use_dma = false; } static int at91_init_twi_recovery_gpio(struct platform_device *pdev,
drivers/i2c/busses/i2c-at91.h +1 -0
@@ -172,6 +172,7 @@ void at91_twi_irq_restore(struct at91_twi_dev *dev);void at91_init_twi_bus (struct at91_twi_dev *dev);void at91_init_twi_bus_master (struct at91_twi_dev *dev); +void at91_twi_dma_release (struct at91_twi_dev *dev);int at91_twi_probe_master (struct platform_device *pdev,u32 phy_addr,struct at91_twi_dev *dev);
drivers/i2c/busses/i2c-imx.c +3 -0
@@ -1880,6 +1880,8 @@ static int i2c_imx_probe(struct platform_device *pdev) clk_notifier_unregister:clk_notifier_unregister (i2c_imx->clk, &i2c_imx->clk_change_nb); +if (i2c_imx->dma) +i2c_imx_dma_free (i2c_imx);free_irq (irq, i2c_imx); rpm_disable:pm_runtime_put_noidle (&pdev->dev);
@@ -1920,6 +1922,7 @@ static void i2c_imx_remove(struct platform_device *pdev)pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev); +pm_runtime_dont_use_autosuspend (&pdev->dev); }static int i2c_imx_runtime_suspend (struct device *dev)
drivers/i2c/busses/i2c-qcom-cci.c +11 -9
@@ -499,10 +499,14 @@ static const struct dev_pm_ops qcom_cci_pm = { SET_RUNTIME_PM_OPS(cci_suspend_runtime, cci_resume_runtime, NULL) }; +static void cci_put_of_node (void *data) +{ +of_node_put (data); +} +static int cci_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev; -struct device_node *child;struct resource *r;struct cci *cci;int ret, i;
@@ -518,7 +522,7 @@ static int cci_probe(struct platform_device *pdev)if (!cci->data)return -ENOENT ; -for_each_available_child_of_node (dev->of_node, child) { +for_each_available_child_of_node_scoped (dev->of_node, child) {struct cci_master *master;u32 idx;
@@ -539,6 +543,9 @@ static int cci_probe(struct platform_device *pdev) master->adap.algo = &cci_algo; master->adap.dev.parent = dev; master->adap.dev.of_node =of_node_get (child); + ret =devm_add_action_or_reset (dev, cci_put_of_node, child); +if (ret) +return ret; master->master = idx; master->cci = cci;
@@ -610,10 +617,8 @@ static int cci_probe(struct platform_device *pdev)continue ; ret =i2c_add_adapter (&cci->master[i].adap); -if (ret <0 ) { -of_node_put (cci->master[i].adap.dev.of_node); +if (ret <0 ) goto error_i2c; - } }return 0 ;
@@ -621,10 +626,8 @@ static int cci_probe(struct platform_device *pdev) error_i2c:for (--i ; i >=0 ; i--) { -if (cci->master[i].cci) { +if (cci->master[i].cci)i2c_del_adapter (&cci->master[i].adap); -of_node_put (cci->master[i].adap.dev.of_node); - } } disable_clocks:cci_disable_clocks (cci);
@@ -640,7 +643,6 @@ static void cci_remove(struct platform_device *pdev)for (i =0 ; i < cci->data->num_masters; i++) {if (cci->master[i].cci) {i2c_del_adapter (&cci->master[i].adap); -of_node_put (cci->master[i].adap.dev.of_node);cci_halt (cci, i); } }
drivers/i2c/i2c-atr.c +1 -0
@@ -864,6 +864,7 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc) ret =i2c_add_adapter (&chan->adap);if (ret) { + atr->adapter[chan_id] =NULL ;dev_err (dev,"failed to add atr-adapter %u (error=%d)\n" , chan_id, ret); goto err_free_alias_pool;
drivers/infiniband/core/iwpm_util.c +5 -4
@@ -314,10 +314,6 @@ struct iwpm_nlmsg_request *iwpm_get_nlmsg_request(__u32 nlmsg_seq,if (!nlmsg_request)return NULL ; -spin_lock_irqsave (&iwpm_nlmsg_req_lock, flags); -list_add_tail (&nlmsg_request->inprocess_list, &iwpm_nlmsg_req_list); -spin_unlock_irqrestore (&iwpm_nlmsg_req_lock, flags); -kref_init (&nlmsg_request->kref);kref_get (&nlmsg_request->kref); nlmsg_request->nlmsg_seq = nlmsg_seq;
@@ -326,6 +322,11 @@ struct iwpm_nlmsg_request *iwpm_get_nlmsg_request(__u32 nlmsg_seq, nlmsg_request->err_code =0 ;sema_init (&nlmsg_request->sem,1 );down (&nlmsg_request->sem); + +spin_lock_irqsave (&iwpm_nlmsg_req_lock, flags); +list_add_tail (&nlmsg_request->inprocess_list, &iwpm_nlmsg_req_list); +spin_unlock_irqrestore (&iwpm_nlmsg_req_lock, flags); +return nlmsg_request; }
drivers/infiniband/core/mad.c +2 -1
@@ -2059,6 +2059,8 @@ static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,int ret;INIT_LIST_HEAD (&mad_recv_wc->rmpp_list); +list_add (&mad_recv_wc->recv_buf.list, &mad_recv_wc->rmpp_list); + ret =ib_mad_enforce_security (mad_agent_priv, mad_recv_wc->wc->pkey_index);if (ret) {
@@ -2067,7 +2069,6 @@ static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,return ; } -list_add (&mad_recv_wc->recv_buf.list, &mad_recv_wc->rmpp_list);if (is_kernel_rmpp_data_response (mad_agent_priv, mad_recv_wc)) {spin_lock_irqsave (&mad_agent_priv->lock, flags); mad_send_wr =ib_find_send_mad (mad_agent_priv, mad_recv_wc);
drivers/infiniband/core/ucma.c +4 -3
@@ -1556,9 +1556,10 @@ static ssize_t ucma_process_join(struct ucma_file *file,mutex_lock (&ctx->mutex); ret =rdma_join_multicast (ctx->cm_id, (struct sockaddr *)&mc->addr, join_state, mc); -mutex_unlock (&ctx->mutex); -if (ret) +if (ret) { +mutex_unlock (&ctx->mutex); goto err_xa_erase; + } resp.id = mc->id; if (copy_to_user(u64_to_user_ptr(cmd->response),
@@ -1566,6 +1567,7 @@ static ssize_t ucma_process_join(struct ucma_file *file, ret = -EFAULT ; goto err_leave_multicast; } +mutex_unlock (&ctx->mutex);xa_store (&multicast_table, mc->id, mc,0 );
@@ -1573,7 +1575,6 @@ static ssize_t ucma_process_join(struct ucma_file *file,return 0 ; err_leave_multicast: -mutex_lock (&ctx->mutex);rdma_leave_multicast (ctx->cm_id, (struct sockaddr *) &mc->addr);mutex_unlock (&ctx->mutex);ucma_cleanup_mc_events (mc);
drivers/infiniband/core/verbs.c +8 -4
@@ -2051,11 +2051,13 @@ int ib_get_eth_speed(struct ib_device *dev, u32 port_num, u16 *speed, u8 *width)return -ENODEV ;rtnl_lock (); - rc =__ethtool_get_link_ksettings (netdev, &lksettings); -rtnl_unlock (); - -dev_put (netdev); +if (READ_ONCE (netdev->reg_state) !=NETREG_REGISTERED ) { +dev_put (netdev); +rtnl_unlock (); +return -ENODEV ; + } + rc =__ethtool_get_link_ksettings (netdev, &lksettings);if (!rc && lksettings.base.speed != (u32 )SPEED_UNKNOWN ) { netdev_speed = lksettings.base.speed; }else {
@@ -2064,6 +2066,8 @@ int ib_get_eth_speed(struct ib_device *dev, u32 port_num, u16 *speed, u8 *width)pr_warn ("%s speed is unknown, defaulting to %u\n" , netdev->name, netdev_speed); } +dev_put (netdev); +rtnl_unlock ();ib_get_width_and_speed (netdev_speed, lksettings.lanes, speed, width);
drivers/infiniband/hw/bnxt_re/main.c +8 -2
@@ -356,9 +356,13 @@ static int bnxt_re_update_qp1_tos_dscp(struct bnxt_re_dev *rdev)return bnxt_qplib_modify_qp (&rdev->qplib_res, &qp->qplib_qp); } -static void bnxt_re_init_dcb_wq (struct bnxt_re_dev *rdev) +static int bnxt_re_init_dcb_wq (struct bnxt_re_dev *rdev) { rdev->dcb_wq =create_singlethread_workqueue ("bnxt_re_dcb_wq" ); +if (!rdev->dcb_wq) +return -ENOMEM ; + +return 0 ; }static void bnxt_re_uninit_dcb_wq (struct bnxt_re_dev *rdev)
@@ -2340,7 +2344,9 @@ static int bnxt_re_dev_init(struct bnxt_re_dev *rdev, u8 op_type)bnxt_re_debugfs_add_pdev (rdev); -bnxt_re_init_dcb_wq (rdev); + rc =bnxt_re_init_dcb_wq (rdev); +if (rc) + goto fail;bnxt_re_net_register_async_event (rdev);if (!rdev->is_virtfn)
drivers/infiniband/hw/efa/efa_com.c +2 -5
@@ -750,7 +750,7 @@ int efa_com_admin_init(struct efa_com_dev *edev, aq->dmadev = edev->dmadev; aq->efa_dev = edev->efa_dev; -set_bit (EFA_AQ_STATE_POLLING_BIT , &aq->state); +efa_com_set_admin_polling_mode (edev, true);sema_init (&aq->avail_cmds, aq->depth);
@@ -768,8 +768,6 @@ int efa_com_admin_init(struct efa_com_dev *edev,if (err) goto err_destroy_sq; -efa_com_set_admin_polling_mode (edev, false); - err =efa_com_admin_init_aenq (edev, aenq_handlers);if (err) goto err_destroy_cq;
@@ -1158,7 +1156,7 @@ static void efa_com_destroy_eq(struct efa_com_dev *edev, err); } -static void efa_com_arm_eq (struct efa_com_dev *edev,struct efa_com_eq *eeq) +void efa_com_arm_eq (struct efa_com_dev *edev,struct efa_com_eq *eeq) {u32 val =0 ;
@@ -1247,7 +1245,6 @@ int efa_com_eq_init(struct efa_com_dev *edev, struct efa_com_eq *eeq, eeq->phase =1 ; eeq->depth = params.depth; eeq->cb = cb; -efa_com_arm_eq (edev, eeq);return 0 ;
drivers/infiniband/hw/efa/efa_com.h +1 -0
@@ -157,6 +157,7 @@ int efa_com_admin_init(struct efa_com_dev *edev,void efa_com_admin_destroy (struct efa_com_dev *edev);int efa_com_eq_init (struct efa_com_dev *edev,struct efa_com_eq *eeq,efa_eqe_handler cb,u16 depth,u8 msix_vec); +void efa_com_arm_eq (struct efa_com_dev *edev,struct efa_com_eq *eeq);void efa_com_eq_destroy (struct efa_com_dev *edev,struct efa_com_eq *eeq);int efa_com_dev_reset (struct efa_com_dev *edev,enum efa_regs_reset_reason_types reset_reason);
drivers/infiniband/hw/efa/efa_main.c +19 -14
@@ -300,28 +300,30 @@ static void efa_set_host_info(struct efa_dev *dev)static void efa_destroy_eq (struct efa_dev *dev,struct efa_eq *eq) { -efa_com_eq_destroy (&dev->edev, &eq->eeq);efa_free_irq (dev, &eq->irq); +efa_com_eq_destroy (&dev->edev, &eq->eeq); }static int efa_create_eq (struct efa_dev *dev,struct efa_eq *eq,u32 msix_vec) {int err; -efa_setup_comp_irq (dev, eq, msix_vec); - err =efa_request_irq (dev, &eq->irq); + err =efa_com_eq_init (&dev->edev, &eq->eeq, efa_process_eqe, + dev->dev_attr.max_eq_depth, msix_vec);if (err)return err; - err =efa_com_eq_init (&dev->edev, &eq->eeq, efa_process_eqe, - dev->dev_attr.max_eq_depth, msix_vec); +efa_setup_comp_irq (dev, eq, msix_vec); + err =efa_request_irq (dev, &eq->irq);if (err) - goto err_free_comp_irq; + goto err_destroy_eq; + +efa_com_arm_eq (&dev->edev, &eq->eeq);return 0 ; -err_free_comp_irq: -efa_free_irq (dev, &eq->irq); +err_destroy_eq: +efa_com_eq_destroy (&dev->edev, &eq->eeq);return err; }
@@ -611,18 +613,21 @@ static struct efa_dev *efa_probe_device(struct pci_dev *pdev) edev->aq.msix_vector_idx = dev->admin_msix_vector_idx; edev->aenq.msix_vector_idx = dev->admin_msix_vector_idx; - err =efa_set_mgmnt_irq (dev); + err =efa_com_admin_init (edev, &aenq_handlers);if (err) goto err_disable_msix; - err =efa_com_admin_init (edev, &aenq_handlers); + err =efa_set_mgmnt_irq (dev);if (err) - goto err_free_mgmnt_irq; + goto err_destroy_admin; + +efa_com_set_admin_polling_mode (edev, false);return dev; -err_free_mgmnt_irq: -efa_free_irq (dev, &dev->admin_irq); +err_destroy_admin: +efa_com_dev_reset (edev,EFA_REGS_RESET_INIT_ERR ); +efa_com_admin_destroy (edev); err_disable_msix:efa_disable_msix (dev); err_reg_read_destroy:
@@ -646,8 +651,8 @@ static void efa_remove_device(struct pci_dev *pdev, edev = &dev->edev;efa_com_dev_reset (edev, reset_reason); -efa_com_admin_destroy (edev);efa_free_irq (dev, &dev->admin_irq); +efa_com_admin_destroy (edev);efa_disable_msix (dev);efa_com_mmio_reg_read_destroy (edev);devm_iounmap (&pdev->dev, edev->reg_bar);
drivers/infiniband/hw/hfi1/file_ops.c +17 -6
@@ -326,6 +326,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)void *memvirt =NULL ;dma_addr_t memdma =0 ;u8 subctxt, mapio =0 , vmf =0 , type; +size_t memdmalen =0 ;ssize_t memlen =0 ;int ret =0 ;u16 ctxt;
@@ -371,7 +372,9 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma) mapio =1 ;break ;case PIO_CRED : { +struct credit_return_base *cr = &dd->cr_base[uctxt->sc->node];u64 cr_page_offset; +if (flags &VM_WRITE ) { ret = -EPERM ; goto done;
@@ -381,11 +384,18 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)* second or third page allocated for credit returns (if number * of enabled contexts > 64 and 128 respectively). */ - cr_page_offset = ((u64 )uctxt->sc->hw_free - - (u64 )dd->cr_base[uctxt->numa_id].va) & -PAGE_MASK ; - memvirt = dd->cr_base[uctxt->numa_id].va + cr_page_offset; - memdma = dd->cr_base[uctxt->numa_id].dma + cr_page_offset; + cr_page_offset = ((u64 )uctxt->sc->hw_free - (u64 )cr->va) & +PAGE_MASK ; +/* +* dma_mmap_coherent() describes the whole coherent buffer and +* selects the page within it with vma->vm_pgoff, so pass the +* base of the allocation and its length and let vm_pgoff pick +* the page. +*/ + vma->vm_pgoff = cr_page_offset >>PAGE_SHIFT ; + memvirt = cr->va; + memdma = cr->dma; + memdmalen =TXE_NUM_CONTEXTS *sizeof (struct credit_return ); memlen =PAGE_SIZE ; flags &= ~VM_MAYWRITE ; flags |=VM_DONTCOPY |VM_DONTEXPAND ;
@@ -567,7 +577,8 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma) ret =0 ; }else if (memdma) { ret =dma_mmap_coherent (&dd->pcidev->dev, vma, - memvirt, memdma, memlen); + memvirt, memdma, + memdmalen ? memdmalen : memlen); }else if (mapio) { ret = io_remap_pfn_range(vma, vma->vm_start, PFN_DOWN(memaddr),
drivers/infiniband/hw/irdma/verbs.c +1 -1
@@ -4165,7 +4165,7 @@ static int irdma_post_send(struct ib_qp *ibqp, stag_info.total_len = iwmr->ibmr.length; stag_info.reg_addr_pa = *palloc->level1.addr; stag_info.first_pm_pbl_index = palloc->level1.idx; - stag_info.local_fence = ib_wr->send_flags &IB_SEND_FENCE ; + stag_info.local_fence = true;if (iwmr->npages >IRDMA_MIN_PAGES_PER_FMR ) stag_info.chunk_size =1 ; err = irdma_sc_mr_fast_register(&iwqp->sc_qp, &stag_info,
drivers/infiniband/hw/mlx4/sysfs.c +4 -0
@@ -753,11 +753,13 @@ static int register_one_pkey_tree(struct mlx4_ib_dev *dev, int slave)kobject_put (p); }kobject_put (dev->dev_ports_parent[slave]); + dev->dev_ports_parent[slave] =NULL ; err_ports:kobject_put (dev->pkeys.device_parent[slave]);/* extra put for the device_parent create_and_add */ kobject_put (dev->pkeys.device_parent[slave]); + dev->pkeys.device_parent[slave] =NULL ; fail_dev:kobject_put (dev->iov_parent);
@@ -787,6 +789,8 @@ static void unregister_pkey_tree(struct mlx4_ib_dev *device)return ;for (slave = device->dev->persist->num_vfs; slave >=0 ; --slave) { +if (!device->pkeys.device_parent[slave]) +continue ;list_for_each_entry_safe (p, t, &device->pkeys.pkey_port_list[slave], entry) {
drivers/infiniband/hw/mlx5/main.c +2 -5
@@ -1669,11 +1669,8 @@ static int mlx5_ib_query_port_speed_rep(struct mlx5_ib_dev *dev, u32 port_num,struct mlx5_core_dev *mdev;u16 op_mod; -if (!dev->port[port_num -1 ].rep) { -mlx5_ib_warn (dev,"Representor doesn't exist for port %u\n" , - port_num); -return -EINVAL ; - } +if (!dev->port[port_num -1 ].rep) +return -ENODEV ; rep = dev->port[port_num -1 ].rep; mdev =mlx5_eswitch_get_core_dev (rep->esw);
drivers/infiniband/sw/rxe/rxe_mcast.c +36 -14
82 lines not on this page · raw message
drivers/infiniband/sw/rxe/rxe_mr.c +2 -1
@@ -33,7 +33,8 @@ int mr_check_range(struct rxe_mr *mr, u64 iova, size_t length)case IB_MR_TYPE_USER :case IB_MR_TYPE_MEM_REG :if (iova < mr->ibmr.iova || - iova + length > mr->ibmr.iova + mr->ibmr.length) { + length > mr->ibmr.length || + iova - mr->ibmr.iova > mr->ibmr.length - length) {rxe_dbg_mr (mr,"iova/length out of range\n" );return -EINVAL ; }
drivers/infiniband/sw/rxe/rxe_odp.c +11 -5
@@ -126,19 +126,23 @@ int rxe_odp_mr_init_user(struct rxe_dev *rxe, u64 start, u64 length, }static inline bool rxe_check_pagefault (struct ib_umem_odp *umem_odp,u64 iova, -int length) +int length,bool write) {bool need_fault = false; +u64 access =HMM_PFN_VALID ;u64 addr;int idx; +if (write) + access |=HMM_PFN_WRITE ; + addr = iova & (~(BIT (umem_odp->page_shift) -1 ));/* Skim through all pages that are to be accessed. */ while (addr < iova + length) { idx = (addr -ib_umem_start (umem_odp)) >> umem_odp->page_shift; -if (!(umem_odp->map.pfn_list[idx] &HMM_PFN_VALID )) { +if ((umem_odp->map.pfn_list[idx] & access) != access) { need_fault = true;break ; }
@@ -161,6 +165,7 @@ static unsigned long rxe_odp_iova_to_page_offset(struct ib_umem_odp *umem_odp, ustatic int rxe_odp_map_range_and_lock (struct rxe_mr *mr,u64 iova,int length,u32 flags) {struct ib_umem_odp *umem_odp =to_ib_umem_odp (mr->umem); +bool write = !(flags &RXE_PAGEFAULT_RDONLY );bool need_fault;int err;
@@ -169,7 +174,7 @@ static int rxe_odp_map_range_and_lock(struct rxe_mr *mr, u64 iova, int length, umutex_lock (&umem_odp->umem_mutex); - need_fault =rxe_check_pagefault (umem_odp, iova, length); + need_fault =rxe_check_pagefault (umem_odp, iova, length, write);if (need_fault) {mutex_unlock (&umem_odp->umem_mutex);
@@ -179,7 +184,7 @@ static int rxe_odp_map_range_and_lock(struct rxe_mr *mr, u64 iova, int length, uif (err <0 )return err; - need_fault =rxe_check_pagefault (umem_odp, iova, length); + need_fault =rxe_check_pagefault (umem_odp, iova, length, write);if (need_fault) {mutex_unlock (&umem_odp->umem_mutex);return -EFAULT ;
@@ -341,8 +346,9 @@ int rxe_odp_flush_pmem_iova(struct rxe_mr *mr, u64 iova,int err;u8 *va; +/* A flush never modifies memory; read-only access suffices. */ err =rxe_odp_map_range_and_lock (mr, iova, length, -RXE_PAGEFAULT_DEFAULT ); +RXE_PAGEFAULT_RDONLY );if (err)return err;
drivers/infiniband/sw/rxe/rxe_verbs.c +7 -6
@@ -1346,19 +1346,20 @@ static struct ib_mr *rxe_rereg_user_mr(struct ib_mr *ibmr, int flags,if (err)return ERR_PTR (err); +if ((flags &IB_MR_REREG_ACCESS ) && + (access & ~RXE_ACCESS_SUPPORTED_MR )) { +rxe_err_mr (mr,"access = %#x not supported\n" , access); +return ERR_PTR (-EOPNOTSUPP ); + } +if (flags &IB_MR_REREG_PD ) {rxe_put (old_pd);rxe_get (pd); mr->ibmr.pd = ibpd; } -if (flags &IB_MR_REREG_ACCESS ) { -if (access & ~RXE_ACCESS_SUPPORTED_MR ) { -rxe_err_mr (mr,"access = %#x not supported\n" , access); -return ERR_PTR (-EOPNOTSUPP ); - } +if (flags &IB_MR_REREG_ACCESS ) mr->access = access; - }return NULL ; }
drivers/infiniband/sw/siw/siw_cm.c +5 -2
@@ -1669,9 +1669,12 @@ int siw_accept(struct iw_cm_id *id, struct iw_cm_conn_param *params)SIW_QP_ATTR_STATE |SIW_QP_ATTR_LLP_HANDLE |SIW_QP_ATTR_ORD |SIW_QP_ATTR_IRD | SIW_QP_ATTR_MPA); +if (rv) { + qp->cep =NULL ; +siw_cep_put (cep); + goto error_unlock; + }up_write (&qp->state_lock); -if (rv) - goto error;siw_dbg_cep (cep,"[QP %u]: send mpa reply, %d byte pdata\n" ,qp_id (qp), params->private_data_len);
drivers/infiniband/sw/siw/siw_qp_rx.c +1 -1
@@ -1079,7 +1079,7 @@ static int siw_get_hdr(struct siw_rx_stream *srx)if (iwarp_pktinfo[opcode].hdr_len >sizeof (struct iwarp_ctrl_tagged )) {int hdrlen = iwarp_pktinfo[opcode].hdr_len; - bytes =min_t (int, hdrlen -MIN_DDP_HDR , srx->skb_new); + bytes =min_t (int, hdrlen - srx->fpdu_part_rcvd, srx->skb_new);skb_copy_bits (skb, srx->skb_offset, (char *)c_hdr + srx->fpdu_part_rcvd, bytes);
drivers/infiniband/ulp/ipoib/ipoib.h +7 -0
@@ -87,6 +87,7 @@ enum {IPOIB_FLAG_INITIALIZED =1 ,IPOIB_FLAG_ADMIN_UP =2 ,IPOIB_PKEY_ASSIGNED =3 , +IPOIB_FLAG_MCAST_FLUSH =4 ,IPOIB_FLAG_SUBINTERFACE =5 ,IPOIB_STOP_REAPER =7 , IPOIB_FLAG_ADMIN_CM = 9,
@@ -414,6 +415,12 @@ struct ipoib_dev_priv {const struct net_device_ops *rn_ops; }; +static inline bool ipoib_mcast_allowed (struct ipoib_dev_priv *priv) +{ +return test_bit (IPOIB_FLAG_OPER_UP , &priv->flags) && + !test_bit (IPOIB_FLAG_MCAST_FLUSH , &priv->flags); +} +struct ipoib_ah {struct net_device *dev;struct ib_ah *ah;
drivers/infiniband/ulp/ipoib/ipoib_ib.c +7 -5
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_multicast.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iser_initiator.c +11 -5
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/isert/ib_isert.c +22 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/isert/ib_isert.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/mmc/host/sdhci_am654.c +28 -15
43 lines not on this page · raw message
drivers/net/ethernet/broadcom/genet/bcmgenet.c +150 -89
239 lines not on this page · raw message
drivers/net/ethernet/broadcom/genet/bcmgenet.h +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_ptp.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c +33 -9
42 lines not on this page · raw message
drivers/net/ethernet/meta/fbnic/fbnic_txrx.h +7 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/socionext/netsec.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/hwif.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +9 -10
Lines of this file are not shown. View the raw message.
drivers/net/phy/mediatek/mtk-phy-lib.c +17 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/Kconfig +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c +11 -119
130 lines not on this page · raw message
drivers/net/wireless/intel/ipw2x00/libipw_rx.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/eeprom.c +17 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas_tf/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/cfg80211.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/pcie.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/scan.c +41 -13
54 lines not on this page · raw message
drivers/net/wireless/marvell/mwifiex/util.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/cfg80211.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/wlan.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/tx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rsi/rsi_91x_mgmt.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/mac80211_hwsim.c +24 -15
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/virt_wifi.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/phy/mediatek/phy-mtk-hdmi-mt8195.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/phy/renesas/phy-rcar-gen3-usb2.c +265 -45
310 lines not on this page · raw message
drivers/scsi/fnic/fdls_disc.c +371 -359
730 lines not on this page · raw message
drivers/scsi/fnic/fip.c +55 -64
119 lines not on this page · raw message
drivers/scsi/fnic/fnic.h +43 -36
79 lines not on this page · raw message
drivers/scsi/fnic/fnic_fcs.c +108 -58
166 lines not on this page · raw message
drivers/scsi/fnic/fnic_isr.c +24 -17
41 lines not on this page · raw message
drivers/scsi/fnic/fnic_main.c +61 -28
89 lines not on this page · raw message
drivers/scsi/fnic/fnic_scsi.c +105 -159
264 lines not on this page · raw message
fs/btrfs/uuid-tree.c +43 -77
120 lines not on this page · raw message
fs/btrfs/verity.c +26 -21
47 lines not on this page · raw message
fs/btrfs/volumes.c +55 -98
153 lines not on this page · raw message
fs/smb/client/sess.c +64 -42
106 lines not on this page · raw message
fs/smb/client/smb2ops.c +38 -13
51 lines not on this page · raw message
fs/smb/server/smb2pdu.c +59 -30
89 lines not on this page · raw message
include/sound/soc_sdw_utils.h +26 -16
42 lines not on this page · raw message
kernel/signal.c +85 -32
117 lines not on this page · raw message
mm/huge_memory.c +64 -22
86 lines not on this page · raw message
net/atm/pppoatm.c +17 -25
42 lines not on this page · raw message
net/bluetooth/coredump.c +44 -21
65 lines not on this page · raw message
net/bluetooth/iso.c +42 -11
53 lines not on this page · raw message
net/core/neighbour.c +34 -22
56 lines not on this page · raw message
net/mac80211/cfg.c +47 -16
63 lines not on this page · raw message
net/mac80211/iface.c +71 -8
79 lines not on this page · raw message
net/mac80211/michael.c deleted +0 -83
83 lines not on this page · raw message
net/mac80211/tx.c +68 -39
107 lines not on this page · raw message
net/netfilter/nf_nat_core.c +30 -16
46 lines not on this page · raw message
net/wireless/core.c +75 -51
126 lines not on this page · raw message
net/wireless/michael-mic.c new file +86 -0
86 lines not on this page · raw message
net/wireless/scan.c +36 -7
43 lines not on this page · raw message
net/xfrm/xfrm_input.c +42 -23
65 lines not on this page · raw message
security/keys/encrypted-keys/encrypted.c +14 -6
Lines of this file are not shown. View the raw message.
security/keys/trusted-keys/trusted_tpm2.c +7 -5
Lines of this file are not shown. View the raw message.
security/selinux/hooks.c +133 -17
150 lines not on this page · raw message
sound/soc/amd/acp/acp-sdw-legacy-mach.c +27 -6
Lines of this file are not shown. View the raw message.
sound/soc/sdw_utils/soc_sdw_bridge_cs35l56.c +1 -3
Lines of this file are not shown. View the raw message.
sound/soc/sdw_utils/soc_sdw_utils.c +40 -19
59 lines not on this page · raw message
sound/usb/6fire/comm.c +28 -14
42 lines not on this page · raw message
sound/usb/6fire/midi.c +30 -13
43 lines not on this page · raw message
sound/usb/6fire/pcm.c +84 -54
138 lines not on this page · raw message
tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/audit.h +87 -34
121 lines not on this page · raw message
tools/testing/selftests/landlock/audit_test.c +1 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/fs_test.c +1775 -99
1,874 lines not on this page · raw message
tools/testing/selftests/landlock/net_test.c +168 -1
169 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.