Linux 6.12.77
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.77 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.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/hwmon/aht10.rst | 10 Makefile | 2 arch/Kconfig | 1 arch/arm/include/asm/string.h | 14 arch/arm64/boot/dts/rockchip/rk3568.dtsi | 4 arch/arm64/boot/dts/rockchip/rk356x.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 4 arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi | 6 arch/arm64/kvm/sys_regs.c | 3 arch/arm64/net/bpf_jit_comp.c | 2 arch/loongarch/include/asm/setup.h | 3 arch/loongarch/kernel/unwind_orc.c | 32 arch/loongarch/kernel/unwind_prologue.c | 4 arch/loongarch/mm/tlb.c | 1 arch/s390/include/asm/idle.h | 1 arch/s390/kernel/idle.c | 13 arch/s390/kernel/irq.c | 10 arch/s390/kernel/vtime.c | 18 arch/x86/entry/entry_fred.c | 5 arch/x86/include/asm/efi.h | 2 arch/x86/kernel/acpi/boot.c | 12 arch/x86/kernel/cpu/topology.c | 15 arch/x86/kvm/x86.c | 3 arch/x86/platform/efi/efi.c | 2 arch/x86/platform/efi/quirks.c | 55 drivers/acpi/apei/Makefile | 4 drivers/ata/libata-core.c | 18 drivers/ata/libata-eh.c | 31 drivers/ata/libata-scsi.c | 544 +++++-- drivers/ata/libata.h | 14 drivers/block/drbd/drbd_actlog.c | 53 drivers/block/drbd/drbd_interval.h | 5 drivers/block/drbd/drbd_req.c | 3 drivers/clk/tegra/clk-tegra124-emc.c | 2 drivers/firmware/efi/mokvar-table.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 32 drivers/gpu/drm/exynos/exynos_drm_vidi.c | 61 drivers/gpu/drm/logicvc/logicvc_drm.c | 4 drivers/gpu/drm/scheduler/sched_main.c | 1 drivers/gpu/drm/solomon/ssd130x.c | 6 drivers/gpu/drm/tegra/dsi.c | 6 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 4 drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 9 drivers/gpu/drm/xe/xe_reg_sr.c | 4 drivers/gpu/drm/xe/xe_ring_ops.c | 9 drivers/hid/hid-cmedia.c | 2 drivers/hid/hid-creative-sb0540.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/hid-multitouch.c | 83 + drivers/hid/hid-zydacron.c | 2 drivers/hwmon/Kconfig | 6 drivers/hwmon/aht10.c | 21 drivers/hwmon/it87.c | 5 drivers/hwmon/max16065.c | 26 drivers/hwmon/max6639.c | 83 - drivers/i2c/busses/i2c-i801.c | 14 drivers/infiniband/hw/irdma/verbs.c | 2 drivers/infiniband/hw/mthca/mthca_provider.c | 5 drivers/input/mouse/synaptics_i2c.c | 13 drivers/iommu/intel/pasid.c | 8 drivers/irqchip/irq-sifive-plic.c | 7 drivers/mailbox/mailbox.c | 132 - drivers/media/dvb-core/dmxdev.c | 4 drivers/media/i2c/Kconfig | 2 drivers/media/i2c/dw9714.c | 56 drivers/memory/mtk-smi.c | 3 drivers/net/arcnet/com20020-pci.c | 16 drivers/net/bonding/bond_main.c | 9 drivers/net/bonding/bond_options.c | 2 drivers/net/can/spi/mcp251x.c | 15 drivers/net/can/usb/ems_usb.c | 7 drivers/net/can/usb/etas_es58x/es58x_core.c | 8 drivers/net/can/usb/f81604.c | 45 drivers/net/can/usb/ucan.c | 2 drivers/net/dsa/realtek/rtl8365mb.c | 2 drivers/net/ethernet/amd/xgbe/xgbe-common.h | 2 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 10 drivers/net/ethernet/amd/xgbe/xgbe-main.c | 1 drivers/net/ethernet/amd/xgbe/xgbe.h | 3 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 3 drivers/net/ethernet/intel/e1000e/defines.h | 1 drivers/net/ethernet/intel/e1000e/ich8lan.c | 9 drivers/net/ethernet/intel/i40e/i40e_main.c | 41 drivers/net/ethernet/intel/i40e/i40e_trace.h | 2 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 5 drivers/net/ethernet/intel/iavf/iavf_main.c | 17 drivers/net/ethernet/intel/idpf/idpf_txrx.c | 2 drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 40 drivers/net/ethernet/marvell/octeon_ep/octep_rx.c | 27 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c | 38 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c | 28 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 15 drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 18 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 drivers/net/ethernet/ti/cpsw_ale.c | 9 drivers/net/ethernet/ti/icssg/icssg_prueth.c | 8 drivers/net/usb/kalmia.c | 7 drivers/net/usb/kaweth.c | 13 drivers/net/usb/pegasus.c | 13 drivers/net/vxlan/vxlan_core.c | 5 drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c | 1 drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 1 drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 1 drivers/net/wireless/rsi/rsi_91x_mac80211.c | 2 drivers/net/wireless/st/cw1200/pm.c | 2 drivers/net/wireless/ti/wlcore/main.c | 4 drivers/nfc/pn533/usb.c | 1 drivers/nvme/host/core.c | 7 drivers/nvme/host/pr.c | 10 drivers/of/kexec.c | 15 drivers/pci/controller/dwc/pcie-designware-ep.c | 38 drivers/pci/endpoint/pci-epc-core.c | 182 +- drivers/pci/probe.c | 6 drivers/pinctrl/cirrus/pinctrl-cs42l43.c | 5 drivers/pinctrl/pinctrl-equilibrium.c | 31 drivers/platform/x86/dell/dell-wmi-base.c | 6 drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c | 1 drivers/platform/x86/thinkpad_acpi.c | 6 drivers/scsi/lpfc/lpfc_init.c | 2 drivers/scsi/lpfc/lpfc_sli.c | 36 drivers/scsi/lpfc/lpfc_sli4.h | 3 drivers/scsi/pm8001/pm8001_sas.c | 5 drivers/scsi/scsi_scan.c | 1 drivers/staging/media/tegra-video/vi.c | 13 drivers/target/target_core_configfs.c | 15 drivers/ufs/core/ufshcd.c | 18 drivers/usb/cdns3/core.c | 11 drivers/xen/xen-acpi-processor.c | 7 fs/btrfs/block-group.c | 43 fs/btrfs/direct-io.c | 16 fs/btrfs/disk-io.c | 6 fs/btrfs/inode.c | 2 fs/btrfs/misc.h | 7 fs/btrfs/scrub.c | 2 fs/btrfs/space-info.c | 22 fs/btrfs/tree-checker.c | 4 fs/btrfs/zoned.c | 271 +++ fs/eventpoll.c | 5 fs/ext4/ext4.h | 43 fs/ext4/extents.c | 20 fs/ext4/mballoc-test.c | 4 fs/ext4/mballoc.c | 718 +++++----- fs/ext4/mballoc.h | 9 fs/namespace.c | 20 fs/nfsd/nfsctl.c | 2 fs/smb/client/connect.c | 1 fs/smb/client/smb2inode.c | 4 fs/smb/client/smb2pdu.c | 24 fs/smb/client/transport.c | 21 fs/smb/server/mgmt/user_session.c | 5 fs/smb/server/mgmt/user_session.h | 1 fs/smb/server/smb2pdu.c | 21 fs/squashfs/cache.c | 3 fs/xattr.c | 35 include/linux/ima.h | 4 include/linux/indirect_call_wrapper.h | 18 include/linux/ioport.h | 32 include/linux/kexec.h | 6 include/linux/libata.h | 4 include/linux/mailbox_client.h | 2 include/linux/mailbox_controller.h | 9 include/linux/pci-epc.h | 38 include/linux/platform_data/max6639.h | 15 include/linux/ring_buffer.h | 1 include/linux/workqueue.h | 8 include/net/act_api.h | 1 include/net/bonding.h | 1 include/net/ip_fib.h | 2 include/net/netfilter/nf_tables.h | 5 include/net/sch_generic.h | 10 include/net/tc_act/tc_ife.h | 4 include/net/xdp_sock_drv.h | 24 include/net/xsk_buff_pool.h | 3 include/uapi/linux/pci_regs.h | 2 kernel/bpf/devmap.c | 22 kernel/bpf/trampoline.c | 4 kernel/cgroup/cpuset.c | 2 kernel/events/core.c | 42 kernel/events/uprobes.c | 38 kernel/kexec_core.c | 54 kernel/rseq.c | 5 kernel/trace/ring_buffer.c | 21 kernel/trace/trace.c | 13 kernel/trace/trace_events_trigger.c | 3 kernel/workqueue.c | 13 net/atm/lec.c | 26 net/bridge/br_device.c | 2 net/bridge/br_input.c | 2 net/can/bcm.c | 1 net/core/filter.c | 6 net/ipv4/sysctl_net_ipv4.c | 5 net/ipv6/route.c | 11 net/mac80211/mesh.c | 3 net/mac80211/mlme.c | 3 net/netfilter/nf_tables_api.c | 5 net/netfilter/nft_set_pipapo.c | 51 net/netfilter/nft_set_pipapo.h | 2 net/nfc/nci/core.c | 21 net/nfc/nci/data.c | 12 net/nfc/rawsock.c | 11 net/rds/tcp.c | 14 net/sched/act_ct.c | 6 net/sched/act_ife.c | 93 - net/sched/cls_api.c | 7 net/sched/sch_ets.c | 12 net/sched/sch_fq.c | 1 net/wireless/core.c | 1 net/wireless/radiotap.c | 4 net/xdp/xsk.c | 28 net/xdp/xsk_buff_pool.c | 15 rust/kernel/kunit.rs | 8 security/apparmor/apparmorfs.c | 225 +-- security/apparmor/include/label.h | 16 security/apparmor/include/lib.h | 12 security/apparmor/include/match.h | 1 security/apparmor/include/policy.h | 10 security/apparmor/include/policy_ns.h | 2 security/apparmor/include/policy_unpack.h | 75 - security/apparmor/label.c | 12 security/apparmor/match.c | 58 security/apparmor/policy.c | 77 - security/apparmor/policy_ns.c | 2 security/apparmor/policy_unpack.c | 49 security/integrity/ima/ima_kexec.c | 148 +- sound/pci/hda/cs35l56_hda.c | 14 sound/pci/hda/patch_conexant.c | 11 sound/pci/hda/patch_realtek.c | 2 sound/usb/endpoint.c | 9 sound/usb/mixer_scarlett2.c | 14 sound/usb/quirks.c | 2 sound/usb/validate.c | 2 tools/testing/kunit/kunit_kernel.py | 6 tools/testing/kunit/kunit_tool_test.py | 26 tools/testing/selftests/arm64/abi/hwcap.c | 4 tools/testing/selftests/kselftest_harness.h | 15 tools/testing/selftests/net/mptcp/mptcp_join.sh | 13 tools/testing/selftests/net/mptcp/simult_flows.sh | 11 240 files changed, 3622 insertions(+), 1634 deletions(-)
Akhilesh Patil (1):
hwmon: (aht10) Add support for dht20
Al Viro (1):
xattr: switch to CLASS(fd)
Alban Bedel (1):
can: mcp251x: fix deadlock in error path of mcp251x_open
Alexandre Courbot (1):
rust: kunit: fix warning when !CONFIG_PRINTK
Allison Henderson (1):
net/rds: Fix circular locking dependency in rds_tcp_tune
Andrew Cooper (1):
x86/fred: Correct speculative safety in fred_extint()
Andrii Nakryiko (1):
uprobes: switch to RCU Tasks Trace flavor for better performance
Anup Patel (1):
mailbox: Allow controller specific mapping using fwnode
Ariel Silver (1):
wifi: mac80211: bounds-check link_id in ieee80211_ml_reconfiguration
Baokun Li (8):
ext4: add ext4_try_lock_group() to skip busy groups
ext4: factor out __ext4_mb_scan_group()
ext4: factor out ext4_mb_might_prefetch()
ext4: factor out ext4_mb_scan_group()
ext4: convert free groups order lists to xarrays
ext4: refactor choose group to scan group
ext4: implement linear-like traversal across order xarrays
ext4: fix potential null deref in ext4_mb_init()
Bart Van Assche (5):
drm/amdgpu: Unlock a mutex before destroying it drm/amdgpu: Fix locking bugs in error paths
hwmon: (it87) Check the it87_lock() return value
wifi: cw1200: Fix locking in error paths
wifi: wlcore: Fix a locking bug
Bjorn Helgaas (1):
PCI: Correct PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 value
Brad Spengler (1):
drm/vmwgfx: Fix invalid kref_put callback in vmw_bo_dirty_release
Breno Leitao (2):
ima: kexec: silence RCU list traversal warning
uprobes: Fix incorrect lockdep condition in filter_chain()
Brian Howard (1):
HID: multitouch: add quirks for Lenovo Yoga Book 9i
Brian Vazquez (1):
idpf: change IRQ naming to match netdev and ethtool queue numbering
Charles Haithcock (1):
i2c: i801: Revert "i2c: i801: replace acpi_lock with I2C bus lock"
Chintan Vankar (1):
net: ethernet: ti: am65-cpsw-nuss/cpsw-ale: Fix multicast entry handling in ALE table
Christian Brauner (1):
namespace: fix proc mount iteration
Christoph Böhmwalder (1):
drbd: fix null-pointer dereference on local read error
Damien Le Moal (13):
PCI: endpoint: Introduce pci_epc_function_is_valid()
PCI: endpoint: Introduce pci_epc_mem_map()/unmap()
PCI: dwc: endpoint: Implement the pci_epc_ops::align_addr() operation
ata: libata-scsi: Refactor ata_scsi_simulate()
ata: libata-scsi: Refactor ata_scsiop_read_cap()
ata: libata-scsi: Refactor ata_scsiop_maint_in()
ata: libata-scsi: Document all VPD page inquiry actors
ata: libata-scsi: Remove struct ata_scsi_args
ata: libata: Remove ATA_DFLAG_ZAC device flag
ata: libata: Introduce ata_port_eh_scheduled()
ata: libata-scsi: avoid Non-NCQ command starvation
ata: libata-core: fix cancellation of a port deferred qc work
ata: libata-eh: correctly handle deferred qc timeouts
Daniil Dulov (1):
wifi: cfg80211: cancel rfkill_block work in wiphy_unregister()
David Sterba (1):
btrfs: drop unused parameter fs_info from do_reclaim_sweep()
David Thomson (1):
xen/acpi-processor: fix _CST detection using undersized evaluation buffer
Davide Caratti (1):
net/sched: ets: fix divide by zero in the offload path
Eric Dumazet (2):
indirect_call_wrapper: do not reevaluate function pointer
net_sched: sch_fq: clear q->band_pkt_count[] in fq_reset()
Eric Naim (1):
ALSA: hda/realtek: Add quirk for Gigabyte G5 KF5 (2023)
Ethan Nelson-Moore (1):
net: arcnet: com20020-pci: fix support for 2.5Mbit cards
Felix Gu (2):
drm/logicvc: Fix device node reference leak in logicvc_drm_config_parse()
pinctrl: cirrus: cs42l43: Fix double-put in cs42l43_pin_probe()
Fernando Fernandez Mancera (2):
net: bridge: fix nd_tbl NULL dereference when IPv6 is disabled
net: vxlan: fix nd_tbl NULL dereference when IPv6 is disabled
Filipe Manana (2):
btrfs: get used bytes while holding lock at btrfs_reclaim_bgs_work()
btrfs: fix reclaimed bytes accounting after automatic block group reclaim
Florian Eckert (2):
pinctrl: equilibrium: rename irq_chip function callbacks
pinctrl: equilibrium: fix warning trace on load
Florian Westphal (1):
netfilter: nft_set_pipapo: split gc into unlink and reclaim phase
Francesco Lavra (1):
drm/solomon: Fix page start when updating rectangle in page addressing mode
Fuad Tabba (2):
KVM: arm64: Hide S1POE from guests when not supported by the host bpf, arm64: Force 8-byte alignment for JIT buffer to prevent atomic tearing
Geoffrey D. Bennett (3):
ALSA: scarlett2: Fix redeclaration of loop variable
ALSA: scarlett2: Fix DSP filter control array handling
ALSA: usb-audio: Remove VALIDATE_RATES quirk for Focusrite devices
Greg Kroah-Hartman (12):
nfc: pn533: properly drop the usb interface reference on disconnect
net: usb: kaweth: validate USB endpoints
net: usb: kalmia: validate USB endpoints
net: usb: pegasus: validate USB endpoints
can: ems_usb: ems_usb_read_bulk_callback(): check the proper length of a message
can: usb: f81604: correctly anchor the urb in the read bulk callback
can: ucan: Fix infinite loop from zero-length messages
can: usb: etas_es58x: correctly anchor the urb in the read bulk callback
can: usb: f81604: handle short interrupt urb messages properly
can: usb: f81604: handle bulk write errors properly
HID: Add HID_CLAIMED_INPUT guards in raw_event callbacks missing them Linux 6.12.77
Guenter Roeck (3):
dpaa2-switch: Fix interrupt storm after receiving bad if_id in IRQ handler
tracing: Add NULL pointer check to trigger_data_free()
ata: libata-eh: Fix detection of deferred qc timeouts
Gui-Dong Han (1):
hwmon: (max16065) Use READ/WRITE_ONCE to avoid compiler optimization induced race
Hao Yu (1):
hwmon: (aht10) Fix initialization commands for AHT20
Harshit Mogalapalli (2):
ima: verify the previous kernel's IMA buffer lies in addressable RAM of/kexec: refactor ima_get_kexec_buffer() to use ima_validate_range()
Heiko Carstens (2):
s390/idle: Fix cpu idle exit cpu time accounting s390/vtime: Fix virtual timer forwarding
Henrique Carvalho (1):
smb: client: fix cifs_pick_channel when channels are equally loaded
Hongyu Xie (1):
usb: cdns3: remove redundant if branch
Huacai Chen (1):
net: stmmac: dwmac-loongson: Set clk_csr_i to 100-150MHz
Ian Forbes (1):
drm/vmwgfx: Return the correct value in vmw_translate_ptr functions
Ian Ray (2):
HID: multitouch: new class MT_CLS_EGALAX_P80H84
net: nfc: nci: Fix zero-length proprietary notifications
Ilpo Järvinen (2):
resource: Add resource set range and size helpers
PCI: Use resource_set_range() that correctly sets ->end
Jakub Kicinski (4):
ipv6: fix NULL pointer deref in ip6_rt_get_dev_rcu()
nfc: nci: free skb on nci_transceive early error paths
nfc: nci: clear NCI_DATA_EXCHANGE before calling completion callback
nfc: rawsock: cancel tx_work before socket teardown
Jamal Hadi Salim (1):
net/sched: act_ife: Fix metalist update behavior
Jan Kara (1):
ext4: always allocate blocks only from groups inode can use
Jann Horn (1):
eventpoll: Fix integer overflow in ep_loop_check_proc()
Jason Gunthorpe (2):
IB/mthca: Add missed mthca_unmap_user_db() for mthca_create_srq() RDMA/irdma: Fix kernel stack leak in irdma_create_user_ah()
Jens Axboe (1):
media: dvb-core: fix wrong reinitialization of ringbuffer on reopen
Jeongjun Park (2):
drm/exynos: vidi: fix to avoid directly dereferencing user pointer
drm/exynos: vidi: use ctx->lock to protect struct vidi_context member variables related to memory alloc/free
Jiayuan Chen (3):
atm: lec: fix null-ptr-deref in lec_arp_clear_vccs bpf/bonding: reject vlan+srcmac xmit_hash_policy change when XDP is loaded
net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop
Jinhui Guo (1):
iommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode
Johan Hovold (4):
memory: mtk-smi: fix device leaks on common probe
memory: mtk-smi: fix device leak on larb probe drm/tegra: dsi: fix device leak on probe
clk: tegra: tegra124-emc: fix device leak on set_rate()
Johannes Berg (1):
wifi: radiotap: reject radiotap with unknown bits
Johannes Thumshirn (1):
btrfs: zoned: fix alloc_offset calculation for partly conventional block groups
John Johansen (6):
apparmor: fix: limit the number of levels of policy namespaces
apparmor: Fix double free of ns_name in aa_replace_profiles()
apparmor: fix unprivileged local user can do privileged policy management
apparmor: fix differential encoding verification
apparmor: fix race on rawdata dereference
apparmor: fix race between freeing data and fs accessing it
Jonathan Teh (1):
platform/x86: thinkpad_acpi: Fix errors reading battery thresholds
Joonwon Kang (1):
mailbox: Prevent out-of-bounds access in fw_mbox_index_xlate()
Jun Seo (1):
ALSA: usb-audio: Use correct version for UAC3 header validation
Junxiao Bi (1):
scsi: core: Fix refcount leak for tagset_refcnt
Kohei Enju (2):
bpf: Fix stack-out-of-bounds write in devmap
iavf: fix netdev->max_mtu to respect actual hardware limit
Koichiro Den (1):
net: sched: avoid qdisc_reset_all_tx_gt() vs dequeue race for lockless qdiscs
Krishna chaitanya chundru (1):
PCI: qcom: Don't wait for link if we can detect Link Up
Kuninori Morimoto (1):
ALSA: pci: hda: use snd_kcontrol_chip()
Kuniyuki Iwashima (1):
nfsd: Fix cred ref leak in nfsd_nl_threads_set_doit().
Kurt Borja (1):
platform/x86: dell-wmi: Add audio/mic mute key codes
Lang Xu (1):
bpf: Fix a UAF issue in bpf_trampoline_link_cgroup_shim
Lars Ellenberg (1):
drbd: fix "LOGIC BUG" in drbd_al_begin_io_nonblock()
Larysa Zaremba (5):
xdp: use modulo operation to calculate XDP frag tailroom
xsk: introduce helper to determine rxq->frag_size
i40e: fix registering XDP RxQ info
i40e: use xdp.frame_sz as XDP RxQ info frag_size
xdp: produce a warning when calculated tailroom is negative
Lewis Mason (1):
ALSA: hda/realtek: Add quirk for Samsung Galaxy Book3 Pro 360 (NP965QFG)
Lorenzo Bianconi (4):
wifi: mt76: mt7996: Fix possible oob access in mt7996_mac_write_txwi_80211()
wifi: mt76: mt7925: Fix possible oob access in mt7925_mac_write_txwi_80211()
wifi: mt76: Fix possible oob access in mt76_connac2_mac_write_txwi_80211()
net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_setup()MD Danish Anwar (1):
net: ti: icssg-prueth: Fix ping failure after offload mode setup when link speed is not 1G
Maciej Fijalkowski (2):
xsk: Get rid of xdp_buff_xsk::xskb_list_node
xsk: s/free_list_node/list_node/
Marco Crivellari (2):
workqueue: Add system_percpu_wq and system_dfl_wq
Input: synaptics_i2c - replace use of system_wq with system_dfl_wq
Mario Limonciello (1):
drm/amd: Fix hang on amdgpu unload by using pci_dev_is_disconnected()
Mark Harmstone (5):
btrfs: fix incorrect key offset in error message in check_dev_extent_item()
btrfs: fix objectid value in error message in check_extent_data_ref()
btrfs: fix warning in scrub_verify_one_metadata()
btrfs: print correct subvol num if active swapfile prevents deletion
btrfs: fix compat mask in error messages in btrfs_check_features()
Massimiliano Pellizzer (5):
apparmor: validate DFA start states are in bounds in unpack_pdb
apparmor: fix memory leak in verify_header
apparmor: replace recursive profile removal with iterative approach
apparmor: fix side-effect bug in match_char() macro usage
apparmor: fix missing bounds check on DEFAULT table in verify_dfa()
Mathias Krause (1):
scsi: lpfc: Properly set WC for DPP mapping
Mathieu Desnoyers (1):
rseq: Clarify rseq registration rseq_size bound check comment
Matthew Brost (1):
drm/xe: Do not preempt fence signaling CS instructions
Matthias Fend (2):
media: dw9714: move power sequences to dedicated functions
media: dw9714: add support for powerdown pin
Matthieu Baerts (NGI0) (1):
selftests: mptcp: join: check removing signal+subflow endp
Mieczyslaw Nalewaj (1):
net: dsa: realtek: rtl8365mb: fix rtl8365mb_phy_ocp_write return value
Mike Rapoport (Microsoft) (1):
x86/efi: defer freeing of boot services memory
Ming Lei (1):
nvme: fix admin queue leak on controller reset
Minseong Kim (1):
Input: synaptics_i2c - guard polling restart in resume
Miquel Sabaté Solà (1):
btrfs: define the AUTO_KFREE/AUTO_KVFREE helper macros
Nam Cao (1):
irqchip/sifive-plic: Fix frozen interrupt due to affinity setting
Namjae Jeon (2):
ksmbd: check return value of xa_store() in krb5_authenticate
ksmbd: add chann_lock to protect ksmbd_chann_list xarray
Naohiro Aota (4):
btrfs: zoned: fixup last alloc pointer after extent removal for RAID1
btrfs: zoned: fixup last alloc pointer after extent removal for DUP
btrfs: zoned: fix stripe width calculation
btrfs: zoned: fixup last alloc pointer after extent removal for RAID0/10
Naresh Solanki (1):
hwmon: (max6639) : Configure based on DT property
Nathan Chancellor (1):
ACPI: APEI: GHES: Disable KASAN instrumentation when compile testing with clang < 18
Nikhil P. Rao (2):
xsk: Fix fragment node deletion to prevent buffer leak
xsk: Fix zero-copy AF_XDP fragment drop
Niklas Cassel (6):
PCI: dwc: ep: Use align addr function for dw_pcie_ep_raise_{msi,msix}_irq()
PCI: dwc: ep: Flush MSI-X write before unmapping its ATU entry
PCI: dw-rockchip: Don't wait for link since we can detect Link Up Revert "PCI: dw-rockchip: Don't wait for link since we can detect Link Up" Revert "PCI: qcom: Don't wait for link if we can detect Link Up"
ata: libata: cancel pending work after clearing deferred_qc
Oliver Hartkopp (1):
can: bcm: fix locking for bcm_op runtime updates
Olivier Sobrie (1):
hwmon: (max6639) fix inverted polarity
Ovidiu Panait (1):
net: stmmac: Fix error handling in VLAN add and delete paths
Paolo Abeni (1):
selftests: mptcp: more stable simult_flows tests
Paulo Alcantara (1):
smb: client: fix broken multichannel with krb5+signing
Peng Fan (2):
mailbox: Use dev_err when there is error
mailbox: Use guard/scoped_guard for con_mutex
Peter Wang (1):
scsi: ufs: core: Move link recovery for hibern8 exit failure to wl_resume
Peter Zijlstra (1):
perf: Fix __perf_event_overflow() vs perf_remove_from_context() race
Phillip Lougher (1):
Squashfs: check metadata block offset is within range
Prithvi Tambewagh (1):
scsi: target: Fix recursive locking in __configfs_open_file()
Qing Wang (1):
tracing: Fix WARN_ON in tracing_buffers_mmap_close
Qu Wenruo (1):
btrfs: always fallback to buffered write if the inode requires checksum
Raju Rangoju (2):
amd-xgbe: fix MAC_TCR_SS register width for 2.5G and 10M speeds
amd-xgbe: fix sleep while atomic on suspend/resume
Ricardo Ribalda (1):
media: dw9714: Fix powerup sequence
Richard Fitzgerald (1):
ALSA: hda: cs35l56: Fix signedness error in cs35l56_hda_posture_put()
Salomon Dushimirimana (1):
scsi: pm8001: Fix use-after-free in pm8001_queue_command()
Sean Christopherson (1):
KVM: x86: Ignore -EBUSY when checking nested events from vcpu_block()
Sebastian Andrzej Siewior (1):
LoongArch/orc: Use RCU in all users of __module_address().
Sebastian Krzyszkowiak (1):
wifi: rsi: Don't default to -EOPNOTSUPP in rsi_mac80211_config
Shawn Lin (2):
arm64: dts: rockchip: Fix rk356x PCIe range mappings
arm64: dts: rockchip: Fix rk3588 PCIe range mappings
Shuicheng Lin (1):
drm/xe/reg_sr: Fix leak on xa_store failure
Shuvam Pandey (1):
kunit: tool: copy caller args in run_kernel to prevent mutation
Stefan Hajnoczi (1):
nvme: reject invalid pr_read_keys() num_keys values
Steven Chen (4):
ima: rename variable the seq_file "file" to "ima_kexec_file"
ima: define and call ima_alloc_kexec_file_buf()
kexec: define functions to map and unmap segments
ima: kexec: define functions to copy IMA log at soft boot
Sun Jian (1):
selftests/harness: order TEST_F and XFAIL_ADD constructors
Sun YangKai (1):
btrfs: fix periodic reclaim condition
Sungwoo Kim (1):
nvme: fix memory allocation in nvme_pr_read_keys()
Takashi Iwai (4):
ALSA: usb-audio: Cap the packet size pre-calculations
ALSA: usb-audio: Use inclusive terms
ALSA: hda/conexant: Add quirk for HP ZBook Studio G4
ALSA: hda/conexant: Fix headphone jack handling on Acer Swift SF314
Thomas Gleixner (1):
i40e: Fix preempt count leak in napi poll tracepoint
Thomas Richard (TI) (1):
usb: cdns3: fix role switching during resume
Thomas Weißschuh (1):
ARM: clean up the memset64() C wrapper
Thorsten Blum (3):
drm/amdgpu: Replace kzalloc + copy_from_user with memdup_user platform/x86: dell-wmi-sysman: Don't hex dump plaintext password data
smb: client: Don't log plaintext credentials in cifs_set_cifscreds
Théo Lebrun (1):
usb: cdns3: call cdns_power_is_lost() only once in cdns_resume()
Tiezhu Yang (3):
LoongArch: Remove unnecessary checks for ORC unwinder
LoongArch: Handle percpu handler address for ORC unwinder
LoongArch: Remove some extern variables in source files
Tudor Ambarus (3):
mailbox: don't protect of_parse_phandle_with_args with con_mutex
mailbox: sort headers alphabetically
mailbox: remove unused header files
Vahagn Vardanian (1):
wifi: mac80211: fix NULL pointer dereference in mesh_rx_csa_frame()
Victor Nogueira (1):
net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks
Vimlesh Kumar (4):
octeon_ep: Relocate counter updates before NAPI
octeon_ep: avoid compiler and IQ/OQ reordering
octeon_ep_vf: Relocate counter updates before NAPI
octeon_ep_vf: avoid compiler and IQ/OQ reordering
Vitaly Lifshits (1):
e1000e: clear DPG_EN after reset to avoid autonomous power-gating
Waiman Long (1):
cgroup/cpuset: Fix incorrect use of cpuset_update_tasks_cpumask() in update_cpumasks_hier()
Wake Liu (1):
kselftest/harness: Use helper to avoid zero-size memset warning
Wentao Liang (1):
drm/exynos/vidi: Remove redundant error handling in vidi_get_modes()
Yang Erkun (1):
ext4: correct the comments place for EXT4_EXT_MAY_ZEROOUT
Yazen Ghannam (1):
x86/acpi/boot: Correct acpi_is_processor_usable() check again
Yifan Wu (1):
selftest/arm64: Fix sve2p1_sigill() to hwcap test
Yujie Liu (1):
drm/sched: Fix kernel-doc warning for drm_sched_job_done()
Yung Chih Su (1):
net: ipv4: fix ARM64 alignment fault in multipath hash seed
Zhang Yi (1):
ext4: don't set EXT4_GET_BLOCKS_CONVERT when splitting before submitting I/O
ZhangGuoDong (2):
smb/client: fix buffer size for smb311_posix_qinfo in smb2_compound_op() smb/client: fix buffer size for smb311_posix_qinfo in SMB311_posix_query_info()
Zilin Guan (1):
media: tegra-video: Fix memory leak in __tegra_channel_try_format()
Greg Kroah-Hartman
maintainerDocumentation/hwmon/aht10.rst +9 -1
@@ -20,6 +20,14 @@ Supported chips: English: http://www.aosong.com/userfiles/files/media/Data%20Sheet%20AHT20.pdf + * Aosong DHT20 + + Prefix: 'dht20' + + Addresses scanned: None + + Datasheet: https://www.digikey.co.nz/en/htmldatasheets/production/9184855/0/0/1/101020932 + Author: Johannes Cornelis Draaijer <[email protected]>
@@ -33,7 +41,7 @@ The address of this i2c device may only be 0x38 Special Features ---------------- -AHT20 has additional CRC8 support which is sent as the last byte of the sensor +AHT20, DHT20 has additional CRC8 support which is sent as the last byte of the sensor values. Usage Notes
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 76 +SUBLEVEL = 77 EXTRAVERSION = NAME = Baby Opossum Posse
arch/Kconfig +1 -0
@@ -135,6 +135,7 @@ config KPROBES_ON_FTRACE config UPROBES def_bool n depends on ARCH_SUPPORTS_UPROBES + select TASKS_TRACE_RCU help Uprobes is the user-space counterpart to kprobes: they enable instrumentation applications (such as 'perf probe')
arch/arm/include/asm/string.h +9 -5
@@ -39,13 +39,17 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n) }#define __HAVE_ARCH_MEMSET64 -extern void *__memset64 (uint64_t *,uint32_t low,__kernel_size_t ,uint32_t hi); +extern void *__memset64 (uint64_t *,uint32_t first,__kernel_size_t ,uint32_t second);static inline void *memset64 (uint64_t *p,uint64_t v,__kernel_size_t n) { -if (IS_ENABLED (CONFIG_CPU_LITTLE_ENDIAN )) -return __memset64 (p, v, n *8 , v >>32 ); -else -return __memset64 (p, v >>32 , n *8 , v); +union { +uint64_t val; +struct { +uint32_t first, second; + }; + } word = { .val = v }; + +return __memset64 (p, word.first, n *8 , word.second); }/*
arch/arm64/boot/dts/rockchip/rk3568.dtsi +2 -2
@@ -97,7 +97,7 @@ pcie3x1: pcie@fe270000 { <0x0 0xf2000000 0x0 0x00100000>; ranges = <0x01000000 0x0 0xf2100000 0x0 0xf2100000 0x0 0x00100000>, <0x02000000 0x0 0xf2200000 0x0 0xf2200000 0x0 0x01e00000>, - <0x03000000 0x0 0x40000000 0x3 0x40000000 0x0 0x40000000>; + <0x03000000 0x3 0x40000000 0x3 0x40000000 0x0 0x40000000>; reg-names = "dbi", "apb", "config"; resets = <&cru SRST_PCIE30X1_POWERUP>; reset-names = "pipe";
@@ -150,7 +150,7 @@ pcie3x2: pcie@fe280000 { <0x0 0xf0000000 0x0 0x00100000>; ranges = <0x01000000 0x0 0xf0100000 0x0 0xf0100000 0x0 0x00100000>, <0x02000000 0x0 0xf0200000 0x0 0xf0200000 0x0 0x01e00000>, - <0x03000000 0x0 0x40000000 0x3 0x80000000 0x0 0x40000000>; + <0x03000000 0x3 0x80000000 0x3 0x80000000 0x0 0x40000000>; reg-names = "dbi", "apb", "config"; resets = <&cru SRST_PCIE30X2_POWERUP>; reset-names = "pipe";
arch/arm64/boot/dts/rockchip/rk356x.dtsi +1 -1
@@ -1045,7 +1045,7 @@ pcie2x1: pcie@fe260000 { power-domains = <&power RK3568_PD_PIPE>; ranges = <0x01000000 0x0 0xf4100000 0x0 0xf4100000 0x0 0x00100000>, <0x02000000 0x0 0xf4200000 0x0 0xf4200000 0x0 0x01e00000>, - <0x03000000 0x0 0x40000000 0x3 0x00000000 0x0 0x40000000>; + <0x03000000 0x3 0x00000000 0x3 0x00000000 0x0 0x40000000>; resets = <&cru SRST_PCIE20_POWERUP>; reset-names = "pipe"; #address-cells = <3>;
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi +2 -2
@@ -1650,7 +1650,7 @@ pcie2x1l1: pcie@fe180000 { power-domains = <&power RK3588_PD_PCIE>; ranges = <0x01000000 0x0 0xf3100000 0x0 0xf3100000 0x0 0x00100000>, <0x02000000 0x0 0xf3200000 0x0 0xf3200000 0x0 0x00e00000>, - <0x03000000 0x0 0x40000000 0x9 0xc0000000 0x0 0x40000000>; + <0x03000000 0x9 0xc0000000 0x9 0xc0000000 0x0 0x40000000>; reg = <0xa 0x40c00000 0x0 0x00400000>, <0x0 0xfe180000 0x0 0x00010000>, <0x0 0xf3000000 0x0 0x00100000>;
@@ -1701,7 +1701,7 @@ pcie2x1l2: pcie@fe190000 { power-domains = <&power RK3588_PD_PCIE>; ranges = <0x01000000 0x0 0xf4100000 0x0 0xf4100000 0x0 0x00100000>, <0x02000000 0x0 0xf4200000 0x0 0xf4200000 0x0 0x00e00000>, - <0x03000000 0x0 0x40000000 0xa 0x00000000 0x0 0x40000000>; + <0x03000000 0xa 0x00000000 0xa 0x00000000 0x0 0x40000000>; reg = <0xa 0x41000000 0x0 0x00400000>, <0x0 0xfe190000 0x0 0x00010000>, <0x0 0xf4000000 0x0 0x00100000>;
arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi +3 -3
@@ -168,7 +168,7 @@ pcie3x4: pcie@fe150000 { power-domains = <&power RK3588_PD_PCIE>; ranges = <0x01000000 0x0 0xf0100000 0x0 0xf0100000 0x0 0x00100000>, <0x02000000 0x0 0xf0200000 0x0 0xf0200000 0x0 0x00e00000>, - <0x03000000 0x0 0x40000000 0x9 0x00000000 0x0 0x40000000>; + <0x03000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>; reg = <0xa 0x40000000 0x0 0x00400000>, <0x0 0xfe150000 0x0 0x00010000>, <0x0 0xf0000000 0x0 0x00100000>;
@@ -254,7 +254,7 @@ pcie3x2: pcie@fe160000 { power-domains = <&power RK3588_PD_PCIE>; ranges = <0x01000000 0x0 0xf1100000 0x0 0xf1100000 0x0 0x00100000>, <0x02000000 0x0 0xf1200000 0x0 0xf1200000 0x0 0x00e00000>, - <0x03000000 0x0 0x40000000 0x9 0x40000000 0x0 0x40000000>; + <0x03000000 0x9 0x40000000 0x9 0x40000000 0x0 0x40000000>; reg = <0xa 0x40400000 0x0 0x00400000>, <0x0 0xfe160000 0x0 0x00010000>, <0x0 0xf1000000 0x0 0x00100000>;
@@ -303,7 +303,7 @@ pcie2x1l0: pcie@fe170000 { power-domains = <&power RK3588_PD_PCIE>; ranges = <0x01000000 0x0 0xf2100000 0x0 0xf2100000 0x0 0x00100000>, <0x02000000 0x0 0xf2200000 0x0 0xf2200000 0x0 0x00e00000>, - <0x03000000 0x0 0x40000000 0x9 0x80000000 0x0 0x40000000>; + <0x03000000 0x9 0x80000000 0x9 0x80000000 0x0 0x40000000>; reg = <0xa 0x40800000 0x0 0x00400000>, <0x0 0xfe170000 0x0 0x00010000>, <0x0 0xf2000000 0x0 0x00100000>;
arch/arm64/kvm/sys_regs.c +3 -0
@@ -1561,6 +1561,9 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,case SYS_ID_AA64MMFR3_EL1 : val &=ID_AA64MMFR3_EL1_TCRX |ID_AA64MMFR3_EL1_S1POE |ID_AA64MMFR3_EL1_S1PIE ; + +if (!system_supports_poe ()) + val &= ~ID_AA64MMFR3_EL1_S1POE ;break ;case SYS_ID_MMFR4_EL1 : val &= ~ARM64_FEATURE_MASK (ID_MMFR4_EL1_CCIDX );
arch/arm64/net/bpf_jit_comp.c +1 -1
@@ -1880,7 +1880,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) extable_offset =round_up (prog_size +PLT_TARGET_SIZE , extable_align); image_size = extable_offset + extable_size; ro_header =bpf_jit_binary_pack_alloc (image_size, &ro_image_ptr, -sizeof (u32), &header, &image_ptr, +sizeof (u64), &header, &image_ptr, jit_fill_hole);if (!ro_header) { prog = orig_prog;
arch/loongarch/include/asm/setup.h +3 -0
@@ -7,6 +7,7 @@#define _LOONGARCH_SETUP_H#include <linux/types.h> +#include <linux/threads.h> #include <asm/sections.h> #include <uapi/asm/setup.h>
@@ -14,6 +15,8 @@extern unsigned long eentry;extern unsigned long tlbrentry; +extern unsigned long pcpu_handlers[NR_CPUS ]; +extern long exception_handlers[VECSIZE *128 /sizeof (long )];extern char init_command_line[COMMAND_LINE_SIZE ];extern void tlb_init (int cpu);extern void cpu_cache_init (void );
arch/loongarch/kernel/unwind_orc.c +19 -13
@@ -357,13 +357,21 @@ static bool is_entry_func(unsigned long addr)static inline unsigned long bt_address (unsigned long ra) { -extern unsigned long eentry; +#if defined(CONFIG_NUMA ) && !defined(CONFIG_PREEMPT_RT ) +int cpu; +int vec_sz =sizeof (exception_handlers); -if (__kernel_text_address (ra)) -return ra; +for_each_possible_cpu (cpu) { +if (!pcpu_handlers[cpu]) +continue ; -if (__module_text_address (ra)) -return ra; +if (ra >= pcpu_handlers[cpu] && + ra < pcpu_handlers[cpu] + vec_sz) { + ra = ra + eentry - pcpu_handlers[cpu]; +break ; + } + } +#endif if (ra >= eentry && ra < eentry +EXCCODE_INT_END *VECSIZE ) {unsigned long func;
@@ -382,10 +390,13 @@ static inline unsigned long bt_address(unsigned long ra)break ; } -return func + offset; + ra = func + offset; } -return ra; +if (__kernel_text_address (ra)) +return ra; + +return 0 ; }bool unwind_next_frame (struct unwind_state *state)
@@ -399,7 +410,7 @@ bool unwind_next_frame(struct unwind_state *state)return false;/* Don't let modules unload while we're reading their ORC data. */ -preempt_disable (); +guard (rcu)();if (is_entry_func (state->pc)) goto end;
@@ -511,17 +522,12 @@ bool unwind_next_frame(struct unwind_state *state) goto err; } -if (!__kernel_text_address (state->pc)) - goto err; - -preempt_enable ();return true; err: state->error = true; end: -preempt_enable (); state->stack_info.type =STACK_TYPE_UNKNOWN ;return false; }
arch/loongarch/kernel/unwind_prologue.c +0 -4
@@ -22,10 +22,6 @@ extern const int unwind_hint_lasx;extern const int unwind_hint_lbt;extern const int unwind_hint_ri;extern const int unwind_hint_watch; -extern unsigned long eentry; -#ifdef CONFIG_NUMA -extern unsigned long pcpu_handlers[NR_CPUS ]; -#endif static inline bool scan_handlers (unsigned long entry_offset) {
arch/loongarch/mm/tlb.c +0 -1
@@ -260,7 +260,6 @@ static void output_pgtable_bits_defines(void)#ifdef CONFIG_NUMA unsigned long pcpu_handlers[NR_CPUS ];#endif -extern long exception_handlers[VECSIZE *128 /sizeof (long )];static void setup_tlb_handler (int cpu) {
arch/s390/include/asm/idle.h +1 -0
@@ -23,5 +23,6 @@ extern struct device_attribute dev_attr_idle_count;extern struct device_attribute dev_attr_idle_time_us;void psw_idle (struct s390_idle_data *data,unsigned long psw_mask); +void update_timer_idle (void );#endif /* _S390_IDLE_H */
arch/s390/kernel/idle.c +9 -4
@@ -21,11 +21,10 @@ static DEFINE_PER_CPU(struct s390_idle_data, s390_idle); -void account_idle_time_irq (void ) +void update_timer_idle (void ) {struct s390_idle_data *idle =this_cpu_ptr (&s390_idle);struct lowcore *lc =get_lowcore (); -unsigned long idle_time;u64 cycles_new[8 ];int i;
@@ -35,13 +34,19 @@ void account_idle_time_irq(void)this_cpu_add (mt_cycles[i], cycles_new[i] - idle->mt_cycles_enter[i]); } - idle_time = lc->int_clock - idle->clock_idle_enter; - lc->steal_timer += idle->clock_idle_enter - lc->last_update_clock; lc->last_update_clock = lc->int_clock; lc->system_timer += lc->last_update_timer - idle->timer_idle_enter; lc->last_update_timer = lc->sys_enter_timer; +} + +void account_idle_time_irq (void ) +{ +struct s390_idle_data *idle =this_cpu_ptr (&s390_idle); +unsigned long idle_time; + + idle_time =get_lowcore ()->int_clock - idle->clock_idle_enter;/* Account time spent with enabled wait psw loaded as idle time. */ WRITE_ONCE (idle->idle_time,READ_ONCE (idle->idle_time) + idle_time);
arch/s390/kernel/irq.c +8 -2
@@ -140,6 +140,10 @@ void noinstr do_io_irq(struct pt_regs *regs)struct pt_regs *old_regs =set_irq_regs (regs);bool from_idle; + from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT ); +if (from_idle) +update_timer_idle (); +irq_enter_rcu ();if (user_mode (regs)) {
@@ -148,7 +152,6 @@ void noinstr do_io_irq(struct pt_regs *regs) current->thread.last_break = regs->last_break; } - from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT );if (from_idle)account_idle_time_irq ();
@@ -176,6 +179,10 @@ void noinstr do_ext_irq(struct pt_regs *regs)struct pt_regs *old_regs =set_irq_regs (regs);bool from_idle; + from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT ); +if (from_idle) +update_timer_idle (); +irq_enter_rcu ();if (user_mode (regs)) {
@@ -188,7 +195,6 @@ void noinstr do_ext_irq(struct pt_regs *regs) regs->int_parm =get_lowcore ()->ext_params; regs->int_parm_long =get_lowcore ()->ext_params2; - from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT );if (from_idle)account_idle_time_irq ();
arch/s390/kernel/vtime.c +2 -16
@@ -225,10 +225,6 @@ static u64 vtime_delta(void)return timer - lc->last_update_timer; } -/* -* Update process times based on virtual cpu times stored by entry.S -* to the lowcore fields user_timer, system_timer & steal_clock. -*/ void vtime_account_kernel (struct task_struct *tsk) {struct lowcore *lc =get_lowcore ();
@@ -238,27 +234,17 @@ void vtime_account_kernel(struct task_struct *tsk) lc->guest_timer += delta; else lc->system_timer += delta; - -virt_timer_forward (delta); }EXPORT_SYMBOL_GPL (vtime_account_kernel);void vtime_account_softirq (struct task_struct *tsk) { -u64 delta =vtime_delta (); - -get_lowcore ()->softirq_timer += delta; - -virt_timer_forward (delta); +get_lowcore ()->softirq_timer +=vtime_delta (); }void vtime_account_hardirq (struct task_struct *tsk) { -u64 delta =vtime_delta (); - -get_lowcore ()->hardirq_timer += delta; - -virt_timer_forward (delta); +get_lowcore ()->hardirq_timer +=vtime_delta (); }/*
arch/x86/entry/entry_fred.c +2 -3
@@ -159,8 +159,6 @@ void __init fred_complete_exception_setup(void) static noinstr void fred_extint(struct pt_regs *regs) {unsigned int vector = regs->fred_ss.vector; -unsigned int index =array_index_nospec (vector -FIRST_SYSTEM_VECTOR , -NR_SYSTEM_VECTORS );if (WARN_ON_ONCE (vector <FIRST_EXTERNAL_VECTOR ))return ;
@@ -169,7 +167,8 @@ static noinstr void fred_extint(struct pt_regs *regs)irqentry_state_t state =irqentry_enter (regs);instrumentation_begin (); - sysvec_table[index](regs); + sysvec_table[array_index_nospec (vector -FIRST_SYSTEM_VECTOR , +NR_SYSTEM_VECTORS )](regs);instrumentation_end ();irqentry_exit (regs, state); }else {
arch/x86/include/asm/efi.h +1 -1
@@ -138,7 +138,7 @@ extern void __init efi_apply_memmap_quirks(void);extern int __init efi_reuse_config (u64 tables,int nr_tables);extern void efi_delete_dummy_variable (void );extern void efi_crash_gracefully_on_page_fault (unsigned long phys_addr); -extern void efi_free_boot_services (void ); +extern void efi_unmap_boot_services (void );void arch_efi_call_virt_setup (void );void arch_efi_call_virt_teardown (void );
arch/x86/kernel/acpi/boot.c +8 -4
@@ -35,6 +35,7 @@#include <asm/smp.h> #include <asm/i8259.h> #include <asm/setup.h> +#include <asm/hypervisor.h> #include "sleep.h" /* To include x86_acpi_suspend_lowlevel */ static int __initdata acpi_force =0 ;
@@ -164,11 +165,14 @@ static bool __init acpi_is_processor_usable(u32 lapic_flags)if (lapic_flags &ACPI_MADT_ENABLED )return true; -if (!acpi_support_online_capable || - (lapic_flags &ACPI_MADT_ONLINE_CAPABLE )) -return true; +if (acpi_support_online_capable) +return lapic_flags &ACPI_MADT_ONLINE_CAPABLE ; -return false; +/* +* QEMU expects legacy "Enabled=0" LAPIC entries to be counted as usable +* in order to support CPU hotplug in guests. +*/ +return !hypervisor_is_type (X86_HYPER_NATIVE ); } static int __init
arch/x86/kernel/cpu/topology.c +0 -15
@@ -27,7 +27,6 @@#include <xen/xen.h> #include <asm/apic.h> -#include <asm/hypervisor.h> #include <asm/io_apic.h> #include <asm/mpspec.h> #include <asm/smp.h>
@@ -239,20 +238,6 @@ static __init void topo_register_apic(u32 apic_id, u32 acpi_id, bool present) cpuid_to_apicid[cpu] = apic_id;topo_set_cpuids (cpu, apic_id, acpi_id); }else { -u32 pkgid =topo_apicid (apic_id,TOPO_PKG_DOMAIN ); - -/* -* Check for present APICs in the same package when running -* on bare metal. Allow the bogosity in a guest. -*/ -if (hypervisor_is_type (X86_HYPER_NATIVE ) && -topo_unit_count (pkgid,TOPO_PKG_DOMAIN , phys_cpu_present_map)) { -pr_info_once ("Ignoring hot-pluggable APIC ID %x in present package.\n" , - apic_id); - topo_info.nr_rejected_cpus++; -return ; - } - topo_info.nr_disabled_cpus++; }
arch/x86/kvm/x86.c +1 -2
@@ -11285,8 +11285,7 @@ static inline int vcpu_block(struct kvm_vcpu *vcpu)if (is_guest_mode (vcpu)) {int r =kvm_check_nested_events (vcpu); -WARN_ON_ONCE (r == -EBUSY ); -if (r <0 ) +if (r <0 && r != -EBUSY )return 0 ; }
arch/x86/platform/efi/efi.c +1 -1
@@ -858,7 +858,7 @@ static void __init __efi_enter_virtual_mode(void) }efi_check_for_embedded_firmwares (); -efi_free_boot_services (); +efi_unmap_boot_services ();if (!efi_is_mixed ())efi_native_runtime_setup ();
arch/x86/platform/efi/quirks.c +52 -3
89 lines not on this page · raw message
drivers/acpi/apei/Makefile +4 -0
@@ -1,6 +1,10 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_ACPI_APEI) += apei.o obj-$(CONFIG_ACPI_APEI_GHES) += ghes.o +# clang versions prior to 18 may blow out the stack with KASAN +ifeq ($(CONFIG_COMPILE_TEST)_$(CONFIG_CC_IS_CLANG)_$(call clang-min-version, 180000),y_y_) +KASAN_SANITIZE_ghes.o := n +endif obj-$(CONFIG_ACPI_APEI_EINJ) += einj.o einj-y := einj-core.o einj-$(CONFIG_ACPI_APEI_EINJ_CXL) += einj-cxl.o
drivers/ata/libata-core.c +5 -13
@@ -2439,18 +2439,7 @@ static void ata_dev_config_zac(struct ata_device *dev) dev->zac_zones_optimal_nonseq =U32_MAX ; dev->zac_zones_max_open =U32_MAX ; -/* -* Always set the 'ZAC' flag for Host-managed devices. -*/ -if (dev->class ==ATA_DEV_ZAC ) - dev->flags |=ATA_DFLAG_ZAC ; -else if (ata_id_zoned_cap (dev->id) ==0x01 ) -/* -* Check for host-aware devices. -*/ - dev->flags |=ATA_DFLAG_ZAC ; - -if (!(dev->flags &ATA_DFLAG_ZAC )) +if (!ata_dev_is_zac (dev))return ;if (!ata_identify_page_supported (dev,ATA_LOG_ZONED_INFORMATION )) {
@@ -5532,6 +5521,7 @@ struct ata_port *ata_port_alloc(struct ata_host *host)mutex_init (&ap->scsi_scan_mutex);INIT_DELAYED_WORK (&ap->hotplug_task, ata_scsi_hotplug);INIT_DELAYED_WORK (&ap->scsi_rescan_task, ata_scsi_dev_rescan); +INIT_WORK (&ap->deferred_qc_work, ata_scsi_deferred_qc_work);INIT_LIST_HEAD (&ap->eh_done_q);init_waitqueue_head (&ap->eh_wait_q);init_completion (&ap->park_req_pending);
@@ -6152,9 +6142,11 @@ static void ata_port_detach(struct ata_port *ap)/* wait till EH commits suicide */ ata_port_wait_eh (ap); -/* it better be dead now */ +/* It better be dead now and not have any remaining deferred qc. */ WARN_ON (!(ap->pflags &ATA_PFLAG_UNLOADED )); +WARN_ON (ap->deferred_qc); +cancel_work_sync (&ap->deferred_qc_work);cancel_delayed_work_sync (&ap->hotplug_task);cancel_delayed_work_sync (&ap->scsi_rescan_task);
drivers/ata/libata-eh.c +27 -4
@@ -642,12 +642,29 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,set_host_byte (scmd,DID_OK );ata_qc_for_each_raw (ap, qc, i) { -if (qc->flags &ATA_QCFLAG_ACTIVE && - qc->scsicmd == scmd) +if (qc->scsicmd != scmd) +continue ; +if ((qc->flags &ATA_QCFLAG_ACTIVE ) || + qc == ap->deferred_qc)break ; } -if (i <ATA_MAX_QUEUE ) { +if (i <ATA_MAX_QUEUE && qc == ap->deferred_qc) { +/* +* This is a deferred command that timed out while +* waiting for the command queue to drain. Since the qc +* is not active yet (deferred_qc is still set, so the +* deferred qc work has not issued the command yet), +* simply signal the timeout by finishing the SCSI +* command and clear the deferred qc to prevent the +* deferred qc work from issuing this qc. +*/ +WARN_ON_ONCE (qc->flags &ATA_QCFLAG_ACTIVE ); + ap->deferred_qc =NULL ; +cancel_work (&ap->deferred_qc_work); +set_host_byte (scmd,DID_TIME_OUT ); +scsi_eh_finish_cmd (scmd, &ap->eh_done_q); + }else if (i <ATA_MAX_QUEUE ) {/* the scmd has an associated qc */ if (!(qc->flags &ATA_QCFLAG_EH )) {/* which hasn't failed yet, timeout */
@@ -826,7 +843,7 @@ void ata_port_wait_eh(struct ata_port *ap) retry:spin_lock_irqsave (ap->lock, flags); -while (ap->pflags & (ATA_PFLAG_EH_PENDING |ATA_PFLAG_EH_IN_PROGRESS )) { +while (ata_port_eh_scheduled (ap)) {prepare_to_wait (&ap->eh_wait_q, &wait,TASK_UNINTERRUPTIBLE );spin_unlock_irqrestore (ap->lock, flags);schedule ();
@@ -920,6 +937,12 @@ static void ata_eh_set_pending(struct ata_port *ap, int fastdrain) ap->pflags |=ATA_PFLAG_EH_PENDING ; +/* +* If we have a deferred qc, requeue it so that it is retried once EH +* completes. +*/ +ata_scsi_requeue_deferred_qc (ap); +if (!fastdrain)return ;
drivers/ata/libata-scsi.c +366 -178
908 lines not on this page · raw message
drivers/ata/libata.h +14 -0
@@ -44,6 +44,18 @@ static inline bool ata_sstatus_online(u32 sstatus)return (sstatus &0xf ) ==0x3 ; } +static inline bool ata_dev_is_zac (struct ata_device *dev) +{ +/* Host managed device or host aware device */ +return dev->class ==ATA_DEV_ZAC || +ata_id_zoned_cap (dev->id) ==0x01 ; +} + +static inline bool ata_port_eh_scheduled (struct ata_port *ap) +{ +return ap->pflags & (ATA_PFLAG_EH_PENDING |ATA_PFLAG_EH_IN_PROGRESS ); +} +#ifdef CONFIG_ATA_FORCE extern void ata_force_cbl (struct ata_port *ap);#else
@@ -154,6 +166,8 @@ void ata_scsi_sdev_config(struct scsi_device *sdev);int ata_scsi_dev_config (struct scsi_device *sdev,struct queue_limits *lim,struct ata_device *dev);int __ata_scsi_queuecmd (struct scsi_cmnd *scmd,struct ata_device *dev); +void ata_scsi_deferred_qc_work (struct work_struct *work); +void ata_scsi_requeue_deferred_qc (struct ata_port *ap);/* libata-eh.c */ extern unsigned int ata_internal_cmd_timeout (struct ata_device *dev,u8 cmd);
drivers/block/drbd/drbd_actlog.c +23 -30
82 lines not on this page · raw message
drivers/block/drbd/drbd_interval.h +4 -1
@@ -8,12 +8,15 @@struct drbd_interval {struct rb_node rb;sector_t sector;/* start sector of the interval */ -unsigned int size;/* size in bytes */ sector_t end;/* highest interval end in subtree */ +unsigned int size;/* size in bytes */ unsigned int local:1 /* local or remote request? */ ;unsigned int waiting:1 ;/* someone is waiting for completion */ unsigned int completed:1 ;/* this has been completed already; * ignore for conflict detection */ + +/* to resume a partially successful drbd_al_begin_io_nonblock(); */ +unsigned int partially_in_al_next_enr; };static inline void drbd_clear_interval (struct drbd_interval *i)
drivers/block/drbd/drbd_req.c +2 -1
@@ -621,7 +621,8 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,break ;case READ_COMPLETED_WITH_ERROR : -drbd_set_out_of_sync (peer_device, req->i.sector, req->i.size); +drbd_set_out_of_sync (first_peer_device (device), + req->i.sector, req->i.size);drbd_report_io_error (device, req);__drbd_chk_io_error (device,DRBD_READ_ERROR ); fallthrough;
drivers/clk/tegra/clk-tegra124-emc.c +1 -1
@@ -197,8 +197,8 @@ static struct tegra_emc *emc_ensure_emc_driver(struct tegra_clk_emc *tegra) tegra->emc_node =NULL ; tegra->emc =platform_get_drvdata (pdev); +put_device (&pdev->dev);if (!tegra->emc) { -put_device (&pdev->dev);pr_err ("%s: cannot find EMC driver\n" , __func__);return NULL ; }
drivers/firmware/efi/mokvar-table.c +1 -1
@@ -85,7 +85,7 @@ static struct kobject *mokvar_kobj;* as an alternative to ordinary EFI variables, due to platform-dependent * limitations. The memory occupied by this table is marked as reserved. * -* This routine must be called before efi_free_boot_services() in order +* This routine must be called before efi_unmap_boot_services() in order * to guarantee that it can mark the table as reserved. * * Implicit inputs:
drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c +1 -0
@@ -583,6 +583,7 @@ static void aca_error_fini(struct aca_error *aerr)aca_bank_error_remove (aerr, bank_error); out_unlock: +mutex_unlock (&aerr->lock);mutex_destroy (&aerr->lock); }
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -2
@@ -4648,7 +4648,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)* before ip_fini_early to prevent kfd locking refcount issues by calling * amdgpu_amdkfd_suspend() */ -if (drm_dev_is_unplugged (adev_to_drm (adev))) +if (pci_dev_is_disconnected (adev->pdev))amdgpu_amdkfd_device_fini_sw (adev);amdgpu_device_ip_fini_early (adev);
@@ -4660,7 +4660,7 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)amdgpu_gart_dummy_page_fini (adev); -if (drm_dev_is_unplugged (adev_to_drm (adev))) +if (pci_dev_is_disconnected (adev->pdev))amdgpu_device_unmap_mmio (adev); }
drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c +13 -19
@@ -171,13 +171,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t copy_pos +=sizeof (uint32_t ); - ta_bin =kzalloc (ta_bin_len,GFP_KERNEL ); -if (!ta_bin) -return -ENOMEM ; -if (copy_from_user ((void *)ta_bin, &buf[copy_pos], ta_bin_len)) { - ret = -EFAULT ; - goto err_free_bin; - } + ta_bin =memdup_user (&buf[copy_pos], ta_bin_len); +if (IS_ERR (ta_bin)) +return PTR_ERR (ta_bin);/* Set TA context and functions */ set_ta_context_funcs (psp, ta_type, &context);
@@ -327,26 +323,22 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, sizereturn -EFAULT ; copy_pos +=sizeof (uint32_t ); - shared_buf =kzalloc (shared_buf_len,GFP_KERNEL ); -if (!shared_buf) -return -ENOMEM ; -if (copy_from_user ((void *)shared_buf, &buf[copy_pos], shared_buf_len)) { - ret = -EFAULT ; - goto err_free_shared_buf; - } + shared_buf =memdup_user (&buf[copy_pos], shared_buf_len); +if (IS_ERR (shared_buf)) +return PTR_ERR (shared_buf);set_ta_context_funcs (psp, ta_type, &context);if (!context || !context->initialized) {dev_err (adev->dev,"TA is not initialized\n" ); ret = -EINVAL ; - goto err_free_shared_buf; + goto free_shared_buf; }if (!psp->ta_funcs || !psp->ta_funcs->fn_ta_invoke) {dev_err (adev->dev,"Unsupported function to invoke TA\n" ); ret = -EOPNOTSUPP ; - goto err_free_shared_buf; + goto free_shared_buf; } context->session_id = ta_id;
@@ -354,7 +346,7 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, sizemutex_lock (&psp->ras_context.mutex); ret =prep_ta_mem_context (&context->mem_context, shared_buf, shared_buf_len);if (ret) - goto err_free_shared_buf; + goto unlock; ret =psp_fn_ta_invoke (psp, cmd_id);if (ret || context->resp_status) {
@@ -362,15 +354,17 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size ret, context->resp_status);if (!ret) { ret = -EINVAL ; - goto err_free_shared_buf; + goto unlock; } }if (copy_to_user ((char *)&buf[copy_pos], context->mem_context.shared_buf, shared_buf_len)) ret = -EFAULT ; -err_free_shared_buf: +unlock:mutex_unlock (&psp->ras_context.mutex); + +free_shared_buf:kfree (shared_buf);return ret;
drivers/gpu/drm/exynos/exynos_drm_vidi.c +49 -12
142 lines not on this page · raw message
drivers/gpu/drm/logicvc/logicvc_drm.c +2 -2
@@ -90,7 +90,6 @@ static int logicvc_drm_config_parse(struct logicvc_drm *logicvc)struct device *dev = drm_dev->dev;struct device_node *of_node = dev->of_node;struct logicvc_drm_config *config = &logicvc->config; -struct device_node *layers_node;int ret; logicvc_of_property_parse_bool(of_node, LOGICVC_OF_PROPERTY_DITHERING,
@@ -126,7 +125,8 @@ static int logicvc_drm_config_parse(struct logicvc_drm *logicvc)if (ret)return ret; - layers_node =of_get_child_by_name (of_node,"layers" ); + struct device_node *layers_node __free(device_node) = +of_get_child_by_name (of_node,"layers" );if (!layers_node) {drm_err (drm_dev,"Missing non-optional layers node\n" );return -EINVAL ;
drivers/gpu/drm/scheduler/sched_main.c +1 -0
@@ -404,6 +404,7 @@ static void drm_sched_run_free_queue(struct drm_gpu_scheduler *sched)/** * drm_sched_job_done - complete a job * @s_job: pointer to the job which is done +* @result: 0 on success, -ERRNO on error * * Finish the job's fence and wake up the worker thread. */
drivers/gpu/drm/solomon/ssd130x.c +2 -4
@@ -736,6 +736,7 @@ static int ssd130x_update_rect(struct ssd130x_device *ssd130x,unsigned int height =drm_rect_height (rect);unsigned int line_length =DIV_ROUND_UP (width,8 );unsigned int page_height =SSD130X_PAGE_HEIGHT ; +u8 page_start = ssd130x->page_offset + y / page_height;unsigned int pages =DIV_ROUND_UP (height, page_height);struct drm_device *drm = &ssd130x->drm;u32 array_idx =0 ;
@@ -773,14 +774,11 @@ static int ssd130x_update_rect(struct ssd130x_device *ssd130x,*/ if (!ssd130x->page_address_mode) { -u8 page_start; -/* Set address range for horizontal addressing mode */ ret =ssd130x_set_col_range (ssd130x, ssd130x->col_offset + x, width);if (ret <0 )return ret; - page_start = ssd130x->page_offset + y / page_height; ret =ssd130x_set_page_range (ssd130x, page_start, pages);if (ret <0 )return ret;
@@ -812,7 +810,7 @@ static int ssd130x_update_rect(struct ssd130x_device *ssd130x,*/ if (ssd130x->page_address_mode) { ret =ssd130x_set_page_pos (ssd130x, - ssd130x->page_offset + i, + page_start + i, ssd130x->col_offset + x);if (ret <0 )return ret;
drivers/gpu/drm/tegra/dsi.c +2 -4
@@ -1540,11 +1540,9 @@ static int tegra_dsi_ganged_probe(struct tegra_dsi *dsi)return -EPROBE_DEFER ; dsi->slave =platform_get_drvdata (gangster); - -if (!dsi->slave) { -put_device (&gangster->dev); +put_device (&gangster->dev); +if (!dsi->slave)return -EPROBE_DEFER ; - } dsi->slave->master = dsi; }
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +2 -2
@@ -1161,7 +1161,7 @@ static int vmw_translate_mob_ptr(struct vmw_private *dev_priv, ret =vmw_user_bo_lookup (sw_context->filp, handle, &vmw_bo);if (ret !=0 ) {drm_dbg (&dev_priv->drm,"Could not find or use MOB buffer.\n" ); -return PTR_ERR (vmw_bo); +return ret; }vmw_bo_placement_set (vmw_bo,VMW_BO_DOMAIN_MOB ,VMW_BO_DOMAIN_MOB ); ret =vmw_validation_add_bo (sw_context->ctx, vmw_bo);
@@ -1217,7 +1217,7 @@ static int vmw_translate_guest_ptr(struct vmw_private *dev_priv, ret =vmw_user_bo_lookup (sw_context->filp, handle, &vmw_bo);if (ret !=0 ) {drm_dbg (&dev_priv->drm,"Could not find or use GMR region.\n" ); -return PTR_ERR (vmw_bo); +return ret; }vmw_bo_placement_set (vmw_bo,VMW_BO_DOMAIN_GMR |VMW_BO_DOMAIN_VRAM ,VMW_BO_DOMAIN_GMR |VMW_BO_DOMAIN_VRAM );
drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c +8 -1
@@ -274,6 +274,13 @@ int vmw_bo_dirty_add(struct vmw_bo *vbo)return ret; } +static void vmw_bo_dirty_free (struct kref *kref) +{ + struct vmw_bo_dirty *dirty = container_of(kref, struct vmw_bo_dirty, ref_count); + +kvfree (dirty); +} +/** * vmw_bo_dirty_release - Release a dirty-tracking user from a buffer object * @vbo: The buffer object
@@ -288,7 +295,7 @@ void vmw_bo_dirty_release(struct vmw_bo *vbo) {struct vmw_bo_dirty *dirty = vbo->dirty; -if (dirty &&kref_put (&dirty->ref_count, (void *)kvfree)) +if (dirty &&kref_put (&dirty->ref_count, vmw_bo_dirty_free)) vbo->dirty =NULL ; }
drivers/gpu/drm/xe/xe_reg_sr.c +3 -1
@@ -102,10 +102,12 @@ int xe_reg_sr_add(struct xe_reg_sr *sr, *pentry = *e; ret =xa_err (xa_store (&sr->xa, idx, pentry,GFP_KERNEL ));if (ret) - goto fail; + goto fail_free;return 0 ; +fail_free: +kfree (pentry); fail: xe_gt_err(gt, "discarding save-restore reg %04lx (clear: %08x, set: %08x, masked: %s, mcr: %s): ret=%d\n",
drivers/gpu/drm/xe/xe_ring_ops.c +9 -0
@@ -259,6 +259,9 @@ static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc i =emit_bb_start (batch_addr, ppgtt_flag, dw, i); +/* Don't preempt fence signaling */ + dw[i++] =MI_ARB_ON_OFF |MI_ARB_DISABLE ; +if (job->user_fence.used) { i =emit_flush_dw (dw, i); i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
@@ -322,6 +325,9 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc, i =emit_bb_start (batch_addr, ppgtt_flag, dw, i); +/* Don't preempt fence signaling */ + dw[i++] =MI_ARB_ON_OFF |MI_ARB_DISABLE ; +if (job->user_fence.used) { i =emit_flush_dw (dw, i); i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
@@ -371,6 +377,9 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job, i =emit_bb_start (batch_addr, ppgtt_flag, dw, i); +/* Don't preempt fence signaling */ + dw[i++] =MI_ARB_ON_OFF |MI_ARB_DISABLE ; + i =emit_render_cache_flush (job, dw, i);if (job->user_fence.used)
drivers/hid/hid-cmedia.c +1 -1
@@ -99,7 +99,7 @@ static int cmhid_raw_event(struct hid_device *hid, struct hid_report *report, {struct cmhid *cm =hid_get_drvdata (hid); -if (len !=CM6533_JD_RAWEV_LEN ) +if (len !=CM6533_JD_RAWEV_LEN || !(hid->claimed &HID_CLAIMED_INPUT )) goto out;if (memcmp (data+CM6533_JD_SFX_OFFSET , ji_sfx,sizeof (ji_sfx))) goto out;
drivers/hid/hid-creative-sb0540.c +1 -1
@@ -153,7 +153,7 @@ static int creative_sb0540_raw_event(struct hid_device *hid,u64 code, main_code;int key; -if (len !=6 ) +if (len !=6 || !(hid->claimed &HID_CLAIMED_INPUT ))return 0 ;/* From daemons/hw_hiddev.c sb0540_rec() in lirc */
drivers/hid/hid-ids.h +1 -0
@@ -832,6 +832,7 @@#define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5#define USB_DEVICE_ID_LENOVO_X12_TAB 0x60fe#define USB_DEVICE_ID_LENOVO_X12_TAB2 0x61ae +#define USB_DEVICE_ID_LENOVO_YOGABOOK9I 0x6161#define USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E 0x600e#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019 0x6019
drivers/hid/hid-multitouch.c +81 -2
125 lines not on this page · raw message
drivers/hid/hid-zydacron.c +1 -1
@@ -114,7 +114,7 @@ static int zc_raw_event(struct hid_device *hdev, struct hid_report *report,unsigned key;unsigned short index; -if (report->id == data[0 ]) { +if (report->id == data[0 ] && (hdev->claimed &HID_CLAIMED_INPUT )) {/* break keys */ for (index =0 ; index <4 ; index++) {
drivers/hwmon/Kconfig +3 -3
@@ -245,12 +245,12 @@ config SENSORS_ADT7475 will be called adt7475. config SENSORS_AHT10 - tristate "Aosong AHT10, AHT20" + tristate "Aosong AHT10, AHT20, DHT20" depends on I2C select CRC8 help - If you say yes here, you get support for the Aosong AHT10 and AHT20 - temperature and humidity sensors + If you say yes here, you get support for the Aosong AHT10, AHT20 and + DHT20 temperature and humidity sensors This driver can also be built as a module. If so, the module will be called aht10.
drivers/hwmon/aht10.c +18 -3
@@ -37,6 +37,10 @@#define AHT10_CMD_MEAS 0b10101100#define AHT10_CMD_RST 0b10111010 +#define AHT20_CMD_INIT 0b10111110 + +#define DHT20_CMD_INIT 0b01110001 +/* * Flags in the answer byte/command */
@@ -48,11 +52,12 @@#define AHT10_MAX_POLL_INTERVAL_LEN 30 -enum aht10_variant { aht10, aht20 }; +enum aht10_variant { aht10, aht20, dht20};static const struct i2c_device_id aht10_id[] = { {"aht10" , aht10 }, {"aht20" , aht20 }, + {"dht20" , dht20 }, { }, };MODULE_DEVICE_TABLE (i2c, aht10_id);
@@ -77,6 +82,7 @@ MODULE_DEVICE_TABLE(i2c, aht10_id);* AHT10/AHT20 * @crc8: crc8 support flag * @meas_size: measurements data size +* @init_cmd: Initialization command */ struct aht10_data {
@@ -92,6 +98,7 @@ struct aht10_data {int humidity;bool crc8;unsigned int meas_size; +u8 init_cmd; };/**
@@ -101,13 +108,13 @@ struct aht10_data {*/ static int aht10_init (struct aht10_data *data) { -const u8 cmd_init[] = {AHT10_CMD_INIT ,AHT10_CAL_ENABLED |AHT10_MODE_CYC , +const u8 cmd_init[] = {data->init_cmd,AHT10_CAL_ENABLED |AHT10_MODE_CYC ,0x00 };int res;u8 status;struct i2c_client *client = data->client; - res =i2c_master_send (client, cmd_init,3 ); + res =i2c_master_send (client, cmd_init,sizeof (cmd_init));if (res <0 )return res;
@@ -352,9 +359,17 @@ static int aht10_probe(struct i2c_client *client) data->meas_size =AHT20_MEAS_SIZE ; data->crc8 = true;crc8_populate_msb (crc8_table,AHT20_CRC8_POLY ); + data->init_cmd =AHT20_CMD_INIT ; +break ; +case dht20: + data->meas_size =AHT20_MEAS_SIZE ; + data->crc8 = true; +crc8_populate_msb (crc8_table,AHT20_CRC8_POLY ); + data->init_cmd =DHT20_CMD_INIT ;break ;default : data->meas_size =AHT10_MEAS_SIZE ; + data->init_cmd =AHT10_CMD_INIT ;break ; }
drivers/hwmon/it87.c +4 -1
@@ -3590,10 +3590,13 @@ static int it87_resume(struct device *dev) {struct platform_device *pdev =to_platform_device (dev);struct it87_data *data =dev_get_drvdata (dev); +int err;it87_resume_sio (pdev); -it87_lock (data); + err =it87_lock (data); +if (err) +return err;it87_check_pwm (dev);it87_check_limit_regs (data);
drivers/hwmon/max16065.c +13 -13
@@ -151,27 +151,27 @@ static struct max16065_data *max16065_update_device(struct device *dev)int i;for (i =0 ; i < data->num_adc; i++) - data->adc[i] - =max16065_read_adc (client,MAX16065_ADC (i)); +WRITE_ONCE (data->adc[i], +max16065_read_adc (client,MAX16065_ADC (i)));if (data->have_current) { - data->adc[MAX16065_NUM_ADC ] - =max16065_read_adc (client,MAX16065_CSP_ADC ); - data->curr_sense - =i2c_smbus_read_byte_data (client, -MAX16065_CURR_SENSE ); +WRITE_ONCE (data->adc[MAX16065_NUM_ADC ], +max16065_read_adc (client,MAX16065_CSP_ADC )); +WRITE_ONCE (data->curr_sense, +i2c_smbus_read_byte_data (client,MAX16065_CURR_SENSE )); }for (i =0 ; i <2 ; i++) - data->fault[i] - =i2c_smbus_read_byte_data (client,MAX16065_FAULT (i)); +WRITE_ONCE (data->fault[i], +i2c_smbus_read_byte_data (client,MAX16065_FAULT (i)));/* * MAX16067 and MAX16068 have separate undervoltage and * overvoltage alarm bits. Squash them together. */ if (data->chip == max16067 || data->chip == max16068) - data->fault[0 ] |= data->fault[1 ]; +WRITE_ONCE (data->fault[0 ], + data->fault[0 ] | data->fault[1 ]); data->last_updated = jiffies; data->valid = true;
@@ -185,7 +185,7 @@ static ssize_t max16065_alarm_show(struct device *dev, {struct sensor_device_attribute_2 *attr2 =to_sensor_dev_attr_2 (da);struct max16065_data *data =max16065_update_device (dev); -int val = data->fault[attr2->nr]; +int val =READ_ONCE (data->fault[attr2->nr]);if (val <0 )return val;
@@ -203,7 +203,7 @@ static ssize_t max16065_input_show(struct device *dev, {struct sensor_device_attribute *attr =to_sensor_dev_attr (da);struct max16065_data *data =max16065_update_device (dev); -int adc = data->adc[attr->index]; +int adc =READ_ONCE (data->adc[attr->index]);if (unlikely (adc <0 ))return adc;
@@ -216,7 +216,7 @@ static ssize_t max16065_current_show(struct device *dev, struct device_attribute *da, char *buf) { struct max16065_data *data = max16065_update_device(dev); -int curr_sense = data->curr_sense; +int curr_sense =READ_ONCE (data->curr_sense);if (unlikely (curr_sense <0 ))return curr_sense;
drivers/hwmon/max6639.c +60 -23
114 lines not on this page · raw message
drivers/i2c/busses/i2c-i801.c +10 -4
@@ -303,9 +303,10 @@ struct i801_priv {/* * If set to true the host controller registers are reserved for -* ACPI AML use. +* ACPI AML use. Needs extra protection by acpi_lock. */ bool acpi_reserved; +struct mutex acpi_lock; };#define FEATURE_SMBUS_PEC BIT(0)
@@ -893,8 +894,11 @@ static s32 i801_access(struct i2c_adapter *adap, u16 addr,int hwpec, ret;struct i801_priv *priv =i2c_get_adapdata (adap); -if (priv->acpi_reserved) +mutex_lock (&priv->acpi_lock); +if (priv->acpi_reserved) { +mutex_unlock (&priv->acpi_lock);return -EBUSY ; + }pm_runtime_get_sync (&priv->pci_dev->dev);
@@ -935,6 +939,7 @@ static s32 i801_access(struct i2c_adapter *adap, u16 addr,pm_runtime_mark_last_busy (&priv->pci_dev->dev);pm_runtime_put_autosuspend (&priv->pci_dev->dev); +mutex_unlock (&priv->acpi_lock);return ret; }
@@ -1586,7 +1591,7 @@ i801_acpi_io_handler(u32 function, acpi_physical_address address, u32 bits,* further access from the driver itself. This device is now owned * by the system firmware. */ -i2c_lock_bus (&priv->adapter,I2C_LOCK_SEGMENT ); +mutex_lock (&priv->acpi_lock);if (!priv->acpi_reserved &&i801_acpi_is_smbus_ioport (priv, address)) { priv->acpi_reserved = true;
@@ -1606,7 +1611,7 @@ i801_acpi_io_handler(u32 function, acpi_physical_address address, u32 bits,else status =acpi_os_write_port (address, (u32)*value, bits); -i2c_unlock_bus (&priv->adapter,I2C_LOCK_SEGMENT ); +mutex_unlock (&priv->acpi_lock);return status; }
@@ -1666,6 +1671,7 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) priv->adapter.dev.parent = &dev->dev;acpi_use_parent_companion (&priv->adapter.dev); priv->adapter.retries =3 ; +mutex_init (&priv->acpi_lock); priv->pci_dev = dev; priv->features = id->driver_data;
drivers/infiniband/hw/irdma/verbs.c +1 -1
@@ -4589,7 +4589,7 @@ static int irdma_create_user_ah(struct ib_ah *ibah,#define IRDMA_CREATE_AH_MIN_RESP_LEN offsetofend(struct irdma_create_ah_resp, rsvd) struct irdma_ah *ah = container_of(ibah, struct irdma_ah, ibah);struct irdma_device *iwdev =to_iwdev (ibah->pd->device); -struct irdma_create_ah_resp uresp; +struct irdma_create_ah_resp uresp = {};struct irdma_ah *parent_ah;int err;
drivers/infiniband/hw/mthca/mthca_provider.c +3 -2
@@ -428,6 +428,8 @@ static int mthca_create_srq(struct ib_srq *ibsrq,if (context &&ib_copy_to_udata (udata, &srq->srqn,sizeof (__u32))) {mthca_free_srq (to_mdev (ibsrq->device), srq); +mthca_unmap_user_db (to_mdev (ibsrq->device), &context->uar, + context->db_tab, ucmd.db_index);return -EFAULT ; }
@@ -436,6 +438,7 @@ static int mthca_create_srq(struct ib_srq *ibsrq,static int mthca_destroy_srq (struct ib_srq *srq,struct ib_udata *udata) { +mthca_free_srq (to_mdev (srq->device),to_msrq (srq));if (udata) {struct mthca_ucontext *context = rdma_udata_to_drv_context(
@@ -446,8 +449,6 @@ static int mthca_destroy_srq(struct ib_srq *srq, struct ib_udata *udata)mthca_unmap_user_db (to_mdev (srq->device), &context->uar, context->db_tab,to_msrq (srq)->db_index); } - -mthca_free_srq (to_mdev (srq->device),to_msrq (srq));return 0 ; }
drivers/input/mouse/synaptics_i2c.c +8 -5
@@ -372,7 +372,7 @@ static irqreturn_t synaptics_i2c_irq(int irq, void *dev_id) {struct synaptics_i2c *touch = dev_id; -mod_delayed_work (system_wq, &touch->dwork,0 ); +mod_delayed_work (system_dfl_wq, &touch->dwork,0 );return IRQ_HANDLED ; }
@@ -448,7 +448,7 @@ static void synaptics_i2c_work_handler(struct work_struct *work)* We poll the device once in THREAD_IRQ_SLEEP_SECS and * if error is detected, we try to reset and reconfigure the touchpad. */ -mod_delayed_work (system_wq, &touch->dwork, delay); +mod_delayed_work (system_dfl_wq, &touch->dwork, delay); }static int synaptics_i2c_open (struct input_dev *input)
@@ -461,7 +461,7 @@ static int synaptics_i2c_open(struct input_dev *input)return ret;if (polling_req) -mod_delayed_work (system_wq, &touch->dwork, +mod_delayed_work (system_dfl_wq, &touch->dwork,msecs_to_jiffies (NO_DATA_SLEEP_MSECS ));return 0 ;
@@ -615,13 +615,16 @@ static int synaptics_i2c_resume(struct device *dev)int ret;struct i2c_client *client =to_i2c_client (dev);struct synaptics_i2c *touch =i2c_get_clientdata (client); +struct input_dev *input = touch->input; ret =synaptics_i2c_reset_config (client);if (ret)return ret; -mod_delayed_work (system_wq, &touch->dwork, -msecs_to_jiffies (NO_DATA_SLEEP_MSECS )); +guard (mutex)(&input->mutex); +if (input_device_enabled (input)) +mod_delayed_work (system_dfl_wq, &touch->dwork, +msecs_to_jiffies (NO_DATA_SLEEP_MSECS ));return 0 ; }
drivers/iommu/intel/pasid.c +8 -0
@@ -867,6 +867,14 @@ static void __context_flush_dev_iotlb(struct device_domain_info *info)if (!info->ats_enabled)return ; +/* +* Skip dev-IOTLB flush for inaccessible PCIe devices to prevent the +* Intel IOMMU from waiting indefinitely for an ATS invalidation that +* cannot complete. +*/ +if (!pci_device_is_present (to_pci_dev (info->dev))) +return ; +qi_flush_dev_iotlb (info->iommu,PCI_DEVID (info->bus, info->devfn), info->pfsid, info->ats_qdep,0 ,MAX_AGAW_PFN_WIDTH );
drivers/irqchip/irq-sifive-plic.c +6 -1
@@ -154,8 +154,13 @@ static void plic_irq_disable(struct irq_data *d)static void plic_irq_eoi (struct irq_data *d) {struct plic_handler *handler =this_cpu_ptr (&plic_handlers); +u32 __iomem *reg; +bool enabled; + + reg = handler->enable_base + (d->hwirq /32 ) *sizeof (u32); + enabled =readl (reg) &BIT (d->hwirq %32 ); -if (unlikely (irqd_irq_disabled (d))) { +if (unlikely (!enabled)) {plic_toggle (handler, d->hwirq,1 );writel (d->hwirq, handler->hart_base +CONTEXT_CLAIM );plic_toggle (handler, d->hwirq,0 );
drivers/mailbox/mailbox.c +66 -66
211 lines not on this page · raw message
drivers/media/dvb-core/dmxdev.c +3 -1
@@ -168,7 +168,9 @@ static int dvb_dvr_open(struct inode *inode, struct file *file)mutex_unlock (&dmxdev->mutex);return -ENOMEM ; } -dvb_ringbuffer_init (&dmxdev->dvr_buffer, mem,DVR_BUFFER_SIZE ); + dmxdev->dvr_buffer.data = mem; + dmxdev->dvr_buffer.size =DVR_BUFFER_SIZE ; +dvb_ringbuffer_reset (&dmxdev->dvr_buffer);if (dmxdev->may_do_mmap)dvb_vb2_init (&dmxdev->dvr_vb2_ctx,"dvr" , file->f_flags &O_NONBLOCK );
drivers/media/i2c/Kconfig +1 -1
@@ -748,7 +748,7 @@ config VIDEO_AK7375 config VIDEO_DW9714 tristate "DW9714 lens voice coil support" - depends on I2C && VIDEO_DEV + depends on GPIOLIB && I2C && VIDEO_DEV select MEDIA_CONTROLLER select VIDEO_V4L2_SUBDEV_API select V4L2_ASYNC
drivers/media/i2c/dw9714.c +42 -14
111 lines not on this page · raw message
drivers/memory/mtk-smi.c +3 -0
@@ -564,6 +564,7 @@ static int mtk_smi_larb_probe(struct platform_device *pdev) err_pm_disable:pm_runtime_disable (dev);device_link_remove (dev, larb->smi_common_dev); +put_device (larb->smi_common_dev);return ret;
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/etas_es58x/es58x_core.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/f81604.c +40 -5
45 lines not on this page · raw message
drivers/net/ethernet/amd/xgbe/xgbe-common.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +0 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/defines.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ich8lan.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +24 -17
41 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_trace.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_txrx.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +16 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_txrx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_main.c +28 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_rx.c +19 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c +28 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c +20 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +12 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/icssg/icssg_prueth.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rsi/rsi_91x_mac80211.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-designware-ep.c +28 -10
Lines of this file are not shown. View the raw message.
drivers/pci/endpoint/pci-epc-core.c +134 -48
182 lines not on this page · raw message
drivers/pinctrl/cirrus/pinctrl-cs42l43.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/pinctrl/pinctrl-equilibrium.c +19 -12
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c +0 -1
Lines of this file are not shown. View the raw message.
fs/btrfs/block-group.c +35 -8
43 lines not on this page · raw message
fs/btrfs/zoned.c +259 -12
271 lines not on this page · raw message
fs/ext4/ext4.h +16 -27
43 lines not on this page · raw message
fs/ext4/mballoc.c +399 -319
718 lines not on this page · raw message
include/linux/platform_data/max6639.h deleted +0 -15
Lines of this file are not shown. View the raw message.
kernel/events/core.c +41 -1
42 lines not on this page · raw message
kernel/kexec_core.c +54 -0
54 lines not on this page · raw message
net/netfilter/nft_set_pipapo.c +43 -8
51 lines not on this page · raw message
net/sched/act_ife.c +44 -49
93 lines not on this page · raw message
security/apparmor/apparmorfs.c +134 -91
225 lines not on this page · raw message
security/apparmor/include/policy_unpack.h +45 -30
75 lines not on this page · raw message
security/apparmor/match.c +42 -16
58 lines not on this page · raw message
security/apparmor/policy.c +67 -10
77 lines not on this page · raw message
security/apparmor/policy_unpack.c +37 -12
49 lines not on this page · raw message
security/integrity/ima/ima_kexec.c +128 -20
148 lines not on this page · raw message
tools/testing/kunit/kunit_tool_test.py +26 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/arm64/abi/hwcap.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kselftest_harness.h +12 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +13 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/simult_flows.sh +7 -4
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.