Skip to contentSkip to conversation

Linux 6.18.20

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 25 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.18.20 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/netlink/specs/net_shaper.yaml                      |   12 
 Makefile                                                         |    2 
 arch/arm64/boot/dts/renesas/r9a09g057.dtsi                       |   37 -
 arch/arm64/boot/dts/renesas/r9a09g077.dtsi                       |    4 
 arch/arm64/boot/dts/renesas/r9a09g087.dtsi                       |    4 
 arch/arm64/boot/dts/renesas/rzg3s-smarc-som.dtsi                 |    2 
 arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi            |    1 
 arch/arm64/boot/dts/renesas/rzv2-evk-cn15-sd.dtso                |    1 
 arch/arm64/kernel/rsi.c                                          |    3 
 arch/loongarch/include/asm/uaccess.h                             |   14 
 arch/loongarch/kernel/inst.c                                     |   21 
 arch/parisc/kernel/cache.c                                       |    4 
 arch/x86/events/core.c                                           |    3 
 arch/x86/events/intel/core.c                                     |   31 -
 arch/x86/kernel/apic/x2apic_uv_x.c                               |   18 
 drivers/acpi/acpi_processor.c                                    |   15 
 drivers/acpi/acpica/acpredef.h                                   |    2 
 drivers/ata/libata-core.c                                        |    3 
 drivers/ata/libata-scsi.c                                        |    2 
 drivers/base/power/runtime.c                                     |    1 
 drivers/block/ublk_drv.c                                         |   12 
 drivers/bluetooth/btqca.c                                        |    2 
 drivers/cache/ax45mp_cache.c                                     |    4 
 drivers/cache/starfive_starlink_cache.c                          |    4 
 drivers/char/ipmi/ipmi_msghandler.c                              |  142 +++-
 drivers/crypto/atmel-sha204a.c                                   |    5 
 drivers/crypto/ccp/sev-dev.c                                     |    4 
 drivers/crypto/padlock-sha.c                                     |    7 
 drivers/firewire/net.c                                           |    5 
 drivers/firmware/arm_ffa/driver.c                                |    8 
 drivers/firmware/arm_scmi/notify.c                               |    4 
 drivers/firmware/arm_scpi.c                                      |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c                      |    4 
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c                            |   21 
 drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c                          |    9 
 drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c                          |    3 
 drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c                          |    3 
 drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c                        |    3 
 drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c                        |    3 
 drivers/gpu/drm/amd/amdgpu/mmhub_v4_1_0.c                        |    3 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                |    4 
 drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c                 |    8 
 drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c   |    3 
 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c                       |    4 
 drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c                     |    2 
 drivers/gpu/drm/drm_file.c                                       |    5 
 drivers/gpu/drm/drm_mode_config.c                                |    9 
 drivers/gpu/drm/i915/display/intel_display.c                     |    2 
 drivers/gpu/drm/i915/display/intel_display_power_well.c          |    2 
 drivers/gpu/drm/i915/display/intel_display_types.h               |    1 
 drivers/gpu/drm/i915/display/intel_dmc.c                         |    3 
 drivers/gpu/drm/i915/display/intel_psr.c                         |   16 
 drivers/gpu/drm/i915/display/intel_vdsc.c                        |   23 
 drivers/gpu/drm/i915/display/intel_vdsc.h                        |    3 
 drivers/gpu/drm/i915/display/intel_vdsc_regs.h                   |   12 
 drivers/gpu/drm/i915/display/intel_vrr.c                         |   17 
 drivers/gpu/drm/i915/gt/intel_engine_cs.c                        |    3 
 drivers/gpu/drm/imagination/pvr_device.c                         |   17 
 drivers/gpu/drm/imagination/pvr_power.c                          |   22 
 drivers/gpu/drm/radeon/si_dpm.c                                  |    4 
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                              |    3 
 drivers/gpu/drm/xe/xe_ggtt.c                                     |   10 
 drivers/gpu/drm/xe/xe_ggtt_types.h                               |    5 
 drivers/gpu/drm/xe/xe_guc_ct.c                                   |    1 
 drivers/gpu/drm/xe/xe_oa.c                                       |    7 
 drivers/gpu/drm/xe/xe_sync.c                                     |    6 
 drivers/gpu/drm/xe/xe_vm_madvise.c                               |    3 
 drivers/hid/bpf/hid_bpf_dispatch.c                               |    2 
 drivers/hwmon/max6639.c                                          |   10 
 drivers/hwmon/pmbus/ina233.c                                     |    2 
 drivers/hwmon/pmbus/isl68137.c                                   |    7 
 drivers/hwmon/pmbus/mp2869.c                                     |   35 -
 drivers/hwmon/pmbus/mp2975.c                                     |    2 
 drivers/i2c/busses/i2c-cp2615.c                                  |    3 
 drivers/i2c/busses/i2c-fsi.c                                     |    1 
 drivers/i2c/busses/i2c-pxa.c                                     |   17 
 drivers/iommu/intel/dmar.c                                       |    3 
 drivers/iommu/intel/svm.c                                        |   12 
 drivers/iommu/iommu-sva.c                                        |   12 
 drivers/irqchip/irq-riscv-rpmi-sysmsi.c                          |    1 
 drivers/mmc/host/sdhci-pci-gli.c                                 |    9 
 drivers/mmc/host/sdhci.c                                         |    9 
 drivers/mtd/nand/raw/brcmnand/brcmnand.c                         |    6 
 drivers/mtd/nand/raw/cadence-nand-controller.c                   |    2 
 drivers/mtd/nand/raw/nand_base.c                                 |   14 
 drivers/mtd/nand/raw/pl35x-nand-controller.c                     |    3 
 drivers/mtd/parsers/redboot.c                                    |    6 
 drivers/net/bonding/bond_debugfs.c                               |   16 
 drivers/net/bonding/bond_main.c                                  |    8 
 drivers/net/dsa/bcm_sf2.c                                        |    8 
 drivers/net/ethernet/airoha/airoha_eth.c                         |    1 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                        |    2 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                        |    2 
 drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c               |    2 
 drivers/net/ethernet/cadence/macb_main.c                         |  161 ++++-
 drivers/net/ethernet/cadence/macb_ptp.c                          |    4 
 drivers/net/ethernet/intel/iavf/iavf_main.c                      |    9 
 drivers/net/ethernet/intel/igc/igc.h                             |    2 
 drivers/net/ethernet/intel/igc/igc_main.c                        |   14 
 drivers/net/ethernet/intel/igc/igc_ptp.c                         |   33 +
 drivers/net/ethernet/intel/libie/fwlog.c                         |   49 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c                  |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h         |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c |   50 -
 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c                |   23 
 drivers/net/ethernet/microsoft/mana/hw_channel.c                 |    6 
 drivers/net/netconsole.c                                         |    2 
 drivers/net/netdevsim/netdev.c                                   |    5 
 drivers/net/usb/aqc111.c                                         |   12 
 drivers/net/usb/cdc_ncm.c                                        |   10 
 drivers/net/wireless/ath/ath9k/channel.c                         |    6 
 drivers/net/wireless/mediatek/mt76/scan.c                        |    4 
 drivers/net/wireless/ti/wlcore/tx.c                              |    2 
 drivers/net/wireless/virtual/mac80211_hwsim.c                    |    1 
 drivers/nfc/nxp-nci/i2c.c                                        |    4 
 drivers/nvdimm/bus.c                                             |    5 
 drivers/pmdomain/bcm/bcm2835-power.c                             |   12 
 drivers/soc/fsl/qbman/qman.c                                     |   24 
 drivers/soc/fsl/qe/qmc.c                                         |    4 
 drivers/soc/microchip/mpfs-sys-controller.c                      |   13 
 drivers/soc/rockchip/grf.c                                       |    1 
 drivers/spi/spi-amlogic-spifc-a4.c                               |   46 -
 drivers/spi/spi-amlogic-spisg.c                                  |   12 
 drivers/spi/spi.c                                                |   25 
 drivers/tee/tee_shm.c                                            |   27 
 drivers/tty/serial/8250/8250.h                                   |   25 
 drivers/tty/serial/8250/8250_dma.c                               |   15 
 drivers/tty/serial/8250/8250_dw.c                                |  296 +++++++---
 drivers/tty/serial/8250/8250_pci.c                               |   17 
 drivers/tty/serial/8250/8250_port.c                              |   75 +-
 drivers/tty/serial/serial_core.c                                 |    5 
 drivers/tty/serial/uartlite.c                                    |    1 
 drivers/tty/vt/vt.c                                              |    8 
 drivers/usb/serial/f81232.c                                      |   77 +-
 drivers/xen/privcmd.c                                            |   73 ++
 fs/binfmt_elf_fdpic.c                                            |    6 
 fs/btrfs/tree-checker.c                                          |    2 
 fs/btrfs/tree-log.c                                              |    6 
 fs/nfsd/export.c                                                 |   63 +-
 fs/nfsd/export.h                                                 |    7 
 fs/nfsd/nfs4xdr.c                                                |    9 
 fs/nfsd/nfsctl.c                                                 |   22 
 fs/nfsd/state.h                                                  |   17 
 fs/nsfs.c                                                        |   13 
 fs/smb/client/cifsfs.c                                           |    7 
 fs/smb/client/cifsproto.h                                        |    1 
 fs/smb/client/connect.c                                          |    4 
 fs/smb/client/file.c                                             |   11 
 fs/smb/client/misc.c                                             |   42 +
 fs/smb/client/trace.h                                            |    2 
 fs/smb/server/auth.c                                             |   22 
 fs/smb/server/smb2pdu.c                                          |   17 
 fs/tests/exec_kunit.c                                            |    3 
 include/linux/auxvec.h                                           |    2 
 include/linux/console_struct.h                                   |    1 
 include/linux/etherdevice.h                                      |    3 
 include/linux/if_ether.h                                         |    3 
 include/linux/io_uring_types.h                                   |    3 
 include/linux/netdevice.h                                        |    6 
 include/linux/ns_common.h                                        |    2 
 include/linux/security.h                                         |    1 
 include/linux/serial_8250.h                                      |    1 
 include/net/mac80211.h                                           |    4 
 include/net/netfilter/nf_tables.h                                |    2 
 include/net/sch_generic.h                                        |   33 +
 include/net/udp_tunnel.h                                         |    2 
 io_uring/kbuf.c                                                  |   14 
 io_uring/poll.c                                                  |    9 
 kernel/crash_dump_dm_crypt.c                                     |    4 
 kernel/nscommon.c                                                |    6 
 kernel/sched/ext.c                                               |  132 +++-
 kernel/sched/idle.c                                              |   30 -
 kernel/trace/ring_buffer.c                                       |    2 
 kernel/trace/trace.c                                             |   36 -
 kernel/trace/trace_functions_graph.c                             |   15 
 lib/bootconfig.c                                                 |    3 
 mm/huge_memory.c                                                 |   12 
 mm/rmap.c                                                        |   21 
 net/batman-adv/bat_iv_ogm.c                                      |    3 
 net/bluetooth/hci_conn.c                                         |    4 
 net/bluetooth/hci_sync.c                                         |    2 
 net/bluetooth/hidp/core.c                                        |   16 
 net/bluetooth/l2cap_core.c                                       |   51 +
 net/bluetooth/mgmt.c                                             |    7 
 net/bluetooth/smp.c                                              |    2 
 net/bridge/br_cfm.c                                              |    4 
 net/ethernet/eth.c                                               |    9 
 net/ipv4/icmp.c                                                  |    4 
 net/ipv4/ip_gre.c                                                |    3 
 net/mac80211/cfg.c                                               |   12 
 net/mac80211/chan.c                                              |    6 
 net/mac80211/debugfs.c                                           |   14 
 net/mac80211/mesh.c                                              |    3 
 net/mac80211/sta_info.c                                          |    7 
 net/mac80211/tx.c                                                |    4 
 net/mac802154/iface.c                                            |    4 
 net/mpls/af_mpls.c                                               |    1 
 net/mptcp/pm_kernel.c                                            |    2 
 net/netfilter/nf_bpf_link.c                                      |    2 
 net/netfilter/nf_conntrack_h323_asn1.c                           |    4 
 net/netfilter/nf_conntrack_netlink.c                             |   26 
 net/netfilter/nf_conntrack_sip.c                                 |    6 
 net/netfilter/nf_tables_api.c                                    |    5 
 net/netfilter/nfnetlink_osf.c                                    |   13 
 net/netfilter/nft_ct.c                                           |    4 
 net/netfilter/nft_dynset.c                                       |   10 
 net/netfilter/xt_CT.c                                            |    4 
 net/netfilter/xt_time.c                                          |    4 
 net/phonet/af_phonet.c                                           |    5 
 net/rose/af_rose.c                                               |    5 
 net/sched/sch_generic.c                                          |   27 
 net/sched/sch_ingress.c                                          |   14 
 net/sched/sch_teql.c                                             |    7 
 net/shaper/shaper.c                                              |  158 +++--
 net/shaper/shaper_nl_gen.c                                       |   12 
 net/shaper/shaper_nl_gen.h                                       |    5 
 net/smc/af_smc.c                                                 |   23 
 net/smc/smc.h                                                    |    5 
 net/smc/smc_close.c                                              |    2 
 net/sunrpc/cache.c                                               |   26 
 net/wireless/pmsr.c                                              |    1 
 security/security.c                                              |    1 
 tools/bootconfig/main.c                                          |    7 
 tools/testing/selftests/hid/progs/hid_bpf_helpers.h              |   12 
 224 files changed, 2173 insertions(+), 958 deletions(-)

AlanSong-oc (1):
crypto: padlock-sha - Disable for Zhaoxin processor

Alessio Belle (2):
drm/imagination: Fix deadlock in soft reset sequence drm/imagination: Synchronize interrupts before suspending the GPU

Alex Deucher (9):
drm/amdgpu/gmc9.0: add bounds checking for cid drm/amdgpu/mmhub2.0: add bounds checking for cid drm/amdgpu/mmhub2.3: add bounds checking for cid drm/amdgpu/mmhub3.0.1: add bounds checking for cid drm/amdgpu/mmhub3.0.2: add bounds checking for cid drm/amdgpu/mmhub3.0: add bounds checking for cid drm/amdgpu/mmhub4.1.0: add bounds checking for cid drm/radeon: apply state adjust rules to some additional HAINAN vairants drm/amdgpu: apply state adjust rules to some additional HAINAN vairants

Anas Iqbal (1):
net: dsa: bcm_sf2: fix missing clk_disable_unprepare() in error paths

Andrei Vagin (1):
binfmt_elf_fdpic: fix AUXV size calculation for ELF_HWCAP3 and ELF_HWCAP4

Andy Nguyen (1):
drm/amd: fix dcn 2.01 check

Ashutosh Dixit (1):
drm/xe/oa: Allow reading after disabling OA stream

Bart Van Assche (1):
PM: runtime: Fix a race condition related to device removal

Benjamin Tissoires (2):
selftests/hid: fix compilation when bpf_wq and hid_device are not exported
HID: bpf: prevent buffer overflow in hid_hw_request

Breno Leitao (2):
netconsole: fix sysdata_release_enabled_show checking wrong flag perf/x86: Move event pointer setup earlier in x86_pmu_enable()

Chen Ni (2):
mtd: rawnand: cadence: Fix error check for dma_alloc_coherent() in cadence_nand_init()
soc: fsl: cpm1: qmc: Fix error check for devm_ioremap_resource() in qmc_qe_init_resources()

Chris Down (1):
mm/huge_memory: fix use of NULL folio in move_pages_huge_pmd()

Christian Brauner (1):
nsfs: tighten permission checks for ns iteration ioctls

Christian Eggers (3):
Bluetooth: LE L2CAP: Disconnect if received packet's SDU exceeds IMTU
Bluetooth: LE L2CAP: Disconnect if sum of payload sizes exceed SDU
Bluetooth: SMP: make SM/PER/KDU/BI-04-C happy

Christophe JAILLET (1):
i2c: fsi: Fix a potential leak in fsi_i2c_probe()

Chuck Lever (2):
NFSD: Defer sub-object cleanup in export put callbacks
NFSD: Hold net reference for the lifetime of /proc/fs/nfs/exports fd

Claudiu Beznea (1):
arm64: dts: renesas: rzg3s-smarc-som: Set bypass for Versa3 PLL2

Corey Minyard (2):
ipmi: Consolidate the run to completion checking for xmit msgs lock ipmi:msghandler: Handle error returns from the SMI sender

Cosmin Ratiu (1):
net/mlx5: qos: Restrict RTNL area to avoid a lock cycle

Cristian Marussi (1):
firmware: arm_scmi: Fix NULL dereference on notify error path

Damien Le Moal (2):
ata: libata-core: disable LPM on ADATA SU680 SSD
ata: libata-scsi: report correct sense field pointer in ata_scsiop_maint_in()

Daniel Borkmann (1):
clsact: Fix use-after-free in init/destroy rollback asymmetry

Dapeng Mi (1):
perf/x86/intel: Add missing branch counters constraint apply

Dev Jain (1):
mm/rmap: fix incorrect pte restoration for lazyfree folios

Dipayaan Roy (1):
net: mana: fix use-after-free in mana_hwc_destroy_channel() by reordering teardown

Dmitry Baryshkov (1):
Bluetooth: qca: fix ROM version reading on WCN3998 chips

Eric Dumazet (1):
bonding: prevent potential infinite loop in bond_header_parse()

Fabrizio Castro (1):

      arm64: dts: renesas: r9a09g057: Remove wdt{0,2,3} nodes

Fedor Pchelkin (2):
net: macb: fix use-after-free access to PTP clock
net: macb: fix uninitialized rx_fs_lock

Felix Fietkau (2):
mac80211: fix crash in ieee80211_chan_bw_change for AP_VLAN stations
wifi: mac80211: always free skb on ieee80211_tx_prepare_skb() failure

Felix Gu (6):
cache: starfive: fix device node leak in starlink_cache_init()
cache: ax45mp: Fix device node reference leak in ax45mp_cache_init()
firmware: arm_scpi: Fix device_node reference leak in probe path irqchip/riscv-rpmi-sysmsi: Fix mailbox channel leak in rpmi_sysmsi_probe()
spi: amlogic: spifc-a4: Remove redundant clock cleanup
spi: amlogic-spisg: Fix memory leak in aml_spisg_probe()

Filipe Manana (1):
btrfs: log new dentries when logging parent dir of a conflicting inode

Finn Thain (1):
mtd: Avoid boot crash in RedBoot partition table parser

Florian Westphal (1):
netfilter: bpf: defer hook memory release until rcu readers are done

Gabor Juhos (1):
i2c: pxa: defer reset on Armada 3700 when recovery is used

Greg Kroah-Hartman (1):

      Linux 6.18.20

Guanghui Feng (1):
iommu/vt-d: Fix intel iommu iotlb sync hardlockup and retry

Guenter Roeck (3):
crypto: ccp - Fix leaking the same page twice
wifi: wlcore: Return -ENOMEM instead of -EAGAIN if there is not enough headroom
hwmon: (max6639) Fix pulses-per-revolution implementation

Helge Deller (1):
parisc: Flush correct cache in cacheflush() syscall

Hyunwoo Kim (4):
bridge: cfm: Fix race condition in peer_mep deletion
netfilter: ctnetlink: fix use-after-free in ctnetlink_dump_exp_ct()
ksmbd: fix use-after-free of share_conf in compound request
ksmbd: fix use-after-free in durable v2 replay of active file handles

Ian Forbes (1):
drm/vmwgfx: Don't overwrite KMS surface dirty tracker

Ian Ray (1):
NFC: nxp-nci: allow GPIOs to sleep

Ilpo Järvinen (7):
serial: 8250: Protect LCR write in shutdown
serial: 8250_dw: Avoid unnecessary LCR writes
serial: 8250: Add serial8250_handle_irq_locked()
serial: 8250_dw: Rework dw8250_handle_irq() locking and IIR handling
serial: 8250_dw: Rework IIR_NO_INT handling to stop interrupt storm
serial: 8250: Add late synchronize_irq() to shutdown to handle DW UART BUSY
serial: 8250_dw: Ensure BUSY is deasserted

