Linux 7.2.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 7.2.9 kernel.
All users of the 7.2 kernel series must upgrade.
The updated 7.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-7.2.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/arch/arm64/booting.rst | 1 Documentation/arch/s390/pci.rst | 2 Documentation/devicetree/bindings/pinctrl/qcom,nord-tlmm.yaml | 7 Makefile | 2 arch/arm64/include/asm/el2_setup.h | 9 arch/arm64/include/asm/io.h | 3 arch/arm64/include/asm/kvm_host.h | 2 arch/arm64/include/asm/kvm_nested.h | 3 arch/arm64/include/asm/kvm_pkvm.h | 3 arch/arm64/kernel/cpu_errata.c | 15 arch/arm64/kvm/arm.c | 8 arch/arm64/kvm/emulate-nested.c | 2 arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 1 arch/arm64/kvm/hyp/nvhe/mem_protect.c | 8 arch/arm64/kvm/hyp/nvhe/pkvm.c | 25 arch/arm64/kvm/hyp/nvhe/setup.c | 12 arch/arm64/kvm/hypercalls.c | 3 arch/arm64/kvm/mmu.c | 15 arch/arm64/kvm/nested.c | 111 ++- arch/arm64/kvm/sys_regs.c | 1 arch/arm64/kvm/vgic/vgic-its.c | 43 - arch/arm64/net/bpf_jit_comp.c | 2 arch/mips/net/bpf_jit_comp32.c | 2 arch/mips/net/bpf_jit_comp64.c | 3 arch/parisc/include/asm/thread_info.h | 2 arch/parisc/kernel/setup.c | 12 arch/riscv/include/asm/csr.h | 20 arch/riscv/kvm/aia_imsic.c | 11 arch/riscv/kvm/mmu.c | 10 arch/riscv/kvm/nacl.c | 20 arch/riscv/kvm/vcpu.c | 3 arch/riscv/kvm/vcpu_exit.c | 2 arch/riscv/kvm/vcpu_onereg.c | 8 arch/riscv/kvm/vcpu_pmu.c | 33 - arch/riscv/kvm/vcpu_sbi_hsm.c | 4 arch/riscv/kvm/vcpu_timer.c | 5 arch/s390/crypto/hmac_s390.c | 5 arch/s390/include/asm/debug.h | 8 arch/s390/kernel/debug.c | 15 arch/s390/kernel/uv.c | 8 arch/s390/kvm/dat.c | 41 + arch/s390/kvm/gaccess.c | 13 arch/s390/kvm/gmap.c | 6 arch/s390/kvm/interrupt.c | 147 ++--- arch/s390/pci/pci_event.c | 7 arch/s390/pci/pci_report.c | 32 - arch/s390/pci/pci_report.h | 4 arch/x86/coco/sev/svsm.c | 10 arch/x86/events/amd/brs.c | 9 arch/x86/events/amd/lbr.c | 16 arch/x86/events/intel/core.c | 80 +- arch/x86/events/intel/ds.c | 68 -- arch/x86/events/intel/lbr.c | 65 +- arch/x86/events/perf_event.h | 4 arch/x86/include/asm/kvm-x86-nested-ops.h | 36 + arch/x86/include/asm/kvm_host.h | 22 arch/x86/kernel/cpu/mce/core.c | 27 arch/x86/kvm/hyperv.c | 6 arch/x86/kvm/irq.h | 6 arch/x86/kvm/mmu.h | 5 arch/x86/kvm/mmu/mmu.c | 129 +++- arch/x86/kvm/mmu/mmu_internal.h | 66 -- arch/x86/kvm/mmu/paging_tmpl.h | 2 arch/x86/kvm/pmu.c | 8 arch/x86/kvm/svm/nested.c | 1 arch/x86/kvm/svm/sev.c | 18 arch/x86/kvm/svm/svm.c | 1 arch/x86/kvm/tss.h | 7 arch/x86/kvm/vmx/nested.c | 1 arch/x86/kvm/vmx/pmu_intel.c | 3 arch/x86/kvm/vmx/vmx.c | 2 arch/x86/kvm/x86.c | 62 +- arch/x86/kvm/x86.h | 2 arch/x86/pci/fixup.c | 99 +++ block/blk-zoned.c | 15 drivers/accel/ivpu/ivpu_drv.c | 31 - drivers/accel/ivpu/ivpu_drv.h | 7 drivers/accel/ivpu/ivpu_hw.c | 4 drivers/accel/ivpu/ivpu_ipc.c | 8 drivers/accel/ivpu/ivpu_ipc.h | 2 drivers/accel/ivpu/ivpu_job.c | 66 +- drivers/accel/ivpu/ivpu_job.h | 7 drivers/accel/ivpu/ivpu_mmu.c | 1 drivers/accel/ivpu/ivpu_pm.c | 1 drivers/ata/libata-scsi.c | 10 drivers/base/cacheinfo.c | 11 drivers/bluetooth/btintel_pcie.c | 16 drivers/bluetooth/btnxpuart.c | 8 drivers/dpll/dpll_netlink.c | 3 drivers/firewire/core-cdev.c | 6 drivers/gpio/gpio-arizona.c | 8 drivers/gpio/gpio-tps65219.c | 12 drivers/gpio/gpio-zynq.c | 10 drivers/gpio/gpiolib-cdev.c | 32 - drivers/gpio/gpiolib.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 1 drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c | 3 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 71 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 12 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 62 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.h | 28 drivers/gpu/drm/amd/display/dc/dml/Makefile | 8 drivers/gpu/drm/amd/display/dc/dml2_0/Makefile | 2 drivers/gpu/drm/amd/display/dc/link/link_dpms.c | 178 +++--- drivers/gpu/drm/bridge/samsung-dsim.c | 2 drivers/gpu/drm/clients/drm_fbdev_client.c | 8 drivers/gpu/drm/drm_pagemap.c | 12 drivers/gpu/drm/i915/display/intel_cursor.c | 7 drivers/gpu/drm/i915/display/intel_display_types.h | 2 drivers/gpu/drm/i915/display/intel_dp_mst.c | 24 drivers/gpu/drm/i915/display/intel_dp_mst.h | 2 drivers/gpu/drm/i915/display/intel_link_bw.c | 3 drivers/gpu/drm/i915/display/intel_psr.c | 15 drivers/gpu/drm/i915/display/intel_quirks.c | 3 drivers/gpu/drm/i915/display/skl_universal_plane.c | 9 drivers/gpu/drm/i915/gem/i915_gem_object.c | 2 drivers/gpu/drm/imagination/pvr_free_list.c | 15 drivers/gpu/drm/imagination/pvr_mmu.c | 19 drivers/gpu/drm/imagination/pvr_mmu.h | 2 drivers/gpu/drm/imagination/pvr_vm.c | 4 drivers/gpu/drm/nouveau/nouveau_bo.c | 3 drivers/gpu/drm/nouveau/nouveau_connector.c | 5 drivers/gpu/drm/nouveau/nouveau_dmem.c | 4 drivers/gpu/drm/nouveau/nouveau_drm.c | 5 drivers/gpu/drm/nouveau/nouveau_gem.c | 2 drivers/gpu/drm/nouveau/nouveau_sched.c | 2 drivers/gpu/drm/nouveau/nouveau_sched.h | 1 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 13 drivers/gpu/drm/nouveau/nvif/vmm.c | 1 drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c | 3 drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 23 drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c | 2 drivers/gpu/drm/virtio/virtgpu_drv.h | 5 drivers/gpu/drm/virtio/virtgpu_gem.c | 2 drivers/gpu/drm/virtio/virtgpu_ioctl.c | 49 + drivers/gpu/drm/virtio/virtgpu_prime.c | 2 drivers/gpu/drm/virtio/virtgpu_submit.c | 11 drivers/gpu/drm/virtio/virtgpu_vq.c | 46 + drivers/gpu/drm/virtio/virtgpu_vram.c | 17 drivers/gpu/drm/xe/regs/xe_gt_regs.h | 1 drivers/gpu/drm/xe/xe_bo.c | 7 drivers/gpu/drm/xe/xe_bo.h | 19 drivers/gpu/drm/xe/xe_gt_throttle.c | 5 drivers/gpu/drm/xe/xe_guc_ads.c | 2 drivers/gpu/drm/xe/xe_hw_engine.c | 96 ++- drivers/gpu/drm/xe/xe_vm.c | 21 drivers/gpu/drm/xe/xe_wa_oob.rules | 2 drivers/hid/amd-sfh-hid/amd_sfh_common.h | 4 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 10 drivers/hid/bpf/hid_bpf_dispatch.c | 12 drivers/hid/hid-alps.c | 25 drivers/hid/hid-ids.h | 3 drivers/hid/hid-multitouch.c | 29 drivers/hid/hid-oxp.c | 6 drivers/hid/hid-quirks.c | 3 drivers/hid/hid-winwing.c | 10 drivers/hid/wacom_sys.c | 5 drivers/i2c/busses/i2c-qcom-geni.c | 293 +++++----- drivers/net/bonding/bond_main.c | 2 drivers/net/dsa/mt7530-mdio.c | 20 drivers/net/dsa/mt7530.c | 3 drivers/net/dsa/mv88e6xxx/chip.c | 68 ++ drivers/net/ethernet/airoha/airoha_npu.c | 18 drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 3 drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 drivers/net/ethernet/atheros/atlx/atl1.c | 3 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 3 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 34 - drivers/net/ethernet/broadcom/tg3.c | 15 drivers/net/ethernet/brocade/bna/bnad.c | 24 drivers/net/ethernet/cadence/macb_main.c | 14 drivers/net/ethernet/freescale/fman/fman.c | 1 drivers/net/ethernet/google/gve/gve_desc_dqo.h | 5 drivers/net/ethernet/google/gve/gve_tx_dqo.c | 40 + drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c | 3 drivers/net/ethernet/ibm/emac/core.c | 16 drivers/net/ethernet/marvell/octeontx2/af/common.h | 45 + drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 104 +-- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c | 45 + drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c | 15 drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.h | 2 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 44 + drivers/net/ethernet/mellanox/mlx5/core/lag/shared_fdb.c | 1 drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c | 5 drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 5 drivers/net/ethernet/meta/fbnic/fbnic_debugfs.c | 4 drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c | 16 drivers/net/ethernet/meta/fbnic/fbnic_fw.c | 47 + drivers/net/ethernet/meta/fbnic/fbnic_fw.h | 1 drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 18 drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 30 - drivers/net/ethernet/netronome/nfp/crypto/ipsec.c | 3 drivers/net/ethernet/spacemit/k1_emac.c | 3 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 5 drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 4 drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 drivers/net/ethernet/stmicro/stmmac/ring_mode.c | 4 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 21 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c | 153 ++++- drivers/net/ethernet/ti/netcp_core.c | 2 drivers/net/ethernet/wangxun/libwx/wx_hw.c | 1 drivers/net/ethernet/wangxun/libwx/wx_lib.c | 65 +- drivers/net/ethernet/wangxun/libwx/wx_lib.h | 1 drivers/net/ethernet/wangxun/libwx/wx_ptp.c | 159 +++-- drivers/net/ethernet/wangxun/libwx/wx_ptp.h | 1 drivers/net/ethernet/wangxun/libwx/wx_type.h | 2 drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c | 13 drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 16 drivers/net/macsec.c | 84 +- drivers/net/mdio/mdio-realtek-rtl9300.c | 6 drivers/net/ovpn/netlink.c | 108 +++ drivers/net/ovpn/peer.c | 121 +++- drivers/net/ovpn/peer.h | 25 drivers/net/ovpn/udp.c | 193 +++++- drivers/net/pcs/pcs-rzn1-miic.c | 3 drivers/net/pcs/pcs-xpcs.c | 4 drivers/net/phy/intel-xway.c | 29 drivers/net/phy/micrel.c | 1 drivers/net/phy/phylink.c | 20 drivers/net/usb/catc.c | 15 drivers/net/usb/cdc_mbim.c | 5 drivers/net/usb/lan78xx.c | 2 drivers/net/usb/sr9700.c | 3 drivers/net/veth.c | 2 drivers/net/virtio_net.c | 9 drivers/net/vrf.c | 2 drivers/net/vxlan/vxlan_core.c | 6 drivers/nfc/microread/microread.c | 6 drivers/nfc/nfcmrvl/fw_dnld.c | 11 drivers/nfc/pn533/pn533.c | 14 drivers/nfc/pn533/pn533.h | 4 drivers/nfc/pn533/usb.c | 4 drivers/nfc/pn544/pn544.c | 7 drivers/nfc/port100.c | 7 drivers/nfc/st21nfca/core.c | 12 drivers/nfc/st21nfca/i2c.c | 29 drivers/nfc/trf7970a.c | 4 drivers/nfc/virtual_ncidev.c | 3 drivers/pci/of_property.c | 11 drivers/pci/setup-bus.c | 23 drivers/perf/arm_brbe.c | 2 drivers/pinctrl/meson/pinctrl-meson-s4.c | 2 drivers/pinctrl/microchip/pinctrl-mpfs-mssio.c | 6 drivers/pinctrl/pinctrl-generic.c | 4 drivers/pinctrl/pinctrl-single.c | 3 drivers/pinctrl/qcom/pinctrl-ipq5210.c | 1 drivers/pinctrl/qcom/pinctrl-nord.c | 34 - drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c | 2 drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c | 2 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 82 ++ drivers/pinctrl/sunxi/pinctrl-sunxi.h | 9 drivers/pinctrl/tegra/pinctrl-tegra238.c | 204 +++--- drivers/remoteproc/qcom_q6v5_adsp.c | 8 drivers/s390/cio/chp.c | 3 drivers/s390/cio/cio.c | 11 drivers/s390/cio/cio.h | 5 drivers/s390/cio/cmf.c | 2 drivers/s390/cio/device.c | 9 drivers/s390/cio/device_fsm.c | 3 drivers/s390/cio/device_ops.c | 23 drivers/s390/cio/vfio_ccw_fsm.c | 2 drivers/s390/crypto/vfio_ap_ops.c | 18 drivers/scsi/libiscsi_tcp.c | 3 drivers/scsi/megaraid/megaraid_sas_base.c | 4 drivers/scsi/sd_zbc.c | 8 drivers/thermal/gov_step_wise.c | 10 drivers/ufs/core/ufshcd.c | 6 drivers/ufs/host/ufshcd-pltfrm.c | 6 fs/autofs/inode.c | 4 fs/bpf_fs_kfuncs.c | 4 fs/fs-writeback.c | 25 fs/inode.c | 11 fs/kernfs/mount.c | 4 fs/netfs/buffered_read.c | 34 - fs/netfs/objects.c | 4 fs/netfs/read_collect.c | 5 fs/netfs/rolling_buffer.c | 2 fs/ntfs3/inode.c | 7 fs/ocfs2/namei.c | 9 fs/ocfs2/xattr.c | 13 fs/ocfs2/xattr.h | 8 fs/overlayfs/overlayfs.h | 4 fs/smb/client/cached_dir.c | 32 - fs/smb/client/dir.c | 52 + fs/smb/client/smb2inode.c | 6 fs/smb/client/smb2misc.c | 9 fs/smb/client/smb2ops.c | 28 fs/smb/client/smb2pdu.c | 54 + fs/smb/client/transport.c | 71 +- fs/squashfs/xz_wrapper.c | 6 fs/super.c | 114 +-- fs/xfs/libxfs/xfs_metafile.c | 8 fs/xfs/libxfs/xfs_rtrefcount_btree.c | 4 fs/xfs/scrub/dir.c | 2 fs/xfs/scrub/health.c | 6 fs/xfs/scrub/inode.c | 2 fs/xfs/scrub/inode_repair.c | 2 fs/xfs/scrub/newbt.c | 8 fs/xfs/scrub/orphanage.c | 6 fs/xfs/scrub/repair.c | 19 fs/xfs/scrub/scrub.h | 2 fs/xfs/scrub/trace.h | 12 fs/xfs/xfs_dquot.c | 8 fs/xfs/xfs_exchrange.c | 13 fs/xfs/xfs_healthmon.c | 4 fs/xfs/xfs_icache.c | 2 fs/xfs/xfs_log_recover.c | 13 fs/xfs/xfs_qm.c | 10 fs/xfs/xfs_refcount_item.c | 8 fs/xfs/xfs_rmap_item.c | 8 include/linux/ethtool.h | 2 include/linux/fs/super_types.h | 2 include/linux/if_vlan.h | 3 include/linux/mempool.h | 7 include/linux/mm_types.h | 15 include/linux/perf_event.h | 17 include/linux/sched.h | 6 include/linux/sched/topology.h | 4 include/linux/skbuff.h | 24 include/net/dst.h | 3 include/net/gue.h | 19 include/net/ip6_route.h | 4 include/net/netfilter/nf_conntrack.h | 5 include/net/nfc/hci.h | 2 include/net/nfc/nfc.h | 3 include/net/tcp.h | 4 kernel/bpf/btf.c | 136 ++-- kernel/bpf/core.c | 21 kernel/bpf/crypto.c | 5 kernel/bpf/fixups.c | 24 kernel/bpf/hashtab.c | 43 + kernel/bpf/memalloc.c | 50 - kernel/bpf/offload.c | 2 kernel/bpf/states.c | 3 kernel/bpf/syscall.c | 15 kernel/bpf/verifier.c | 17 kernel/cgroup/cpuset.c | 3 kernel/cgroup/pids.c | 5 kernel/events/core.c | 17 kernel/exit.c | 11 kernel/kprobes.c | 22 kernel/power/hibernate.c | 26 kernel/sched/core.c | 2 kernel/sched/ext/ext.c | 7 kernel/sched/fair.c | 173 ++++- kernel/sched/topology.c | 22 kernel/trace/fprobe.c | 15 kernel/workqueue.c | 2 mm/backing-dev.c | 5 mm/damon/core.c | 39 - mm/damon/ops-common.c | 7 mm/damon/vaddr.c | 21 mm/hugetlb.c | 20 mm/rmap.c | 6 mm/vma.c | 8 net/8021q/vlan_dev.c | 5 net/bluetooth/bnep/core.c | 17 net/bluetooth/bnep/netdev.c | 8 net/bluetooth/hci_conn.c | 14 net/bluetooth/hci_sock.c | 20 net/bluetooth/iso.c | 7 net/bluetooth/l2cap_core.c | 10 net/bluetooth/mgmt.c | 27 net/bluetooth/rfcomm/core.c | 3 net/bluetooth/rfcomm/sock.c | 6 net/bluetooth/smp.c | 17 net/bridge/br_mdb.c | 2 net/bridge/br_stp_bpdu.c | 5 net/core/dev.c | 49 + net/core/dev.h | 2 net/core/dev_ioctl.c | 25 net/core/filter.c | 46 - net/core/skbuff.c | 21 net/core/skmsg.c | 4 net/core/sock_map.c | 1 net/ethtool/common.h | 2 net/ipv4/arp.c | 1 net/ipv4/devinet.c | 7 net/ipv4/fib_semantics.c | 13 net/ipv4/fou_core.c | 4 net/ipv4/inet_connection_sock.c | 3 net/ipv4/ip_gre.c | 12 net/ipv4/ipconfig.c | 45 - net/ipv4/tcp_output.c | 3 net/ipv4/udp.c | 42 + net/ipv6/exthdrs_core.c | 3 net/ipv6/ip6_fib.c | 2 net/ipv6/ip6_gre.c | 2 net/ipv6/netfilter/ip6t_rpfilter.c | 2 net/ipv6/netfilter/ip6t_rt.c | 11 net/ipv6/route.c | 12 net/ipv6/seg6.c | 4 net/llc/llc_c_ac.c | 2 net/llc/llc_s_ac.c | 4 net/llc/llc_sap.c | 8 net/mctp/route.c | 2 net/mptcp/protocol.c | 2 net/netfilter/ipvs/ip_vs_core.c | 6 net/netfilter/nf_conntrack_netlink.c | 3 net/netfilter/nf_flow_table_offload.c | 7 net/netfilter/nf_tables_api.c | 10 net/netfilter/nfnetlink_queue.c | 8 net/netfilter/nft_synproxy.c | 3 net/netlink/genetlink.c | 8 net/nfc/core.c | 15 net/nfc/digital_dep.c | 8 net/nfc/llcp.h | 1 net/nfc/llcp_commands.c | 2 net/nfc/llcp_core.c | 175 ++++- net/nfc/llcp_sock.c | 65 +- net/nfc/nci/core.c | 10 net/nfc/netlink.c | 7 net/nfc/nfc.h | 3 net/openvswitch/conntrack.c | 37 - net/packet/af_packet.c | 104 ++- net/rds/connection.c | 6 net/rds/ib_frmr.c | 11 net/sched/act_api.c | 2 net/sched/act_ct.c | 41 + net/sched/act_gate.c | 30 - net/sched/act_ife.c | 17 net/sched/act_meta_mark.c | 6 net/sched/act_meta_skbprio.c | 6 net/sched/act_meta_skbtcindex.c | 6 net/sched/cls_u32.c | 12 net/sched/em_text.c | 2 net/sched/sch_hfsc.c | 22 net/sched/sch_teql.c | 7 net/sctp/associola.c | 15 net/sctp/input.c | 7 net/sctp/sm_sideeffect.c | 37 - net/sctp/sm_statefuns.c | 2 net/smc/smc_core.c | 2 net/smc/smc_ib.c | 10 net/tipc/group.c | 4 net/tipc/monitor.c | 3 net/vmw_vsock/af_vsock.c | 3 net/xdp/xskmap.c | 2 security/ipe/eval.c | 12 security/ipe/eval.h | 2 security/ipe/fs.c | 8 security/ipe/hooks.c | 22 security/ipe/policy_fs.c | 3 security/landlock/access.h | 8 sound/hda/codecs/realtek/alc269.c | 9 tools/arch/riscv/include/asm/csr.h | 20 tools/lib/bpf/libbpf.c | 7 tools/lib/bpf/relo_core.c | 58 + tools/testing/selftests/bpf/prog_tests/linked_list.c | 4 tools/testing/selftests/cgroup/test_cpuset_prs.sh | 2 tools/testing/selftests/cgroup/test_memcontrol.c | 2 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_non_uniq_symbol.tc | 2 tools/testing/selftests/kvm/steal_time.c | 30 - tools/testing/selftests/nci/nci_dev.c | 45 - virt/kvm/kvm_main.c | 30 - 471 files changed, 5761 insertions(+), 2577 deletions(-)
Aamir Ahmed (2):
net: usb: catc: bound the RX packet length in catc_rx_done()
nfc: llcp: drop truncated I/RR/RNR PDUs in nfc_llcp_recv_hdlc()
Abhishek Ojha (1):
net: phy: micrel: Advance register data pointer in write loop
Adarsh Das (1):
smb: client: delete compound mids on send failure before unlock
Aldo Ariel Panzardo (9):
nfc: llcp: Fix list corruption / refcount desync in nfc_llcp_recv_dm()
vsock: ignore empty child namespace mode writes
Bluetooth: hci_conn: fix CIS hold ownership on reuse
Bluetooth: hci_sock: validate event length before filtering
Bluetooth: hci_sock: reject out-of-range OCF values
Bluetooth: ISO: balance the parent hold in hci_bind_bis()
Bluetooth: ISO: release unused CIS holds after channel attach
Bluetooth: L2CAP: validate frame length before control and FCS access
Bluetooth: mgmt: fix race in read_unconf_index_list()
Aleksei Sviridkin (3):
net: dsa: mt7530: fix NULL dereference on unbind of MT7531 and MT7621
net: dsa: mt7530: leave the MDIO IRQ mappings to regmap-irq
net: phylink: record the PHY only once bringup cannot fail
Alex Hung (1):
drm/amd/display: Relax DML frame limit with UBSAN
Alexander Duyck (5):
net: ethtool: keep rtnl_lock for the ioctl self test
eth: fbnic: use the Rx queue napi pointer to find the napi vector
eth: fbnic: reset num_napi when the napi vectors are freed
eth: fbnic: Set AW_FLUSH_MODE alongside AW_FLUSH when flushing the mailbox
eth: fbnic: Handle FW mailbox completions flagged with an error
Alexander Sverdlin (1):
net: phy: intel-xway: workaround 100BASE-TX Link-Up issue
Allison Henderson (1):
net/rds: size a connection's path set by the transport it ends up with
Amir Goldstein (1):
ovl: fix UAF in ovl_do_mkdir() debug print
Andre Przywara (1):
pinctrl: sunxi: A523: fix voltage withstand encoding
Andrea Parri (3):
bpf: fs/xattr: don't assume the inode is locked in path_unlink/path_rmdir
kprobes: Fix permanent hang when flushing the kprobe optimizer net/mlx5e: fix swapped IPv6 IPsec policy masks
Angel J (1):
PCI: of_property: Omit bus properties without a subordinate bus
Ankit Nautiyal (1):
drm/i915/quirks: Limit eDP rate to HBR2 on HP Pavilion Plus 14-ew1
Anthony Krowiak (1):
s390/vfio-ap: fix KVM GISC and page leak when queue removed from host config
Aohan Mei (2):
sctp: discard the rest of the packet on a stale-cookie error
netfilter: nf_tables: skip expired catchall elements on insert and delete
Arnd Bergmann (1):
landlock: Work around gcc-16 -Wuninitialized warning
Asad Kamal (1):
drm/amdkfd: fix use-after-free and multi-container gap in kfd_dev_mapping
Bart Van Assche (1):
scsi: megaraid_sas: Protect megasas_get_ctrl_info() in megasas_resume()
Bartosz Golaszewski (1):
gpio: cdev: fix kernel stack leak to user-space in error path
Benjamin Leggett (1):
drm/virtio: sync shmem backing on guest-bound transfers
Benjamin Tissoires (1):
HID: bpf: fix __hid_bpf_hw_check_params report length
Bernard Ladenthin (1):
net/sched: fix potential stack infoleak in em_text_dump()
Bernardo Soares (2):
net/mlx5: Bridge, don't fail switchdev events of sibling eswitch ports net/mlx5: Bridge, don't fail unlink of untracked/unsupported peer ports
Björn Töpel (3):
eth: fbnic: Fix payload page pool error cleanup
eth: fbnic: Handle maximum standalone channels
eth: fbnic: Avoid rounding zero ring sizes
Brajesh Gupta (2):
drm/imagination: Propagate map failures correctly from pvr_mmu_map_sgl() drm/imagination: Fix page count for page table for map() interface
Chaithanya Lagisetty (1):
selftests: nci: Fix uninitialized family ID on missing attribute
Chen Changcheng (2):
HID: alps: unregister DualPoint Stick input device on remove
HID: alps: fix use-after-free on input2 registration failure
Chris Gellermann (2):
selftests/nci: Fix out-of-bounds store on thread join
nfc: virtual_ncidev: Add missing ioctl compat handler
Christian Brauner (4):
fs/ntfs3: use d_instantiate_new() in ntfs_create_inode() and murder syzbot's "WARNING in do_new_mount" saga
super: convert s_count to refcount_t s_passive
super: take lock after last reference count
super: make iterate_supers_type() deletion-safe
Christian König (1):
drm/i915: fix incorrect RCU teardown order
Christian Lamparter (1):
net: emac: move setting of netops to fix crash
Christiano Amora (1):
Bluetooth: SMP: reject Security Request over BR/EDR
Claudio Imbrenda (7):
KVM: s390: Fix dirty marking in adapter_indicators_set*()
KVM: s390: Fix _gaccess_shadow_fault()
KVM: s390: Fix IRQ injection with SIGP Stop and Store Status
KVM: s390: Add missing srcu in kvm_s390_set_irq_state()
KVM: s390: Properly handle NULL pointer in dat_cond_set_storage_key()
KVM: s390: Fix potential races in dat skey functions
KVM: s390: Fix race in _destroy_pages_crste()
Coia Prant (2):
net: pcs: xpcs: fix clock reference leak on xpcs_init_clks failure
net: ethernet: stmmac: dwmac-rk: fix bulk clock leak when the PHY clock fails
Cong Nguyen (1):
nfc: llcp: fix sdreq TLV list leak on parse/alloc/send failure
Conor Dooley (2):
pinctrl: mpfs-mssio: fix width of unused bank voltage setting
pinctrl: mpfs-mssio: use correct regmap function to set bank voltage
Dairui Zhang (1):
af_packet: fix integer overflow in prb_calc_retire_blk_tmo()
Dan Carpenter (1):
drm/nouveau/clk: fix list cursor use after loop in nvkm_clk_ustate_update
Daniel Borkmann (1):
bpf: Fix bpf_skb_change_tail wrt csum partial skbs
Dapeng Mi (8):
perf/x86/intel: Delete dead NVL PEBS data-source initcall
perf/x86/intel: Fix CMT PEBS load/store direction for latency events, to fix sample classification perf/x86/intel: Fix GRT PEBS load/store direction for latency events, to fix sample classification perf/x86/intel: Fix DKT PEBS load/store direction for latency events, to fix sample classification perf/x86/intel: Fix Panther Cove PEBS data-source snoop states
perf/x86/intel: Remove incorrect LionCove PEBS data-source constraints perf/x86/intel: Remove incorrect Panther Cove PEBS data-source constraints perf/x86/intel: Constrain Panther Cove UOPS_DISPATCHED events to PMCs 0-3
Darrick J. Wong (18):
xfs: don't assert when XFS_SCRUB_TYPE_HEALTHY scans return corruption
xfs: fix attr fork block count checks in xrep_inode_blockcounts
xfs: release orphanage dir inode if chown fails
xfs: use correct jiffies comparison function in xchk_maybe_relax
xfs: check padding field in xfs_ioc_commit_range
xfs: don't call xfs_exchange_range_finish for a dry run
xfs: only flag zero padding for dir3 data blocks, not dir3 block blocks
xfs: use the correct reservations for rtrmap/refcount recovery
xfs: check di_forkoff correctly in scrub
xfs: fix rtgroup repair estimations
xfs: fix wild memcpy access when formatting ondisk rtrefcount btree roots
xfs: call xfs_dquot_set_prealloc_limits if we installed default rtb limits
xfs: don't let hidden_space go negative in xfs_metafile_resv_init
xfs: don't let memory failures leak blocks and kill repairs
xfs: don't merge different file IO error types
xfs: drop dquot flush lock when we can't find a buffer to flush
xfs: fix blockgc group quota scanning when usrquota isn't enforced
xfs: fix cursor and pointer handling when recovering iunlink buckets
Davi Chaves Azevedo (1):
sched/cache: Refresh LLC capacity across CPU hotplug, to fix capacity underestimation bug
David Ballesteros (1):
KVM: Ensure memory attributes xarray nodes are accounted to the caller's memcg
David Carlier (2):
arm64: errata: match the target implementation CPU's own MIDR
fprobe: Terminate the fgraph_data list when the reservation is not filled
David Dai (1):
bonding: crypto offload enabled, non-offload slave failover, rekey failed
David Howells (2):
netfs: Fix netfs_read_gaps() to use separate sink folios netfs, afs: Fix symlink reading
Deepanshu Kartikey (1):
nfc: pn533: fix OOB read in pn533_acr122_is_rx_frame_valid()
Dmitry Osipenko (1):
Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"
Dominik Kaszewski (1):
drm/amd/display: Remove sink usage from DPMS
Donggeun Yoo (2):
bpf, arm64: set up the frame pointer for the exception callback
bpf: Zero-fill other CPUs when BPF_F_CPU creates a per-cpu hash element
Dongliang Qin (1):
rds: ib: Clear the sg list when mapping an MR fails
Doruk Tan Ozturk (1):
nfc: port100: reject frames whose declared length exceeds the received data
Eddie Phillips (1):
gve: fix TX drop when GSO MSS is too small for hw
Emil Tsalapatis (3):
bpf: Fix bounds check for skb-backed dynptrs
bpf: Fix bpf_sock context code generation
bpf: Reject pkt arguments in mutating subprogs
Eric Dumazet (8):
net: flush skb_defer_nodes in dev_cpu_dead()
gve: DQO: fix header length used by gve_can_send_tso() for UDP GSO
gve: DQO: reject TSO packets with an out of range MSS
llc: fix skb UAF and leaks on llc_mac_hdr_init() failure
bridge: check llc_mac_hdr_init() return value in br_send_bpdu() net/sched: sch_teql: fix shadowed err in __teql_resolve()
vlan: ensure sufficient headroom in vlan_dev_hard_header()
tipc: reject invalid and unexpected GRP_ACK_MSG to prevent bc_ackers underflow
Eva Kurchatova (1):
selftests: cgroup: give the O_TMPFILE open in get_temp_fd() a mode
Fan Wu (2):
ipe: fix use-after-free when auditing a newly loaded policy
ipe: protect the dm-verity root hash with RCU
Fang Xieyan (1):
net/sched: act_ife: validate metadata length before decoding
Florian Fainelli (5):
net: bcmgenet: fix 64-bit RTNL stats reading in ethtool on 32-bit systems
net: bcmgenet: initialize u64 stats seq counter for all queues
net: bcmgenet: do not skip WoL power up on GENET V1
net: bcmgenet: validate Ethernet address in bcmgenet_set_mac_addr
net: bcmgenet: mask DMA_TIMEOUT_MASK when reading DMA_RING0_TIMEOUT
Florian Schmaus (1):
PM: hibernate: Freeze kernel threads after image preallocation
Florian Westphal (1):
netfilter: nfnetlink_queue: hold nfnl mutex in event notifier
Fourie Zhang (1):
net: bridge: mdb: restart port group walk after deletion
Francesco Magazzu (1):
drm/nouveau/clk: don't clobber reclock status when restoring volt/fan
Frank Wunderlich (1):
gpiolib: use of_node_name if line-name is missing
Fuad Tabba (9):
KVM: arm64: vgic-its: Free the caches when GITS_BASER changes
KVM: arm64: vgic-its: Skip unreachable devices instead of failing the save
KVM: arm64: Validate the SVE vector length in pkvm_vcpu_init_sve()
KVM: arm64: Do not clear VM-wide SVE feature on vCPU init failure
KVM: arm64: Derive GUEST_HAS_SVE from the SVE feature bit at EL2
KVM: arm64: Match hyp text by physical address in fix_host_ownership() arm64/boot: Disable trapping of PMZR_EL0 writes to EL2
KVM: arm64: Don't WARN on an unknown VM ioctl in protected mode
KVM: arm64: Transfer the hyp stack pages out of the host stage-2
Gajdos Tamás (3):
net: atl1: fix soft lockup on out-of-range cmb_tpd_next_to_clean read
net: atl1c: fix soft lockup on out-of-range tpd_cons read
net: atl1e: fix soft lockup on out-of-range hw_next_to_clean read
Geert Uytterhoeven (1):
scsi: ufs: pltfrm: Add quirk for R-Car S4 lacking lanes-per-direction
Geliang Tang (1):
bpf, sockmap: Fix self-redirect copied_seq double-counting
Ginger Li (1):
tipc: Fix a data race on mon->peer_cnt in mon_timeout()
Giuseppe Ranieri (1):
drm/nouveau/disp: don't reject HDMI config on cards without SCDC
Greg Kroah-Hartman (1):
Linux 7.2.9
Guangshuo Li (3):
drm/nouveau: fix autosuspend cleanup during teardown
net: ena: fix PHC cleanup on probe failure
net: ena: fix MMIO read buffer leak on probe failure
Guopeng Zhang (1):
cgroup/pids: Restore pids.events notifications in local mode
Hao Ge (1):
netfs: Fix missing alloc tagging of direct mempool allocations
Haseeb Malik (1):
macsec: initialize SecY before registering the netdevice
Helge Deller (1):
parisc: Increase kernel stack size to 32kb
Heyang Tan (1):
octeontx2-af: use seq_file for rsrc_alloc debugfs
Holger Dengler (1):
crypto: s390/hmac - Generate intermediate CV for API partial block handling
Hui Peng (8):
Bluetooth: bnep: fix out-of-bounds reads on short RX/TX frames and control fallthrough
Bluetooth: RFCOMM: Reject short EA=0 frames in rfcomm_recv_frame()
autofs: fix sbi->pipe file reference leak in autofs_kill_sb()
cgroup/cpuset: Return PERR_NOCPUS in remote_partition_enable() on subpartitions_cpus conflict
fou: reject omitted FOU_ATTR_IPPROTO on FOU_ENCAP_DIRECT
ipv6: sr: enforce exact attribute length for SEG6_ATTR_DST
mctp: route: iterate socket tag list in mctp_lookup_prealloc_tag()
Bluetooth: RFCOMM: fix NULL dereference of dlc->session in RFCOMM_CONNINFO
Ido Schimmel (1):
vrf: Stop corrupting skb->csum when capturing CHECKSUM_COMPLETE packets
Ilya Maximets (5):
net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry
net: openvswitch: conntrack: remove 'add_helper' dead code
net: openvswitch: conntrack: fix helper UAF due to extensions realloc net/sched: act_ct: fix helper UAF due to extensions realloc net/sched: act_ct: avoid modifying shared unconfirmed ct entry
Ilya Titov (1):
pinctrl: sunxi: keep a shadow copy of the data register output latches
Imre Deak (2):
drm/i915/dp_mst: Fix configuring FEC for a disconnected stream drm/i915/dp_mst: Fix configuring TUs for a disconnected stream
Ivan Delalande (1):
tg3: use random MAC address when tg3_get_device_address fails
Ivan Lipski (1):
drm/amd/display: Bump frame warning limit for clang builds of dml
Ivan Vecera (1):
dpll: use exact lookup for reference sync pin id
Jaewook You (1):
mm/hugetlb: preserve mremap address delta when skipping page tables
Jakub Kicinski (2):
genetlink: report the real command id for dump-only ops in policy dumps
veth: manage XDP program pointers during channel resize
Jakub Pawlak (1):
accel/ivpu: Use separate flag for job timeout
Jamal Hadi Salim (2):
net/sched: cls_u32: fix manual hash table handle IDR aliasing net/sched: sch_hfsc: bound the classify inner-filter walk with a drift budget
Jiawen Wu (2):
net: wangxun: implement soft quiesce for PCIe error recovery
net: libwx: fix races in Tx timestamp handling
Jiayuan Chen (4):
bpf: Fix divide-by-zero in btf_struct_walk()
bpf: Fix out-of-bounds read of sk_protocol in bpf_sock_destroy()
tcp: Skip cond_resched() in inet_csk_listen_stop() under BPF context
bpf: Fix out-of-bounds read of rtt_min in sock_ops
Jim Mattson (1):
KVM: x86/pmu: Move Intel PMU global MSRs to intel_is_valid_msr()
Jinjiang Tu (1):
mm/rmap: fix missing barrier between anon_vma init and vma->anon_vma publish
Johan Almbladh (2):
bpf: Fix immediate JMP JEQ/JNE on MIPS32
bpf: Fix BSWAP 32 and 16 on MIPS64
Jonas Jelonek (1):
net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection
Jonghyuk Kim(MalHyuk) (1):
drm/nouveau: RCU-free the scheduler-containing nouveau_sched
Jose Fernandez (Anthropic) (1):
bpf: Avoid soft lockup in __htab_map_lookup_and_delete_batch()
Josef Bacik (1):
writeback: report a Tasks-RCU quiescent state per cgwb drain pass
Joseph Qi (1):
ocfs2: make ocfs2_calc_xattr_init() return void
Julian Anastasov (1):
ipvs: revalidate ihl before icmp_send
Julian Sun (1):
fs: avoid repeated scans in evict_inodes()
Junjie Cao (1):
HID: quirks: add ALWAYS_POLL quirk for SDINNOVATION gaming keyboard
Junrui Luo (5):
drm/virtio: fix object leak when drm_gem_handle_create() fails drm/virtio: fix object leak in virtio_gpu_resource_create_ioctl() drm/virtio: fix object leaks in virtio_gpu_resource_create_blob_ioctl() drm/virtio: release the GEM object on virtio_gpu_vram_create() errors drm/nouveau/dmem: pin VRAM for the whole registered range
Jérémy Jean (2):
netfilter: flowtable: publish HW_DEAD after worker is done
net: gue: reject invalid REMCSUM offsets
Karl Mehltretter (7):
KVM: arm64: Return -EINVAL for an empty SMCCC filter range at base 0 s390/pci/docs: Fix sriov_numvfs attribute name
netfilter: nft_synproxy: use the family-aware checksum helper
gpio: tps65219: Fix GPIO input value reads
gpio: tps65219: Use the variant-specific direction callback
gpio: tps65219: Fix TPS65214 GPIO direction programming
KVM: arm64: Fix AArch32 DBGBXVR<n> handling
Karol Wachowski (2):
accel/ivpu: Use threaded IRQ for IPC callback processing accel/ivpu: Drop IRQF_ONESHOT to allow IPC IRQ threading on PREEMPT_RT
Kumar Kartikeya Dwivedi (5):
bpf: Make post-verification instruction rewrites killable
bpf: Preserve packet pointer class displacement in regsafe()
bpf: Restrict CO-RE poisoning to relocatable instructions
libbpf: Reject truncated ldimm64 CO-RE relocations
bpf: Bound ownership depth through local kptrs and graph roots
Kuniyuki Iwashima (3):
ip6_gre: Call ip6erspan_tunnel_unlink_md() in ip6erspan_changelink().
ipv6: Prevent rt6_insert_exception() for dying fib6_info.
ipv6: Fix dst leak for uncached routes.
Kyle Hendry (1):
net: pcs: rzn1-miic: Fix config array initialization
Lee Jones (2):
Bluetooth: mgmt: Dequeue pending mesh_send_sync entries on cancel
nfc: llcp: Fix race condition in accept_queue lifecycle
Lei Zhu (1):
selftests: nci: Correct pthread_create return value check
Leo Li (1):
drm/amd/display: Atomize IRQ register read/modify/write ops
Li Youhong (1):
drm/bridge: samsung-dsim: fix TE GPIO lifetime for host attach
Liew Rui Yan (2):
mm/damon/core: fix unconditionally skip last region mm/damon/core: allow esz to be set to zero
Linkui Xiao (1):
ipv4: fib: fix data-race and stale genid check around nh->nh_saddr
Liz Fong-Jones (1):
PCI: Fix BAR resize for devices on a root bus
Longlong Xia (1):
mm/hugetlb: do not dissolve gigantic pages without runtime support
Lorenzo Bianconi (2):
net: ethernet: mtk_eth_soc: unregister net_devices in case of probe failure
net: stmmac: clear stale buf->page after recycling on skb build failure
Lorenzo Stoakes (ARM) (2):
KVM: arm64: Fix spurious warning for benign stage 2 teardown race
KVM: arm64: nv: Fix null ptr deref on nested wp/unmap, teardown race
Lovekesh Solanki (1):
HID: multitouch: Add report ID mismatch quirk for ASUS ROG Z13 Folio
Luxiao Xu (2):
netfilter: ip6t_rt: fix zero-address non-strict match out-of-bounds read
nfc: fix use-after-free in nfc_get_local_general_bytes
Manaf Meethalavalappu Pallikunhi (1):
thermal: gov_step_wise: Fix stale mitigation vote with non-zero lower bounds
Marc Zyngier (2):
KVM: arm64: nv: Fix life cycle of the nested_mmus array
KVM: arm64: nv: Delay freeing of shadow S2 structures until VM destruction
Mario Limonciello (1):
x86/PCI: Disable enhanced atomics on AMD NBIO 7.7 and 7.11
Mark Amirkan (1):
mptcp: return sk_wait_data() errors from recvmsg()
Mark Brown (1):
KVM: arm64: Fix FGT mapping for HFGITR_EL2.nGCSEPP
Masami Hiramatsu (Google) (1):
x86/mce: Fix hardware debug register corruption on task migration
Masoud Aghasi (1):
bpf: Fix u32 overflow issue in map batch operations
Matthew Auld (1):
drm/xe/vm: nuke PTs only after unlinking contested VMAs
Matthew Brost (2):
drm/pagemap: dma-unmap pages before handling migration errors drm/xe: Keep walking on SVM eviction failure
Matthias Goergens (1):
ata: libata-scsi: bound the ATA passthru sense descriptor writes
Maxime Chevallier (7):
net: stmmac: selftests: Support running selftests on DSA conduits
net: stmmac: selftests: Validate EEE based on the actual LPI timer value
net: stmmac: selftests: Check the dev->features for S-TAG offload testing
net: stmmac: selftests: Capture all packets for vlan checks
net: stmmac: dwmac4: Use the correct bufzise when the len is exactly 8K
net: stmmac: size the RX buffers from the frame length, not the MTU
net: stmmac: selftests: Account for alignment shift on dwmac1000 for Jumbo test
Melody Wang (1):
x86/sev: Make vTPM SVSM calls preemption-safe
Mikhail Zaslonko (2):
s390/debug: Do not register views for failed static debug areas s390/debug: Fix NULL pointer dereference in debug_info_copy()
Ming Wang (1):
net: usb: cdc_mbim: add MeiG Smart SRM821 to ZLP whitelist
Mostafa Saleh (1):
remoteproc: qcom_q6v5_adsp: Fix iommu_unmap() usage
Muhammad Bilal (1):
net: spacemit: clear TX descriptor on fragment mapping failure
Myeonghun Pak (6):
tg3: clean up PHYLIB resources on probe failure
bna: prevent IOC timer rearm during teardown
net: airoha: npu: cancel wdt_work after releasing the WDT IRQ
nfc: trf7970a: power down on startup RX gain failure
pinctrl: single: free the IRQ on domain creation failure
RISC-V: KVM: Synchronize hrtimer callback during teardown
Naman Gulati (1):
netfilter: ctnetlink: fix suspicious RCU usage in expect_iter_name
Namhyung Kim (1):
perf/core: Fix a refcount leak in attach_perf_ctx_data()
Namjae Jeon (1):
smb: client: use finish_no_open() for non-regular inodes
Nathan Gao (1):
mm/damon/ops-common: use a page-aligned address in damon_ptep_mkold()
Nemesa Garg (1):
drm/i915/psr: Clear stale sel fetch enable bits on sel fetch disable
Nguyen Ngoc Thang (1):
net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure
Nicolai Buchwitz (2):
net: don't require the hwtstamp NDOs when a PHY provides timestamping
net: bcmgenet: stop Tx NAPI before disabling the queues
Nicolo Giuliani (1):
net: dsa: mv88e6xxx: 88E6191X and 88E6193X have no PTP
Niklas Schnelle (4):
s390/pci: Fix leak of struct pci_dev reference in zpci_report_status() s390/pci: Fix missing device lock in zpci_report_status() s390/pci: Report SCLP status on error events when no pdev is associated s390/pci: Don't report recovery success on skipped recovery
Norbert Szetei (2):
net: xps: reject an out of range traffic class
ipv6: do not let ipv6_find_hdr() return an offset past the packet end
Oscar Priego Verdugo (1):
HID: elecom: fix bus type for M-XGL20DLBK
Paolo Bonzini (1):
KVM: move TSS constants from kvm_host.h to tss.h
Patrick Lu (Anthropic) (1):
writeback: bound cleanup_offline_cgwb() rescans by rotating scanned inodes
Pavankumar Kondeti (1):
workqueue: Fix NULL current_pwq deref in flush dependency check
Peiyang He (5):
drm/nouveau/uvmm: fix UAF in nouveau_uvmm_sm when BO is in TTM_PL_SYSTEM drm/nouveau: fix double-free in nvif_vmm_dtor
drm/nouveau: don't bump pin count on failed re-pin in nouveau_bo_pin_locked() drm/virtio: fix memory leak of fence event on execbuffer failure drm/virtio: fix NULL pointer dereference on fence allocation failure
Pengpeng Hou (5):
net: usb: sr9700: include receive overhead in the length check
nfc: nfcmrvl: validate helper command length before pull
nfc: st21nfca: validate received frame size
nfc: st21nfca: validate ISO15693 inventory length drm/imagination: clamp freelist reconstruction requests
Peter Oberparleiter (1):
s390/cmf: Fix virtual vs physical address confusion
Prathamesh Shete (1):
pinctrl: tegra238: Fix register bank for AON pin groups
Praveen Talari (3):
i2c: qcom-geni: Isolate serial engine setup
i2c: qcom-geni: Move resource initialization to separate function
i2c: qcom-geni: Store of_device_id data in driver private struct
Prike Liang (1):
drm/amdgpu: move userq fence wait out of signalling section
Pu Lehui (1):
bpf: Fix UAF due to concurrent consumption of ttrace lists in alloc_bulk
Puranjay Mohan (3):
perf/core: Fill branch entries with a single assignment perf/core: Fix NULL pmu_ctx passed to pmu->sched_task() perf/core: Run sched_task() for PMUs with only CPU-wide events
Quentin Armitage (1):
net: allow IFLA_INET_CONF messages when NLA_F_NESTED unset
Ralf Lici (11):
ovpn: preserve IPv6 scope id for netlink peer endpoints
ovpn: skip UDP source validation for unspecified addresses
ovpn: track UDP socket route key for peer dst cache
ovpn: validate peer state before caching UDP dst
ovpn: replace bind when learning local endpoint
ovpn: replace bind when clearing stale local source
ovpn: always unhash old VPN addresses before rehashing
ovpn: reject duplicate peer VPN addresses
ovpn: reject multipeer peers without VPN addresses
ovpn: reject invalid peer VPN addresses net/mlx5e: advertise MACsec offload only when supported
Ran Hongyun (1):
squashfs: Add dictionary size range check to prevent shift-out-of-bounds
Ratheesh Kannoth (1):
octeontx2-af: Fix memory scaling limitation in SR-IOV mode
Ravindra (1):
Bluetooth: btintel_pcie: validate device-supplied DMA indices
René Onier (1):
HID: winwing: fix use-after-free in force feedback teardown
Ridham Khurana (1):
gpio: zynq: fix runtime PM leak on request error path
SJ Park (2):
mm/damon/vaddr: avoid hw-driven pte updates during damon_hugetlb_mkold() mm/damon/core: reset invalid quota->charge_target_from
Sang-Hoon Choi (1):
nfp: hold IPsec RX state under the XArray lock
Sanghyun Park (1):
vxlan: use one headroom snapshot for neighbour replies
Sarah Emery (1):
pinctrl: generic: serialise pinctrl_generic_dt_node_to_map()
Sean Anderson (1):
pinctrl: meson: Fix typo in s4 group name
Sean Christopherson (11):
perf/x86/intel: Ensure KVM guest PEBS path doesn't set unwanted PERF_GLOBAL_CTRL bits perf/x86/intel: Don't write PEBS_ENABLED on host<=>guest xfers if CPU has PEBS isolation, to fix stuck PEBS_ENABLED perf/x86/intel: Don't pointlessly context switch DS_AREA (and PEBS config) if PEBS is unused perf/x86/intel: Make @data a mandatory param for intel_guest_get_msrs()
KVM: SEV: Free have_run_cpus during VM destruction even if VM is no longer SEV
KVM: SEV: Do cache maintenance on the source VM during intra-host migration
KVM: x86: Move IRQ-related helper declarations from kvm_host.h => irq.h
KVM: x86/mmu: Move kvm_arch_async_page_ready() below kvm_tdp_page_fault()
KVM: x86/mmu: Move kvm_mmu_do_page_fault() from mmu_internal.h => mmu.c
KVM: x86: Reject nested CAP enablement if nested virtualization is disabled
KVM: x86: Add static calls for nested virtualization ops
Sean Rhodes (2):
ALSA: hda/realtek: Limit Star Labs internal mic boost
ALSA: hda/realtek: Add StarFighter HDA SSID
Sebastian Ott (1):
KVM: selftests: fix steal_time for arm64 with host page size > 4K
SeungJu Cheon (3):
RISC-V: KVM: Preserve firmware counter value across stop/start
RISC-V: KVM: Report snapshot write failure to the guest
RISC-V: KVM: Fix perf-backed counter accounting across stop and read
Shardul Bankar (2):
udp: relocate a connected socket in the 4-tuple hash table on re-connect
udp: remove a disconnected socket from the 4-tuple hash table
Shawn Guo (1):
pinctrl: qcom: nord: Split QUP1 SE2/SE3 into lane-pair functions
Shay Drory (3):
net/mlx5: devcom, Base component size on linked devices net/mlx5: SD, unload reps on shared FDB create error path net/mlx5: LAG, reload IB reps of LAG master before the rest
Shengzhuo Wei (1):
i2c: qcom-geni: release DMA channels on probe error
Shihuang Liu (1):
net: skbuff: fix pull-bound underflow in skb_checksum_setup_ipv6()
Siddharth Chintamaneni (1):
bpf: Allow terminal gotox instructions
Sidraya Jayagond (1):
net/smc: fix UAF on lgr list traversal in smcr_port_err()
Sk Anirban (1):
drm/xe/gt_throttle: Report power brake as a throttle reason on CRI
Slawomir Stepien (1):
HID: amd_sfh: Validate PCI BAR size before mapping
Stanley Jhu (1):
scsi: ufs: core: Keep internal commands dispatchable during error handling
Steffen Eiden (2):
s390/uv: Fix loop condition in uv_find_secrets s390/uv: Prevent potential out-of-bounds read
Sunil Khatri (3):
drm/amdgpu/userq: fix double jiffies conversion in hang detect timeout drm/amdgpu/vcn4.0.3: fix video_timeout unit mismatch in jpeg reset wait drm/amdgpu/vcn5.0.1: fix video_timeout unit mismatch in jpeg reset wait
Sven Schnelle (1):
selftests/ftrace: Fix unique symbol check in kprobe_non_uniq_symbol.tc
Szymon Acedański (1):
drm/xe: Limit sg segment size to PAGE_SIZE on Xen PV
Takashi Sakamoto (1):
firewire: cdev: fix back-transition for iso_resource_auto client resource
Tan Chi (1):
RISC-V: KVM: Fix HSM hart status error propagation
Tangudu Tilak Tirumalesh (2):
drm/xe: harden adjust_idledly() against divide-by-zero and overflow drm/xe: Add wa_14025941587 to xe2, xe3 and xe3p platforms
Tejun Heo (1):
sched_ext: Derive SCX_RQ_IN_WAKEUP from the core enqueue flags
Théo Lebrun (1):
net: macb: fix dma_alloc_coherent() leak on macb_alloc() error paths
Tim Chen (1):
sched/cache: Decouple sched_cache_group from mm to fix UAF
Tristan Madani (1):
HID: hid-oxp: use cancel_delayed_work_sync() in remove
Victor Nogueira (1):
net/sched: act_gate: budget the per-entry list in get_fill_size
Viken Dadhaniya (1):
i2c: qcom-geni: Fix hardcoded clock index in SE_GENI_CLK_SEL
Vineeth Vijayan (4):
s390/cio: Fix cio_update_schib() to not cache invalid schib s390/cio: Check pmcw.dnv before pmcw.ena in I/O entry points s390/cio: Guard PMCW field accesses with dnv check s390/cio: Fix NULL pointer dereference in ccw_device_get_util_str()
Wei Jie LAW (1):
HID: wacom: fix OOB read in wacom_wac_pen_serial_enforce()
Weiming Shi (5):
bpf: Disallow bpf_skb_pull_data() for LWT_SEG6LOCAL
bpf: Skip unsettled links in link iterator
bpf: Reject dev-bound-only programs on other devices net/sched: reject IDR error pointers when deleting actions
netfilter: ip6t_rpfilter: reject routes without inet6_dev
Wentao Liang (13):
fsl/fman: Fix clk reference leak in read_dts_node()
gpio: arizona: Fix runtime PM leak in arizona_gpio_direction_out() drm/amd/display: Fix dc stream excess put in dm_update_crtc_state() drm/amdgpu: Fix acpi device leak in amdgpu_acpi_enumerate_xcc() drm/amdgpu: Fix last_update fence leak in amdgpu_vm_init() drm/amdgpu: Fix runtime PM leak in amdgpu_debugfs_test_ib_show() drm/amdgpu: Fix vmid_wait fence leak in amdgpu_ring_init() drm/nouveau: Fix bridge reference leak in nv1a_ram_new() drm/nouveau: Fix gem reference leak in validate_init() drm/nouveau: Fix runtime PM leak in nouveau_connector_detect() net/mlx5: Fix rev_entry reference leak in mlx5_tc_ct_shared_counter_get()
net: hisilicon: hns_dsaf_mac: fix mdio device leak in hns_mac_register_phy()
net: usb: lan78xx: Fix URB reference leak in lan78xx_submit_deferred_urbs()
Willem de Bruijn (3):
virtio_net: copy zerocopy frags in start_xmit without NAPI
tcp: prevent collapsing skbs across boundary in rtx queue
packet: use ubuf_info completion for TX_RING packets
Xiang Mei (1):
vlan: require the MAC header to be present in __vlan_insert_inner_tag()
Xie Bo (3):
RISC-V: KVM: Serialize IMSIC attributes with vCPU migration
RISC-V: KVM: Release unused page after MMU invalidation
RISC-V: KVM: Propagate interrupted G-stage faults
Xin Long (1):
sctp: hold asoc or transport before mod_timer() in timer handlers
Xu Yunxiang (1):
bpf: Reject non-negative offsets in stack_slot_obj_get_spi()
Xuanqiang Luo (1):
ip_gre: Reject enabling collect metadata through changelink
Yehyeong Lee (1):
scsi: libiscsi_tcp: Check the data direction of a Data-In PDU
Yicong Yang (1):
RISC-V: KVM: Fix the conversion between vsip and hvip
Yilin Zhang (1):
tcp: fix use-after-free of retransmit_skb_hint in tcp_send_synack()
Yiqi Sun (1):
sctp: avoid livelock while updating retransmit path
Yuqi Xu (2):
bpf: Check params size before reading reserved fields
net: ipconfig: bound DHCP option construction
Yuya Kusakabe (1):
net: ipv6: keep room for the mac header in dst_dev_overhead()
ZHOU Jiaxiang (2):
scsi: block: Fix zones_cond out-of-bounds write on zone report
scsi: sd_zbc: Reject disks with too many zones
Zeng Chi (1):
KVM: Don't treat reserved xarray entries as having memory attributes
Zeng Heng (1):
arm64: io: Reject non-user protection in ioremap_prot()
Zhan Xusheng (1):
sched/core: Account PSI IRQ time to the execution context, not the scheduling context
Zhang Yunfei (1):
net: txgbe: fix FDIR filter restore for VF rules
Zhao Gongyi (1):
bpf, sockmap: Reject max_entries > INT_MAX in sock_map_alloc
Zhenghui Hao (1):
parisc: parse early parameters in setup_arch()
Zhiling Zou (1):
xsk: Use a 32-bit compare in xsk_map_gen_lookup
Zihan Xi (6):
smb: client: fix create context out-of-bounds reads
smb: client: close handle after create-context parsing failure
smb: client: clean up failed cached directory opens
smb: client: preserve create-context parsing errors
smb: client: validate POSIX create context length
smb: client: close completed creates on compound wait errors
Zijie Huang (1):
net: arp: terminate device name before lookup
Zijun Hu (1):
Bluetooth: btnxpuart: Fix skb leak in nxp_process_fw_dump()
Zixuan Chai (1):
llc: reserve device headroom for allocated frames
Zongmin Zhou (1):
KVM: riscv: Fix NACL hfence entry update order
bui duc phuc (1):
net: ethernet: ti: netcp: fix pm_runtime usage counter leak on error
hpp.iscas (1):
pinctrl: qcom: ipq5210: Publish the OF module alias
shechenglong (1):
drm/client: fix restore of partially initialized client
Ömer Mete Kaya (3):
nfc: llcp: fix -ENOMEM on connect with zero-length service name
nfc: llcp: fix WKS SAP hijacking via prefix match in nfc_llcp_wks_sap()
nfc: llcp: fix slab-out-of-bounds reads when logging service names
Greg Kroah-Hartman
maintainerDocumentation/arch/arm64/booting.rst +1 -0
@@ -465,6 +465,7 @@ Before jumping into the kernel, the following conditions must be met: - HDFGWTR2_EL2.nPMICNTR_EL0 (bit 2) must be initialised to 0b1. - HDFGWTR2_EL2.nPMICFILTR_EL0 (bit 3) must be initialised to 0b1. - HDFGWTR2_EL2.nPMUACR_EL1 (bit 4) must be initialised to 0b1. + - HDFGWTR2_EL2.nPMZR_EL0 (bit 21) must be initialised to 0b1. For CPUs with SPE data source filtering (FEAT_SPE_FDS):
Documentation/arch/s390/pci.rst +1 -1
@@ -67,7 +67,7 @@ Entries specific to zPCI functions and entries that hold zPCI information. A physical function that currently supports a virtual function cannot be powered off until all virtual functions are removed with: - echo 0 > /sys/bus/pci/devices/DDDD:BB:dd.f/sriov_numvf + echo 0 > /sys/bus/pci/devices/DDDD:BB:dd.f/sriov_numvfs * /sys/bus/pci/devices/DDDD:BB:dd.f/:
Documentation/devicetree/bindings/pinctrl/qcom,nord-tlmm.yaml +4 -3
@@ -67,7 +67,7 @@ $defs: Specify the alternative function to be configured for the specified pins. - enum: [ aoss_cti, atest_char, atest_usb20, atest_usb21, + enum: [ gpio, aoss_cti, atest_char, atest_usb20, atest_usb21, aud_intfc0_clk, aud_intfc0_data, aud_intfc0_ws, aud_intfc10_clk, aud_intfc10_data, aud_intfc10_ws, aud_intfc1_clk, aud_intfc1_data, aud_intfc1_ws,
@@ -98,9 +98,10 @@ $defs: pcie3_clk_req_n, phase_flag, pll_bist_sync, pll_clk_aux, prng_rosc0, prng_rosc1, pwrbrk_i_n, qdss, qdss_cti, qspi, qup0_se0, qup0_se1, qup0_se2, qup0_se3, qup0_se4, qup0_se5, - qup1_se0, qup1_se1, qup1_se3, qup1_se2, qup1_se4, qup1_se5, + qup1_se0, qup1_se1, qup1_se2_01, qup1_se2_23, qup1_se3_01, + qup1_se3_23, qup1_se4, qup1_se5, qup1_se6, qup2_se0, qup2_se1, qup2_se2, qup2_se3, qup2_se4, - qup2_se5, qup2_se6, + qup2_se5, qup2_se6, qup3_se0_mira, qup3_se0_mirb, sailss_ospi, sdc4_clk, sdc4_cmd, sdc4_data, smb_alert, smb_alert_n, smb_clk, smb_dat, tb_trig_sdc4, tmess_prng0, tmess_prng1, tsc_timer, tsense_pwm, usb0_hs,
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 7 PATCHLEVEL = 2 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/include/asm/el2_setup.h +8 -1
@@ -418,6 +418,7 @@ b.lt .Lskip_fgt2_\@mov x0, xzr + mov x2, xzr mrs x1, id_aa64dfr0_el1 ubfx x1, x1, #ID_AA64DFR0_EL1_PMUVer_SHIFT, #4 cmp x1, #ID_AA64DFR0_EL1_PMUVer_V3P9
@@ -426,6 +427,11 @@ orr x0, x0, #HDFGRTR2_EL2_nPMICNTR_EL0 orr x0, x0, #HDFGRTR2_EL2_nPMICFILTR_EL0 orr x0, x0, #HDFGRTR2_EL2_nPMUACR_EL1 + orr x2, x2, #HDFGWTR2_EL2_nPMICNTR_EL0 + orr x2, x2, #HDFGWTR2_EL2_nPMICFILTR_EL0 + orr x2, x2, #HDFGWTR2_EL2_nPMUACR_EL1 +/* PMZR_EL0 is write-only, so it has no read trap to disable */ + orr x2, x2, #HDFGWTR2_EL2_nPMZR_EL0 .Lskip_pmuv3p9_\@:/* If SPE is implemented, */ __spe_vers_imp .Lskip_spefds_\@, ID_AA64DFR0_EL1_PMSVer_IMP, x1
@@ -436,10 +442,11 @@ cbz x1, .Lskip_spefds_\@/* disable traps of PMSDSFR to EL2. */ orr x0, x0, #HDFGRTR2_EL2_nPMSDSFR_EL1 + orr x2, x2, #HDFGWTR2_EL2_nPMSDSFR_EL1 .Lskip_spefds_\@: msr_s SYS_HDFGRTR2_EL2, x0 - msr_s SYS_HDFGWTR2_EL2, x0 + msr_s SYS_HDFGWTR2_EL2, x2 msr_s SYS_HFGRTR2_EL2, xzr msr_s SYS_HFGWTR2_EL2, xzr msr_s SYS_HFGITR2_EL2, xzr
arch/arm64/include/asm/io.h +2 -1
@@ -272,7 +272,8 @@ static inline void __iomem *ioremap_prot(phys_addr_t phys, size_t size,pgprot_t prot;ptval_t user_prot_val =pgprot_val (user_prot); -if (WARN_ON_ONCE (!(user_prot_val &PTE_USER ))) +/* Reject PROT_NONE and exec-only */ +if (!(user_prot_val &PTE_USER ))return NULL ; prot = __pgprot_modify(PAGE_KERNEL, PTE_ATTRINDX_MASK,
arch/arm64/include/asm/kvm_host.h +1 -1
@@ -322,7 +322,7 @@ struct kvm_arch {* Stage 2 paging state for VMs with nested S2 using a virtual * VMID. */ -struct kvm_s2_mmu *nested_mmus; +struct kvm_s2_mmu **nested_mmus;size_t nested_mmus_size;int nested_mmus_next;
arch/arm64/include/asm/kvm_nested.h +2 -1
@@ -66,7 +66,8 @@ static inline u64 translate_ttbr0_el2_to_ttbr0_el1(u64 ttbr0)extern bool forward_smc_trap (struct kvm_vcpu *vcpu);extern bool forward_debug_exception (struct kvm_vcpu *vcpu); -extern void kvm_init_nested (struct kvm *kvm); +extern int kvm_init_nested (struct kvm *kvm); +extern void kvm_destroy_nested (struct kvm *kvm);extern int kvm_vcpu_init_nested (struct kvm_vcpu *vcpu);extern void kvm_init_nested_s2_mmu (struct kvm_s2_mmu *mmu);extern struct kvm_s2_mmu *lookup_s2_mmu (struct kvm_vcpu *vcpu);
arch/arm64/include/asm/kvm_pkvm.h +1 -2
@@ -62,8 +62,7 @@ static inline bool kvm_pkvm_ioctl_allowed(struct kvm *kvm, unsigned int ioctl)int r; r =kvm_get_cap_for_kvm_ioctl (ioctl, &ext); - -if (WARN_ON_ONCE (r <0 )) +if (r <0 )return false;return kvm_pkvm_ext_allowed (kvm, ext);
arch/arm64/kernel/cpu_errata.c +9 -6
@@ -28,18 +28,21 @@ bool cpu_errata_set_target_impl(u64 num, void *impl_cpus)return true; } +static inline bool __is_midr_in_range (u32 midr,struct midr_range const *range) +{ +return midr_is_cpu_model_range (midr, range->model, + range->rv_min, range->rv_max); +} +static inline bool is_midr_in_range (struct midr_range const *range) {int i;if (!target_impl_cpu_num) -return midr_is_cpu_model_range (read_cpuid_id (), range->model, - range->rv_min, range->rv_max); +return __is_midr_in_range (read_cpuid_id (), range);for (i =0 ; i < target_impl_cpu_num; i++) { -if (midr_is_cpu_model_range (target_impl_cpus[i].midr, - range->model, - range->rv_min, range->rv_max)) +if (__is_midr_in_range (target_impl_cpus[i].midr, range))return true; }return false;
@@ -59,7 +62,7 @@ __is_affected_midr_range(const struct arm64_cpu_capabilities *entry, u32 midr, u32 revidr) {const struct arm64_midr_revidr *fix; -if (!is_midr_in_range (&entry->midr_range)) +if (!__is_midr_in_range (midr, &entry->midr_range))return false; midr &=MIDR_REVISION_MASK |MIDR_VARIANT_MASK ;
arch/arm64/kvm/arm.c +6 -2
@@ -236,8 +236,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)mutex_unlock (&kvm->lock);#endif -kvm_init_nested (kvm); - ret =kvm_share_hyp (kvm, kvm +1 );if (ret)return ret;
@@ -252,6 +250,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)if (ret) goto err_free_cpumask; + ret =kvm_init_nested (kvm); +if (ret) + goto err_uninit_mmu; +if (is_protected_kvm_enabled ()) {/* * If any failures occur after this is successful, make sure to
@@ -280,6 +282,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) err_uninit_mmu:kvm_uninit_stage2_mmu (kvm); +kvm_destroy_nested (kvm); err_free_cpumask:free_cpumask_var (kvm->arch.supported_cpus); err_unshare_kvm:
@@ -337,6 +340,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)kvm_unshare_hyp (kvm, kvm +1 ); +kvm_destroy_nested (kvm);kvm_arm_teardown_hypercalls (kvm); }
arch/arm64/kvm/emulate-nested.c +1 -1
@@ -1432,7 +1432,7 @@ static const struct encoding_to_trap_config encoding_to_fgt[] __initconst = {SR_FGT (OP_AT_S1E1A ,HFGITR ,ATS1E1A ,1 ),SR_FGT (OP_COSP_RCTX ,HFGITR ,COSPRCTX ,1 ),SR_FGT (OP_GCSPUSHX ,HFGITR , nGCSEPP,0 ), -SR_FGT (OP_GCSPOPX ,HFGITR , nGCSEPP,0 ), +SR_FGT (OP_GCSPOPCX ,HFGITR , nGCSEPP,0 ),SR_FGT (OP_GCSPUSHM ,HFGITR , nGCSPUSHM_EL1,0 ),SR_FGT (OP_BRB_IALL ,HFGITR , nBRBIALL,0 ), SR_FGT(OP_BRB_INJ, HFGITR, nBRBINJ, 0),
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h +1 -0
@@ -52,6 +52,7 @@ int __pkvm_host_test_clear_young_guest(u64 gfn, u64 nr_pages, bool mkold, structint __pkvm_host_mkyoung_guest (u64 gfn,struct pkvm_hyp_vcpu *vcpu);bool addr_is_memory (phys_addr_t phys); +bool addr_is_hyp_text (phys_addr_t phys);int host_stage2_idmap_locked (phys_addr_t addr,u64 size,enum kvm_pgtable_prot prot);int host_stage2_set_owner_locked (phys_addr_t addr,u64 size,u8 owner_id);int kvm_host_prepare_stage2 (void *pgt_pool_base);
arch/arm64/kvm/hyp/nvhe/mem_protect.c +8 -0
@@ -443,6 +443,14 @@ bool addr_is_memory(phys_addr_t phys)return !!find_mem_range (phys, &range); } +bool addr_is_hyp_text (phys_addr_t phys) +{ +phys_addr_t start =ALIGN_DOWN (__hyp_pa (__hyp_text_start),PAGE_SIZE ); +phys_addr_t end =PAGE_ALIGN (__hyp_pa (__hyp_text_end)); + +return phys >= start && phys < end; +} +static bool is_in_mem_range (u64 addr,struct kvm_mem_range *range) {return range->start <= addr && addr < range->end;
arch/arm64/kvm/hyp/nvhe/pkvm.c +11 -14
@@ -360,7 +360,7 @@ static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const strucif (test_bit (KVM_ARCH_FLAG_WRITABLE_IMP_ID_REGS , &host_arch_flags)) hyp_vm->kvm.arch.midr_el1 = host_kvm->arch.midr_el1; -return ; + goto out; }if (kvm_pkvm_ext_allowed (kvm,KVM_CAP_ARM_MTE ))
@@ -379,13 +379,14 @@ static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const strucif (kvm_pkvm_ext_allowed (kvm,KVM_CAP_ARM_PTRAUTH_GENERIC ))set_bit (KVM_ARM_VCPU_PTRAUTH_GENERIC , allowed_features); -if (kvm_pkvm_ext_allowed (kvm,KVM_CAP_ARM_SVE )) { +if (kvm_pkvm_ext_allowed (kvm,KVM_CAP_ARM_SVE ))set_bit (KVM_ARM_VCPU_SVE , allowed_features); - kvm->arch.flags |= host_arch_flags &BIT (KVM_ARCH_FLAG_GUEST_HAS_SVE ); - }bitmap_and (kvm->arch.vcpu_features, host_kvm->arch.vcpu_features, allowed_features,KVM_VCPU_MAX_FEATURES ); +out: +__assign_bit (KVM_ARCH_FLAG_GUEST_HAS_SVE , &kvm->arch.flags, +kvm_vcpu_has_feature (kvm,KVM_ARM_VCPU_SVE )); }static void unpin_host_vcpu (struct kvm_vcpu *host_vcpu)
@@ -451,7 +452,7 @@ static int pkvm_vcpu_init_sve(struct pkvm_hyp_vcpu *hyp_vcpu, struct kvm_vcpu *hunsigned int sve_max_vl;size_t sve_state_size;void *sve_state; -int ret =0 ; +int ret;if (!vcpu_has_feature (vcpu,KVM_ARM_VCPU_SVE )) {vcpu_clear_flag (vcpu,VCPU_SVE_FINALIZED );
@@ -460,25 +461,21 @@ static int pkvm_vcpu_init_sve(struct pkvm_hyp_vcpu *hyp_vcpu, struct kvm_vcpu *h/* Limit guest vector length to the maximum supported by the host. */ sve_max_vl =min (READ_ONCE (host_vcpu->arch.sve_max_vl), kvm_host_sve_max_vl); - sve_state_size =sve_state_size_from_vl (sve_max_vl); sve_state =kern_hyp_va (READ_ONCE (host_vcpu->arch.sve_state)); -if (!sve_state || !sve_state_size) { - ret = -EINVAL ; - goto err; - } +if (!sve_vl_valid (sve_max_vl) || !sve_state) +return -EINVAL ; + + sve_state_size =sve_state_size_from_vl (sve_max_vl); ret =hyp_pin_shared_mem (sve_state, sve_state + sve_state_size);if (ret) - goto err; +return ret; vcpu->arch.sve_state = sve_state; vcpu->arch.sve_max_vl = sve_max_vl;return 0 ; -err: -clear_bit (KVM_ARM_VCPU_SVE , vcpu->kvm->arch.vcpu_features); -return ret; }static int vm_copy_id_regs (struct pkvm_hyp_vcpu *hyp_vcpu)
arch/arm64/kvm/hyp/nvhe/setup.c +11 -1
@@ -217,7 +217,7 @@ static int fix_host_ownership_walker(const struct kvm_pgtable_visit_ctx *ctx,case PKVM_PAGE_OWNED :set_hyp_state (page,PKVM_PAGE_OWNED );/* hyp text is RO in the host stage-2 to be inspected on panic. */ -if (prot ==PAGE_HYP_EXEC ) { +if (addr_is_hyp_text (phys)) {set_host_state (page,PKVM_NOPAGE );return host_stage2_idmap_locked (phys,PAGE_SIZE ,KVM_PGTABLE_PROT_R ); }else {
@@ -269,6 +269,16 @@ static int fix_host_ownership(void)return ret; } +/* The stacks sit in the private VA range, not the linear map. */ +for (i =0 ; i < hyp_nr_cpus; i++) { +struct kvm_nvhe_init_params *params =per_cpu_ptr (&kvm_init_params, i); +u64 start = params->stack_hyp_va -NVHE_STACK_SIZE ; + + ret =kvm_pgtable_walk (&pkvm_pgtable, start,NVHE_STACK_SIZE , &walker); +if (ret) +return ret; + } +return 0 ; }
arch/arm64/kvm/hypercalls.c +2 -1
@@ -185,7 +185,8 @@ static int kvm_smccc_set_filter(struct kvm *kvm, struct kvm_smccc_filter __user start = filter.base; end = start + filter.nr_functions -1 ; -if (end < start || filter.action >=NR_SMCCC_FILTER_ACTIONS ) +if (!filter.nr_functions || end < start || + filter.action >=NR_SMCCC_FILTER_ACTIONS )return -EINVAL ;mutex_lock (&kvm->arch.config_lock);
arch/arm64/kvm/mmu.c +12 -3
@@ -59,27 +59,36 @@ static phys_addr_t stage2_range_addr_end(phys_addr_t addr, phys_addr_t end)* long will also starve other vCPUs. We have to also make sure that the page * tables are not freed while we released the lock. */ -static int stage2_apply_range (struct kvm_s2_mmu *mmu,phys_addr_t addr, +static int stage2_apply_range (struct kvm_s2_mmu *mmu,phys_addr_t start,phys_addr_t end,int (*fn)(struct kvm_pgtable *,u64 ,u64 ),bool resched) {struct kvm *kvm =kvm_s2_mmu_to_kvm (mmu); +bool lock_dropped = false; +phys_addr_t addr = start;int ret;u64 next;do {struct kvm_pgtable *pgt = mmu->pgt; +/* +* We may be raced on PGT teardown when we release the +* kvm->mmu_lock. That's fine as the PGT is legitimately no +* longer present. +*/ if (!pgt) -return -EINVAL ; +return lock_dropped ?0 : -EINVAL ; next =stage2_range_addr_end (addr, end); ret =fn (pgt, addr, next - addr);if (ret)break ; -if (resched && next != end) +if (resched && next != end) {cond_resched_rwlock_write (&kvm->mmu_lock); + lock_dropped = true; + } }while (addr = next, addr != end);return ret;
arch/arm64/kvm/nested.c +60 -51
206 lines not on this page · raw message
arch/arm64/kvm/sys_regs.c +1 -0
@@ -889,6 +889,7 @@ static u64 *demux_wb_reg(struct kvm_vcpu *vcpu, const struct sys_reg_desc *rd)struct kvm_guest_debug_arch *dbg = &vcpu->arch.vcpu_debug_state;switch (rd->Op2) { +case 0b001 :case 0b100 :return &dbg->dbg_bvr[rd->CRm];case 0b101 :
arch/arm64/kvm/vgic/vgic-its.c +27 -16
104 lines not on this page · raw message
arch/arm64/net/bpf_jit_comp.c +2 -0
@@ -600,6 +600,8 @@ static int build_prologue(struct jit_ctx *ctx, bool ebpf_from_cbpf)* 12 registers are on the stack */ emit (A64_SUB_I (1 ,A64_SP ,A64_FP ,96 ), ctx); +/* The callback may use its own BPF stack, set up fp for it. */ + ctx->fp_used = true; }/* Stack must be multiples of 16B */
arch/mips/net/bpf_jit_comp32.c +1 -1
@@ -1111,7 +1111,7 @@ static void emit_jmp_i64(struct jit_context *ctx,emit (ctx, xor, tmp,lo (dst), tmp); }if (imm <0 ) {/* Compare sign extension */ -emit (ctx, addu,MIPS_R_T9 ,hi (dst),1 ); +emit (ctx, addiu,MIPS_R_T9 ,hi (dst),1 );emit (ctx, or, tmp, tmp,MIPS_R_T9 ); }else {/* Compare zero extension */ emit (ctx, or, tmp, tmp,hi (dst));
arch/mips/net/bpf_jit_comp64.c +1 -2
@@ -305,8 +305,7 @@ static void emit_bswap_r64(struct jit_context *ctx, u8 dst, u32 width)case 16 :emit_sext (ctx, dst, dst);emit_bswap_r (ctx, dst, width); -if (cpu_has_mips64r2 || cpu_has_mips64r6) -emit_zext (ctx, dst); +emit_zext (ctx, dst);break ; }clobber_reg (ctx, dst);
arch/parisc/include/asm/thread_info.h +1 -1
@@ -24,7 +24,7 @@ struct thread_info {/* thread information allocation */ -#ifdef CONFIG_IRQSTACKS +#if defined(CONFIG_IRQSTACKS ) && !defined(CONFIG_64BIT )#define THREAD_SIZE_ORDER 2/* PA-RISC requires at least 16k stack */ #else #define THREAD_SIZE_ORDER 3/* PA-RISC requires at least 32k stack */
arch/parisc/kernel/setup.c +12 -0
@@ -132,6 +132,18 @@ void __init setup_arch(char **cmdline_p)parisc_cache_init ();paging_init (); +/* +* Parse early parameters before mm_core_init_early() runs. +* Several early_param() handlers only record data that is consumed +* from there - for example hugepages=, hugepagesz=, +* default_hugepagesz=, hugetlb_cma= and hugetlb_free_vmemmap= - so +* the generic parse_early_param() call in start_kernel() is too late +* for them. jump_label_init() must come first, since early param +* handlers may enable or disable static keys. +*/ +jump_label_init (); +parse_early_param (); +#ifdef CONFIG_PA11 dma_ops_init ();#endif
arch/riscv/include/asm/csr.h +16 -4
@@ -183,12 +183,24 @@#define HGATP_MODE_SHIFT HGATP32_MODE_SHIFT#endif -/* VSIP & HVIP relation */ +/* +* VSIP & HVIP relation +* +* The bit positions are same between VSIP and HVIP for interrupt +* numbers 13-63, where there's a shift for the SSI, STI and SEI. +*/ #define VSIP_TO_HVIP_SHIFT (IRQ_VS_SOFT - IRQ_S_SOFT) -#define VSIP_VALID_MASK ((_AC(1, UL) << IRQ_S_SOFT) | \ +#define VSIP_BIAS_MASK ((_AC(1, UL) << IRQ_S_SOFT) | \ (_AC(1, UL) << IRQ_S_TIMER) | \ - (_AC(1, UL) << IRQ_S_EXT) | \ - (_AC(1, UL) << IRQ_PMU_OVF)) + (_AC(1, UL) << IRQ_S_EXT)) +#define VSIP_NO_BIAS_MASK (_AC(1, UL) << IRQ_PMU_OVF) +#define VSIP_VALID_MASK (VSIP_BIAS_MASK | VSIP_NO_BIAS_MASK) +#define vsip_to_hvip (_vsip) ((((_vsip) & VSIP_BIAS_MASK) << \ + VSIP_TO_HVIP_SHIFT) | \ + ((_vsip) & VSIP_NO_BIAS_MASK)) +#define hvip_to_vsip (_hvip) ((((_hvip) >> VSIP_TO_HVIP_SHIFT) & \ + VSIP_BIAS_MASK) | \ + ((_hvip) & VSIP_NO_BIAS_MASK))/* AIA CSR bits */ #define TOPI_IID_SHIFT 16
arch/riscv/kvm/aia_imsic.c +9 -2
@@ -969,9 +969,14 @@ int kvm_riscv_aia_imsic_rw_attr(struct kvm *kvm, unsigned long type,if (!vcpu)return -ENODEV ; +if (mutex_lock_killable (&vcpu->mutex)) +return -EINTR ; + imsic = vcpu->arch.aia_context.imsic_state; -if (!imsic) -return -ENODEV ; +if (!imsic) { + rc = -ENODEV ; + goto out_unlock; + } isel =KVM_DEV_RISCV_AIA_IMSIC_GET_ISEL (type);read_lock_irqsave (&imsic->vsfile_lock, flags);
@@ -995,6 +1000,8 @@ int kvm_riscv_aia_imsic_rw_attr(struct kvm *kvm, unsigned long type, rc =imsic_vsfile_rw (vsfile_hgei, vsfile_cpu, imsic->nr_eix, isel, write, val); +out_unlock: +mutex_unlock (&vcpu->mutex);return rc; }
arch/riscv/kvm/mmu.c +8 -2
@@ -540,6 +540,7 @@ int kvm_riscv_mmu_map(struct kvm_vcpu *vcpu, struct kvm_memory_slot *memslot,int ret;kvm_pfn_t hfn;bool is_hugetlb; +bool unused = false;bool writable;short vma_pageshift;gfn_t gfn = gpa >>PAGE_SHIFT ;
@@ -620,6 +621,8 @@ int kvm_riscv_mmu_map(struct kvm_vcpu *vcpu, struct kvm_memory_slot *memslot, vma_pageshift, current);return 0 ; } +if (is_sigpending_pfn (hfn)) +return -EINTR ;if (is_error_noslot_pfn (hfn))return -EFAULT ;
@@ -632,8 +635,10 @@ int kvm_riscv_mmu_map(struct kvm_vcpu *vcpu, struct kvm_memory_slot *memslot,write_lock (&kvm->mmu_lock); -if (mmu_invalidate_retry (kvm, mmu_seq)) +if (mmu_invalidate_retry (kvm, mmu_seq)) { + unused = true; goto out_unlock; + }/* * Check if we are backed by a THP and thus use block mapping if
@@ -656,7 +661,8 @@ int kvm_riscv_mmu_map(struct kvm_vcpu *vcpu, struct kvm_memory_slot *memslot,kvm_err ("Failed to map in G-stage\n" ); out_unlock: -kvm_release_faultin_page (kvm, page, ret && ret != -EEXIST , writable); +kvm_release_faultin_page (kvm, page, + unused || (ret && ret != -EEXIST ), writable);write_unlock (&kvm->mmu_lock);return ret; }
arch/riscv/kvm/nacl.c +16 -4
@@ -42,12 +42,24 @@ void __kvm_riscv_nacl_hfence(void *shmem, } } - entp = shmem +SBI_NACL_SHMEM_HFENCE_ENTRY_CONFIG (i); - *entp =cpu_to_lelong (control); +/* +* Per SBI v3.0 section 15.1.2, the Page_Number and Page_Count +* words must be updated before the Config word with its Pending +* bit set. WRITE_ONCE() stops the compiler from reordering the +* stores and smp_wmb() makes the parameter words globally +* visible to the SBI implementation (or NACL hardware) before +* the Pending bit is set. +*/ entp = shmem +SBI_NACL_SHMEM_HFENCE_ENTRY_PNUM (i); - *entp =cpu_to_lelong (page_num); +WRITE_ONCE (*entp,cpu_to_lelong (page_num)); entp = shmem +SBI_NACL_SHMEM_HFENCE_ENTRY_PCOUNT (i); - *entp =cpu_to_lelong (page_count); +WRITE_ONCE (*entp,cpu_to_lelong (page_count)); + +/* Ensure the parameter words are visible before the Pending bit */ +smp_wmb (); + + entp = shmem +SBI_NACL_SHMEM_HFENCE_ENTRY_CONFIG (i); +WRITE_ONCE (*entp,cpu_to_lelong (control)); }int kvm_riscv_nacl_enable (void )
arch/riscv/kvm/vcpu.c +1 -2
@@ -475,8 +475,7 @@ bool kvm_riscv_vcpu_has_interrupts(struct kvm_vcpu *vcpu, u64 mask)bool ret;raw_spin_lock_irqsave (&vcpu->arch.irqs_pending_lock, flags); - ie = ((vcpu->arch.guest_csr.vsie &VSIP_VALID_MASK ) - <<VSIP_TO_HVIP_SHIFT ) & (unsigned long )mask; + ie =vsip_to_hvip (vcpu->arch.guest_csr.vsie) & (unsigned long )mask; ie |= vcpu->arch.guest_csr.vsie & ~IRQ_LOCAL_MASK & (unsigned long )mask; ret = vcpu->arch.irqs_pending[0 ] & ie;
arch/riscv/kvm/vcpu_exit.c +1 -1
@@ -267,7 +267,7 @@ int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct kvm_run *run, }/* Print details in-case of error */ -if (ret <0 ) { +if (ret <0 && ret != -EINTR ) {kvm_err ("VCPU exit error %d\n" , ret); kvm_err("SEPC=0x%lx SSTATUS=0x%lx HSTATUS=0x%lx\n", vcpu->arch.guest_context.sepc,
arch/riscv/kvm/vcpu_onereg.c +3 -5
@@ -272,7 +272,7 @@ static int kvm_riscv_vcpu_general_get_csr(struct kvm_vcpu *vcpu,if (reg_num ==KVM_REG_RISCV_CSR_REG (sip)) {kvm_riscv_vcpu_flush_interrupts (vcpu); - *out_val = (csr->hvip >>VSIP_TO_HVIP_SHIFT ) &VSIP_VALID_MASK ; + *out_val =hvip_to_vsip (csr->hvip); *out_val |= csr->hvip & ~IRQ_LOCAL_MASK ; }else *out_val = ((unsigned long *)csr)[reg_num];
@@ -293,10 +293,8 @@ static int kvm_riscv_vcpu_general_set_csr(struct kvm_vcpu *vcpu, reg_num =array_index_nospec (reg_num, regs_max); -if (reg_num ==KVM_REG_RISCV_CSR_REG (sip)) { - reg_val &=VSIP_VALID_MASK ; - reg_val <<=VSIP_TO_HVIP_SHIFT ; - } +if (reg_num ==KVM_REG_RISCV_CSR_REG (sip)) + reg_val =vsip_to_hvip (reg_val); ((unsigned long *)csr)[reg_num] = reg_val;
arch/riscv/kvm/vcpu_pmu.c +17 -16
@@ -270,12 +270,13 @@ static int pmu_ctr_read(struct kvm_vcpu *vcpu, unsigned long cidx,return -EINVAL ; pmc->counter_val = kvpmu->fw_event[fevent_code].value; + *out_val = pmc->counter_val; }else if (pmc->perf_event) { - pmc->counter_val +=perf_event_read_value (pmc->perf_event, &enabled, &running); + *out_val = pmc->counter_val + +perf_event_read_value (pmc->perf_event, &enabled, &running); }else {return -EINVAL ; } - *out_val = pmc->counter_val;return 0 ; }
@@ -645,7 +646,6 @@ int kvm_riscv_vcpu_pmu_ctr_stop(struct kvm_vcpu *vcpu, unsigned long ctr_base, {struct kvm_pmu *kvpmu =vcpu_to_pmu (vcpu);int i, pmc_index, sbiret =0 ; -u64 enabled, running;struct kvm_pmc *pmc;int fevent_code;bool snap_flag_set = flags &SBI_PMU_STOP_FLAG_TAKE_SNAPSHOT ;
@@ -675,14 +675,19 @@ int kvm_riscv_vcpu_pmu_ctr_stop(struct kvm_vcpu *vcpu, unsigned long ctr_base, goto out; } -if (!kvpmu->fw_event[fevent_code].started) +if (!kvpmu->fw_event[fevent_code].started) { sbiret =SBI_ERR_ALREADY_STOPPED ; - - kvpmu->fw_event[fevent_code].started = false; + }else { + kvpmu->fw_event[fevent_code].started = false; + pmc->counter_val = kvpmu->fw_event[fevent_code].value; + } }else if (pmc->perf_event) {if (pmc->started) { -/* Stop counting the counter */ -perf_event_disable (pmc->perf_event); +/* +* Stop the counter and fold the live count into counter_val. +* Reset the event value to avoid redundant accumulation. +*/ + pmc->counter_val +=perf_event_pause (pmc->perf_event, true); pmc->started = false; }else { sbiret =SBI_ERR_ALREADY_STOPPED ;
@@ -696,11 +701,6 @@ int kvm_riscv_vcpu_pmu_ctr_stop(struct kvm_vcpu *vcpu, unsigned long ctr_base, }if (snap_flag_set && !sbiret) { -if (pmc->cinfo.type ==SBI_PMU_CTR_TYPE_FW ) - pmc->counter_val = kvpmu->fw_event[fevent_code].value; -else if (pmc->perf_event) - pmc->counter_val +=perf_event_read_value (pmc->perf_event, - &enabled, &running);/* * The counter and overflow indices in the snapshot region are w.r.to * cbase. Modify the set bit in the counter mask instead of the pmc_index
@@ -727,9 +727,10 @@ int kvm_riscv_vcpu_pmu_ctr_stop(struct kvm_vcpu *vcpu, unsigned long ctr_base, } } -if (shmem_needs_update) -kvm_vcpu_write_guest (vcpu, kvpmu->snapshot_addr, kvpmu->sdata, -sizeof (struct riscv_pmu_snapshot_data )); +if (shmem_needs_update && +kvm_vcpu_write_guest (vcpu, kvpmu->snapshot_addr, kvpmu->sdata, +sizeof (struct riscv_pmu_snapshot_data ))) + sbiret =SBI_ERR_FAILURE ; out: retdata->err_val = sbiret;
arch/riscv/kvm/vcpu_sbi_hsm.c +2 -2
@@ -95,9 +95,9 @@ static int kvm_sbi_ext_hsm_handler(struct kvm_vcpu *vcpu, struct kvm_run *run, ret =kvm_sbi_hsm_vcpu_get_status (vcpu);if (ret >=0 ) { retdata->out_val = ret; - retdata->err_val =0 ; + ret =0 ; } -return 0 ; +break ;case SBI_EXT_HSM_HART_SUSPEND :switch (lower_32_bits (cp->a0)) {case SBI_HSM_SUSPEND_RET_DEFAULT :
arch/riscv/kvm/vcpu_timer.c +4 -1
@@ -61,10 +61,13 @@ static enum hrtimer_restart kvm_riscv_vcpu_hrtimer_expired(struct hrtimer *h)static int kvm_riscv_vcpu_timer_cancel (struct kvm_vcpu_timer *t) { -if (!t->init_done || !t->next_set) +if (!t->init_done)return -EINVAL ;hrtimer_cancel (&t->hrt); + +if (!t->next_set) +return -EINVAL ; t->next_set = false;return 0 ;
arch/s390/crypto/hmac_s390.c +4 -1
@@ -150,7 +150,10 @@ static int hash_data(const u8 *in, unsigned int inlen,#undef PARAM_INIT -cpacf_klmd (func, ¶m, in, inlen); +if (final) +cpacf_klmd (func, ¶m, in, inlen); +else +cpacf_kimd (func, ¶m, in, inlen);memcpy (digest, ¶m, digestsize);
arch/s390/include/asm/debug.h +6 -2
@@ -460,7 +460,11 @@ static int VNAME(var, active_entries)[EARLY_AREAS] __initdata#define __REGISTER_STATIC_DEBUG_INFO (var, name, pages, areas, view) \ static int __init VNAME(var, reg)(void) \ { \ - debug_register_static(&var, (pages), (areas)); \ + int rc; \ + \ + rc = debug_register_static(&var, (pages), (areas)); \ + if (rc) \ + return rc; \ debug_register_view(&var, (view)); \ return 0; \ } \
@@ -493,7 +497,7 @@ static debug_info_t __refdata var = \ static debug_info_t __used __section(".s390dbf_info") *VNAME(var, info) = &var; \ __REGISTER_STATIC_DEBUG_INFO(var, name, pages, nr_areas, view) -void debug_register_static (debug_info_t *id,int pages_per_area,int nr_areas); +int debug_register_static (debug_info_t *id,int pages_per_area,int nr_areas);#endif /* MODULE */
arch/s390/kernel/debug.c +11 -4
@@ -432,7 +432,8 @@ static debug_info_t *debug_info_copy(debug_info_t *in, int mode)debug_info_free (rc); }while (1 ); -if (mode ==NO_AREAS ) +/* debug_register_static() failure leaves areas NULL, bounds intact */ +if (mode ==NO_AREAS || !in->areas) goto out;for (i =0 ; i < in->nr_areas; i++) {
@@ -948,8 +949,12 @@ EXPORT_SYMBOL(debug_register);* * Note: This function is called automatically via an initcall generated by * DEFINE_STATIC_DEBUG_INFO. +* +* Return: +* - 0 on success +* - negative error code on failure */ -void debug_register_static (debug_info_t *id,int pages_per_area,int nr_areas) +int debug_register_static (debug_info_t *id,int pages_per_area,int nr_areas) {unsigned long flags;debug_info_t *copy;
@@ -957,7 +962,7 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas)if (!initialized) {pr_err ("Tried to register debug feature %s too early\n" , id->name); -return ; +return -EINVAL ; }debug_get_param (id->name, &id->level, &pages_per_area);
@@ -973,7 +978,7 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas) id->active_entries =NULL ;raw_spin_unlock_irqrestore (&id->lock, flags); -return ; +return -ENOMEM ; }/* Replace static trace area with dynamic copy. */
@@ -991,6 +996,8 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas)mutex_lock (&debug_mutex);_debug_register (id);mutex_unlock (&debug_mutex); + +return 0 ; }/* Remove debugfs entries. */
arch/s390/kernel/uv.c +5 -3
@@ -760,7 +760,7 @@ static int find_secret_in_page(const u8 secret_id[UV_SECRET_ID_LEN], {u16 i; -for (i =0 ; i < list->total_num_secrets; i++) { +for (i =0 ; i < list->num_secr_stored; i++) {if (memcmp (secret_id, list->secrets[i].id,UV_SECRET_ID_LEN ) ==0 ) { *secret = list->secrets[i].hdr;return 0 ;
@@ -781,11 +781,14 @@ int uv_find_secret(const u8 secret_id[UV_SECRET_ID_LEN],struct uv_secret_list *list, struct uv_secret_list_item_hdr *secret) { - u16 start_idx = 0; + u16 start_idx;u16 list_rc;int ret; + list->next_secret_idx =0 ; + do { + start_idx = list->next_secret_idx; uv_list_secrets(list, start_idx, &list_rc, NULL); if (list_rc != UVC_RC_EXECUTED && list_rc != UVC_RC_MORE_DATA) { if (list_rc == UVC_RC_INV_CMD)
@@ -796,7 +799,6 @@ int uv_find_secret(const u8 secret_id[UV_SECRET_ID_LEN], ret =find_secret_in_page (secret_id, list, secret);if (ret ==0 )return ret; - start_idx = list->next_secret_idx; }while (list_rc ==UVC_RC_MORE_DATA && start_idx < list->next_secret_idx);return -ENOENT ;
arch/s390/kvm/dat.c +32 -9
92 lines not on this page · raw message
arch/s390/kvm/gaccess.c +13 -0
@@ -1593,12 +1593,25 @@ static inline int ___gaccess_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg parent =READ_ONCE (sg->parent);if (!parent)return -EAGAIN ; +retry: scoped_guard(spinlock, &parent->children_lock) {if (READ_ONCE (sg->parent) != parent)return -EAGAIN ; sg->invalidated = false; rc =_gaccess_do_shadow (vcpu->arch.mc, sg, saddr, walk); } +if (rc == -ENOENT ) { +struct kvm_memory_slot *slot; +struct guest_fault *entries; + + entries =get_entries (walk); + slot =kvm_vcpu_gfn_to_memslot (vcpu, entries[LEVEL_MEM ].gfn); +if (!slot) +return PGM_ADDRESSING ; + rc =gmap_link (vcpu->arch.mc, parent, entries +LEVEL_MEM , slot); +if (!rc) + goto retry; + }if (!rc)kvm_s390_release_faultin_array (vcpu->kvm, walk->raw_entries, false);return rc;
arch/s390/kvm/gmap.c +4 -2
@@ -991,11 +991,13 @@ static long _destroy_pages_pte(union pte *ptep, gfn_t gfn, gfn_t next, struct dastatic long _destroy_pages_crste (union crste *crstep,gfn_t gfn,gfn_t next,struct dat_walk *walk) {phys_addr_t origin, cur, end; +union crste crste; -if (!crstep->h.fc || !crstep->s.fc1.pr) + crste =READ_ONCE (*crstep); +if (!crste.h.fc || !crste.s.fc1.pr)return 0 ; - origin =crste_origin_large (*crstep); + origin =crste_origin_large (crste); cur = ((max (gfn, walk->start) - gfn) <<PAGE_SHIFT ) + origin; end = ((min (next, walk->end) - gfn) <<PAGE_SHIFT ) + origin;for ( ; cur < end; cur +=PAGE_SIZE )
arch/s390/kvm/interrupt.c +77 -70
257 lines not on this page · raw message
arch/s390/pci/pci_event.c +5 -2
@@ -190,6 +190,7 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)device_lock (&pdev->dev);if (pdev->error_state == pci_channel_io_perm_failure) { ers_res =PCI_ERS_RESULT_DISCONNECT ; + status_str ="skipped (permanent failure)" ; goto out_unlock; } pdev->error_state = pci_channel_io_frozen;
@@ -256,8 +257,8 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev) driver->err_handler->resume (pdev);pci_uevent_ers (pdev,PCI_ERS_RESULT_RECOVERED ); out_unlock: +zpci_report_status (zdev, pdev,"recovery" , status_str);device_unlock (&pdev->dev); -zpci_report_status (zdev,"recovery" , status_str);return ers_res; }
@@ -320,8 +321,10 @@ static void __zpci_event_error(struct zpci_ccdf_err *ccdf)pr_err ("%s: Event 0x%x reports an error for PCI function 0x%x\n" , pdev ?pci_name (pdev) :"n/a" , ccdf->pec, ccdf->fid); -if (!pdev) +if (!pdev) { +zpci_report_status (zdev,NULL ,"error event" ,"no pdev bound" ); goto no_pdev; + }switch (ccdf->pec) {case 0x002a :/* Error event concerns FMB */
arch/s390/pci/pci_report.c +20 -12
@@ -87,9 +87,23 @@ static struct debug_view debug_log_view = { NULL }; +static ssize_t zpci_report_pdev (struct pci_dev *pdev,char *buf,size_t size) +{ +struct pci_driver *driver; +const char *start = buf; +char *end = buf + size; + +device_lock_assert (&pdev->dev); + buf +=scnprintf (buf, end - buf,"state: %s\n" ,zpci_state_str (pdev->error_state)); + driver =to_pci_driver (pdev->dev.driver); + buf +=scnprintf (buf, end - buf,"driver: %s\n" , (driver) ? driver->name :"n/a" ); +return buf - start; +} +/** * zpci_report_status - Report the status of operations on a PCI device -* @zdev: The PCI device for which to report status +* @zdev: The zPCI device for which to report status +* @pdev: The PCI device associated with the zdev if any, NULL otherwise * @operation: A string representing the operation reported * @status: A string representing the status of the operation *
@@ -103,15 +117,14 @@ static struct debug_view debug_log_view = {* * Return: 0 on success an error code < 0 otherwise. */ -int zpci_report_status (struct zpci_dev *zdev,const char *operation,const char *status) +int zpci_report_status (struct zpci_dev *zdev,struct pci_dev *pdev, +const char *operation,const char *status) {struct zpci_report_error *report; -struct pci_driver *driver =NULL ; -struct pci_dev *pdev =NULL ;char *buf, *end;int ret; -if (!zdev || !zdev->zbus) +if (!zdev)return -ENODEV ;/* Protected virtualization hosts get nothing from us */
@@ -121,18 +134,13 @@ int zpci_report_status(struct zpci_dev *zdev, const char *operation, const char report = (void *)get_zeroed_page (GFP_KERNEL );if (!report)return -ENOMEM ; -if (zdev->zbus->bus) - pdev =pci_get_slot (zdev->zbus->bus, zdev->devfn); -if (pdev) - driver =to_pci_driver (pdev->dev.driver); buf = report->data.log_data; end = report->data.log_data +ZPCI_REPORT_DATA_SIZE ; buf +=scnprintf (buf, end - buf,"report: %s\n" , operation); buf +=scnprintf (buf, end - buf,"status: %s\n" , status); - buf +=scnprintf (buf, end - buf,"state: %s\n" , - (pdev) ?zpci_state_str (pdev->error_state) :"n/a" ); - buf +=scnprintf (buf, end - buf,"driver: %s\n" , (driver) ? driver->name :"n/a" ); +if (pdev) + buf +=zpci_report_pdev (pdev, buf, end - buf); ret =debug_dump (pci_debug_msg_id, &debug_log_view, buf, end - buf, true);if (ret <0 )pr_err ("Reading PCI debug messages failed with code %d\n" , ret);
arch/s390/pci/pci_report.h +3 -1
@@ -8,9 +8,11 @@*/ #ifndef __S390_PCI_REPORT_H#define __S390_PCI_REPORT_H +#include <linux/pci.h> struct zpci_dev ; -int zpci_report_status (struct zpci_dev *zdev,const char *operation,const char *status); +int zpci_report_status (struct zpci_dev *zdev,struct pci_dev *pdev, +const char *operation,const char *status);#endif /* __S390_PCI_REPORT_H */
arch/x86/coco/sev/svsm.c +8 -2
@@ -74,6 +74,14 @@ int svsm_perform_call_protocol(struct svsm_call *call) flags =native_local_irq_save (); +/* +* 'caa' is a per-CPU variable. To avoid using a stale or incorrect +* 'caa' if the task is preempted or migrated to another CPU after it +* is fetched, always fetch 'caa' and then issue the SVSM call with +* interrupts disabled. This ensures the correct 'caa' is used. +*/ + call->caa =svsm_get_caa (); + ghcb =__sev_get_ghcb (&state); do {
@@ -321,7 +329,6 @@ int snp_svsm_vtpm_send_command(u8 *buffer) {struct svsm_call call = {}; - call.caa =svsm_get_caa (); call.rax =SVSM_VTPM_CALL (SVSM_VTPM_CMD ); call.rcx =__pa (buffer);
@@ -345,7 +352,6 @@ bool snp_svsm_vtpm_probe(void)if (!snp_vmpl)return false; - call.caa =svsm_get_caa (); call.rax =SVSM_VTPM_CALL (SVSM_VTPM_QUERY );if (svsm_perform_call_protocol (&call))
arch/x86/events/amd/brs.c +4 -5
@@ -343,11 +343,10 @@ void amd_brs_drain(void)if (!amd_brs_match_plm (event, from, to))continue ; -perf_clear_branch_entry_bitfields (br+nr); - - br[nr].from = from; - br[nr].to = to; - + br[nr] = (struct perf_branch_entry ){ + .from = from, + .to = to, + }; nr++; } empty:
arch/x86/events/amd/lbr.c +8 -8
@@ -184,13 +184,6 @@ void amd_pmu_lbr_read(void) entry.to.split.reserved)continue ; -perf_clear_branch_entry_bitfields (br + out); - - br[out].from =sign_ext_branch_ip (entry.from.split.ip); - br[out].to =sign_ext_branch_ip (entry.to.split.ip); - br[out].mispred = entry.from.split.mispredict; - br[out].predicted = !br[out].mispred; -/* * Set branch speculation information using the status of * the valid and spec bits.
@@ -208,7 +201,14 @@ void amd_pmu_lbr_read(void)* speculative and took the correct path */ idx = (entry.to.split.valid <<1 ) | entry.to.split.spec; - br[out].spec = lbr_spec_map[idx]; + + br[out] = (struct perf_branch_entry ){ + .from =sign_ext_branch_ip (entry.from.split.ip), + .to =sign_ext_branch_ip (entry.to.split.ip), + .mispred = entry.from.split.mispredict, + .predicted = !entry.from.split.mispredict, + .spec = lbr_spec_map[idx], + }; out++; }
arch/x86/events/intel/core.c +55 -25
122 lines not on this page · raw message
arch/x86/events/intel/ds.c +29 -39
128 lines not on this page · raw message
arch/x86/events/intel/lbr.c +35 -30
89 lines not on this page · raw message
arch/x86/events/perf_event.h +0 -4
@@ -517,10 +517,6 @@ struct cpu_hw_events {__EVENT_CONSTRAINT (c, n,INTEL_ARCH_EVENT_MASK |X86_ALL_EVENT_FLAGS , \ HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_ST) -#define INTEL_HYBRID_LAT_CONSTRAINT (c, n) \ - __EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK|X86_ALL_EVENT_FLAGS, \ - HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_LAT_HYBRID) -#define INTEL_HYBRID_LDLAT_CONSTRAINT (c, n) \ __EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK|X86_ALL_EVENT_FLAGS, \ HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_LAT_HYBRID|PERF_X86_EVENT_PEBS_LD_HSW)
arch/x86/include/asm/kvm-x86-nested-ops.h new file +36 -0
@@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#if !defined(KVM_X86_NESTED_OP ) || \ + !defined(KVM_X86_NESTED_OP_OPTIONAL ) || \ + !defined(KVM_X86_NESTED_OP_OPTIONAL_RET0 ) +#error Missing one or more KVM_X86_NESTED_OP #defines +#else +/* +* KVM_X86_NESTED_OP() and KVM_X86_NESTED_OP_OPTIONAL() are used to help +* generate both DECLARE/DEFINE_STATIC_CALL() invocations and +* "static_call_update()" calls. +* +* KVM_X86_NESTED_OP_OPTIONAL() can be used for those functions that can have +* a NULL definition. KVM_X86_NESTED_OP_OPTIONAL_RET0() can be used likewise +* to make a definition optional, but in this case the default will +* be __static_call_return0. +*/ +KVM_X86_NESTED_OP(leave_nested) +KVM_X86_NESTED_OP(is_exception_vmexit) +KVM_X86_NESTED_OP(check_events) +KVM_X86_NESTED_OP_OPTIONAL_RET0(has_events) +KVM_X86_NESTED_OP(triple_fault) +KVM_X86_NESTED_OP(get_state) +KVM_X86_NESTED_OP(set_state) +KVM_X86_NESTED_OP(get_nested_state_pages) +KVM_X86_NESTED_OP_OPTIONAL_RET0(write_log_dirty) +KVM_X86_NESTED_OP(translate_nested_gpa) +#ifdef CONFIG_KVM_HYPERV +KVM_X86_NESTED_OP_OPTIONAL(enable_evmcs) +KVM_X86_NESTED_OP_OPTIONAL_RET0(get_evmcs_version) +KVM_X86_NESTED_OP(hv_inject_synthetic_vmexit_post_tlb_flush) +#endif +#endif + +#undef KVM_X86_NESTED_OP +#undef KVM_X86_NESTED_OP_OPTIONAL +#undef KVM_X86_NESTED_OP_OPTIONAL_RET0
arch/x86/include/asm/kvm_host.h +10 -12
@@ -2019,6 +2019,8 @@ struct kvm_x86_ops { };struct kvm_x86_nested_ops { +bool enabled; +void (*leave_nested)(struct kvm_vcpu *vcpu);bool (*is_exception_vmexit)(struct kvm_vcpu *vcpu,u8 vector,u32 error_code);
@@ -2075,6 +2077,14 @@ extern struct kvm_x86_ops kvm_x86_ops;#define KVM_X86_OP_OPTIONAL_RET0 KVM_X86_OP#include <asm/kvm-x86-ops.h> +#define kvm_nested_call (func) static_call(kvm_x86_nested_##func) + +#define KVM_X86_NESTED_OP (func) \ + DECLARE_STATIC_CALL(kvm_x86_nested_##func, *(((struct kvm_x86_nested_ops *)0)->func)); +#define KVM_X86_NESTED_OP_OPTIONAL KVM_X86_NESTED_OP +#define KVM_X86_NESTED_OP_OPTIONAL_RET0 KVM_X86_NESTED_OP +#include <asm/kvm-x86-nested-ops.h> +int kvm_x86_vendor_init (struct kvm_x86_init_ops *ops);void kvm_x86_vendor_exit (void );
@@ -2433,13 +2443,6 @@ static inline void kvm_inject_gp(struct kvm_vcpu *vcpu, u32 error_code)kvm_queue_exception_e (vcpu,GP_VECTOR , error_code); } -#define TSS_IOPB_BASE_OFFSET 0x66 -#define TSS_BASE_SIZE 0x68 -#define TSS_IOPB_SIZE (65536 / 8) -#define TSS_REDIRECTION_SIZE (256 / 8) -#define RMODE_TSS_SIZE \ - (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1) -enum {TASK_SWITCH_CALL =0 ,TASK_SWITCH_IRET =1 ,
@@ -2462,12 +2465,7 @@ enum {# define kvm_memslots_for_spte_role (kvm, role) __kvm_memslots(kvm, 0)#endif -int kvm_cpu_has_injectable_intr (struct kvm_vcpu *v); -int kvm_cpu_has_interrupt (struct kvm_vcpu *vcpu); -int kvm_cpu_has_extint (struct kvm_vcpu *v);int kvm_arch_interrupt_allowed (struct kvm_vcpu *vcpu); -int kvm_cpu_get_extint (struct kvm_vcpu *v); -int kvm_cpu_get_interrupt (struct kvm_vcpu *v);void kvm_vcpu_reset (struct kvm_vcpu *vcpu,bool init_event); int kvm_pv_send_ipi(struct kvm *kvm, unsigned long ipi_bitmap_low,
arch/x86/kernel/cpu/mce/core.c +10 -17
@@ -2108,6 +2108,9 @@ bool filter_mce(struct mce *m) static __always_inline void exc_machine_check_kernel(struct pt_regs *regs) {irqentry_state_t irq_state; +unsigned long dr7; + + dr7 =local_db_save ();WARN_ON_ONCE (user_mode (regs));
@@ -2116,20 +2119,26 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)* mce_check_crashing_cpu() for details. */ if (mca_cfg.initialized &&mce_check_crashing_cpu ()) -return ; + goto out; irq_state =irqentry_nmi_enter (regs);do_machine_check (regs);irqentry_nmi_exit (regs, irq_state); +out: +local_db_restore (dr7); } static __always_inline void exc_machine_check_user(struct pt_regs *regs) { +unsigned long dr7; +irqentry_enter_from_user_mode (regs); + dr7 =local_db_save ();do_machine_check (regs); +local_db_restore (dr7);irqentry_exit_to_user_mode (regs); }
@@ -2138,21 +2147,13 @@ static __always_inline void exc_machine_check_user(struct pt_regs *regs)/* MCE hit kernel mode */ DEFINE_IDTENTRY_MCE (exc_machine_check) { -unsigned long dr7; - - dr7 =local_db_save ();exc_machine_check_kernel (regs); -local_db_restore (dr7); }/* The user mode variant. */ DEFINE_IDTENTRY_MCE_USER (exc_machine_check) { -unsigned long dr7; - - dr7 =local_db_save ();exc_machine_check_user (regs); -local_db_restore (dr7); }#ifdef CONFIG_X86_FRED
@@ -2169,28 +2170,20 @@ DEFINE_IDTENTRY_MCE_USER(exc_machine_check)*/ DEFINE_FREDENTRY_MCE (exc_machine_check) { -unsigned long dr7; - - dr7 =local_db_save ();if (user_mode (regs))exc_machine_check_user (regs);else exc_machine_check_kernel (regs); -local_db_restore (dr7); }#endif #else /* 32bit unified entry point */ DEFINE_IDTENTRY_RAW (exc_machine_check) { -unsigned long dr7; - - dr7 =local_db_save ();if (user_mode (regs))exc_machine_check_user (regs);else exc_machine_check_kernel (regs); -local_db_restore (dr7); }#endif
arch/x86/kvm/hyperv.c +3 -3
@@ -2419,7 +2419,7 @@ static int kvm_hv_hypercall_complete(struct kvm_vcpu *vcpu, u64 result) ret =kvm_skip_emulated_instruction (vcpu);if (tlb_lock_count) - kvm_x86_ops.nested_ops->hv_inject_synthetic_vmexit_post_tlb_flush (vcpu); +kvm_nested_call (hv_inject_synthetic_vmexit_post_tlb_flush)(vcpu);return ret; }
@@ -2800,8 +2800,8 @@ int kvm_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, };int i, nent =ARRAY_SIZE (cpuid_entries); -if (kvm_x86_ops.nested_ops->get_evmcs_version) - evmcs_ver = kvm_x86_ops.nested_ops->get_evmcs_version (vcpu); +if (kvm_x86_ops.nested_ops->enabled) + evmcs_ver =kvm_nested_call (get_evmcs_version)(vcpu);if (cpuid->nent < nent)return -E2BIG ;
arch/x86/kvm/irq.h +6 -0
@@ -112,6 +112,12 @@ static inline int irqchip_in_kernel(struct kvm *kvm)return mode !=KVM_IRQCHIP_NONE ; } +int kvm_cpu_has_injectable_intr (struct kvm_vcpu *v); +int kvm_cpu_has_interrupt (struct kvm_vcpu *vcpu); +int kvm_cpu_has_extint (struct kvm_vcpu *v); +int kvm_cpu_get_extint (struct kvm_vcpu *v); +int kvm_cpu_get_interrupt (struct kvm_vcpu *v); +void kvm_inject_pending_timer_irqs (struct kvm_vcpu *vcpu);void kvm_inject_apic_timer_irqs (struct kvm_vcpu *vcpu);void kvm_apic_nmi_wd_deliver (struct kvm_vcpu *vcpu);
arch/x86/kvm/mmu.h +2 -3
@@ -308,9 +308,8 @@ static inline gpa_t kvm_translate_gpa(struct kvm_vcpu *vcpu, {if (mmu != &vcpu->arch.nested_mmu)return gpa; -return kvm_x86_ops.nested_ops->translate_nested_gpa (vcpu, gpa, access, - exception, - pte_access); +return kvm_nested_call (translate_nested_gpa)(vcpu, gpa, access, + exception, pte_access); }static inline bool kvm_has_mirrored_tdp (const struct kvm *kvm)
arch/x86/kvm/mmu/mmu.c +97 -32
153 lines not on this page · raw message
arch/x86/kvm/mmu/mmu_internal.h +0 -66
78 lines not on this page · raw message
arch/x86/kvm/mmu/paging_tmpl.h +1 -1
@@ -233,7 +233,7 @@ static int FNAME(update_accessed_dirty_bits)(struct kvm_vcpu *vcpu, !(pte & PT_GUEST_DIRTY_MASK)) {trace_kvm_mmu_set_dirty_bit (table_gfn, index,sizeof (pte));#if PTTYPE ==PTTYPE_EPT -if (kvm_x86_ops.nested_ops->write_log_dirty (vcpu, addr)) +if (kvm_nested_call (write_log_dirty)(vcpu, addr))return -EINVAL ;#endif pte |=PT_GUEST_DIRTY_MASK ;
arch/x86/kvm/pmu.c +0 -8
@@ -812,14 +812,6 @@ void kvm_pmu_deliver_pmi(struct kvm_vcpu *vcpu)bool kvm_pmu_is_valid_msr (struct kvm_vcpu *vcpu,u32 msr) { -switch (msr) { -case MSR_CORE_PERF_GLOBAL_STATUS : -case MSR_CORE_PERF_GLOBAL_CTRL : -case MSR_CORE_PERF_GLOBAL_OVF_CTRL : -return kvm_pmu_has_perf_global_ctrl (vcpu_to_pmu (vcpu)); -default : -break ; - }return kvm_pmu_call (msr_idx_to_pmc)(vcpu, msr) ||kvm_pmu_call (is_valid_msr)(vcpu, msr); }
arch/x86/kvm/svm/nested.c +1 -0
@@ -23,6 +23,7 @@#include "kvm_emulate.h" #include "trace.h" +#include "irq.h" #include "mmu.h" #include "x86.h" #include "smm.h"
arch/x86/kvm/svm/sev.c +16 -2
@@ -2048,6 +2048,12 @@ static void sev_migrate_from(struct kvm *dst_kvm, struct kvm *src_kvm) src->pages_locked =0 ; src->es_active = false; +/* +* Do cache maintenance on the source VM as it is no longer an SEV VM, +* i.e. memory reclaim flows won't trigger cache maintenance on the VM. +*/ +sev_writeback_caches (src_kvm); +list_cut_before (&dst->regions_list, &src->regions_list, &src->regions_list);mutex_lock (&sev_mirror_lock);
@@ -2187,6 +2193,10 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd)* the set of CPUs from the source. If a CPU was used to run a vCPU in * the source VM but is never used for the destination VM, then the CPU * can only have cached memory that was accessible to the source VM. +* Furthermore, KVM *must* perform cache maintenance on the source VM, +* as the source VM may have access to memory that the destination VM +* does not, i.e. KVM could skip flushes if memory is reclaimed from +* the old VM but not the new VM. */ if (!zalloc_cpumask_var (&dst_sev->have_run_cpus,GFP_KERNEL_ACCOUNT )) { ret = -ENOMEM ;
@@ -2981,13 +2991,17 @@ void sev_vm_destroy(struct kvm *kvm)struct list_head *head = &sev->regions_list;struct list_head *pos, *q; +/* +* Free the mask even if the VM is not *currently* an SEV VM, as it may +* have been an SEV VM prior to intra-host migration. +*/ +free_cpumask_var (sev->have_run_cpus); +if (!sev_guest (kvm))return ;WARN_ON (!list_empty (&sev->mirror_vms)); -free_cpumask_var (sev->have_run_cpus); -/* * If this is a mirror VM, remove it from the owner's list of a mirrors * and skip ASID cleanup (the ASID is tied to the lifetime of the owner).
arch/x86/kvm/svm/svm.c +1 -0
@@ -5662,6 +5662,7 @@ static __init int svm_hardware_setup(void)if (r)return r; } + svm_nested_ops.enabled = nested;/* * KVM's MMU doesn't support using 2-level paging for itself, and thus
arch/x86/kvm/tss.h +7 -0
@@ -57,4 +57,11 @@ struct tss_segment_16 { u16 ldt; }; +#define TSS_IOPB_BASE_OFFSET 0x66 +#define TSS_BASE_SIZE 0x68 +#define TSS_IOPB_SIZE (65536 / 8) +#define TSS_REDIRECTION_SIZE (256 / 8) +#define RMODE_TSS_SIZE \ + (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1) +#endif
arch/x86/kvm/vmx/nested.c +1 -0
@@ -11,6 +11,7 @@#include "x86.h" #include "cpuid.h" #include "hyperv.h" +#include "irq.h" #include "mmu.h" #include "nested.h" #include "pmu.h"
arch/x86/kvm/vmx/pmu_intel.c +3 -0
@@ -187,6 +187,9 @@ static bool intel_is_valid_msr(struct kvm_vcpu *vcpu, u32 msr)int ret;switch (msr) { +case MSR_CORE_PERF_GLOBAL_STATUS : +case MSR_CORE_PERF_GLOBAL_CTRL : +case MSR_CORE_PERF_GLOBAL_OVF_CTRL :case MSR_CORE_PERF_FIXED_CTR_CTRL :return kvm_pmu_has_perf_global_ctrl (pmu);case MSR_IA32_PEBS_ENABLE :
arch/x86/kvm/vmx/vmx.c +2 -0
@@ -72,6 +72,7 @@#include "x86.h" #include "x86_ops.h" #include "smm.h" +#include "tss.h" #include "vmx_onhyperv.h" #include "vmenter.h" #include "posted_intr.h"
@@ -8770,6 +8771,7 @@ __init int vmx_hardware_setup(void)if (r)return r; } + vmx_nested_ops.enabled = nested;kvm_set_posted_intr_wakeup_handler (pi_wakeup_handler);
arch/x86/kvm/x86.c +39 -23
168 lines not on this page · raw message
arch/x86/kvm/x86.h +1 -1
@@ -151,7 +151,7 @@ int kvm_check_nested_events(struct kvm_vcpu *vcpu);/* Forcibly leave the nested mode in cases like a vCPU reset */ static inline void kvm_leave_nested (struct kvm_vcpu *vcpu) { - kvm_x86_ops.nested_ops->leave_nested (vcpu); +kvm_nested_call (leave_nested)(vcpu); }/*
arch/x86/pci/fixup.c +99 -0
105 lines not on this page · raw message
block/blk-zoned.c +13 -2
@@ -2048,12 +2048,17 @@ static int disk_revalidate_zone_resources(struct gendisk *disk, struct blk_revalidate_zone_args *args) {struct queue_limits *lim = &disk->queue->limits; +unsigned long long nr_zones;unsigned int pool_size;int ret =0 ; args->disk = disk; - args->nr_zones = -DIV_ROUND_UP_ULL (get_capacity (disk), lim->chunk_sectors); + nr_zones =DIV_ROUND_UP_ULL (get_capacity (disk), lim->chunk_sectors); +if (nr_zones >UINT_MAX ) { +pr_warn ("%s: Too many zones (%llu)\n" , disk->disk_name, nr_zones); +return -EINVAL ; + } + args->nr_zones = nr_zones;/* Cached zone conditions: 1 byte per zone */ args->zones_cond =kzalloc (args->nr_zones,GFP_NOIO );
@@ -2161,6 +2166,12 @@ static int blk_revalidate_zone_cond(struct blk_zone *zone, unsigned int idx, {enum blk_zone_cond cond = zone->cond; +if (idx >= args->nr_zones) { +pr_warn ("%s: Zone report index %u exceeds zone count %u\n" , + args->disk->disk_name, idx, args->nr_zones); +return -EINVAL ; + } +/* Check that the zone condition is consistent with the zone type. */ switch (cond) {case BLK_ZONE_COND_NOT_WP :
drivers/accel/ivpu/ivpu_drv.c +26 -5
@@ -307,6 +307,11 @@ static int ivpu_open(struct drm_device *dev, struct drm_file *file)return -ENODEV ; limits =ivpu_user_limits_get (vdev); +if (IS_ERR (limits) &&PTR_ERR (limits) == -EMFILE ) { +/* Context limit may be held by jobs pending deferred cleanup */ +flush_work (&vdev->job_destroy_work); + limits =ivpu_user_limits_get (vdev); + }if (IS_ERR (limits)) { ret =PTR_ERR (limits); goto err_dev_exit;
@@ -510,9 +515,10 @@ void ivpu_prepare_for_reset(struct ivpu_device *vdev) {ivpu_hw_irq_disable (vdev);disable_irq (vdev->irq); -flush_work (&vdev->irq_ipc_work); +atomic_set (&vdev->job_timeout_detected,0 );flush_work (&vdev->irq_dct_work);flush_work (&vdev->context_abort_work); +flush_work (&vdev->job_destroy_work);ivpu_ipc_disable (vdev);ivpu_mmu_disable (vdev); }
@@ -584,6 +590,11 @@ static const struct drm_driver driver = { .major = 1, }; +static void ivpu_destroy_workqueue (void *wq) +{ +destroy_workqueue (wq); +} +static int ivpu_irq_init (struct ivpu_device *vdev) {struct pci_dev *pdev =to_pci_dev (vdev->drm.dev);
@@ -595,16 +606,26 @@ static int ivpu_irq_init(struct ivpu_device *vdev)return ret; } -INIT_WORK (&vdev->irq_ipc_work, ivpu_ipc_irq_work_fn);INIT_WORK (&vdev->irq_dct_work, ivpu_pm_irq_dct_work_fn);INIT_WORK (&vdev->context_abort_work, ivpu_context_abort_work_fn); +init_llist_head (&vdev->job_destroy_list); +INIT_WORK (&vdev->job_destroy_work, ivpu_job_destroy_work_fn); + + vdev->job_destroy_wq =alloc_workqueue ("ivpu_job_destroy" ,WQ_UNBOUND |WQ_MEM_RECLAIM ,0 ); +if (!vdev->job_destroy_wq) +return -ENOMEM ; + + ret =devm_add_action_or_reset (vdev->drm.dev, ivpu_destroy_workqueue, vdev->job_destroy_wq); +if (ret) +return ret;ivpu_irq_handlers_init (vdev); vdev->irq =pci_irq_vector (pdev,0 ); - ret =devm_request_irq (vdev->drm.dev, vdev->irq, ivpu_hw_irq_handler, -IRQF_NO_AUTOEN ,DRIVER_NAME , vdev); + ret =devm_request_threaded_irq (vdev->drm.dev, vdev->irq, ivpu_hw_irq_handler, + ivpu_ipc_irq_thread_handler,IRQF_NO_AUTOEN , +DRIVER_NAME , vdev);if (ret)ivpu_err (vdev,"Failed to request an IRQ %d\n" , ret);
@@ -690,7 +711,7 @@ static int ivpu_dev_init(struct ivpu_device *vdev) vdev->context_xa_limit.max =IVPU_USER_CONTEXT_MAX_SSID ;atomic64_set (&vdev->unique_id_counter,0 );atomic_set (&vdev->job_timeout_counter,0 ); -atomic_set (&vdev->faults_detected,0 ); +atomic_set (&vdev->job_timeout_detected,0 );xa_init_flags (&vdev->context_xa,XA_FLAGS_ALLOC |XA_FLAGS_LOCK_IRQ );xa_init_flags (&vdev->submitted_jobs_xa,XA_FLAGS_ALLOC1 );xa_init_flags (&vdev->db_xa,XA_FLAGS_ALLOC1 );
drivers/accel/ivpu/ivpu_drv.h +5 -2
@@ -13,6 +13,7 @@#include <drm/drm_print.h> #include <linux/hashtable.h> +#include <linux/llist.h> #include <linux/pci.h> #include <linux/xarray.h> #include <uapi/drm/ivpu_accel.h>
@@ -157,9 +158,11 @@ struct ivpu_device {struct xa_limit db_limit;u32 db_next; -struct work_struct irq_ipc_work;struct work_struct irq_dct_work;struct work_struct context_abort_work; +struct llist_head job_destroy_list; +struct work_struct job_destroy_work; +struct workqueue_struct *job_destroy_wq;struct mutex bo_list_lock;/* Protects bo_list */ struct list_head bo_list;
@@ -168,7 +171,7 @@ struct ivpu_device {struct xarray submitted_jobs_xa;struct ivpu_ipc_consumer job_done_consumer;atomic_t job_timeout_counter; -atomic_t faults_detected; +atomic_t job_timeout_detected;atomic64_t unique_id_counter;
drivers/accel/ivpu/ivpu_hw.c +4 -0
@@ -399,6 +399,10 @@ irqreturn_t ivpu_hw_irq_handler(int irq, void *ptr)return IRQ_NONE ;pm_runtime_mark_last_busy (vdev->drm.dev); + +if (ip_handled) +return IRQ_WAKE_THREAD ; +return IRQ_HANDLED ; }
drivers/accel/ivpu/ivpu_ipc.c +4 -4
@@ -463,13 +463,11 @@ void ivpu_ipc_irq_handler(struct ivpu_device *vdev)ivpu_ipc_rx_mark_free (vdev, ipc_hdr, jsm_msg); } } - -queue_work (system_percpu_wq, &vdev->irq_ipc_work); } -void ivpu_ipc_irq_work_fn (struct work_struct *work) +irqreturn_t ivpu_ipc_irq_thread_handler (int irq,void *ptr) { - struct ivpu_device *vdev = container_of(work, struct ivpu_device, irq_ipc_work); +struct ivpu_device *vdev = ptr;struct ivpu_ipc_info *ipc = vdev->ipc;struct ivpu_ipc_rx_msg *rx_msg, *r;struct list_head cb_msg_list;
@@ -484,6 +482,8 @@ void ivpu_ipc_irq_work_fn(struct work_struct *work) rx_msg->callback (vdev, rx_msg->ipc_hdr, rx_msg->jsm_msg);ivpu_ipc_rx_msg_del (vdev, rx_msg); } + +return IRQ_HANDLED ; }int ivpu_ipc_init (struct ivpu_device *vdev)
drivers/accel/ivpu/ivpu_ipc.h +1 -1
@@ -90,7 +90,7 @@ void ivpu_ipc_disable(struct ivpu_device *vdev);void ivpu_ipc_reset (struct ivpu_device *vdev);void ivpu_ipc_irq_handler (struct ivpu_device *vdev); -void ivpu_ipc_irq_work_fn (struct work_struct *work); +irqreturn_t ivpu_ipc_irq_thread_handler (int irq,void *ptr);void ivpu_ipc_consumer_add (struct ivpu_device *vdev,struct ivpu_ipc_consumer *cons,u32 channel,ivpu_ipc_rx_callback_t callback);
drivers/accel/ivpu/ivpu_job.c +56 -10
22 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c +7 -9
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +57 -14
71 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +12 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +36 -26
62 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.h +28 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dml/Makefile +6 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dml2_0/Makefile +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/link/link_dpms.c +90 -88
178 lines not on this page · raw message
drivers/gpu/drm/clients/drm_fbdev_client.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_cursor.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_display_types.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_dp_mst.c +23 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_dp_mst.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_link_bw.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_psr.c +15 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_quirks.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/skl_universal_plane.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gem/i915_gem_object.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imagination/pvr_free_list.c +12 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_connector.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_sched.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_sched.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_uvmm.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c +14 -9
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/virtio/virtgpu_ioctl.c +46 -3
49 lines not on this page · raw message
drivers/gpu/drm/virtio/virtgpu_submit.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/virtio/virtgpu_vq.c +46 -0
46 lines not on this page · raw message
drivers/gpu/drm/xe/xe_hw_engine.c +85 -11
96 lines not on this page · raw message
drivers/hid/amd-sfh-hid/amd_sfh_common.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/i2c/busses/i2c-qcom-geni.c +150 -143
293 lines not on this page · raw message
drivers/net/dsa/mv88e6xxx/chip.c +64 -4
68 lines not on this page · raw message
drivers/net/ethernet/airoha/airoha_npu.c +6 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amazon/ena/ena_netdev.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/atheros/atl1c/atl1c_main.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/atheros/atl1e/atl1e_main.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/atheros/atlx/atl1.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +21 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/brocade/bna/bnad.c +18 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +12 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fman/fman.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_desc_dqo.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_tx_dqo.c +31 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/common.h +39 -6
45 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +33 -71
104 lines not on this page · raw message
drivers/net/ethernet/mediatek/mtk_eth_soc.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c +36 -9
45 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c +11 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +32 -12
44 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lag/shared_fdb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_csr.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_debugfs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c +11 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_fw.c +45 -2
47 lines not on this page · raw message
drivers/net/ethernet/meta/fbnic/fbnic_fw.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_pci.c +14 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c +25 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/crypto/ipsec.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/spacemit/k1_emac.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/hwif.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/ring_mode.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +12 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c +123 -30
153 lines not on this page · raw message
drivers/net/ethernet/wangxun/libwx/wx_hw.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/libwx/wx_lib.c +52 -13
65 lines not on this page · raw message
drivers/net/ethernet/wangxun/libwx/wx_lib.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/libwx/wx_ptp.c +117 -42
159 lines not on this page · raw message
drivers/net/ethernet/wangxun/libwx/wx_ptp.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/libwx/wx_type.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +16 -0
Lines of this file are not shown. View the raw message.
drivers/net/macsec.c +43 -41
84 lines not on this page · raw message
drivers/net/mdio/mdio-realtek-rtl9300.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ovpn/netlink.c +94 -14
108 lines not on this page · raw message
drivers/net/ovpn/peer.c +94 -27
121 lines not on this page · raw message
drivers/net/ovpn/udp.c +159 -34
193 lines not on this page · raw message
drivers/pinctrl/meson/pinctrl-meson-s4.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/microchip/pinctrl-mpfs-mssio.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/sunxi/pinctrl-sunxi.c +67 -15
82 lines not on this page · raw message
drivers/pinctrl/tegra/pinctrl-tegra238.c +102 -102
204 lines not on this page · raw message
drivers/scsi/megaraid/megaraid_sas_base.c +3 -1
Lines of this file are not shown. View the raw message.
fs/smb/client/dir.c +39 -13
52 lines not on this page · raw message
fs/smb/client/smb2pdu.c +42 -12
54 lines not on this page · raw message
fs/smb/client/transport.c +58 -13
71 lines not on this page · raw message
fs/super.c +53 -61
114 lines not on this page · raw message
kernel/bpf/btf.c +87 -49
136 lines not on this page · raw message
kernel/bpf/hashtab.c +32 -11
43 lines not on this page · raw message
kernel/bpf/memalloc.c +28 -22
50 lines not on this page · raw message
kernel/sched/fair.c +127 -46
173 lines not on this page · raw message
net/core/dev.c +36 -13
49 lines not on this page · raw message
net/core/filter.c +21 -25
46 lines not on this page · raw message
net/ipv4/ipconfig.c +26 -19
45 lines not on this page · raw message
net/ipv4/udp.c +37 -5
42 lines not on this page · raw message
net/nfc/llcp_core.c +122 -53
175 lines not on this page · raw message
net/nfc/llcp_sock.c +47 -18
65 lines not on this page · raw message
net/packet/af_packet.c +65 -39
104 lines not on this page · raw message
net/sched/act_ct.c +30 -11
41 lines not on this page · raw message
tools/lib/bpf/relo_core.c +31 -27
58 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/linked_list.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/cgroup/test_cpuset_prs.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/cgroup/test_memcontrol.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_non_uniq_symbol.tc +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/steal_time.c +20 -10
Lines of this file are not shown. View the raw message.
tools/testing/selftests/nci/nci_dev.c +28 -17
45 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.