Imre Deak (1):
drm/i915/dmc: Fix an unlikely NULL pointer deference at probe

Ira Weiny (1):
nvdimm/bus: Fix potential use after free in asynchronous initialization

Jakub Kicinski (2):
net: shaper: protect late read accesses to the hierarchy
net: shaper: protect from late creation of hierarchy

Jamal Hadi Salim (1):
net/sched: teql: Fix double-free in teql_master_xmit

Jeff Layton (2):
nfsd: fix heap overflow in NFSv4.0 LOCK replay cache
sunrpc: fix cache_request leak in cache_release

Jenny Guanni Qu (3):
netfilter: nf_conntrack_h323: fix OOB read in decode_int() CONS case
netfilter: xt_time: use unsigned int for monthday bit shift
netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()

Jens Axboe (3):
io_uring/poll: fix multishot recv missing EOF on wakeup race io_uring/kbuf: fix missing BUF_MORE for incremental buffers at EOF io_uring/kbuf: propagate BUF_MORE through early buffer commit path

Jesse.Zhang (1):
drm/amdgpu: Limit BO list entry count to prevent resource exhaustion

Ji-Ze Hong (Peter Hong) (1):
USB: serial: f81232: fix incomplete serial port generation

Jianbo Liu (2):
net/mlx5e: Prevent concurrent access to IPSec ASO context net/mlx5e: Fix race condition during IPSec ESN update

Jiayuan Chen (3):
serial: core: fix infinite loop in handle_tx() for PORT_UNKNOWN net/rose: fix NULL pointer dereference in rose_transmit_link on reconnect net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()

Johan Hovold (3):
spi: fix use-after-free on controller registration failure
spi: fix statistics allocation
i2c: cp2615: fix serial string NULL-deref at probe

Johannes Berg (1):
wifi: mac80211: remove keys after disabling beaconing

Jonas Karlman (1):
drm/bridge: dw-hdmi-qp: fix multi-channel audio output

Josh Law (2):
lib/bootconfig: check xbc_init_node() return in override path tools/bootconfig: fix fd leak in load_xbc_file() on fstat failure

Jouni Högander (4):
drm/i915/dsc: Add Selective Update register definitions drm/i915/dsc: Add helper for writing DSC Selective Update ET parameters drm/i915/psr: Write DSC parameters on Selective Update in ET mode drm/i915/psr: Compute PSR entry_setup_frames into intel_crtc_state

Juergen Gross (2):
xen/privcmd: restrict usage in unprivileged domU xen/privcmd: add boot control for restricted usage in domU

Junrui Luo (1):
bnxt_en: fix OOB access in DBG_BUF_PRODUCER async event handler

Justin Chen (1):
net: bcmgenet: increase WoL poll timeout

Kamal Dasu (2):
mtd: rawnand: serialize lock/unlock against other NAND operations
mtd: rawnand: brcmnand: skip DMA during panic write

Kees Cook (1):
fs/tests: exec: Remove bad test vector

Kevin Hao (3):
net: macb: Introduce gem_init_rx_ring()
net: macb: Reinitialize tx/rx queue pointer registers and rx ring during resume
net: macb: Shuffle the tx ring before enabling tx

Kohei Enju (1):

      igc: fix missing update of skb->tail in igc_xmit_frame()

Kuniyuki Iwashima (1):
wifi: mac80211: Fix static_branch_dec() underflow for aql_disable.

Kyle Meyer (1):
x86/platform/uv: Handle deconfigured sockets

Lad Prabhakar (4):
arm64: dts: renesas: rzt2h-n2h-evk: Add ramp delay for SD0 card regulator
arm64: dts: renesas: rzv2-evk-cn15-sd: Add ramp delay for SD0 regulator
arm64: dts: renesas: r9a09g077: Fix CPG register region sizes
arm64: dts: renesas: r9a09g087: Fix CPG register region sizes

Li Xiasong (1):
MPTCP: fix lock class name family in pm_nl_create_listen_socket

Lizhi Hou (1):
iommu/sva: Fix crash in iommu_sva_unbind_device()

Lorenzo Bianconi (1):
net: airoha: Remove airoha_dev_stop() in airoha_remove()

Lu Baolu (1):
iommu/vt-d: Only handle IOPF for SVA when PRI is supported

Luiz Augusto von Dentz (3):
Bluetooth: L2CAP: Fix accepting multiple L2CAP_ECRED_CONN_REQ
Bluetooth: ISO: Fix defer tests being unstable
Bluetooth: HIDP: Fix possible UAF

Lukas Johannes Möller (3):
Bluetooth: L2CAP: Fix type confusion in l2cap_ecred_reconf_rsp()
Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access
netfilter: nf_conntrack_sip: fix Content-Length u32 truncation in sip_help_tcp()

Luke Wang (1):
mmc: sdhci: fix timing selection for 1-bit bus width

Maarten Lankhorst (1):
drm: Fix use-after-free on framebuffers and property blobs when calling drm_dev_unplug

Maciej Andrzejewski ICEYE (1):
serial: uartlite: fix PM runtime usage count underflow on probe

Martin Roukala (né Peres) (1):

      serial: 8250_pci: add support for the AX99100

Masami Hiramatsu (Google) (1):
ring-buffer: Fix to update per-subbuf entries of persistent ring buffer

Matthew Brost (1):
drm/xe: Open-code GGTT MMIO access protection

Matthew Schwartz (1):
mmc: sdhci-pci-gli: fix GL9750 DMA write corruption

Matthew Wilcox (1):
tee: shm: Remove refcounting of kernel pages

Maíra Canal (1):
pmdomain: bcm: bcm2835-power: Increase ASB control timeout

Mehul Rao (1):
ublk: fix NULL pointer dereference in ublk_ctrl_set_size()

Michael Grzeschik (1):
Bluetooth: hci_sync: Fix hci_le_create_conn_sync

Michal Swiatkowski (1):
libie: prevent memleak in fwlog code

Muhammad Hammad Ijaz (1):
net: mvpp2: guard flow control update with global_tx_fc in buffer switching

Namjae Jeon (2):
ksmbd: unset conn->binding on failed binding request
ksmbd: use volume UUID in FS_OBJECT_ID_INFORMATION

Nicolas Cavallari (1):
wifi: mac80211: use jiffies_delta_to_msecs() for sta_info inactive times

Nicolas Pitre (1):
vt: save/restore unicode screen buffer for alternate screen

Nikola Z. Ivanov (1):
net: usb: aqc111: Do not perform PM inside suspend callback

Olivier Sobrie (1):
mtd: rawnand: pl353: make sure optimal timings are applied

Ovidiu Panait (1):

      arm64: dts: renesas: r9a09g057: Add RTC node

Pablo Neira Ayuso (4):
nf_tables: nft_dynset: fix possible stateful expression memleak in error path
netfilter: nft_ct: drop pending enqueued packets on removal
netfilter: xt_CT: drop pending enqueued packets on template removal
netfilter: nf_tables: release flowtable after rcu grace period on error

Paulo Alcantara (1):
smb: client: fix krb5 mount with username option

Peddolla Harshavardhan Reddy (1):

      wifi: cfg80211: cancel pmsr_free_wk in cfg80211_pmsr_wdev_down

Peng Zhang (1):
serial: 8250: always disable IRQ during THRE test

Petr Oros (1):
iavf: fix VLAN filter lost on add/delete race

Rafael J. Wysocki (2):
sched: idle: Consolidate the handling of two special cases
ACPI: processor: Fix previous acpi_processor_errata_piix4() fix

Rahul Bukte (1):
drm/i915/gt: Check set_default_submission() before deferencing

Raul E Rangel (1):
serial: 8250: Fix TX deadlock when using DMA

Richard Genoud (1):
soc: fsl: qbman: fix race condition in qman_destroy_fq

Sabrina Dubroca (1):
mpls: add missing unregister_netdevice_notifier to mpls_init

Saket Dumbre (1):
ACPICA: Update the format of Arg3 of _DSM

Sanman Pradhan (4):
hwmon: (pmbus/ina233) Add error check for pmbus_read_word_data() return value
hwmon: (pmbus/mp2975) Add error check for pmbus_read_word_data() return value
hwmon: (pmbus/mp2869) Check pmbus_read_byte_data() before using its return value
hwmon: (pmbus/isl68137) Fix unchecked return value and use sysfs_emit()

Shaurya Rane (1):
Bluetooth: L2CAP: Fix use-after-free in l2cap_unregister_user

Shawn Lin (1):
soc: rockchip: grf: Add missing of_node_put() when returning

Shengming Hu (1):
fgraph: Fix thresh_return nosleeptime double-adjust

Shuicheng Lin (1):
drm/xe/sync: Fix user fence leak on alloc failure

Shyam Prasad N (1):
cifs: open files should not hold ref on superblock

Srinivasan Shanmugam (1):
drm/amd/display: Fix DisplayID not-found handling in parse_edid_displayid_vrr()

Steven Rostedt (2):
tracing: Fix failure to read user space from system call trace events
tracing: Fix trace_marker copy link list updates

Suzuki K Poulose (1):
arm64: realm: Fix PTE_NS_SHARED for 52bit PA support

Tejun Heo (3):
sched_ext: Fix starvation of scx_enable() under fair-class saturation
sched_ext: Simplify breather mechanism with scx_aborting flag
sched_ext: Disable preemption between scx_claim_exit() and kicking helper work

Thorsten Blum (3):
crash_dump: don't log dm-crypt key bytes in read_key_from_user_keying
crypto: atmel-sha204a - Fix OOM ->tfm_count leak
ksmbd: Don't log keys in SMB3 signing and encryption key generation

Théo Lebrun (1):
net: macb: sort #includes

Tiezhu Yang (3):
LoongArch: Give more information if kmem access failed
LoongArch: No need to flush icache if text copy failed
LoongArch: Check return values for set_memory_{rw,rox}

Tobi Gaertner (2):
net: usb: cdc_ncm: add ndpoffset to NDP16 nframes bounds check
net: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check

Varun Gupta (1):
drm/xe: Fix memory leak in xe_vm_madvise_ioctl

Ville Syrjälä (2):
drm/i915/vrr: Move HAS_VRR() check into intel_vrr_set_transcoder_timings() drm/i915/vrr: Configure VRR timings after enabling TRANS_DDI_FUNC_CTL

Wang Tao (1):
Bluetooth: MGMT: Fix list corruption and UAF in command complete handlers

Wei Yang (1):
mm/huge_memory: fix early failure try_to_migrate() when split huge pmd for shared THP

Weiming Shi (2):
nfnetlink_osf: validate individual option lengths in fingerprints
icmp: fix NULL pointer dereference in icmp_tag_validation()

Wesley Atwell (1):
netdevsim: drop PSP ext ref on forward failure

Xi Ruoyao (1):

      drm/amd/display: Wrap dcn32_override_min_req_memclk() in DC_FP_{START, END}

Xiang Mei (3):
wifi: mac80211: fix NULL deref in mesh_matches_local()
udp_tunnel: fix NULL deref caused by udp_sock_create6 when CONFIG_IPV6=n
net: bonding: fix NULL deref in bond_debug_rlb_hash_show

Yang Yang (1):
batman-adv: avoid OGM aggregation when skb tailroom is insufficient

Yeoreum Yun (1):
firmware: arm_ffa: Remove vm_id argument in ffa_rxtx_unmap()

Zdenek Bouska (1):
igc: fix page fault in XDP TX timestamps handling

Zhanjun Dong (1):
drm/xe/guc: Ensure CT state transitions via STOP before DISABLED

ZhengYuan Huang (1):
btrfs: tree-checker: fix misleading root drop_level error message

Zi Yan (1):
mm/huge_memory: fix a folio_split() race condition with folio_try_get()

Zilin Guan (1):
soc: microchip: mpfs: Fix memory leak in mpfs_sys_controller_probe()

author maintainer
#1 lore raw
Documentation/netlink/specs/net_shaper.yaml +6 -6
index 0b1b54be48f9..3f2ad772b64b 100644
@@ -247,8 +247,8 @@ operations:
       flags: [admin-perm]
 
       do:
-        pre: net-shaper-nl-pre-doit
-        post: net-shaper-nl-post-doit
+        pre: net-shaper-nl-pre-doit-write
+        post: net-shaper-nl-post-doit-write
         request:
           attributes:
             - ifindex
@@ -278,8 +278,8 @@ operations:
       flags: [admin-perm]
 
       do:
-        pre: net-shaper-nl-pre-doit
-        post: net-shaper-nl-post-doit
+        pre: net-shaper-nl-pre-doit-write
+        post: net-shaper-nl-post-doit-write
         request:
           attributes: *ns-binding
 
@@ -309,8 +309,8 @@ operations:
       flags: [admin-perm]
 
       do:
-        pre: net-shaper-nl-pre-doit
-        post: net-shaper-nl-post-doit
+        pre: net-shaper-nl-pre-doit-write
+        post: net-shaper-nl-post-doit-write
         request:
           attributes:
             - ifindex
Makefile +1 -1
index 67c2f5dbb198..287fc5830914 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 18
-SUBLEVEL = 19
+SUBLEVEL = 20
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/boot/dts/renesas/r9a09g057.dtsi +11 -26
index 630f7a98df38..100d5cab9b12 100644
@@ -546,16 +546,6 @@ ostm7: timer@12c03000 {
 			status = "disabled";
 		};
 
-		wdt0: watchdog@11c00400 {
-			compatible = "renesas,r9a09g057-wdt";
-			reg = <0 0x11c00400 0 0x400>;
-			clocks = <&cpg CPG_MOD 0x4b>, <&cpg CPG_MOD 0x4c>;
-			clock-names = "pclk", "oscclk";
-			resets = <&cpg 0x75>;
-			power-domains = <&cpg>;
-			status = "disabled";
-		};
-
 		wdt1: watchdog@14400000 {
 			compatible = "renesas,r9a09g057-wdt";
 			reg = <0 0x14400000 0 0x400>;
@@ -566,23 +556,18 @@ wdt1: watchdog@14400000 {
 			status = "disabled";
 		};
 
-		wdt2: watchdog@13000000 {
-			compatible = "renesas,r9a09g057-wdt";
-			reg = <0 0x13000000 0 0x400>;
-			clocks = <&cpg CPG_MOD 0x4f>, <&cpg CPG_MOD 0x50>;
-			clock-names = "pclk", "oscclk";
-			resets = <&cpg 0x77>;
-			power-domains = <&cpg>;
-			status = "disabled";
-		};
-
-		wdt3: watchdog@13000400 {
-			compatible = "renesas,r9a09g057-wdt";
-			reg = <0 0x13000400 0 0x400>;
-			clocks = <&cpg CPG_MOD 0x51>, <&cpg CPG_MOD 0x52>;
-			clock-names = "pclk", "oscclk";
-			resets = <&cpg 0x78>;
+		rtc: rtc@11c00800 {
+			compatible = "renesas,r9a09g057-rtca3", "renesas,rz-rtca3";
+			reg = <0 0x11c00800 0 0x400>;
+			interrupts = <GIC_SPI 524 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 525 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 526 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "alarm", "period", "carry";
+			clocks = <&cpg CPG_MOD 0x53>, <&rtxin_clk>;
+			clock-names = "bus", "counter";
 			power-domains = <&cpg>;
+			resets = <&cpg 0x79>, <&cpg 0x7a>;
+			reset-names = "rtc", "rtest";
 			status = "disabled";
 		};
 
arch/arm64/boot/dts/renesas/r9a09g077.dtsi +2 -2
index 7f1aca218c9f..06aae2c63567 100644
@@ -267,8 +267,8 @@ i2c2: i2c@81008000 {
 
 		cpg: clock-controller@80280000 {
 			compatible = "renesas,r9a09g077-cpg-mssr";
-			reg = <0 0x80280000 0 0x1000>,
-			      <0 0x81280000 0 0x9000>;
+			reg = <0 0x80280000 0 0x10000>,
+			      <0 0x81280000 0 0x10000>;
 			clocks = <&extal_clk>;
 			clock-names = "extal";
 			#clock-cells = <2>;
arch/arm64/boot/dts/renesas/r9a09g087.dtsi +2 -2
index f06c19c73adb..6dd80fa2755e 100644
@@ -267,8 +267,8 @@ i2c2: i2c@81008000 {
 
 		cpg: clock-controller@80280000 {
 			compatible = "renesas,r9a09g087-cpg-mssr";
-			reg = <0 0x80280000 0 0x1000>,
-			      <0 0x81280000 0 0x9000>;
+			reg = <0 0x80280000 0 0x10000>,
+			      <0 0x81280000 0 0x10000>;
 			clocks = <&extal_clk>;
 			clock-names = "extal";
 			#clock-cells = <2>;
arch/arm64/boot/dts/renesas/rzg3s-smarc-som.dtsi +1 -1
index 39845faec894..a5d4d70e83c9 100644
@@ -166,7 +166,7 @@ versa3: clock-generator@68 {
 				       <100000000>;
 		renesas,settings = [
 		  80 00 11 19 4c 42 dc 2f 06 7d 20 1a 5f 1e f2 27
-		  00 40 00 00 00 00 00 00 06 0c 19 02 3f f0 90 86
+		  00 40 00 00 00 00 00 00 06 0c 19 02 3b f0 90 86
 		  a0 80 30 30 9c
 		];
 	};
arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi +1 -0
index 5384a43837c1..9c6f712a62ef 100644
@@ -49,6 +49,7 @@ vqmmc_sdhi0: regulator-vqmmc-sdhi0 {
 		regulator-max-microvolt = <3300000>;
 		gpios-states = <0>;
 		states = <3300000 0>, <1800000 1>;
+		regulator-ramp-delay = <60>;
 	};
 #endif
 
arch/arm64/boot/dts/renesas/rzv2-evk-cn15-sd.dtso +1 -0
index 0af1e0a6c7f4..fc53c1aae3b5 100644
@@ -25,6 +25,7 @@ vqmmc_sdhi0: regulator-vqmmc-sdhi0 {
 		regulator-max-microvolt = <3300000>;
 		gpios-states = <0>;
 		states = <3300000 0>, <1800000 1>;
+		regulator-ramp-delay = <60>;
 	};
 };
 
arch/arm64/kernel/rsi.c +2 -1
index c64a06f58c0b..9e846ce4ef9c 100644
@@ -12,6 +12,7 @@
 
 #include <asm/io.h>
 #include <asm/mem_encrypt.h>
+#include <asm/pgtable.h>
 #include <asm/rsi.h>
 
 static struct realm_config config;
@@ -146,7 +147,7 @@ void __init arm64_rsi_init(void)
 		return;
 	if (WARN_ON(rsi_get_realm_config(&config)))
 		return;
-	prot_ns_shared = BIT(config.ipa_bits - 1);
+	prot_ns_shared = __phys_to_pte_val(BIT(config.ipa_bits - 1));
 
 	if (arm64_ioremap_prot_hook_register(realm_ioremap_hook))
 		return;
arch/loongarch/include/asm/uaccess.h +12 -2
index 0d22991ae430..a9b40d231343 100644
@@ -196,8 +196,13 @@ do {									\
 									\
 	__get_kernel_common(*((type *)(dst)), sizeof(type),		\
 			    (__force type *)(src));			\
-	if (unlikely(__gu_err))						\
+	if (unlikely(__gu_err))	{					\
+		pr_info("%s: memory access failed, ecode 0x%x\n",	\
+			__func__, read_csr_excode());			\
+		pr_info("%s: the caller is %pS\n",			\
+			__func__, __builtin_return_address(0));		\
 		goto err_label;						\
+	}								\
 } while (0)
 
 #define __put_kernel_nofault(dst, src, type, err_label)			\
@@ -207,8 +212,13 @@ do {									\
 									\
 	__pu_val = *(__force type *)(src);				\
 	__put_kernel_common(((type *)(dst)), sizeof(type));		\
-	if (unlikely(__pu_err))						\
+	if (unlikely(__pu_err))	{					\
+		pr_info("%s: memory access failed, ecode 0x%x\n",	\
+			__func__, read_csr_excode());			\
+		pr_info("%s: the caller is %pS\n",			\
+			__func__, __builtin_return_address(0));		\
 		goto err_label;						\
+	}								\
 } while (0)
 
 extern unsigned long __copy_user(void *to, const void *from, __kernel_size_t n);
arch/loongarch/kernel/inst.c +17 -4
index bf037f0c6b26..9a9c34ea24b6 100644
@@ -246,18 +246,21 @@ static int text_copy_cb(void *data)
 
 	if (smp_processor_id() == copy->cpu) {
 		ret = copy_to_kernel_nofault(copy->dst, copy->src, copy->len);
-		if (ret)
+		if (ret) {
 			pr_err("%s: operation failed\n", __func__);
+			return ret;
+		}
 	}
 
 	flush_icache_range((unsigned long)copy->dst, (unsigned long)copy->dst + copy->len);
 
-	return ret;
+	return 0;
 }
 
 int larch_insn_text_copy(void *dst, void *src, size_t len)
 {
 	int ret = 0;
+	int err = 0;
 	size_t start, end;
 	struct insn_copy copy = {
 		.dst = dst,
@@ -269,9 +272,19 @@ int larch_insn_text_copy(void *dst, void *src, size_t len)
 	start = round_down((size_t)dst, PAGE_SIZE);
 	end   = round_up((size_t)dst + len, PAGE_SIZE);
 
-	set_memory_rw(start, (end - start) / PAGE_SIZE);
+	err = set_memory_rw(start, (end - start) / PAGE_SIZE);
+	if (err) {
+		pr_info("%s: set_memory_rw() failed\n", __func__);
+		return err;
+	}
+
 	ret = stop_machine(text_copy_cb, &copy, cpu_online_mask);
-	set_memory_rox(start, (end - start) / PAGE_SIZE);
+
+	err = set_memory_rox(start, (end - start) / PAGE_SIZE);
+	if (err) {
+		pr_info("%s: set_memory_rox() failed\n", __func__);
+		return err;
+	}
 
 	return ret;
 }
arch/parisc/kernel/cache.c +2 -2
index 4c5240d3a3c7..b189265785dc 100644
@@ -953,7 +953,7 @@ SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
 #else
 			"1: cmpb,<<,n	%0,%2,1b\n"
 #endif
-			"   fic,m	%3(%4,%0)\n"
+			"   fdc,m	%3(%4,%0)\n"
 			"2: sync\n"
 			ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 2b, "%1")
 			: "+r" (start), "+r" (error)
@@ -968,7 +968,7 @@ SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
 #else
 			"1: cmpb,<<,n	%0,%2,1b\n"
 #endif
-			"   fdc,m	%3(%4,%0)\n"
+			"   fic,m	%3(%4,%0)\n"
 			"2: sync\n"
 			ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 2b, "%1")
 			: "+r" (start), "+r" (error)
arch/x86/events/core.c +2 -1
index 64e2bf2d4a61..6227690d1909 100644
@@ -1359,6 +1359,8 @@ static void x86_pmu_enable(struct pmu *pmu)
 			else if (i < n_running)
 				continue;
 
+			cpuc->events[hwc->idx] = event;
+
 			if (hwc->state & PERF_HES_ARCH)
 				continue;
 
@@ -1366,7 +1368,6 @@ static void x86_pmu_enable(struct pmu *pmu)
 			 * if cpuc->enabled = 0, then no wrmsr as
 			 * per x86_pmu_enable_event()
 			 */
-			cpuc->events[hwc->idx] = event;
 			x86_pmu_start(event, PERF_EF_RELOAD);
 		}
 		cpuc->n_added = 0;
arch/x86/events/intel/core.c +21 -10
index 55d8df7b0fda..f43aba3ac779 100644
@@ -4224,6 +4224,19 @@ static inline void intel_pmu_set_acr_caused_constr(struct perf_event *event,
 		event->hw.dyn_constraint &= hybrid(event->pmu, acr_cause_mask64);
 }
 
+static inline int intel_set_branch_counter_constr(struct perf_event *event,
+						  int *num)
+{
+	if (branch_sample_call_stack(event))
+		return -EINVAL;
+	if (branch_sample_counters(event)) {
+		(*num)++;
+		event->hw.dyn_constraint &= x86_pmu.lbr_counters;
+	}
+
+	return 0;
+}
+
 static int intel_pmu_hw_config(struct perf_event *event)
 {
 	int ret = x86_pmu_hw_config(event);
@@ -4283,21 +4296,19 @@ static int intel_pmu_hw_config(struct perf_event *event)
 		 * group, which requires the extra space to store the counters.
 		 */
 		leader = event->group_leader;
-		if (branch_sample_call_stack(leader))
+		if (intel_set_branch_counter_constr(leader, &num))
 			return -EINVAL;
-		if (branch_sample_counters(leader)) {
-			num++;
-			leader->hw.dyn_constraint &= x86_pmu.lbr_counters;
-		}
 		leader->hw.flags |= PERF_X86_EVENT_BRANCH_COUNTERS;
 
 		for_each_sibling_event(sibling, leader) {
-			if (branch_sample_call_stack(sibling))
+			if (intel_set_branch_counter_constr(sibling, &num))
+				return -EINVAL;
+		}
+
+		/* event isn't installed as a sibling yet. */
+		if (event != leader) {
+			if (intel_set_branch_counter_constr(event, &num))
 				return -EINVAL;
-			if (branch_sample_counters(sibling)) {
-				num++;
-				sibling->hw.dyn_constraint &= x86_pmu.lbr_counters;
-			}
 		}
 
 		if (num > fls(x86_pmu.lbr_counters))
arch/x86/kernel/apic/x2apic_uv_x.c +16 -2
index 15209f220e1f..42568ceec481 100644
@@ -1708,8 +1708,22 @@ static void __init uv_system_init_hub(void)
 		struct uv_hub_info_s *new_hub;
 
 		/* Allocate & fill new per hub info list */
-		new_hub = (bid == 0) ?  &uv_hub_info_node0
-			: kzalloc_node(bytes, GFP_KERNEL, uv_blade_to_node(bid));
+		if (bid == 0) {
+			new_hub = &uv_hub_info_node0;
+		} else {
+			int nid;
+
+			/*
+			 * Deconfigured sockets are mapped to SOCK_EMPTY. Use
+			 * NUMA_NO_NODE to allocate on a valid node.
+			 */
+			nid = uv_blade_to_node(bid);
+			if (nid == SOCK_EMPTY)
+				nid = NUMA_NO_NODE;
+
+			new_hub = kzalloc_node(bytes, GFP_KERNEL, nid);
+		}
+
 		if (WARN_ON_ONCE(!new_hub)) {
 			/* do not kfree() bid 0, which is statically allocated */
 			while (--bid > 0)
drivers/acpi/acpi_processor.c +8 -7
index 85096ce7b658..5a562e27d3a8 100644
@@ -113,6 +113,10 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
 				     PCI_ANY_ID, PCI_ANY_ID, NULL);
 		if (ide_dev) {
 			errata.piix4.bmisx = pci_resource_start(ide_dev, 4);
+			if (errata.piix4.bmisx)
+				dev_dbg(&ide_dev->dev,
+					"Bus master activity detection (BM-IDE) erratum enabled\n");
+
 			pci_dev_put(ide_dev);
 		}
 
@@ -131,20 +135,17 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
 		if (isa_dev) {
 			pci_read_config_byte(isa_dev, 0x76, &value1);
 			pci_read_config_byte(isa_dev, 0x77, &value2);
-			if ((value1 & 0x80) || (value2 & 0x80))
+			if ((value1 & 0x80) || (value2 & 0x80)) {
 				errata.piix4.fdma = 1;
+				dev_dbg(&isa_dev->dev,
+					"Type-F DMA livelock erratum (C3 disabled)\n");
+			}
 			pci_dev_put(isa_dev);
 		}
 
 		break;
 	}
 
-	if (ide_dev)
-		dev_dbg(&ide_dev->dev, "Bus master activity detection (BM-IDE) erratum enabled\n");
-
-	if (isa_dev)
-		dev_dbg(&isa_dev->dev, "Type-F DMA livelock erratum (C3 disabled)\n");
-
 	return 0;
 }
 
drivers/acpi/acpica/acpredef.h +1 -1
index da2c45880cc7..c9e65c6a2069 100644
@@ -450,7 +450,7 @@ const union acpi_predefined_info acpi_gbl_predefined_methods[] = {
 
 	{{"_DSM",
 	  METHOD_4ARGS(ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER,
-		       ACPI_TYPE_ANY | ACPI_TYPE_PACKAGE) |
+		       ACPI_TYPE_PACKAGE | ACPI_TYPE_ANY) |
 		       ARG_COUNT_IS_MINIMUM,
 	  METHOD_RETURNS(ACPI_RTYPE_ALL)}},	/* Must return a value, but it can be of any type */
 
drivers/ata/libata-core.c +3 -0
index ffe38e88e029..4fb8990d22d5 100644
@@ -4156,6 +4156,9 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
 	{ "ST3320[68]13AS",	"SD1[5-9]",	ATA_QUIRK_NONCQ |
 						ATA_QUIRK_FIRMWARE_WARN },
 
+	/* ADATA devices with LPM issues. */
+	{ "ADATA SU680",	NULL,		ATA_QUIRK_NOLPM },
+
 	/* Seagate disks with LPM issues */
 	{ "ST1000DM010-2EP102",	NULL,		ATA_QUIRK_NOLPM },
 	{ "ST2000DM008-2FR102",	NULL,		ATA_QUIRK_NOLPM },
drivers/ata/libata-scsi.c +1 -1
index a70d98405a79..88689369db03 100644
@@ -3599,7 +3599,7 @@ static unsigned int ata_scsiop_maint_in(struct ata_device *dev,
 
 	if (cdb[2] != 1 && cdb[2] != 3) {
 		ata_dev_warn(dev, "invalid command format %d\n", cdb[2]);
-		ata_scsi_set_invalid_field(dev, cmd, 1, 0xff);
+		ata_scsi_set_invalid_field(dev, cmd, 2, 0xff);
 		return 0;
 	}
 
drivers/base/power/runtime.c +1 -0
index e882b5269ebe..6980a8dfced2 100644
@@ -1896,6 +1896,7 @@ void pm_runtime_reinit(struct device *dev)
 void pm_runtime_remove(struct device *dev)
 {
 	__pm_runtime_disable(dev, false);
+	flush_work(&dev->power.work);
 	pm_runtime_reinit(dev);
 }
 
drivers/block/ublk_drv.c +9 -3
index 965460d4fc76..2729b1556e81 100644
@@ -3604,15 +3604,22 @@ static int ublk_ctrl_get_features(const struct ublksrv_ctrl_cmd *header)
 	return 0;
 }
 
-static void ublk_ctrl_set_size(struct ublk_device *ub, const struct ublksrv_ctrl_cmd *header)
+static int ublk_ctrl_set_size(struct ublk_device *ub, const struct ublksrv_ctrl_cmd *header)
 {
 	struct ublk_param_basic *p = &ub->params.basic;
 	u64 new_size = header->data[0];
+	int ret = 0;
 
 	mutex_lock(&ub->mutex);
+	if (!ub->ub_disk) {
+		ret = -ENODEV;
+		goto out;
+	}
 	p->dev_sectors = new_size;
 	set_capacity_and_notify(ub->ub_disk, p->dev_sectors);
+out:
 	mutex_unlock(&ub->mutex);
+	return ret;
 }
 
 struct count_busy {
@@ -3902,8 +3909,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
 		ret = ublk_ctrl_end_recovery(ub, header);
 		break;
 	case UBLK_CMD_UPDATE_SIZE:
-		ublk_ctrl_set_size(ub, header);
-		ret = 0;
+		ret = ublk_ctrl_set_size(ub, header);
 		break;
 	case UBLK_CMD_QUIESCE_DEV:
 		ret = ublk_ctrl_quiesce_dev(ub, header);
drivers/bluetooth/btqca.c +2 -0
index 7c958d6065be..86a48d009d1b 100644
@@ -804,6 +804,8 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
 	 */
 	if (soc_type == QCA_WCN3988)
 		rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
+	else if (soc_type == QCA_WCN3998)
+		rom_ver = ((soc_ver & 0x0000f000) >> 0x07) | (soc_ver & 0x0000000f);
 	else
 		rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
 
drivers/cache/ax45mp_cache.c +2 -2
index 1d7dd3d2c101..934c5087ec2b 100644
@@ -178,11 +178,11 @@ static const struct of_device_id ax45mp_cache_ids[] = {
 
 static int __init ax45mp_cache_init(void)
 {
-	struct device_node *np;
 	struct resource res;
 	int ret;
 
-	np = of_find_matching_node(NULL, ax45mp_cache_ids);
+	struct device_node *np __free(device_node) =
+		of_find_matching_node(NULL, ax45mp_cache_ids);
 	if (!of_device_is_available(np))
 		return -ENODEV;
 
drivers/cache/starfive_starlink_cache.c +2 -2
index 24c7d078ca22..3a25d2d7c70c 100644
@@ -102,11 +102,11 @@ static const struct of_device_id starlink_cache_ids[] = {
 
 static int __init starlink_cache_init(void)
 {
-	struct device_node *np;
 	u32 block_size;
 	int ret;
 
-	np = of_find_matching_node(NULL, starlink_cache_ids);
+	struct device_node *np __free(device_node) =
+		of_find_matching_node(NULL, starlink_cache_ids);
 	if (!of_device_is_available(np))
 		return -ENODEV;
 
drivers/char/ipmi/ipmi_msghandler.c +92 -50

253 lines not on this page · raw message

drivers/crypto/atmel-sha204a.c +3 -2
index 0fcf4a39de27..a12653a65869 100644
@@ -52,9 +52,10 @@ static int atmel_sha204a_rng_read_nonblocking(struct hwrng *rng, void *data,
 		rng->priv = 0;
 	} else {
 		work_data = kmalloc(sizeof(*work_data), GFP_ATOMIC);
-		if (!work_data)
+		if (!work_data) {
+			atomic_dec(&i2c_priv->tfm_count);
 			return -ENOMEM;
-
+		}
 		work_data->ctx = i2c_priv;
 		work_data->client = i2c_priv->client;
 
drivers/crypto/ccp/sev-dev.c +1 -3
index b8da99bcb243..86f5ed798d3c 100644
@@ -2381,10 +2381,8 @@ static int sev_ioctl_do_snp_platform_status(struct sev_issue_cmd *argp)
 		 * in Firmware state on failure. Use snp_reclaim_pages() to
 		 * transition either case back to Hypervisor-owned state.
 		 */
-		if (snp_reclaim_pages(__pa(data), 1, true)) {
-			snp_leak_pages(__page_to_pfn(status_page), 1);
+		if (snp_reclaim_pages(__pa(data), 1, true))
 			return -EFAULT;
-		}
 	}
 
 	if (ret)
drivers/crypto/padlock-sha.c +7 -0
index 329f60ad422e..9214bbfc868f 100644
@@ -332,6 +332,13 @@ static int __init padlock_init(void)
 	if (!x86_match_cpu(padlock_sha_ids) || !boot_cpu_has(X86_FEATURE_PHE_EN))
 		return -ENODEV;
 
+	/*
+	 * Skip family 0x07 and newer used by Zhaoxin processors,
+	 * as the driver's self-tests fail on these CPUs.
+	 */
+	if (c->x86 >= 0x07)
+		return -ENODEV;
+
 	/* Register the newly added algorithm module if on *
 	* VIA Nano processor, or else just do as before */
 	if (c->x86_model < 0x0f) {
drivers/firewire/net.c +3 -2
index 6d6446713539..e82945408955 100644
@@ -257,9 +257,10 @@ static void fwnet_header_cache_update(struct hh_cache *hh,
 	memcpy((u8 *)hh->hh_data + HH_DATA_OFF(FWNET_HLEN), haddr, net->addr_len);
 }
 
-static int fwnet_header_parse(const struct sk_buff *skb, unsigned char *haddr)
+static int fwnet_header_parse(const struct sk_buff *skb, const struct net_device *dev,
+			      unsigned char *haddr)
 {
-	memcpy(haddr, skb->dev->dev_addr, FWNET_ALEN);
+	memcpy(haddr, dev->dev_addr, FWNET_ALEN);
 
 	return FWNET_ALEN;
 }
drivers/firmware/arm_ffa/driver.c +4 -4
index 11a702e7f641..f6ceae987acb 100644
@@ -205,12 +205,12 @@ static int ffa_rxtx_map(phys_addr_t tx_buf, phys_addr_t rx_buf, u32 pg_cnt)
 	return 0;
 }
 
-static int ffa_rxtx_unmap(u16 vm_id)
+static int ffa_rxtx_unmap(void)
 {
 	ffa_value_t ret;
 
 	invoke_ffa_fn((ffa_value_t){
-		      .a0 = FFA_RXTX_UNMAP, .a1 = PACK_TARGET_INFO(vm_id, 0),
+		      .a0 = FFA_RXTX_UNMAP,
 		      }, &ret);
 
 	if (ret.a0 == FFA_ERROR)
@@ -2093,7 +2093,7 @@ static int __init ffa_init(void)
 
 	pr_err("failed to setup partitions\n");
 	ffa_notifications_cleanup();
-	ffa_rxtx_unmap(drv_info->vm_id);
+	ffa_rxtx_unmap();
 free_pages:
 	if (drv_info->tx_buffer)
 		free_pages_exact(drv_info->tx_buffer, rxtx_bufsz);
@@ -2108,7 +2108,7 @@ static void __exit ffa_exit(void)
 {
 	ffa_notifications_cleanup();
 	ffa_partitions_cleanup();
-	ffa_rxtx_unmap(drv_info->vm_id);
+	ffa_rxtx_unmap();
 	free_pages_exact(drv_info->tx_buffer, drv_info->rxtx_bufsz);
 	free_pages_exact(drv_info->rx_buffer, drv_info->rxtx_bufsz);
 	kfree(drv_info);
drivers/firmware/arm_scmi/notify.c +2 -2
index dee9f238f6fd..2047edbdc5f6 100644
@@ -1066,7 +1066,7 @@ static int scmi_register_event_handler(struct scmi_notify_instance *ni,
  * since at creation time we usually want to have all setup and ready before
  * events really start flowing.
  *
- * Return: A properly refcounted handler on Success, NULL on Failure
+ * Return: A properly refcounted handler on Success, ERR_PTR on Failure
  */
 static inline struct scmi_event_handler *
 __scmi_event_handler_get_ops(struct scmi_notify_instance *ni,
@@ -1113,7 +1113,7 @@ __scmi_event_handler_get_ops(struct scmi_notify_instance *ni,
 	}
 	mutex_unlock(&ni->pending_mtx);
 
-	return hndl;
+	return hndl ?: ERR_PTR(-ENODEV);
 }
 
 static struct scmi_event_handler *
drivers/firmware/arm_scpi.c +3 -2
index 87c323de17b9..398642cc25d9 100644
@@ -18,6 +18,7 @@
 
 #include <linux/bitmap.h>
 #include <linux/bitfield.h>
+#include <linux/cleanup.h>
 #include <linux/device.h>
 #include <linux/err.h>
 #include <linux/export.h>
@@ -940,13 +941,13 @@ static int scpi_probe(struct platform_device *pdev)
 		int idx = scpi_drvinfo->num_chans;
 		struct scpi_chan *pchan = scpi_drvinfo->channels + idx;
 		struct mbox_client *cl = &pchan->cl;
-		struct device_node *shmem = of_parse_phandle(np, "shmem", idx);
+		struct device_node *shmem __free(device_node) =
+			of_parse_phandle(np, "shmem", idx);
 
 		if (!of_match_node(shmem_of_match, shmem))
 			return -ENXIO;
 
 		ret = of_address_to_resource(shmem, 0, &res);
-		of_node_put(shmem);
 		if (ret) {
 			dev_err(dev, "failed to get SCPI payload mem resource\n");
 			return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c +4 -0
index 66fb37b64388..ded22f244ada 100644
@@ -36,6 +36,7 @@
 
 #define AMDGPU_BO_LIST_MAX_PRIORITY	32u
 #define AMDGPU_BO_LIST_NUM_BUCKETS	(AMDGPU_BO_LIST_MAX_PRIORITY + 1)
+#define AMDGPU_BO_LIST_MAX_ENTRIES	(128 * 1024)
 
 static void amdgpu_bo_list_free_rcu(struct rcu_head *rcu)
 {
@@ -190,6 +191,9 @@ int amdgpu_bo_create_list_entry_array(struct drm_amdgpu_bo_list_in *in,
 	const uint32_t bo_number = in->bo_number;
 	struct drm_amdgpu_bo_list_entry *info;
 
+	if (bo_number > AMDGPU_BO_LIST_MAX_ENTRIES)
+		return -EINVAL;
+
 	/* copy the handle array from userspace to a kernel buffer */
 	if (likely(info_size == bo_info_size)) {
 		info = vmemdup_array_user(uptr, bo_number, info_size);
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +14 -7
index fd9485e9dd19..0f0d6cd52d91 100644
@@ -691,28 +691,35 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
 	} else {
 		switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
 		case IP_VERSION(9, 0, 0):
-			mmhub_cid = mmhub_client_ids_vega10[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_vega10) ?
+				mmhub_client_ids_vega10[cid][rw] : NULL;
 			break;
 		case IP_VERSION(9, 3, 0):
-			mmhub_cid = mmhub_client_ids_vega12[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_vega12) ?
+				mmhub_client_ids_vega12[cid][rw] : NULL;
 			break;
 		case IP_VERSION(9, 4, 0):
-			mmhub_cid = mmhub_client_ids_vega20[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_vega20) ?
+				mmhub_client_ids_vega20[cid][rw] : NULL;
 			break;
 		case IP_VERSION(9, 4, 1):
-			mmhub_cid = mmhub_client_ids_arcturus[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_arcturus) ?
+				mmhub_client_ids_arcturus[cid][rw] : NULL;
 			break;
 		case IP_VERSION(9, 1, 0):
 		case IP_VERSION(9, 2, 0):
-			mmhub_cid = mmhub_client_ids_raven[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_raven) ?
+				mmhub_client_ids_raven[cid][rw] : NULL;
 			break;
 		case IP_VERSION(1, 5, 0):
 		case IP_VERSION(2, 4, 0):
-			mmhub_cid = mmhub_client_ids_renoir[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_renoir) ?
+				mmhub_client_ids_renoir[cid][rw] : NULL;
 			break;
 		case IP_VERSION(1, 8, 0):
 		case IP_VERSION(9, 4, 2):
-			mmhub_cid = mmhub_client_ids_aldebaran[cid][rw];
+			mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_aldebaran) ?
+				mmhub_client_ids_aldebaran[cid][rw] : NULL;
 			break;
 		default:
 			mmhub_cid = NULL;
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +6 -3
index a0cc8e218ca1..534cb4c544dc 100644
@@ -154,14 +154,17 @@ mmhub_v2_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
 	switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
 	case IP_VERSION(2, 0, 0):
 	case IP_VERSION(2, 0, 2):
-		mmhub_cid = mmhub_client_ids_navi1x[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_navi1x) ?
+			mmhub_client_ids_navi1x[cid][rw] : NULL;
 		break;
 	case IP_VERSION(2, 1, 0):
 	case IP_VERSION(2, 1, 1):
-		mmhub_cid = mmhub_client_ids_sienna_cichlid[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_sienna_cichlid) ?
+			mmhub_client_ids_sienna_cichlid[cid][rw] : NULL;
 		break;
 	case IP_VERSION(2, 1, 2):
-		mmhub_cid = mmhub_client_ids_beige_goby[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_beige_goby) ?
+			mmhub_client_ids_beige_goby[cid][rw] : NULL;
 		break;
 	default:
 		mmhub_cid = NULL;
drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c +2 -1
index 5eb8122e2746..ceb2f6b46de5 100644
@@ -94,7 +94,8 @@ mmhub_v2_3_print_l2_protection_fault_status(struct amdgpu_device *adev,
 	case IP_VERSION(2, 3, 0):
 	case IP_VERSION(2, 4, 0):
 	case IP_VERSION(2, 4, 1):
-		mmhub_cid = mmhub_client_ids_vangogh[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_vangogh) ?
+			mmhub_client_ids_vangogh[cid][rw] : NULL;
 		break;
 	default:
 		mmhub_cid = NULL;
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c +2 -1
index 7d5242df58a5..ab966e69a342 100644
@@ -110,7 +110,8 @@ mmhub_v3_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
 	switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
 	case IP_VERSION(3, 0, 0):
 	case IP_VERSION(3, 0, 1):
-		mmhub_cid = mmhub_client_ids_v3_0_0[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_0) ?
+			mmhub_client_ids_v3_0_0[cid][rw] : NULL;
 		break;
 	default:
 		mmhub_cid = NULL;
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c +2 -1
index 910337dc28d1..14a742d3a99d 100644
@@ -117,7 +117,8 @@ mmhub_v3_0_1_print_l2_protection_fault_status(struct amdgpu_device *adev,
 
 	switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
 	case IP_VERSION(3, 0, 1):
-		mmhub_cid = mmhub_client_ids_v3_0_1[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_1) ?
+			mmhub_client_ids_v3_0_1[cid][rw] : NULL;
 		break;
 	default:
 		mmhub_cid = NULL;
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c +2 -1
index f0f182f033b9..e1f07f2a1852 100644
@@ -108,7 +108,8 @@ mmhub_v3_0_2_print_l2_protection_fault_status(struct amdgpu_device *adev,
 		"MMVM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
 		status);
 
-	mmhub_cid = mmhub_client_ids_v3_0_2[cid][rw];
+	mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_2) ?
+		mmhub_client_ids_v3_0_2[cid][rw] : NULL;
 	dev_err(adev->dev, "\t Faulty UTCL2 client ID: %s (0x%x)\n",
 		mmhub_cid ? mmhub_cid : "unknown", cid);
 	dev_err(adev->dev, "\t MORE_FAULTS: 0x%lx\n",
drivers/gpu/drm/amd/amdgpu/mmhub_v4_1_0.c +2 -1
index 951998454b25..88bfe321f83a 100644
@@ -102,7 +102,8 @@ mmhub_v4_1_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
 		status);
 	switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
 	case IP_VERSION(4, 1, 0):
-		mmhub_cid = mmhub_client_ids_v4_1_0[cid][rw];
+		mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v4_1_0) ?
+			mmhub_client_ids_v4_1_0[cid][rw] : NULL;
 		break;
 	default:
 		mmhub_cid = NULL;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -2
index 7db2d1a3784b..77840b6cb206 100644
@@ -12864,7 +12864,7 @@ static void parse_edid_displayid_vrr(struct drm_connector *connector,
 	u16 min_vfreq;
 	u16 max_vfreq;
 
-	if (edid == NULL || edid->extensions == 0)
+	if (!edid || !edid->extensions)
 		return;
 
 	/* Find DisplayID extension */
@@ -12874,7 +12874,7 @@ static void parse_edid_displayid_vrr(struct drm_connector *connector,
 			break;
 	}
 
-	if (edid_ext == NULL)
+	if (i == edid->extensions)
 		return;
 
 	while (j < EDID_LENGTH) {
drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c +4 -4
index 15cf13ec5302..c450feae5fa5 100644
@@ -255,6 +255,10 @@ struct clk_mgr *dc_clk_mgr_create(struct dc_context *ctx, struct pp_smu_funcs *p
 			BREAK_TO_DEBUGGER();
 			return NULL;
 		}
+		if (ctx->dce_version == DCN_VERSION_2_01) {
+			dcn201_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
+			return &clk_mgr->base;
+		}
 		if (ASICREV_IS_SIENNA_CICHLID_P(asic_id.hw_internal_rev)) {
 			dcn3_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
 			return &clk_mgr->base;
@@ -267,10 +271,6 @@ struct clk_mgr *dc_clk_mgr_create(struct dc_context *ctx, struct pp_smu_funcs *p
 			dcn3_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
 			return &clk_mgr->base;
 		}
-		if (ctx->dce_version == DCN_VERSION_2_01) {
-			dcn201_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
-			return &clk_mgr->base;
-		}
 		dcn20_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
 		return &clk_mgr->base;
 	}
drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c +3 -0
index 9cace432ce36..8f054d9b5d57 100644
@@ -1786,7 +1786,10 @@ static bool dml1_validate(struct dc *dc, struct dc_state *context, enum dc_valid
 
 	dc->res_pool->funcs->calculate_wm_and_dlg(dc, context, pipes, pipe_cnt, vlevel);
 
+	DC_FP_START();
 	dcn32_override_min_req_memclk(dc, context);
+	DC_FP_END();
+
 	dcn32_override_min_req_dcfclk(dc, context);
 
 	BW_VAL_TRACE_END_WATERMARKS();
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +3 -1
index 9342f0b8bab2..c25e72e31d8b 100644
@@ -3459,9 +3459,11 @@ static void si_apply_state_adjust_rules(struct amdgpu_device *adev,
 	if (adev->asic_type == CHIP_HAINAN) {
 		if ((adev->pdev->revision == 0x81) ||
 		    (adev->pdev->revision == 0xC3) ||
+		    (adev->pdev->device == 0x6660) ||
 		    (adev->pdev->device == 0x6664) ||
 		    (adev->pdev->device == 0x6665) ||
-		    (adev->pdev->device == 0x6667)) {
+		    (adev->pdev->device == 0x6667) ||
+		    (adev->pdev->device == 0x666F)) {
 			max_sclk = 75000;
 		}
 		if ((adev->pdev->revision == 0xC3) ||
drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +1 -1
index c85eb340e5a3..d30245587516 100644
@@ -818,7 +818,7 @@ static int dw_hdmi_qp_config_audio_infoframe(struct dw_hdmi_qp *hdmi,
 
 	regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS0, &header_bytes, 1);
 	regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS1, &buffer[3], 1);
-	regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS2, &buffer[4], 1);
+	regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS2, &buffer[7], 1);
 
 	/* Enable ACR, AUDI, AMD */
 	dw_hdmi_qp_mod(hdmi,
drivers/gpu/drm/drm_file.c +4 -1
index eebd1a05ee97..c8c715531995 100644
@@ -233,6 +233,7 @@ static void drm_events_release(struct drm_file *file_priv)
 void drm_file_free(struct drm_file *file)
 {
 	struct drm_device *dev;
+	int idx;
 
 	if (!file)
 		return;
@@ -249,9 +250,11 @@ void drm_file_free(struct drm_file *file)
 
 	drm_events_release(file);
 
-	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+	if (drm_core_check_feature(dev, DRIVER_MODESET) &&
+	    drm_dev_enter(dev, &idx)) {
 		drm_fb_release(file);
 		drm_property_destroy_user_blobs(dev, file);
+		drm_dev_exit(idx);
 	}
 
 	if (drm_core_check_feature(dev, DRIVER_SYNCOBJ))
drivers/gpu/drm/drm_mode_config.c +6 -3
index 25f376869b3a..055eef4ab6e8 100644
@@ -570,10 +570,13 @@ void drm_mode_config_cleanup(struct drm_device *dev)
 	 */
 	WARN_ON(!list_empty(&dev->mode_config.fb_list));
 	list_for_each_entry_safe(fb, fbt, &dev->mode_config.fb_list, head) {
-		struct drm_printer p = drm_dbg_printer(dev, DRM_UT_KMS, "[leaked fb]");
+		if (list_empty(&fb->filp_head) || drm_framebuffer_read_refcount(fb) > 1) {
+			struct drm_printer p = drm_dbg_printer(dev, DRM_UT_KMS, "[leaked fb]");
 
-		drm_printf(&p, "framebuffer[%u]:\n", fb->base.id);
-		drm_framebuffer_print_info(&p, 1, fb);
+			drm_printf(&p, "framebuffer[%u]:\n", fb->base.id);
+			drm_framebuffer_print_info(&p, 1, fb);
+		}
+		list_del_init(&fb->filp_head);
 		drm_framebuffer_free(&fb->base.refcount);
 	}
 
drivers/gpu/drm/i915/display/intel_display.c +0 -2
index 0d527cf22866..decb9f3dd71c 100644
@@ -1642,8 +1642,6 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta
 	}
 
 	intel_set_transcoder_timings(crtc_state);
-	if (HAS_VRR(display))
-		intel_vrr_set_transcoder_timings(crtc_state);
 
 	if (cpu_transcoder != TRANSCODER_EDP)
 		intel_de_write(display, TRANS_MULT(display, cpu_transcoder),
drivers/gpu/drm/i915/display/intel_display_power_well.c +1 -1
index 5e88b930f5aa..5b7152cf324e 100644
@@ -796,7 +796,7 @@ void gen9_set_dc_state(struct intel_display *display, u32 state)
 			power_domains->dc_state, val & mask);
 
 	enable_dc6 = state & DC_STATE_EN_UPTO_DC6;
-	dc6_was_enabled = val & DC_STATE_EN_UPTO_DC6;
+	dc6_was_enabled = power_domains->dc_state & DC_STATE_EN_UPTO_DC6;
 	if (!dc6_was_enabled && enable_dc6)
 		intel_dmc_update_dc6_allowed_count(display, true);
 
drivers/gpu/drm/i915/display/intel_display_types.h +1 -0
index 358ab922d7a7..39dd7389f1a7 100644
@@ -1127,6 +1127,7 @@ struct intel_crtc_state {
 	u32 dc3co_exitline;
 	u16 su_y_granularity;
 	u8 active_non_psr_pipes;
+	u8 entry_setup_frames;
 
 	/*
 	 * Frequency the dpll for the port should run at. Differs from the
drivers/gpu/drm/i915/display/intel_dmc.c +1 -2
index e1455fd7277f..9b6b90be02fe 100644
@@ -1569,8 +1569,7 @@ static bool intel_dmc_get_dc6_allowed_count(struct intel_display *display, u32 *
 		return false;
 
 	mutex_lock(&power_domains->lock);
-	dc6_enabled = intel_de_read(display, DC_STATE_EN) &
-		      DC_STATE_EN_UPTO_DC6;
+	dc6_enabled = power_domains->dc_state & DC_STATE_EN_UPTO_DC6;
 	if (dc6_enabled)
 		intel_dmc_update_dc6_allowed_count(display, false);
 
drivers/gpu/drm/i915/display/intel_psr.c +14 -2
index bceb9eb4ed3b..83299fd50ef0 100644
@@ -50,6 +50,7 @@
 #include "intel_snps_phy.h"
 #include "intel_step.h"
 #include "intel_vblank.h"
+#include "intel_vdsc.h"
 #include "intel_vrr.h"
 #include "skl_universal_plane.h"
 
@@ -1584,7 +1585,7 @@ static bool _psr_compute_config(struct intel_dp *intel_dp,
 	entry_setup_frames = intel_psr_entry_setup_frames(intel_dp, adjusted_mode);
 
 	if (entry_setup_frames >= 0) {
-		intel_dp->psr.entry_setup_frames = entry_setup_frames;
+		crtc_state->entry_setup_frames = entry_setup_frames;
 	} else {
 		drm_dbg_kms(display->drm,
 			    "PSR condition failed: PSR setup timing not met\n");
@@ -1656,7 +1657,7 @@ static bool intel_psr_needs_wa_18037818876(struct intel_dp *intel_dp,
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 
-	return (DISPLAY_VER(display) == 20 && intel_dp->psr.entry_setup_frames > 0 &&
+	return (DISPLAY_VER(display) == 20 && crtc_state->entry_setup_frames > 0 &&
 		!crtc_state->has_sel_update);
 }
 
@@ -2026,6 +2027,7 @@ static void intel_psr_enable_locked(struct intel_dp *intel_dp,
 		crtc_state->req_psr2_sdp_prior_scanline;
 	intel_dp->psr.active_non_psr_pipes = crtc_state->active_non_psr_pipes;
 	intel_dp->psr.pkg_c_latency_used = crtc_state->pkg_c_latency_used;
+	intel_dp->psr.entry_setup_frames = crtc_state->entry_setup_frames;
 
 	if (!psr_interrupt_error_check(intel_dp))
 		return;
@@ -2489,6 +2491,12 @@ void intel_psr2_program_trans_man_trk_ctl(struct intel_dsb *dsb,
 
 	intel_de_write_dsb(display, dsb, PIPE_SRCSZ_ERLY_TPT(crtc->pipe),
 			   crtc_state->pipe_srcsz_early_tpt);
+
+	if (!crtc_state->dsc.compression_enable)
+		return;
+
+	intel_dsc_su_et_parameters_configure(dsb, encoder, crtc_state,
+					     drm_rect_height(&crtc_state->psr2_su_area));
 }
 
 static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state,
@@ -2909,6 +2917,10 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 	}
 
 skip_sel_fetch_set_loop:
+	if (full_update)
+		clip_area_update(&crtc_state->psr2_su_area, &crtc_state->pipe_src,
+				 &crtc_state->pipe_src);
+
 	psr2_man_trk_ctl_calc(crtc_state, full_update);
 	crtc_state->pipe_srcsz_early_tpt =
 		psr2_pipe_srcsz_early_tpt_calc(crtc_state, full_update);
drivers/gpu/drm/i915/display/intel_vdsc.c +23 -0
index 8e799e225af1..4e701ea0bb23 100644
@@ -751,6 +751,29 @@ void intel_dsc_dp_pps_write(struct intel_encoder *encoder,
 				  sizeof(dp_dsc_pps_sdp));
 }
 
+void intel_dsc_su_et_parameters_configure(struct intel_dsb *dsb, struct intel_encoder *encoder,
+					  const struct intel_crtc_state *crtc_state, int su_lines)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config;
+	enum pipe pipe = crtc->pipe;
+	int vdsc_instances_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state);
+	int slice_row_per_frame = su_lines / vdsc_cfg->slice_height;
+	u32 val;
+
+	drm_WARN_ON_ONCE(display->drm, su_lines % vdsc_cfg->slice_height);
+	drm_WARN_ON_ONCE(display->drm, vdsc_instances_per_pipe > 2);
+
+	val = DSC_SUPS0_SU_SLICE_ROW_PER_FRAME(slice_row_per_frame);
+	val |= DSC_SUPS0_SU_PIC_HEIGHT(su_lines);
+
+	intel_de_write_dsb(display, dsb, LNL_DSC0_SU_PARAMETER_SET_0(pipe), val);
+
+	if (vdsc_instances_per_pipe == 2)
+		intel_de_write_dsb(display, dsb, LNL_DSC1_SU_PARAMETER_SET_0(pipe), val);
+}
+
 static i915_reg_t dss_ctl1_reg(struct intel_crtc *crtc, enum transcoder cpu_transcoder)
 {
 	return is_pipe_dsc(crtc, cpu_transcoder) ?
drivers/gpu/drm/i915/display/intel_vdsc.h +3 -0
index 9e2812f99dd7..b77d30b61a32 100644
@@ -13,6 +13,7 @@ struct drm_printer;
 enum transcoder;
 struct intel_crtc;
 struct intel_crtc_state;
+struct intel_dsb;
 struct intel_encoder;
 
 bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state);
@@ -29,6 +30,8 @@ void intel_dsc_dsi_pps_write(struct intel_encoder *encoder,
 			     const struct intel_crtc_state *crtc_state);
 void intel_dsc_dp_pps_write(struct intel_encoder *encoder,
 			    const struct intel_crtc_state *crtc_state);
+void intel_dsc_su_et_parameters_configure(struct intel_dsb *dsb, struct intel_encoder *encoder,
+					  const struct intel_crtc_state *crtc_state, int su_lines);
 void intel_vdsc_state_dump(struct drm_printer *p, int indent,
 			   const struct intel_crtc_state *crtc_state);
 int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state);
drivers/gpu/drm/i915/display/intel_vdsc_regs.h +12 -0
index 2d478a84b07c..2b2e3c1b8138 100644
@@ -196,6 +196,18 @@
 #define   DSC_PPS18_NSL_BPG_OFFSET(offset)	REG_FIELD_PREP(DSC_PPS18_NSL_BPG_OFFSET_MASK, offset)
 #define   DSC_PPS18_SL_OFFSET_ADJ(offset)	REG_FIELD_PREP(DSC_PPS18_SL_OFFSET_ADJ_MASK, offset)
 
+#define _LNL_DSC0_SU_PARAMETER_SET_0_PA		0x78064
+#define _LNL_DSC1_SU_PARAMETER_SET_0_PA		0x78164
+#define _LNL_DSC0_SU_PARAMETER_SET_0_PB		0x78264
+#define _LNL_DSC1_SU_PARAMETER_SET_0_PB		0x78364
+#define LNL_DSC0_SU_PARAMETER_SET_0(pipe)	_MMIO_PIPE((pipe), _LNL_DSC0_SU_PARAMETER_SET_0_PA, _LNL_DSC0_SU_PARAMETER_SET_0_PB)
+#define LNL_DSC1_SU_PARAMETER_SET_0(pipe)	_MMIO_PIPE((pipe), _LNL_DSC1_SU_PARAMETER_SET_0_PA, _LNL_DSC1_SU_PARAMETER_SET_0_PB)
+
+#define   DSC_SUPS0_SU_SLICE_ROW_PER_FRAME_MASK		REG_GENMASK(31, 20)
+#define   DSC_SUPS0_SU_SLICE_ROW_PER_FRAME(rows)	REG_FIELD_PREP(DSC_SUPS0_SU_SLICE_ROW_PER_FRAME_MASK, (rows))
+#define   DSC_SUPS0_SU_PIC_HEIGHT_MASK			REG_GENMASK(15, 0)
+#define   DSC_SUPS0_SU_PIC_HEIGHT(h)			REG_FIELD_PREP(DSC_SUPS0_SU_PIC_HEIGHT_MASK, (h))
+
 /* Icelake Rate Control Buffer Threshold Registers */
 #define DSCA_RC_BUF_THRESH_0			_MMIO(0x6B230)
 #define DSCA_RC_BUF_THRESH_0_UDW		_MMIO(0x6B230 + 4)
drivers/gpu/drm/i915/display/intel_vrr.c +17 -0
index 3eed37f271b0..04a2ea086fb2 100644
@@ -461,6 +461,21 @@ void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state)
 	struct intel_display *display = to_intel_display(crtc_state);
 	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
 
+	if (!HAS_VRR(display))
+		return;
+
+	/*
+	 * Bspec says:
+	 * "(note: VRR needs to be programmed after
+	 *  TRANS_DDI_FUNC_CTL and before TRANS_CONF)."
+	 *
+	 * In practice it turns out that ICL can hang if
+	 * TRANS_VRR_VMAX/FLIPLINE are written before
+	 * enabling TRANS_DDI_FUNC_CTL.
+	 */
+	drm_WARN_ON(display->drm,
+		    !(intel_de_read(display, TRANS_DDI_FUNC_CTL(display, cpu_transcoder)) & TRANS_DDI_FUNC_ENABLE));
+
 	/*
 	 * This bit seems to have two meanings depending on the platform:
 	 * TGL: generate VRR "safe window" for DSB vblank waits
@@ -655,6 +670,8 @@ void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state)
 	if (!HAS_VRR(display))
 		return;
 
+	intel_vrr_set_transcoder_timings(crtc_state);
+
 	if (!intel_vrr_possible(crtc_state))
 		return;
 
drivers/gpu/drm/i915/gt/intel_engine_cs.c +2 -1
index b721bbd23356..ce8cdd517daa 100644
@@ -1969,7 +1969,8 @@ void intel_engines_reset_default_submission(struct intel_gt *gt)
 		if (engine->sanitize)
 			engine->sanitize(engine);
 
-		engine->set_default_submission(engine);
+		if (engine->set_default_submission)
+			engine->set_default_submission(engine);
 	}
 }
 
drivers/gpu/drm/imagination/pvr_device.c +0 -17
index 78d6b8a0a450..b2275cb7360e 100644
@@ -224,29 +224,12 @@ static irqreturn_t pvr_device_irq_thread_handler(int irq, void *data)
 	}
 
 	if (pvr_dev->has_safety_events) {
-		int err;
-
-		/*
-		 * Ensure the GPU is powered on since some safety events (such
-		 * as ECC faults) can happen outside of job submissions, which
-		 * are otherwise the only time a power reference is held.
-		 */
-		err = pvr_power_get(pvr_dev);
-		if (err) {
-			drm_err_ratelimited(drm_dev,
-					    "%s: could not take power reference (%d)\n",
-					    __func__, err);
-			return ret;
-		}
-
 		while (pvr_device_safety_irq_pending(pvr_dev)) {
 			pvr_device_safety_irq_clear(pvr_dev);
 			pvr_device_handle_safety_events(pvr_dev);
 
 			ret = IRQ_HANDLED;
 		}
-
-		pvr_power_put(pvr_dev);
 	}
 
 	return ret;
drivers/gpu/drm/imagination/pvr_power.c +18 -4
index c6e7ff9e935d..a7994457900d 100644
@@ -89,7 +89,7 @@ pvr_power_request_pwr_off(struct pvr_device *pvr_dev)
 }
 
 static int
-pvr_power_fw_disable(struct pvr_device *pvr_dev, bool hard_reset)
+pvr_power_fw_disable(struct pvr_device *pvr_dev, bool hard_reset, bool rpm_suspend)
 {
 	if (!hard_reset) {
 		int err;
@@ -105,6 +105,11 @@ pvr_power_fw_disable(struct pvr_device *pvr_dev, bool hard_reset)
 			return err;
 	}
 
+	if (rpm_suspend) {
+		/* Wait for late processing of GPU or firmware IRQs in other cores */
+		synchronize_irq(pvr_dev->irq);
+	}
+
 	return pvr_fw_stop(pvr_dev);
 }
 
@@ -360,7 +365,7 @@ pvr_power_device_suspend(struct device *dev)
 		return -EIO;
 
 	if (pvr_dev->fw_dev.booted) {
-		err = pvr_power_fw_disable(pvr_dev, false);
+		err = pvr_power_fw_disable(pvr_dev, false, true);
 		if (err)
 			goto err_drm_dev_exit;
 	}
@@ -509,7 +514,16 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_reset)
 	}
 
 	/* Disable IRQs for the duration of the reset. */
-	disable_irq(pvr_dev->irq);
+	if (hard_reset) {
+		disable_irq(pvr_dev->irq);
+	} else {
+		/*
+		 * Soft reset is triggered as a response to a FW command to the Host and is
+		 * processed from the threaded IRQ handler. This code cannot (nor needs to)
+		 * wait for any IRQ processing to complete.
+		 */
+		disable_irq_nosync(pvr_dev->irq);
+	}
 
 	do {
 		if (hard_reset) {
@@ -517,7 +531,7 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_reset)
 			queues_disabled = true;
 		}
 
-		err = pvr_power_fw_disable(pvr_dev, hard_reset);
+		err = pvr_power_fw_disable(pvr_dev, hard_reset, false);
 		if (!err) {
 			if (hard_reset) {
 				pvr_dev->fw_dev.booted = false;
drivers/gpu/drm/radeon/si_dpm.c +3 -1
index f12227145ef0..0342d095d44c 100644
@@ -2915,9 +2915,11 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev,
 	if (rdev->family == CHIP_HAINAN) {
 		if ((rdev->pdev->revision == 0x81) ||
 		    (rdev->pdev->revision == 0xC3) ||
+		    (rdev->pdev->device == 0x6660) ||
 		    (rdev->pdev->device == 0x6664) ||
 		    (rdev->pdev->device == 0x6665) ||
-		    (rdev->pdev->device == 0x6667)) {
+		    (rdev->pdev->device == 0x6667) ||
+		    (rdev->pdev->device == 0x666F)) {
 			max_sclk = 75000;
 		}
 		if ((rdev->pdev->revision == 0xC3) ||
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +2 -1
index 535d844191e7..3e8a2f4a907d 100644
@@ -768,7 +768,8 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
 		ret = vmw_bo_dirty_add(bo);
 		if (!ret && surface && surface->res.func->dirty_alloc) {
 			surface->res.coherent = true;
-			ret = surface->res.func->dirty_alloc(&surface->res);
+			if (surface->res.dirty == NULL)
+				ret = surface->res.func->dirty_alloc(&surface->res);
 		}
 		ttm_bo_unreserve(&bo->tbo);
 	}
drivers/gpu/drm/xe/xe_ggtt.c +4 -6
index 2f96983a66b6..8f722dd842da 100644
@@ -243,6 +243,8 @@ static void dev_fini_ggtt(void *arg)
 {
 	struct xe_ggtt *ggtt = arg;
 
+	scoped_guard(mutex, &ggtt->lock)
+		ggtt->flags &= ~XE_GGTT_FLAGS_ONLINE;
 	drain_workqueue(ggtt->wq);
 }
 
@@ -301,6 +303,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	if (err)
 		return err;
 
+	ggtt->flags |= XE_GGTT_FLAGS_ONLINE;
 	err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
 	if (err)
 		return err;
@@ -334,13 +337,10 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
 static void ggtt_node_remove(struct xe_ggtt_node *node)
 {
 	struct xe_ggtt *ggtt = node->ggtt;
-	struct xe_device *xe = tile_to_xe(ggtt->tile);
 	bool bound;
-	int idx;
-
-	bound = drm_dev_enter(&xe->drm, &idx);
 
 	mutex_lock(&ggtt->lock);
+	bound = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
 	if (bound)
 		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
 	drm_mm_remove_node(&node->base);
@@ -353,8 +353,6 @@ static void ggtt_node_remove(struct xe_ggtt_node *node)
 	if (node->invalidate_on_remove)
 		xe_ggtt_invalidate(ggtt);
 
-	drm_dev_exit(idx);
-
 free_node:
 	xe_ggtt_node_fini(node);
 }
drivers/gpu/drm/xe/xe_ggtt_types.h +4 -1
index c5e999d58ff2..445141d64701 100644
@@ -25,11 +25,14 @@ struct xe_ggtt {
 	/** @size: Total size of this GGTT */
 	u64 size;
 
-#define XE_GGTT_FLAGS_64K BIT(0)
+#define XE_GGTT_FLAGS_64K       BIT(0)
+#define XE_GGTT_FLAGS_ONLINE	BIT(1)
 	/**
 	 * @flags: Flags for this GGTT
 	 * Acceptable flags:
 	 * - %XE_GGTT_FLAGS_64K - if PTE size is 64K. Otherwise, regular is 4K.
+	 * - %XE_GGTT_FLAGS_ONLINE - is GGTT online, protected by ggtt->lock
+	 *   after init
 	 */
 	unsigned int flags;
 	/** @scratch: Internal object allocation used as a scratch page */
drivers/gpu/drm/xe/xe_guc_ct.c +1 -0
index 3aac1a7aa2e7..4158e8af1390 100644
@@ -266,6 +266,7 @@ static void guc_action_disable_ct(void *arg)
 {
 	struct xe_guc_ct *ct = arg;
 
+	xe_guc_ct_stop(ct);
 	guc_ct_change_state(ct, XE_GUC_CT_STATE_DISABLED);
 }
 
drivers/gpu/drm/xe/xe_oa.c +5 -2
index 7fbce93f0719..98bfb127eafc 100644
@@ -543,8 +543,7 @@ static ssize_t xe_oa_read(struct file *file, char __user *buf,
 	size_t offset = 0;
 	int ret;
 
-	/* Can't read from disabled streams */
-	if (!stream->enabled || !stream->sample)
+	if (!stream->sample)
 		return -EINVAL;
 
 	if (!(file->f_flags & O_NONBLOCK)) {
@@ -1459,6 +1458,10 @@ static void xe_oa_stream_disable(struct xe_oa_stream *stream)
 
 	if (stream->sample)
 		hrtimer_cancel(&stream->poll_check_timer);
+
+	/* Update stream->oa_buffer.tail to allow any final reports to be read */
+	if (xe_oa_buffer_check_unlocked(stream))
+		wake_up(&stream->poll_wq);
 }
 
 static int xe_oa_enable_preempt_timeslice(struct xe_oa_stream *stream)
drivers/gpu/drm/xe/xe_sync.c +4 -2
index 04c2f44ce014..90944218a590 100644
@@ -206,8 +206,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,
 			if (XE_IOCTL_DBG(xe, IS_ERR(sync->ufence)))
 				return PTR_ERR(sync->ufence);
 			sync->ufence_chain_fence = dma_fence_chain_alloc();
-			if (!sync->ufence_chain_fence)
-				return -ENOMEM;
+			if (!sync->ufence_chain_fence) {
+				err = -ENOMEM;
+				goto free_sync;
+			}
 			sync->ufence_syncobj = ufence_syncobj;
 		}
 
drivers/gpu/drm/xe/xe_vm_madvise.c +2 -1
index fe7e1b45f5c0..9dc801f65712 100644
@@ -390,7 +390,7 @@ int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, struct drm_file *fil
 						    madvise_range.num_vmas,
 						    args->atomic.val)) {
 				err = -EINVAL;
-				goto unlock_vm;
+				goto free_vmas;
 			}
 		}
 
@@ -426,6 +426,7 @@ int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, struct drm_file *fil
 err_fini:
 	if (madvise_range.has_bo_vmas)
 		drm_exec_fini(&exec);
+free_vmas:
 	kfree(madvise_range.vmas);
 	madvise_range.vmas = NULL;
 unlock_vm:
drivers/hid/bpf/hid_bpf_dispatch.c +2 -0
index 9a06f9b0e4ef..cf465a5fe43a 100644
@@ -447,6 +447,8 @@ hid_bpf_hw_request(struct hid_bpf_ctx *ctx, __u8 *buf, size_t buf__sz,
 					      (u64)(long)ctx,
 					      true); /* prevent infinite recursions */
 
+	if (ret > size)
+		ret = size;
 	if (ret > 0)
 		memcpy(buf, dma_data, ret);
 
drivers/hwmon/max6639.c +5 -5
index 1fc12e1463b5..447e8cdbc74c 100644
@@ -235,7 +235,7 @@ static int max6639_read_fan(struct device *dev, u32 attr, int channel,
 static int max6639_set_ppr(struct max6639_data *data, int channel, u8 ppr)
 {
 	/* Decrement the PPR value and shift left by 6 to match the register format */
-	return regmap_write(data->regmap, MAX6639_REG_FAN_PPR(channel), ppr-- << 6);
+	return regmap_write(data->regmap, MAX6639_REG_FAN_PPR(channel), --ppr << 6);
 }
 
 static int max6639_write_fan(struct device *dev, u32 attr, int channel,
@@ -537,8 +537,8 @@ static int max6639_probe_child_from_dt(struct i2c_client *client,
 
 {
 	struct device *dev = &client->dev;
-	u32 i;
-	int err, val;
+	u32 i, val;
+	int err;
 
 	err = of_property_read_u32(child, "reg", &i);
 	if (err) {
@@ -553,8 +553,8 @@ static int max6639_probe_child_from_dt(struct i2c_client *client,
 
 	err = of_property_read_u32(child, "pulses-per-revolution", &val);
 	if (!err) {
-		if (val < 1 || val > 5) {
-			dev_err(dev, "invalid pulses-per-revolution %d of %pOFn\n", val, child);
+		if (val < 1 || val > 4) {
+			dev_err(dev, "invalid pulses-per-revolution %u of %pOFn\n", val, child);
 			return -EINVAL;
 		}
 		data->ppr[i] = val;
drivers/hwmon/pmbus/ina233.c +2 -0
index dde1e1678394..2d8b5a5347ed 100644
@@ -67,6 +67,8 @@ static int ina233_read_word_data(struct i2c_client *client, int page,
 	switch (reg) {
 	case PMBUS_VIRT_READ_VMON:
 		ret = pmbus_read_word_data(client, 0, 0xff, MFR_READ_VSHUNT);
+		if (ret < 0)
+			return ret;
 
 		/* Adjust returned value to match VIN coefficients */
 		/* VIN: 1.25 mV VSHUNT: 2.5 uV LSB */
drivers/hwmon/pmbus/isl68137.c +5 -2
index 6bba9b50c51b..af7ff8a4e4f6 100644
@@ -96,8 +96,11 @@ static ssize_t isl68137_avs_enable_show_page(struct i2c_client *client,
 {
 	int val = pmbus_read_byte_data(client, page, PMBUS_OPERATION);
 
-	return sprintf(buf, "%d\n",
-		       (val & ISL68137_VOUT_AVS) == ISL68137_VOUT_AVS ? 1 : 0);
+	if (val < 0)
+		return val;
+
+	return sysfs_emit(buf, "%d\n",
+			   (val & ISL68137_VOUT_AVS) == ISL68137_VOUT_AVS);
 }
 
 static ssize_t isl68137_avs_enable_store_page(struct i2c_client *client,
drivers/hwmon/pmbus/mp2869.c +21 -14
index cc69a1e91dfe..4647892e5112 100644
@@ -165,7 +165,7 @@ static int mp2869_read_byte_data(struct i2c_client *client, int page, int reg)
 {
 	const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
 	struct mp2869_data *data = to_mp2869_data(info);
-	int ret;
+	int ret, mfr;
 
 	switch (reg) {
 	case PMBUS_VOUT_MODE:
@@ -188,11 +188,14 @@ static int mp2869_read_byte_data(struct i2c_client *client, int page, int reg)
 		if (ret < 0)
 			return ret;
 
+		mfr = pmbus_read_byte_data(client, page,
+					   PMBUS_STATUS_MFR_SPECIFIC);
+		if (mfr < 0)
+			return mfr;
+
 		ret = (ret & ~GENMASK(2, 2)) |
 			FIELD_PREP(GENMASK(2, 2),
-				   FIELD_GET(GENMASK(1, 1),
-					     pmbus_read_byte_data(client, page,
-								  PMBUS_STATUS_MFR_SPECIFIC)));
+				   FIELD_GET(GENMASK(1, 1), mfr));
 		break;
 	case PMBUS_STATUS_TEMPERATURE:
 		/*
@@ -207,15 +210,16 @@ static int mp2869_read_byte_data(struct i2c_client *client, int page, int reg)
 		if (ret < 0)
 			return ret;
 
+		mfr = pmbus_read_byte_data(client, page,
+					   PMBUS_STATUS_MFR_SPECIFIC);
+		if (mfr < 0)
+			return mfr;
+
 		ret = (ret & ~GENMASK(7, 6)) |
 			FIELD_PREP(GENMASK(6, 6),
-				   FIELD_GET(GENMASK(1, 1),
-					     pmbus_read_byte_data(client, page,
-								  PMBUS_STATUS_MFR_SPECIFIC))) |
+				   FIELD_GET(GENMASK(1, 1), mfr)) |
 			 FIELD_PREP(GENMASK(7, 7),
-				    FIELD_GET(GENMASK(1, 1),
-					      pmbus_read_byte_data(client, page,
-								   PMBUS_STATUS_MFR_SPECIFIC)));
+				    FIELD_GET(GENMASK(1, 1), mfr));
 		break;
 	default:
 		ret = -ENODATA;
@@ -230,7 +234,7 @@ static int mp2869_read_word_data(struct i2c_client *client, int page, int phase,
 {
 	const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
 	struct mp2869_data *data = to_mp2869_data(info);
-	int ret;
+	int ret, mfr;
 
 	switch (reg) {
 	case PMBUS_STATUS_WORD:
@@ -246,11 +250,14 @@ static int mp2869_read_word_data(struct i2c_client *client, int page, int phase,
 		if (ret < 0)
 			return ret;
 
+		mfr = pmbus_read_byte_data(client, page,
+					   PMBUS_STATUS_MFR_SPECIFIC);
+		if (mfr < 0)
+			return mfr;
+
 		ret = (ret & ~GENMASK(2, 2)) |
 			 FIELD_PREP(GENMASK(2, 2),
-				    FIELD_GET(GENMASK(1, 1),
-					      pmbus_read_byte_data(client, page,
-								   PMBUS_STATUS_MFR_SPECIFIC)));
+				    FIELD_GET(GENMASK(1, 1), mfr));
 		break;
 	case PMBUS_READ_VIN:
 		/*
drivers/hwmon/pmbus/mp2975.c +2 -0
index c31982d85196..d0bc47b12cb0 100644
@@ -313,6 +313,8 @@ static int mp2973_read_word_data(struct i2c_client *client, int page,
 	case PMBUS_STATUS_WORD:
 		/* MP2973 & MP2971 return PGOOD instead of PB_STATUS_POWER_GOOD_N. */
 		ret = pmbus_read_word_data(client, page, phase, reg);
+		if (ret < 0)
+			return ret;
 		ret ^= PB_STATUS_POWER_GOOD_N;
 		break;
 	case PMBUS_OT_FAULT_LIMIT:
drivers/i2c/busses/i2c-cp2615.c +3 -0
index e7720ea4045e..7b62ba115eb9 100644
@@ -298,6 +298,9 @@ cp2615_i2c_probe(struct usb_interface *usbif, const struct usb_device_id *id)
 	if (!adap)
 		return -ENOMEM;
 
+	if (!usbdev->serial)
+		return -EINVAL;
+
 	strscpy(adap->name, usbdev->serial, sizeof(adap->name));
 	adap->owner = THIS_MODULE;
 	adap->dev.parent = &usbif->dev;
drivers/i2c/busses/i2c-fsi.c +1 -0
index ae016a9431da..6a9245423d2b 100644
@@ -728,6 +728,7 @@ static int fsi_i2c_probe(struct device *dev)
 		rc = i2c_add_adapter(&port->adapter);
 		if (rc < 0) {
 			dev_err(dev, "Failed to register adapter: %d\n", rc);
+			of_node_put(np);
 			kfree(port);
 			continue;
 		}
drivers/i2c/busses/i2c-pxa.c +16 -1
index 968a8b8794da..70acf33e1d57 100644
@@ -268,6 +268,7 @@ struct pxa_i2c {
 	struct pinctrl		*pinctrl;
 	struct pinctrl_state	*pinctrl_default;
 	struct pinctrl_state	*pinctrl_recovery;
+	bool			reset_before_xfer;
 };
 
 #define _IBMR(i2c)	((i2c)->reg_ibmr)
@@ -1144,6 +1145,11 @@ static int i2c_pxa_xfer(struct i2c_adapter *adap,
 {
 	struct pxa_i2c *i2c = adap->algo_data;
 
+	if (i2c->reset_before_xfer) {
+		i2c_pxa_reset(i2c);
+		i2c->reset_before_xfer = false;
+	}
+
 	return i2c_pxa_internal_xfer(i2c, msgs, num, i2c_pxa_do_xfer);
 }
 
@@ -1521,7 +1527,16 @@ static int i2c_pxa_probe(struct platform_device *dev)
 		}
 	}
 
-	i2c_pxa_reset(i2c);
+	/*
+	 * Skip reset on Armada 3700 when recovery is used to avoid
+	 * controller hang due to the pinctrl state changes done by
+	 * the generic recovery initialization code. The reset will
+	 * be performed later, prior to the first transfer.
+	 */
+	if (i2c_type == REGS_A3700 && i2c->adap.bus_recovery_info)
+		i2c->reset_before_xfer = true;
+	else
+		i2c_pxa_reset(i2c);
 
 	ret = i2c_add_numbered_adapter(&i2c->adap);
 	if (ret < 0)
drivers/iommu/intel/dmar.c +1 -2
index ec975c73cfe6..6938800e9884 100644
@@ -1314,7 +1314,6 @@ static int qi_check_fault(struct intel_iommu *iommu, int index, int wait_index)
 	if (fault & DMA_FSTS_ITE) {
 		head = readl(iommu->reg + DMAR_IQH_REG);
 		head = ((head >> shift) - 1 + QI_LENGTH) % QI_LENGTH;
-		head |= 1;
 		tail = readl(iommu->reg + DMAR_IQT_REG);
 		tail = ((tail >> shift) - 1 + QI_LENGTH) % QI_LENGTH;
 
@@ -1331,7 +1330,7 @@ static int qi_check_fault(struct intel_iommu *iommu, int index, int wait_index)
 		do {
 			if (qi->desc_status[head] == QI_IN_USE)
 				qi->desc_status[head] = QI_ABORT;
-			head = (head - 2 + QI_LENGTH) % QI_LENGTH;
+			head = (head - 1 + QI_LENGTH) % QI_LENGTH;
 		} while (head != tail);
 
 		/*
drivers/iommu/intel/svm.c +8 -4
index e147f71f91b7..4cbbebc02749 100644
@@ -164,9 +164,12 @@ static int intel_svm_set_dev_pasid(struct iommu_domain *domain,
 	if (IS_ERR(dev_pasid))
 		return PTR_ERR(dev_pasid);
 
-	ret = iopf_for_domain_replace(domain, old, dev);
-	if (ret)
-		goto out_remove_dev_pasid;
+	/* SVA with non-IOMMU/PRI IOPF handling is allowed. */
+	if (info->pri_supported) {
+		ret = iopf_for_domain_replace(domain, old, dev);
+		if (ret)
+			goto out_remove_dev_pasid;
+	}
 
 	/* Setup the pasid table: */
 	sflags = cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0;
@@ -180,7 +183,8 @@ static int intel_svm_set_dev_pasid(struct iommu_domain *domain,
 
 	return 0;
 out_unwind_iopf:
-	iopf_for_domain_replace(old, domain, dev);
+	if (info->pri_supported)
+		iopf_for_domain_replace(old, domain, dev);
 out_remove_dev_pasid:
 	domain_remove_dev_pasid(domain, dev, pasid);
 	return ret;
drivers/iommu/iommu-sva.c +6 -6
index e1e63c2be82b..fd735aaae9e3 100644
@@ -182,13 +182,13 @@ void iommu_sva_unbind_device(struct iommu_sva *handle)
 	iommu_detach_device_pasid(domain, dev, iommu_mm->pasid);
 	if (--domain->users == 0) {
 		list_del(&domain->next);
-		iommu_domain_free(domain);
-	}
+		if (list_empty(&iommu_mm->sva_domains)) {
+			list_del(&iommu_mm->mm_list_elm);
+			if (list_empty(&iommu_sva_mms))
+				iommu_sva_present = false;
+		}
 
-	if (list_empty(&iommu_mm->sva_domains)) {
-		list_del(&iommu_mm->mm_list_elm);
-		if (list_empty(&iommu_sva_mms))
-			iommu_sva_present = false;
+		iommu_domain_free(domain);
 	}
 
 	mutex_unlock(&iommu_sva_lock);
drivers/irqchip/irq-riscv-rpmi-sysmsi.c +1 -0
index 5c74c561ce31..612f3972f7af 100644
@@ -250,6 +250,7 @@ static int rpmi_sysmsi_probe(struct platform_device *pdev)
 		rc = riscv_acpi_get_gsi_info(fwnode, &priv->gsi_base, &id,
 					     &nr_irqs, NULL);
 		if (rc) {
+			mbox_free_channel(priv->chan);
 			dev_err(dev, "failed to find GSI mapping\n");
 			return rc;
 		}
drivers/mmc/host/sdhci-pci-gli.c +9 -0
index b0f91cc9e40e..6e4084407662 100644
@@ -68,6 +68,9 @@
 #define   GLI_9750_MISC_TX1_DLY_VALUE    0x5
 #define   SDHCI_GLI_9750_MISC_SSC_OFF    BIT(26)
 
+#define SDHCI_GLI_9750_GM_BURST_SIZE		  0x510
+#define   SDHCI_GLI_9750_GM_BURST_SIZE_R_OSRC_LMT  GENMASK(17, 16)
+
 #define SDHCI_GLI_9750_TUNING_CONTROL	          0x540
 #define   SDHCI_GLI_9750_TUNING_CONTROL_EN          BIT(4)
 #define   GLI_9750_TUNING_CONTROL_EN_ON             0x1
@@ -345,10 +348,16 @@ static void gli_set_9750(struct sdhci_host *host)
 	u32 misc_value;
 	u32 parameter_value;
 	u32 control_value;
+	u32 burst_value;
 	u16 ctrl2;
 
 	gl9750_wt_on(host);
 
+	/* clear R_OSRC_Lmt to avoid DMA write corruption */
+	burst_value = sdhci_readl(host, SDHCI_GLI_9750_GM_BURST_SIZE);
+	burst_value &= ~SDHCI_GLI_9750_GM_BURST_SIZE_R_OSRC_LMT;
+	sdhci_writel(host, burst_value, SDHCI_GLI_9750_GM_BURST_SIZE);
+
 	driving_value = sdhci_readl(host, SDHCI_GLI_9750_DRIVING);
 	pll_value = sdhci_readl(host, SDHCI_GLI_9750_PLL);
 	sw_ctrl_value = sdhci_readl(host, SDHCI_GLI_9750_SW_CTRL);
drivers/mmc/host/sdhci.c +8 -1
index ac7e11f37af7..fec9329e1edb 100644
@@ -4532,8 +4532,15 @@ int sdhci_setup_host(struct sdhci_host *host)
 	 * their platform code before calling sdhci_add_host(), and we
 	 * won't assume 8-bit width for hosts without that CAP.
 	 */
-	if (!(host->quirks & SDHCI_QUIRK_FORCE_1_BIT_DATA))
+	if (host->quirks & SDHCI_QUIRK_FORCE_1_BIT_DATA) {
+		host->caps1 &= ~(SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 | SDHCI_SUPPORT_DDR50);
+		if (host->quirks2 & SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400)
+			host->caps1 &= ~SDHCI_SUPPORT_HS400;
+		mmc->caps2 &= ~(MMC_CAP2_HS200 | MMC_CAP2_HS400 | MMC_CAP2_HS400_ES);
+		mmc->caps &= ~(MMC_CAP_DDR | MMC_CAP_UHS);
+	} else {
 		mmc->caps |= MMC_CAP_4_BIT_DATA;
+	}
 
 	if (host->quirks2 & SDHCI_QUIRK2_HOST_NO_CMD23)
 		mmc->caps &= ~MMC_CAP_CMD23;
drivers/mtd/nand/raw/brcmnand/brcmnand.c +2 -4
index 835653bdd5ab..8f4d001377a1 100644
@@ -2350,14 +2350,12 @@ static int brcmnand_write(struct mtd_info *mtd, struct nand_chip *chip,
 	for (i = 0; i < ctrl->max_oob; i += 4)
 		oob_reg_write(ctrl, i, 0xffffffff);
 
-	if (mtd->oops_panic_write)
+	if (mtd->oops_panic_write) {
 		/* switch to interrupt polling and PIO mode */
 		disable_ctrl_irqs(ctrl);
-
-	if (use_dma(ctrl) && (has_edu(ctrl) || !oob) && flash_dma_buf_ok(buf)) {
+	} else if (use_dma(ctrl) && (has_edu(ctrl) || !oob) && flash_dma_buf_ok(buf)) {
 		if (ctrl->dma_trans(host, addr, (u32 *)buf, oob, mtd->writesize,
 				    CMD_PROGRAM_PAGE))
-
 			ret = -EIO;
 
 		goto out;
drivers/mtd/nand/raw/cadence-nand-controller.c +1 -1
index 21eabedc2ed1..54ed84dfc0be 100644
@@ -2878,7 +2878,7 @@ static int cadence_nand_init(struct cdns_nand_ctrl *cdns_ctrl)
 						  sizeof(*cdns_ctrl->cdma_desc),
 						  &cdns_ctrl->dma_cdma_desc,
 						  GFP_KERNEL);
-	if (!cdns_ctrl->dma_cdma_desc)
+	if (!cdns_ctrl->cdma_desc)
 		return -ENOMEM;
 
 	cdns_ctrl->buf_size = SZ_16K;
drivers/mtd/nand/raw/nand_base.c +12 -2
index ad6d66309597..b4bd73d7cd05 100644
@@ -4737,11 +4737,16 @@ static void nand_shutdown(struct mtd_info *mtd)
 static int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 {
 	struct nand_chip *chip = mtd_to_nand(mtd);
+	int ret;
 
 	if (!chip->ops.lock_area)
 		return -ENOTSUPP;
 
-	return chip->ops.lock_area(chip, ofs, len);
+	nand_get_device(chip);
+	ret = chip->ops.lock_area(chip, ofs, len);
+	nand_release_device(chip);
+
+	return ret;
 }
 
 /**
@@ -4753,11 +4758,16 @@ static int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 static int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 {
 	struct nand_chip *chip = mtd_to_nand(mtd);
+	int ret;
 
 	if (!chip->ops.unlock_area)
 		return -ENOTSUPP;
 
-	return chip->ops.unlock_area(chip, ofs, len);
+	nand_get_device(chip);
+	ret = chip->ops.unlock_area(chip, ofs, len);
+	nand_release_device(chip);
+
+	return ret;
 }
 
 /* Set default functions */
drivers/mtd/nand/raw/pl35x-nand-controller.c +3 -0
index 7f012b7c3eae..50d4305729f4 100644
@@ -862,6 +862,9 @@ static int pl35x_nfc_setup_interface(struct nand_chip *chip, int cs,
 			  PL35X_SMC_NAND_TAR_CYCLES(tmgs.t_ar) |
 			  PL35X_SMC_NAND_TRR_CYCLES(tmgs.t_rr);
 
+	writel(plnand->timings, nfc->conf_regs + PL35X_SMC_CYCLES);
+	pl35x_smc_update_regs(nfc);
+
 	return 0;
 }
 
drivers/mtd/parsers/redboot.c +3 -3
index 3b55b676ca6b..c06ba7a2a34b 100644
@@ -270,9 +270,9 @@ static int parse_redboot_partitions(struct mtd_info *master,
 
 		strcpy(names, fl->img->name);
 #ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
-		if (!memcmp(names, "RedBoot", 8) ||
-		    !memcmp(names, "RedBoot config", 15) ||
-		    !memcmp(names, "FIS directory", 14)) {
+		if (!strcmp(names, "RedBoot") ||
+		    !strcmp(names, "RedBoot config") ||
+		    !strcmp(names, "FIS directory")) {
 			parts[i].mask_flags = MTD_WRITEABLE;
 		}
 #endif
drivers/net/bonding/bond_debugfs.c +11 -5
index 8adbec7c5084..8967b65f6d84 100644
@@ -34,11 +34,17 @@ static int bond_debug_rlb_hash_show(struct seq_file *m, void *v)
 	for (; hash_index != RLB_NULL_INDEX;
 	     hash_index = client_info->used_next) {
 		client_info = &(bond_info->rx_hashtbl[hash_index]);
-		seq_printf(m, "%-15pI4 %-15pI4 %-17pM %s\n",
-			&client_info->ip_src,
-			&client_info->ip_dst,
-			&client_info->mac_dst,
-			client_info->slave->dev->name);
+		if (client_info->slave)
+			seq_printf(m, "%-15pI4 %-15pI4 %-17pM %s\n",
+				   &client_info->ip_src,
+				   &client_info->ip_dst,
+				   &client_info->mac_dst,
+				   client_info->slave->dev->name);
+		else
+			seq_printf(m, "%-15pI4 %-15pI4 %-17pM (none)\n",
+				   &client_info->ip_src,
+				   &client_info->ip_dst,
+				   &client_info->mac_dst);
 	}
 
 	spin_unlock_bh(&bond->mode_lock);
drivers/net/bonding/bond_main.c +5 -3
index e8e261e0cb4e..106cfe732a15 100644
@@ -1497,9 +1497,11 @@ static int bond_header_create(struct sk_buff *skb, struct net_device *bond_dev,
 	return ret;
 }
 
-static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
+static int bond_header_parse(const struct sk_buff *skb,
+			     const struct net_device *dev,
+			     unsigned char *haddr)
 {
-	struct bonding *bond = netdev_priv(skb->dev);
+	struct bonding *bond = netdev_priv(dev);
 	const struct header_ops *slave_ops;
 	struct slave *slave;
 	int ret = 0;
@@ -1509,7 +1511,7 @@ static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
 	if (slave) {
 		slave_ops = READ_ONCE(slave->dev->header_ops);
 		if (slave_ops && slave_ops->parse)
-			ret = slave_ops->parse(skb, haddr);
+			ret = slave_ops->parse(skb, slave->dev, haddr);
 	}
 	rcu_read_unlock();
 	return ret;
drivers/net/dsa/bcm_sf2.c +6 -2
index 960685596093..de3efa3ce9a7 100644
@@ -980,15 +980,19 @@ static int bcm_sf2_sw_resume(struct dsa_switch *ds)
 	ret = bcm_sf2_sw_rst(priv);
 	if (ret) {
 		pr_err("%s: failed to software reset switch\n", __func__);
+		if (!priv->wol_ports_mask)
+			clk_disable_unprepare(priv->clk);
 		return ret;
 	}
 
 	bcm_sf2_crossbar_setup(priv);
 
 	ret = bcm_sf2_cfp_resume(ds);
-	if (ret)
+	if (ret) {
+		if (!priv->wol_ports_mask)
+			clk_disable_unprepare(priv->clk);
 		return ret;
-
+	}
 	if (priv->hw_params.num_gphy == 1)
 		bcm_sf2_gphy_enable_set(ds, true);
 
drivers/net/ethernet/airoha/airoha_eth.c +0 -1
index 0394ba6a90a9..b16b9ae7d331 100644
@@ -3046,7 +3046,6 @@ static void airoha_remove(struct platform_device *pdev)
 		if (!port)
 			continue;
 
-		airoha_dev_stop(port->dev);
 		unregister_netdev(port->dev);
 		airoha_metadata_dst_free(port);
 	}
drivers/net/ethernet/broadcom/bnxt/bnxt.c +2 -0
index 2b9c039d347d..e9f40ca8bb4f 100644
@@ -2927,6 +2927,8 @@ static int bnxt_async_event_process(struct bnxt *bp,
 		u16 type = (u16)BNXT_EVENT_BUF_PRODUCER_TYPE(data1);
 		u32 offset =  BNXT_EVENT_BUF_PRODUCER_OFFSET(data2);
 
+		if (type >= ARRAY_SIZE(bp->bs_trace))
+			goto async_event_process_exit;
 		bnxt_bs_trace_check_wrap(&bp->bs_trace[type], offset);
 		goto async_event_process_exit;
 	}
drivers/net/ethernet/broadcom/bnxt/bnxt.h +1 -1
index 45bbaec75ded..c80603704838 100644
@@ -2134,7 +2134,7 @@ enum board_idx {
 };
 
 #define BNXT_TRACE_BUF_MAGIC_BYTE ((u8)0xbc)
-#define BNXT_TRACE_MAX 11
+#define BNXT_TRACE_MAX (DBG_LOG_BUFFER_FLUSH_REQ_TYPE_ERR_QPC_TRACE + 1)
 
 struct bnxt_bs_trace_info {
 	u8 *magic_byte;
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +1 -1
index 8fb551288298..96d5d4f7f51f 100644
@@ -123,7 +123,7 @@ static int bcmgenet_poll_wol_status(struct bcmgenet_priv *priv)
 	while (!(bcmgenet_rbuf_readl(priv, RBUF_STATUS)
 		& RBUF_STATUS_WOL)) {
 		retries++;
-		if (retries > 5) {
+		if (retries > 50) {
 			netdev_crit(dev, "polling wol mode timeout\n");
 			return -ETIMEDOUT;
 		}
drivers/net/ethernet/cadence/macb_main.c +136 -25

224 lines not on this page · raw message

drivers/net/ethernet/cadence/macb_ptp.c +3 -1
index a63bf29c4fa8..f2b09100f710 100644
@@ -355,8 +355,10 @@ void gem_ptp_remove(struct net_device *ndev)
 {
 	struct macb *bp = netdev_priv(ndev);
 
-	if (bp->ptp_clock)
+	if (bp->ptp_clock) {
 		ptp_clock_unregister(bp->ptp_clock);
+		bp->ptp_clock = NULL;
+	}
 
 	gem_ptp_clear_timer(bp);
 
drivers/net/ethernet/intel/iavf/iavf_main.c +6 -3
index 03ab2a4276bb..0a72d419782e 100644
@@ -757,10 +757,13 @@ iavf_vlan_filter *iavf_add_vlan(struct iavf_adapter *adapter,
 		adapter->num_vlan_filters++;
 		iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_ADD_VLAN_FILTER);
 	} else if (f->state == IAVF_VLAN_REMOVE) {
-		/* IAVF_VLAN_REMOVE means that VLAN wasn't yet removed.
-		 * We can safely only change the state here.
+		/* Re-add the filter since we cannot tell whether the
+		 * pending delete has already been processed by the PF.
+		 * A duplicate add is harmless.
 		 */
-		f->state = IAVF_VLAN_ACTIVE;
+		f->state = IAVF_VLAN_ADD;
+		iavf_schedule_aq_request(adapter,
+					 IAVF_FLAG_AQ_ADD_VLAN_FILTER);
 	}
 
 clearout:
drivers/net/ethernet/intel/igc/igc.h +2 -0
index a427f05814c1..17236813965d 100644
@@ -781,6 +781,8 @@ int igc_ptp_hwtstamp_set(struct net_device *netdev,
 			 struct kernel_hwtstamp_config *config,
 			 struct netlink_ext_ack *extack);
 void igc_ptp_tx_hang(struct igc_adapter *adapter);
+void igc_ptp_clear_xsk_tx_tstamp_queue(struct igc_adapter *adapter,
+				       u16 queue_id);
 void igc_ptp_read(struct igc_adapter *adapter, struct timespec64 *ts);
 void igc_ptp_tx_tstamp_event(struct igc_adapter *adapter);
 
drivers/net/ethernet/intel/igc/igc_main.c +9 -5
index 89a321a344d2..104d6ab2ce5f 100644
@@ -264,6 +264,13 @@ static void igc_clean_tx_ring(struct igc_ring *tx_ring)
 	/* reset next_to_use and next_to_clean */
 	tx_ring->next_to_use = 0;
 	tx_ring->next_to_clean = 0;
+
+	/* Clear any lingering XSK TX timestamp requests */
+	if (test_bit(IGC_RING_FLAG_TX_HWTSTAMP, &tx_ring->flags)) {
+		struct igc_adapter *adapter = netdev_priv(tx_ring->netdev);
+
+		igc_ptp_clear_xsk_tx_tstamp_queue(adapter, tx_ring->queue_index);
+	}
 }
 
 /**
@@ -1730,11 +1737,8 @@ static netdev_tx_t igc_xmit_frame(struct sk_buff *skb,
 	/* The minimum packet size with TCTL.PSP set is 17 so pad the skb
 	 * in order to meet this minimum size requirement.
 	 */
-	if (skb->len < 17) {
-		if (skb_padto(skb, 17))
-			return NETDEV_TX_OK;
-		skb->len = 17;
-	}
+	if (skb_put_padto(skb, 17))
+		return NETDEV_TX_OK;
 
 	return igc_xmit_frame_ring(skb, igc_tx_queue_mapping(adapter, skb));
 }
drivers/net/ethernet/intel/igc/igc_ptp.c +33 -0
index 7aae83c108fd..98491346d21b 100644
@@ -576,6 +576,39 @@ static void igc_ptp_clear_tx_tstamp(struct igc_adapter *adapter)
 	spin_unlock_irqrestore(&adapter->ptp_tx_lock, flags);
 }
 
+/**
+ * igc_ptp_clear_xsk_tx_tstamp_queue - Clear pending XSK TX timestamps for a queue
+ * @adapter: Board private structure
+ * @queue_id: TX queue index to clear timestamps for
+ *
+ * Iterates over all TX timestamp registers and releases any pending
+ * timestamp requests associated with the given TX queue. This is
+ * called when an XDP pool is being disabled to ensure no stale
+ * timestamp references remain.
+ */
+void igc_ptp_clear_xsk_tx_tstamp_queue(struct igc_adapter *adapter, u16 queue_id)
+{
+	unsigned long flags;
+	int i;
+
+	spin_lock_irqsave(&adapter->ptp_tx_lock, flags);
+
+	for (i = 0; i < IGC_MAX_TX_TSTAMP_REGS; i++) {
+		struct igc_tx_timestamp_request *tstamp = &adapter->tx_tstamp[i];
+
+		if (tstamp->buffer_type != IGC_TX_BUFFER_TYPE_XSK)
+			continue;
+		if (tstamp->xsk_queue_index != queue_id)
+			continue;
+		if (!tstamp->xsk_tx_buffer)
+			continue;
+
+		igc_ptp_free_tx_buffer(adapter, tstamp);
+	}
+
+	spin_unlock_irqrestore(&adapter->ptp_tx_lock, flags);
+}
+
 static void igc_ptp_disable_tx_timestamp(struct igc_adapter *adapter)
 {
 	struct igc_hw *hw = &adapter->hw;
drivers/net/ethernet/intel/libie/fwlog.c +36 -13

110 lines not on this page · raw message

drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +2 -2
index ab0c99aa9f9a..74d44510684b 100644
@@ -5018,7 +5018,7 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)
 	if (priv->percpu_pools)
 		numbufs = port->nrxqs * 2;
 
-	if (change_percpu)
+	if (change_percpu && priv->global_tx_fc)
 		mvpp2_bm_pool_update_priv_fc(priv, false);
 
 	for (i = 0; i < numbufs; i++)
@@ -5043,7 +5043,7 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)
 			mvpp2_open(port->dev);
 	}
 
-	if (change_percpu)
+	if (change_percpu && priv->global_tx_fc)
 		mvpp2_bm_pool_update_priv_fc(priv, true);
 
 	return 0;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h +1 -0
index f8eaaf37963b..abcbd38db9db 100644
@@ -287,6 +287,7 @@ struct mlx5e_ipsec_sa_entry {
 	struct mlx5e_ipsec_dwork *dwork;
 	struct mlx5e_ipsec_limits limits;
 	u32 rx_mapped_id;
+	u8 ctx[MLX5_ST_SZ_BYTES(ipsec_aso)];
 };
 
 struct mlx5_accel_pol_xfrm_attrs {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c +22 -28

105 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +9 -14
index 56e6f54b1e2e..af58ad72906f 100644
@@ -1497,24 +1497,24 @@ static int esw_qos_node_enable_tc_arbitration(struct mlx5_esw_sched_node *node,
 	return err;
 }
 
-static u32 mlx5_esw_qos_lag_link_speed_get_locked(struct mlx5_core_dev *mdev)
+static u32 mlx5_esw_qos_lag_link_speed_get(struct mlx5_core_dev *mdev,
+					   bool take_rtnl)
 {
 	struct ethtool_link_ksettings lksettings;
 	struct net_device *slave, *master;
 	u32 speed = SPEED_UNKNOWN;
 
-	/* Lock ensures a stable reference to master and slave netdevice
-	 * while port speed of master is queried.
-	 */
-	ASSERT_RTNL();
-
 	slave = mlx5_uplink_netdev_get(mdev);
 	if (!slave)
 		goto out;
 
+	if (take_rtnl)
+		rtnl_lock();
 	master = netdev_master_upper_dev_get(slave);
 	if (master && !__ethtool_get_link_ksettings(master, &lksettings))
 		speed = lksettings.base.speed;
+	if (take_rtnl)
+		rtnl_unlock();
 
 out:
 	mlx5_uplink_netdev_put(mdev, slave);
@@ -1522,20 +1522,15 @@ static u32 mlx5_esw_qos_lag_link_speed_get_locked(struct mlx5_core_dev *mdev)
 }
 
 static int mlx5_esw_qos_max_link_speed_get(struct mlx5_core_dev *mdev, u32 *link_speed_max,
-					   bool hold_rtnl_lock, struct netlink_ext_ack *extack)
+					   bool take_rtnl,
+					   struct netlink_ext_ack *extack)
 {
 	int err;
 
 	if (!mlx5_lag_is_active(mdev))
 		goto skip_lag;
 
-	if (hold_rtnl_lock)
-		rtnl_lock();
-
-	*link_speed_max = mlx5_esw_qos_lag_link_speed_get_locked(mdev);
-
-	if (hold_rtnl_lock)
-		rtnl_unlock();
+	*link_speed_max = mlx5_esw_qos_lag_link_speed_get(mdev, take_rtnl);
 
 	if (*link_speed_max != (u32)SPEED_UNKNOWN)
 		return 0;
drivers/net/ethernet/microsoft/mana/hw_channel.c +3 -3
index ada6c78a2bef..21cddafba506 100644
@@ -802,9 +802,6 @@ void mana_hwc_destroy_channel(struct gdma_context *gc)
 		gc->max_num_cqs = 0;
 	}
 
-	kfree(hwc->caller_ctx);
-	hwc->caller_ctx = NULL;
-
 	if (hwc->txq)
 		mana_hwc_destroy_wq(hwc, hwc->txq);
 
@@ -814,6 +811,9 @@ void mana_hwc_destroy_channel(struct gdma_context *gc)
 	if (hwc->cq)
 		mana_hwc_destroy_cq(hwc->gdma_dev->gdma_context, hwc->cq);
 
+	kfree(hwc->caller_ctx);
+	hwc->caller_ctx = NULL;
+
 	mana_gd_free_res_map(&hwc->inflight_msg_res);
 
 	hwc->num_inflight_msg = 0;
drivers/net/netconsole.c +1 -1
index 020252961c90..7288b25d6b8c 100644
@@ -503,7 +503,7 @@ static ssize_t sysdata_release_enabled_show(struct config_item *item,
 	bool release_enabled;
 
 	mutex_lock(&dynamic_netconsole_mutex);
-	release_enabled = !!(nt->sysdata_fields & SYSDATA_TASKNAME);
+	release_enabled = !!(nt->sysdata_fields & SYSDATA_RELEASE);
 	mutex_unlock(&dynamic_netconsole_mutex);
 
 	return sysfs_emit(buf, "%d\n", release_enabled);
drivers/net/netdevsim/netdev.c +4 -1
index fa1d97885caa..06446b03cd9b 100644
@@ -109,8 +109,11 @@ static int nsim_forward_skb(struct net_device *tx_dev,
 	int ret;
 
 	ret = __dev_forward_skb(rx_dev, skb);
-	if (ret)
+	if (ret) {
+		if (psp_ext)
+			__skb_ext_put(psp_ext);
 		return ret;
+	}
 
 	nsim_psp_handle_ext(skb, psp_ext);
 
drivers/net/usb/aqc111.c +6 -6
index 9201ee10a13f..d316aa66dbc2 100644
@@ -1400,14 +1400,14 @@ static int aqc111_suspend(struct usb_interface *intf, pm_message_t message)
 		aqc111_write16_cmd_nopm(dev, AQ_ACCESS_MAC,
 					SFR_MEDIUM_STATUS_MODE, 2, &reg16);
 
-		aqc111_write_cmd(dev, AQ_WOL_CFG, 0, 0,
-				 WOL_CFG_SIZE, &wol_cfg);
-		aqc111_write32_cmd(dev, AQ_PHY_OPS, 0, 0,
-				   &aqc111_data->phy_cfg);
+		aqc111_write_cmd_nopm(dev, AQ_WOL_CFG, 0, 0,
+				      WOL_CFG_SIZE, &wol_cfg);
+		aqc111_write32_cmd_nopm(dev, AQ_PHY_OPS, 0, 0,
+					&aqc111_data->phy_cfg);
 	} else {
 		aqc111_data->phy_cfg |= AQ_LOW_POWER;
-		aqc111_write32_cmd(dev, AQ_PHY_OPS, 0, 0,
-				   &aqc111_data->phy_cfg);
+		aqc111_write32_cmd_nopm(dev, AQ_PHY_OPS, 0, 0,
+					&aqc111_data->phy_cfg);
 
 		/* Disable RX path */
 		aqc111_read16_cmd_nopm(dev, AQ_ACCESS_MAC,
drivers/net/usb/cdc_ncm.c +6 -4
index 5d123df0a866..81d7e99fc0f0 100644
@@ -1656,6 +1656,7 @@ int cdc_ncm_rx_verify_ndp16(struct sk_buff *skb_in, int ndpoffset)
 	struct usbnet *dev = netdev_priv(skb_in->dev);
 	struct usb_cdc_ncm_ndp16 *ndp16;
 	int ret = -EINVAL;
+	size_t ndp_len;
 
 	if ((ndpoffset + sizeof(struct usb_cdc_ncm_ndp16)) > skb_in->len) {
 		netif_dbg(dev, rx_err, dev->net, "invalid NDP offset  <%u>\n",
@@ -1675,8 +1676,8 @@ int cdc_ncm_rx_verify_ndp16(struct sk_buff *skb_in, int ndpoffset)
 					sizeof(struct usb_cdc_ncm_dpe16));
 	ret--; /* we process NDP entries except for the last one */
 
-	if ((sizeof(struct usb_cdc_ncm_ndp16) +
-	     ret * (sizeof(struct usb_cdc_ncm_dpe16))) > skb_in->len) {
+	ndp_len = struct_size_t(struct usb_cdc_ncm_ndp16, dpe16, ret);
+	if (ndpoffset + ndp_len > skb_in->len) {
 		netif_dbg(dev, rx_err, dev->net, "Invalid nframes = %d\n", ret);
 		ret = -EINVAL;
 	}
@@ -1692,6 +1693,7 @@ int cdc_ncm_rx_verify_ndp32(struct sk_buff *skb_in, int ndpoffset)
 	struct usbnet *dev = netdev_priv(skb_in->dev);
 	struct usb_cdc_ncm_ndp32 *ndp32;
 	int ret = -EINVAL;
+	size_t ndp_len;
 
 	if ((ndpoffset + sizeof(struct usb_cdc_ncm_ndp32)) > skb_in->len) {
 		netif_dbg(dev, rx_err, dev->net, "invalid NDP offset  <%u>\n",
@@ -1711,8 +1713,8 @@ int cdc_ncm_rx_verify_ndp32(struct sk_buff *skb_in, int ndpoffset)
 					sizeof(struct usb_cdc_ncm_dpe32));
 	ret--; /* we process NDP entries except for the last one */
 
-	if ((sizeof(struct usb_cdc_ncm_ndp32) +
-	     ret * (sizeof(struct usb_cdc_ncm_dpe32))) > skb_in->len) {
+	ndp_len = struct_size_t(struct usb_cdc_ncm_ndp32, dpe32, ret);
+	if (ndpoffset + ndp_len > skb_in->len) {
 		netif_dbg(dev, rx_err, dev->net, "Invalid nframes = %d\n", ret);
 		ret = -EINVAL;
 	}
drivers/net/wireless/ath/ath9k/channel.c +2 -4
index 121e51ce1bc0..8b27d8cc086a 100644
@@ -1006,7 +1006,7 @@ static void ath_scan_send_probe(struct ath_softc *sc,
 	skb_set_queue_mapping(skb, IEEE80211_AC_VO);
 
 	if (!ieee80211_tx_prepare_skb(sc->hw, vif, skb, band, NULL))
-		goto error;
+		return;
 
 	txctl.txq = sc->tx.txq_map[IEEE80211_AC_VO];
 	if (ath_tx_start(sc->hw, skb, &txctl))
@@ -1119,10 +1119,8 @@ ath_chanctx_send_vif_ps_frame(struct ath_softc *sc, struct ath_vif *avp,
 
 		skb->priority = 7;
 		skb_set_queue_mapping(skb, IEEE80211_AC_VO);
-		if (!ieee80211_tx_prepare_skb(sc->hw, vif, skb, band, &sta)) {
-			dev_kfree_skb_any(skb);
+		if (!ieee80211_tx_prepare_skb(sc->hw, vif, skb, band, &sta))
 			return false;
-		}
 		break;
 	default:
 		return false;
drivers/net/wireless/mediatek/mt76/scan.c +1 -3
index 5a875aac410f..3d9cf6f5e137 100644
@@ -63,10 +63,8 @@ mt76_scan_send_probe(struct mt76_dev *dev, struct cfg80211_ssid *ssid)
 
 	rcu_read_lock();
 
-	if (!ieee80211_tx_prepare_skb(phy->hw, vif, skb, band, NULL)) {
-		ieee80211_free_txskb(phy->hw, skb);
+	if (!ieee80211_tx_prepare_skb(phy->hw, vif, skb, band, NULL))
 		goto out;
-	}
 
 	info = IEEE80211_SKB_CB(skb);
 	if (req->no_cck)
drivers/net/wireless/ti/wlcore/tx.c +1 -1
index f251627c24c6..3c0f8f3ba266 100644
@@ -210,7 +210,7 @@ static int wl1271_tx_allocate(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 		if (skb_headroom(skb) < (total_len - skb->len) &&
 		    pskb_expand_head(skb, (total_len - skb->len), 0, GFP_ATOMIC)) {
 			wl1271_free_tx_id(wl, id);
-			return -EAGAIN;
+			return -ENOMEM;
 		}
 		desc = skb_push(skb, total_len - skb->len);
 
drivers/net/wireless/virtual/mac80211_hwsim.c +0 -1
index 2f263d89d2d6..20815fdc9d37 100644
@@ -3021,7 +3021,6 @@ static void hw_scan_work(struct work_struct *work)
 						      hwsim->tmp_chan->band,
 						      NULL)) {
 				rcu_read_unlock();
-				kfree_skb(probe);
 				continue;
 			}
 
drivers/nfc/nxp-nci/i2c.c +2 -2
index 6a5ce8ff91f0..b3d34433bd14 100644
@@ -47,8 +47,8 @@ static int nxp_nci_i2c_set_mode(void *phy_id,
 {
 	struct nxp_nci_i2c_phy *phy = (struct nxp_nci_i2c_phy *) phy_id;
 
-	gpiod_set_value(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
-	gpiod_set_value(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
+	gpiod_set_value_cansleep(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
+	gpiod_set_value_cansleep(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
 	usleep_range(10000, 15000);
 
 	if (mode == NXP_NCI_MODE_COLD)
drivers/nvdimm/bus.c +3 -2
index 87178a53ff9c..8eb205459d4c 100644
@@ -486,14 +486,15 @@ EXPORT_SYMBOL_GPL(nd_synchronize);
 static void nd_async_device_register(void *d, async_cookie_t cookie)
 {
 	struct device *dev = d;
+	struct device *parent = dev->parent;
 
 	if (device_add(dev) != 0) {
 		dev_err(dev, "%s: failed\n", __func__);
 		put_device(dev);
 	}
 	put_device(dev);
-	if (dev->parent)
-		put_device(dev->parent);
+	if (parent)
+		put_device(parent);
 }
 
 static void nd_async_device_unregister(void *d, async_cookie_t cookie)
drivers/pmdomain/bcm/bcm2835-power.c +4 -8
index 92950bb9729d..f2472f1e1752 100644
@@ -9,6 +9,7 @@
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/io.h>
+#include <linux/iopoll.h>
 #include <linux/mfd/bcm2835-pm.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
@@ -152,7 +153,6 @@ struct bcm2835_power {
 static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable)
 {
 	void __iomem *base = power->asb;
-	u64 start;
 	u32 val;
 
 	switch (reg) {
@@ -165,8 +165,6 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable
 		break;
 	}
 
-	start = ktime_get_ns();
-
 	/* Enable the module's async AXI bridges. */
 	if (enable) {
 		val = readl(base + reg) & ~ASB_REQ_STOP;
@@ -175,11 +173,9 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable
 	}
 	writel(PM_PASSWORD | val, base + reg);
 
-	while (!!(readl(base + reg) & ASB_ACK) == enable) {
-		cpu_relax();
-		if (ktime_get_ns() - start >= 1000)
-			return -ETIMEDOUT;
-	}
+	if (readl_poll_timeout_atomic(base + reg, val,
+				      !!(val & ASB_ACK) != enable, 0, 5))
+		return -ETIMEDOUT;
 
 	return 0;
 }
drivers/soc/fsl/qbman/qman.c +22 -2
index 9be240999f87..43a4e8d58b9b 100644
@@ -1827,6 +1827,8 @@ EXPORT_SYMBOL(qman_create_fq);
 
 void qman_destroy_fq(struct qman_fq *fq)
 {
+	int leaked;
+
 	/*
 	 * We don't need to lock the FQ as it is a pre-condition that the FQ be
 	 * quiesced. Instead, run some checks.
@@ -1834,11 +1836,29 @@ void qman_destroy_fq(struct qman_fq *fq)
 	switch (fq->state) {
 	case qman_fq_state_parked:
 	case qman_fq_state_oos:
-		if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID))
-			qman_release_fqid(fq->fqid);
+		/*
+		 * There's a race condition here on releasing the fqid,
+		 * setting the fq_table to NULL, and freeing the fqid.
+		 * To prevent it, this order should be respected:
+		 */
+		if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID)) {
+			leaked = qman_shutdown_fq(fq->fqid);
+			if (leaked)
+				pr_debug("FQID %d leaked\n", fq->fqid);
+		}
 
 		DPAA_ASSERT(fq_table[fq->idx]);
 		fq_table[fq->idx] = NULL;
+
+		if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID) && !leaked) {
+			/*
+			 * fq_table[fq->idx] should be set to null before
+			 * freeing fq->fqid otherwise it could by allocated by
+			 * qman_alloc_fqid() while still being !NULL
+			 */
+			smp_wmb();
+			gen_pool_free(qm_fqalloc, fq->fqid | DPAA_GENALLOC_OFF, 1);
+		}
 		return;
 	default:
 		break;
drivers/soc/fsl/qe/qmc.c +2 -2
index da5ea6d35618..6db5ab05c2c1 100644
@@ -1799,8 +1799,8 @@ static int qmc_qe_init_resources(struct qmc *qmc, struct platform_device *pdev)
 		return -EINVAL;
 	qmc->dpram_offset = res->start - qe_muram_dma(qe_muram_addr(0));
 	qmc->dpram = devm_ioremap_resource(qmc->dev, res);
-	if (IS_ERR(qmc->scc_pram))
-		return PTR_ERR(qmc->scc_pram);
+	if (IS_ERR(qmc->dpram))
+		return PTR_ERR(qmc->dpram);
 
 	return 0;
 }
drivers/soc/microchip/mpfs-sys-controller.c +9 -4
index 30bc45d17d34..81636cfecd37 100644
@@ -142,8 +142,10 @@ static int mpfs_sys_controller_probe(struct platform_device *pdev)
 
 	sys_controller->flash = of_get_mtd_device_by_node(np);
 	of_node_put(np);
-	if (IS_ERR(sys_controller->flash))
-		return dev_err_probe(dev, PTR_ERR(sys_controller->flash), "Failed to get flash\n");
+	if (IS_ERR(sys_controller->flash)) {
+		ret = dev_err_probe(dev, PTR_ERR(sys_controller->flash), "Failed to get flash\n");
+		goto out_free;
+	}
 
 no_flash:
 	sys_controller->client.dev = dev;
@@ -155,8 +157,7 @@ static int mpfs_sys_controller_probe(struct platform_device *pdev)
 	if (IS_ERR(sys_controller->chan)) {
 		ret = dev_err_probe(dev, PTR_ERR(sys_controller->chan),
 				    "Failed to get mbox channel\n");
-		kfree(sys_controller);
-		return ret;
+		goto out_free;
 	}
 
 	init_completion(&sys_controller->c);
@@ -174,6 +175,10 @@ static int mpfs_sys_controller_probe(struct platform_device *pdev)
 	dev_info(&pdev->dev, "Registered MPFS system controller\n");
 
 	return 0;
+
+out_free:
+	kfree(sys_controller);
+	return ret;
 }
 
 static void mpfs_sys_controller_remove(struct platform_device *pdev)
drivers/soc/rockchip/grf.c +1 -0
index db407fa27985..1f070e0becb5 100644
@@ -216,6 +216,7 @@ static int __init rockchip_grf_init(void)
 		grf = syscon_node_to_regmap(np);
 		if (IS_ERR(grf)) {
 			pr_err("%s: could not get grf syscon\n", __func__);
+			of_node_put(np);
 			return PTR_ERR(grf);
 		}
 
drivers/spi/spi-amlogic-spifc-a4.c +7 -39

78 lines not on this page · raw message

drivers/spi/spi-amlogic-spisg.c +4 -8
index bcd7ec291ad0..6045c89c37c8 100644
@@ -729,9 +729,9 @@ static int aml_spisg_probe(struct platform_device *pdev)
 	};
 
 	if (of_property_read_bool(dev->of_node, "spi-slave"))
-		ctlr = spi_alloc_target(dev, sizeof(*spisg));
+		ctlr = devm_spi_alloc_target(dev, sizeof(*spisg));
 	else
-		ctlr = spi_alloc_host(dev, sizeof(*spisg));
+		ctlr = devm_spi_alloc_host(dev, sizeof(*spisg));
 	if (!ctlr)
 		return -ENOMEM;
 
@@ -750,10 +750,8 @@ static int aml_spisg_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, PTR_ERR(spisg->map), "regmap init failed\n");
 
 	irq = platform_get_irq(pdev, 0);
-	if (irq < 0) {
-		ret = irq;
-		goto out_controller;
-	}
+	if (irq < 0)
+		return irq;
 
 	ret = device_reset_optional(dev);
 	if (ret)
@@ -818,8 +816,6 @@ static int aml_spisg_probe(struct platform_device *pdev)
 	if (spisg->core)
 		clk_disable_unprepare(spisg->core);
 	clk_disable_unprepare(spisg->pclk);
-out_controller:
-	spi_controller_put(ctlr);
 
 	return ret;
 }
drivers/spi/spi.c +12 -13
index e25df9990f82..201b9569ce69 100644
@@ -2914,6 +2914,8 @@ static void spi_controller_release(struct device *dev)
 	struct spi_controller *ctlr;
 
 	ctlr = container_of(dev, struct spi_controller, dev);
+
+	free_percpu(ctlr->pcpu_statistics);
 	kfree(ctlr);
 }
 
@@ -3057,6 +3059,12 @@ struct spi_controller *__spi_alloc_controller(struct device *dev,
 	if (!ctlr)
 		return NULL;
 
+	ctlr->pcpu_statistics = spi_alloc_pcpu_stats(NULL);
+	if (!ctlr->pcpu_statistics) {
+		kfree(ctlr);
+		return NULL;
+	}
+
 	device_initialize(&ctlr->dev);
 	INIT_LIST_HEAD(&ctlr->queue);
 	spin_lock_init(&ctlr->queue_lock);
@@ -3344,17 +3352,8 @@ int spi_register_controller(struct spi_controller *ctlr)
 		dev_info(dev, "controller is unqueued, this is deprecated\n");
 	} else if (ctlr->transfer_one || ctlr->transfer_one_message) {
 		status = spi_controller_initialize_queue(ctlr);
-		if (status) {
-			device_del(&ctlr->dev);
-			goto free_bus_id;
-		}
-	}
-	/* Add statistics */
-	ctlr->pcpu_statistics = spi_alloc_pcpu_stats(dev);
-	if (!ctlr->pcpu_statistics) {
-		dev_err(dev, "Error allocating per-cpu statistics\n");
-		status = -ENOMEM;
-		goto destroy_queue;
+		if (status)
+			goto del_ctrl;
 	}
 
 	mutex_lock(&board_lock);
@@ -3368,8 +3367,8 @@ int spi_register_controller(struct spi_controller *ctlr)
 	acpi_register_spi_devices(ctlr);
 	return status;
 
-destroy_queue:
-	spi_destroy_queue(ctlr);
+del_ctrl:
+	device_del(&ctlr->dev);
 free_bus_id:
 	mutex_lock(&board_lock);
 	idr_remove(&spi_controller_idr, ctlr->bus_num);
drivers/tee/tee_shm.c +0 -27
index 4a47de4bb2e5..898707ca21a8 100644
@@ -23,29 +23,11 @@ struct tee_shm_dma_mem {
 	struct page *page;
 };
 
-static void shm_put_kernel_pages(struct page **pages, size_t page_count)
-{
-	size_t n;
-
-	for (n = 0; n < page_count; n++)
-		put_page(pages[n]);
-}
-
-static void shm_get_kernel_pages(struct page **pages, size_t page_count)
-{
-	size_t n;
-
-	for (n = 0; n < page_count; n++)
-		get_page(pages[n]);
-}
-
 static void release_registered_pages(struct tee_shm *shm)
 {
 	if (shm->pages) {
 		if (shm->flags & TEE_SHM_USER_MAPPED)
 			unpin_user_pages(shm->pages, shm->num_pages);
-		else
-			shm_put_kernel_pages(shm->pages, shm->num_pages);
 
 		kfree(shm->pages);
 	}
@@ -477,13 +459,6 @@ register_shm_helper(struct tee_context *ctx, struct iov_iter *iter, u32 flags,
 		goto err_put_shm_pages;
 	}
 
-	/*
-	 * iov_iter_extract_kvec_pages does not get reference on the pages,
-	 * get a reference on them.
-	 */
[… more lines in the raw message]

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

drivers/tty/serial/8250/8250.h +25 -0
index e99f5193d8f1..2d4f15df18f7 100644

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

drivers/tty/serial/8250/8250_dma.c +15 -0
index bdd26c9f34bd..3b6452e759d5 100644

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

drivers/tty/serial/8250/8250_dw.c +235 -61

296 lines not on this page · raw message

drivers/tty/serial/8250/8250_pci.c +17 -0
index 79c3dca94b56..e4dc89b43ac6 100644

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

drivers/tty/serial/8250/8250_port.c +45 -30

75 lines not on this page · raw message

drivers/tty/serial/serial_core.c +4 -1
index 26db27d06a86..ca72454b3eb0 100644

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

drivers/tty/serial/uartlite.c +1 -0
index 39c1fd1ff9ce..6240c3d4dfd7 100644

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

drivers/tty/vt/vt.c +8 -0
index 6e0089b85c27..4d01829fd6d1 100644

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

drivers/usb/serial/f81232.c +47 -30

77 lines not on this page · raw message

drivers/xen/privcmd.c +70 -3

73 lines not on this page · raw message

fs/binfmt_elf_fdpic.c +6 -0
index 48fd2de3bca0..a3d4e6973b29 100644

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

fs/btrfs/tree-checker.c +1 -1
index 420c0f0e17c8..9b11b0a529db 100644

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

fs/btrfs/tree-log.c +6 -0
index 6c5db73c3e85..7505a87522fd 100644

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

fs/nfsd/export.c +54 -9

63 lines not on this page · raw message

fs/nfsd/export.h +5 -2
index d2b09cd76145..b05399374574 100644

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

fs/nfsd/nfs4xdr.c +7 -2
index 5f046d5be4a6..b1b52c816ebd 100644

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

fs/nfsd/nfsctl.c +19 -3
index 51c5fe6c3cc6..4ed19d81577b 100644

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

fs/nfsd/state.h +12 -5
index c75bf3abec40..aaf513ed9104 100644

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

fs/nsfs.c +13 -0
index 79b026a36fb6..f22c2a636e8f 100644

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

fs/smb/client/cifsfs.c +5 -2
index 185ac41bd7e9..4b34a4304edb 100644

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

fs/smb/client/cifsproto.h +1 -0
index 3528c365a452..4be719c9fd52 100644

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

fs/smb/client/connect.c +4 -0
index dd7f48f53097..7bc912d00030 100644

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

fs/smb/client/file.c +0 -11
index f9d16a72cdba..dfeb609d90e2 100644

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

fs/smb/client/misc.c +42 -0

42 lines not on this page · raw message

fs/smb/client/trace.h +2 -0
index e592b2627119..79a246af664d 100644

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

fs/smb/server/auth.c +2 -20
index f92b2f3dc6de..c37b86a83cac 100644

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

fs/smb/server/smb2pdu.c +12 -5
index b6915e2c636d..60a8f5344308 100644

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

fs/tests/exec_kunit.c +0 -3
index f412d1a0f6bb..1c32cac098cf 100644

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

include/linux/auxvec.h +1 -1
index 407f7005e6d6..8bcb9b726262 100644

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

include/linux/console_struct.h +1 -0
index 13b35637bd5a..d5ca855116df 100644

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

include/linux/etherdevice.h +2 -1
index 9a1eacf35d37..df8f88f63a70 100644

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

include/linux/if_ether.h +2 -1
index 61b7335aa037..ca9afa824aa4 100644

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

include/linux/io_uring_types.h +3 -0
index 3f3506056b9a..2ee408d076b3 100644

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

include/linux/netdevice.h +4 -2
index 0f425a1f8040..20bd42fa160c 100644

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

include/linux/ns_common.h +2 -0
index 71a5e28344d1..f3c52904343e 100644

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

include/linux/security.h +1 -0
index 92ac3f27b973..b64598e5d65d 100644

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

include/linux/serial_8250.h +1 -0
index 01efdce0fda0..a95b2d143d24 100644

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

include/net/mac80211.h +3 -1
index a55085cf4ec4..ac2546b12138 100644

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

include/net/netfilter/nf_tables.h +2 -0
index c18cffafc969..4dc080f7f27c 100644

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

include/net/sch_generic.h +33 -0
index 1518454c906e..059eb6cb54f1 100644

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

include/net/udp_tunnel.h +1 -1
index 9acef2fbd2fd..d97ee26ba4f6 100644

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

io_uring/kbuf.c +11 -3
index 09b62d3224f1..9e8166e24dc8 100644

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

io_uring/poll.c +7 -2
index 0d5bb90d4743..869c7b2a08b6 100644

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

kernel/crash_dump_dm_crypt.c +2 -2
index abb307a23de3..9501b0704f19 100644

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

kernel/nscommon.c +6 -0
index c1fb2bad6d72..22b5c5d0385f 100644

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

kernel/sched/ext.c +93 -39

132 lines not on this page · raw message

kernel/sched/idle.c +21 -9
index d9c515da328e..bf92ae29361e 100644

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

kernel/trace/ring_buffer.c +1 -1
index 98ca4beabf02..656cd8df2d55 100644

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

kernel/trace/trace.c +27 -9
index ff5d0b6d52e0..2be9e47d64b0 100644

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

kernel/trace/trace_functions_graph.c +11 -4
index a7f4b9a47a71..0e65d1f45265 100644

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

lib/bootconfig.c +2 -1
index 0728c4a95249..5d3802eba52a 100644

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

mm/huge_memory.c +9 -3
index 35ec12c4d776..8218e9d1887b 100644

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

mm/rmap.c +17 -4
index f1e6a97cf460..8f3c50bd1125 100644

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

net/batman-adv/bat_iv_ogm.c +3 -0
index b75c2228e69a..f28e9cbf8ad5 100644

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

net/bluetooth/hci_conn.c +2 -2
index 6a27ac5a751c..8906526ff32c 100644

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

net/bluetooth/hci_sync.c +1 -1
index 9f01837250a5..e94b62844e1e 100644

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

net/bluetooth/hidp/core.c +14 -2
index 6724adce615b..e0e400381550 100644

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

net/bluetooth/l2cap_core.c +31 -20

51 lines not on this page · raw message

net/bluetooth/mgmt.c +2 -5
index ee2dd26b1b82..1a270f0b17d9 100644

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

net/bluetooth/smp.c +1 -1
index 3a1ce04a7a53..9d9604074589 100644

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

net/bridge/br_cfm.c +2 -2
index c2c1c7d44c61..f4ca77d9b0e9 100644

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

net/ethernet/eth.c +3 -6
index 43e211e611b1..ca4e3a01237d 100644

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

net/ipv4/icmp.c +3 -1
index 3e19a5d465b8..b39176b62078 100644

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

net/ipv4/ip_gre.c +2 -1
index e13244729ad8..35f0baa99d40 100644

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

net/mac80211/cfg.c +6 -6
index e18df59951a8..d32eacbb7517 100644

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

net/mac80211/chan.c +4 -2
index 7f8799fd673e..a6895b40d432 100644

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

net/mac80211/debugfs.c +5 -9
index d02f07368c51..687a66cd4943 100644

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

net/mac80211/mesh.c +3 -0
index e235ab7a5651..4b0eebd5c7cf 100644

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

net/mac80211/sta_info.c +5 -2
index 1a995bc301b1..b0d9bb830f29 100644

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

net/mac80211/tx.c +3 -1
index 160667be3f4d..2f830001b0cd 100644

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

net/mac802154/iface.c +3 -1
index 9e4631fade90..000be60d9580 100644

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

net/mpls/af_mpls.c +1 -0
index 25c88cba5c48..1c70cb26e7ba 100644

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

net/mptcp/pm_kernel.c +1 -1
index 6fd393f451bf..52d15df12f58 100644

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

net/netfilter/nf_bpf_link.c +1 -1
index 46e667a50d98..248840dbca1b 100644

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

net/netfilter/nf_conntrack_h323_asn1.c +4 -0
index 62aa22a07876..7b1497ed97d2 100644

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

net/netfilter/nf_conntrack_netlink.c +25 -1
index 3a04665adf99..f261dd48973f 100644

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

net/netfilter/nf_conntrack_sip.c +5 -1
index ca748f8dbff1..4ab5ef71d96d 100644

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

net/netfilter/nf_tables_api.c +3 -2
index b6a575ec3315..a6a7fe216396 100644

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

net/netfilter/nfnetlink_osf.c +13 -0
index c0fc431991e8..9fc9544d4bc5 100644

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

net/netfilter/nft_ct.c +4 -0
index 6f2ae7cad731..db1bf69f8775 100644

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

net/netfilter/nft_dynset.c +9 -1
index 7807d8129664..9123277be03c 100644

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

net/netfilter/xt_CT.c +4 -0
index 3ba94c34297c..498f5871c84a 100644

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

net/netfilter/xt_time.c +2 -2
index 6aa12d0f54e2..61de85e02a40 100644

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

net/phonet/af_phonet.c +4 -1
index 238a9638d2b0..d89225d6bfd3 100644

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

net/rose/af_rose.c +5 -0
index fad6518e6e39..53c9bc71f813 100644

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

net/sched/sch_generic.c +0 -27
index 7dee9748a56b..30d77ad7b81d 100644

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

net/sched/sch_ingress.c +8 -6
index cc6051d4f2ef..c3e18bae8fbf 100644

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

net/sched/sch_teql.c +2 -5
index 783300d8b019..ec4039a201a2 100644

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

net/shaper/shaper.c +93 -65

158 lines not on this page · raw message

net/shaper/shaper_nl_gen.c +6 -6
index 204c8ae8c7b1..c52abf13ff0c 100644

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

net/shaper/shaper_nl_gen.h +5 -0
index cb7f9026fc23..1e20eebdedd7 100644

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

net/smc/af_smc.c +17 -6
index efdadb2d8d39..6421c2e1c84d 100644

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

net/smc/smc.h +5 -0
index 2c9084963739..ea45467c1140 100644

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

net/smc/smc_close.c +1 -1
index 10219f55aad1..bb0313ef5f7c 100644

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

net/sunrpc/cache.c +21 -5
index 131090f31e6a..6f6e0d4928af 100644

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

net/wireless/pmsr.c +1 -0
index a117f5093ca2..13801cf35e9f 100644

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

security/security.c +1 -0
index 4d3c03a4524c..603c3c6d5635 100644

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

tools/bootconfig/main.c +5 -2
index 55d59ed507d5..643f707b8f1d 100644

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

tools/testing/selftests/hid/progs/hid_bpf_helpers.h +12 -0
index 531228b849da..125a975f32f9 100644

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

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.