6.6.158-rc1 review
Subsystems (4)
Greg Kroah-Hartman
maintainercover 6.6.158-rc1 review
This is the start of the stable review cycle for the 6.6.158 release. There are 1193 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri, 02 Oct 2026 15:23:04 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.158-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.6.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.6.158-rc1
Breno Leitao <[email protected]>
net: mediatek: Fix potential NULL pointer dereference in dummy net_device handling
Thorsten Blum <[email protected]>
crypto: atmel-ecc - avoid stale fallback key after set_secret failure
Fourie Zhang <[email protected]>
netfilter: nf_tables: don't queue packet path object notifications
Florian Westphal <[email protected]>
netfilter: nf_tables: place base_seq in struct net
Yang Li <[email protected]>
netfilter: nft_set_rbtree: Remove unused variable nft_net
Bryam Vargas <[email protected]>
crypto: virtio - bound the akcipher result length
Lukas Wunner <[email protected]>
crypto: virtio - Drop superfluous [as]kcipher_req pointer
Lukas Wunner <[email protected]>
crypto: virtio - Drop superfluous [as]kcipher_ctx pointer
Lukas Wunner <[email protected]>
crypto: virtio - Drop sign/verify operations
Markus Elfring <[email protected]>
crypto: virtio - Less function calls in __virtio_crypto_akcipher_do_req() after error detection
Eric Dumazet <[email protected]>
vlan: fix skb_under_panic and races when toggling HW VLAN offload
Jakub Kicinski <[email protected]>
vlan: defer real device state propagation to netdev_work
Kyle Zeng <[email protected]>
net/packet: defer vmalloc TX_RING free until skbs finish
Qing Ming <[email protected]>
gtp: serialize PDP context updates
Breno Leitao <[email protected]>
usb: xhci: bail out of setup if the controller is inaccessible
Niklas Neronin <[email protected]>
usb: xhci: simplify handling of Structural Parameters 1 values
Niklas Neronin <[email protected]>
usb: xhci: use cached HCSPARAMS1 value
Niklas Neronin <[email protected]>
usb: xhci: implement USB Port Register Set struct
Niklas Neronin <[email protected]>
usb: xhci: add USB Port Register Set struct
Niklas Neronin <[email protected]>
usb: xhci: add helper to read PORTSC register
Niklas Neronin <[email protected]>
usb: xhci: add tracing for PORTSC register writes
Denis Arefev <[email protected]>
ALSA: hda: Fix missing pointer check in hda_component_manager_init function
Guangshuo Li <[email protected]>
drm/amdgpu/atom: Check kcalloc() for WS buffer in amdgpu_atom_execute_table_locked()
Rengarajan S <[email protected]>
lan78xx: Enable Auto Speed and Auto Duplex configuration for LAN7801 if NO EEPROM is detected
Rengarajan S <[email protected]>
lan78xx: Enable 125 MHz CLK configuration for LAN7801 if NO EEPROM is detected
Florian Eckert <[email protected]>
tools/thermal/tmon: Fix compilation warning for wrong format
Chunguang Xu <[email protected]>
nvme-fabrics: use reserved tag for reg read/write command
James Clark <[email protected]>
perf test: Change all remaining #!/bin/sh to #!/bin/bash
Dan Carpenter <[email protected]>
drm/mediatek: Fix potential NULL dereference in mtk_crtc_destroy()
Alex Hung <[email protected]>
drm/amd/display: Validate function returns
Alex Hung <[email protected]>
drm/amd/display: Check null pointers before using them
Alex Hung <[email protected]>
drm/amd/display: Ensure array index tg_inst won't be -1
Allen Pan <[email protected]>
drm/amd/display: Add a dc_state NULL check in dc_state_release
Baochen Qiang <[email protected]>
wifi: ath12k: check M3 buffer size as well whey trying to reuse it
Baochen Qiang <[email protected]>
wifi: ath12k: fix kernel crash during resume
Jakub Kicinski <[email protected]>
net: tls: fix silent data drop under pipe back-pressure
Li Ming <[email protected]>
cxl/mem: Fix no cxl_nvd during pmem region auto-assembling
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Defer work in bpf_timer_cancel_and_free
Yonghong Song <[email protected]>
bpf: Fail verification for sign-extension of packet data/data_end/data_meta
Darrick J. Wong <[email protected]>
xfs: fix blockgc group quota scanning when usrquota isn't enforced
Zihan Xi <[email protected]>
smb: client: validate POSIX create context length
Zihan Xi <[email protected]>
smb: client: fix create context out-of-bounds reads
Hui Peng <[email protected]>
Bluetooth: RFCOMM: fix NULL dereference of dlc->session in RFCOMM_CONNINFO
Aldo Ariel Panzardo <[email protected]>
Bluetooth: mgmt: fix race in read_unconf_index_list()
Aldo Ariel Panzardo <[email protected]>
Bluetooth: L2CAP: validate frame length before control and FCS access
Aldo Ariel Panzardo <[email protected]>
Bluetooth: ISO: balance the parent hold in hci_bind_bis()
Aldo Ariel Panzardo <[email protected]>
Bluetooth: hci_sock: reject out-of-range OCF values
Aldo Ariel Panzardo <[email protected]>
Bluetooth: hci_sock: validate event length before filtering
Aldo Ariel Panzardo <[email protected]>
Bluetooth: hci_conn: fix CIS hold ownership on reuse
Tan Chi <[email protected]>
RISC-V: KVM: Fix HSM hart status error propagation
Myeonghun Pak <[email protected]>
RISC-V: KVM: Synchronize hrtimer callback during teardown
Vineeth Vijayan <[email protected]>
s390/cio: Fix NULL pointer dereference in ccw_device_get_util_str()
Myeonghun Pak <[email protected]>
pinctrl: single: free the IRQ on domain creation failure
Yehyeong Lee <[email protected]>
scsi: libiscsi_tcp: Check the data direction of a Data-In PDU
Doruk Tan Ozturk <[email protected]>
nfc: port100: reject frames whose declared length exceeds the received data
Aamir Ahmed <[email protected]>
nfc: llcp: drop truncated I/RR/RNR PDUs in nfc_llcp_recv_hdlc()
Luxiao Xu <[email protected]>
nfc: fix use-after-free in nfc_get_local_general_bytes
Luxiao Xu <[email protected]>
netfilter: ip6t_rt: fix zero-address non-strict match out-of-bounds read
Weiming Shi <[email protected]>
netfilter: ip6t_rpfilter: reject routes without inet6_dev
Wentao Liang <[email protected]>
net: usb: lan78xx: Fix URB reference leak in lan78xx_submit_deferred_urbs()
Ming Wang <[email protected]>
net: usb: cdc_mbim: add MeiG Smart SRM821 to ZLP whitelist
Gajdos Tamás <[email protected]>
net: atl1e: fix soft lockup on out-of-range hw_next_to_clean read
Gajdos Tamás <[email protected]>
net: atl1c: fix soft lockup on out-of-range tpd_cons read
Ilya Maximets <[email protected]>
net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry
Wentao Liang <[email protected]>
net: hisilicon: hns_dsaf_mac: fix mdio device leak in hns_mac_register_phy()
Gajdos Tamás <[email protected]>
net: atl1: fix soft lockup on out-of-range cmb_tpd_next_to_clean read
Zijie Huang <[email protected]>
net: arp: terminate device name before lookup
Weiming Shi <[email protected]>
net/sched: reject IDR error pointers when deleting actions
Ralf Lici <[email protected]>
net/mlx5e: advertise MACsec offload only when supported
Wentao Liang <[email protected]>
net/mlx5: Fix rev_entry reference leak in mlx5_tc_ct_shared_counter_get()
Wei Jie LAW <[email protected]>
HID: wacom: fix OOB read in wacom_wac_pen_serial_enforce()
Junjie Cao <[email protected]>
HID: quirks: add ALWAYS_POLL quirk for SDINNOVATION gaming keyboard
Chen Changcheng <[email protected]>
HID: alps: fix use-after-free on input2 registration failure
Angel J <[email protected]>
PCI: of_property: Omit bus properties without a subordinate bus
Karl Mehltretter <[email protected]>
gpio: tps65219: Fix GPIO input value reads
Peiyang He <[email protected]>
drm/virtio: fix NULL pointer dereference on fence allocation failure
Peiyang He <[email protected]>
drm/virtio: fix memory leak of fence event on execbuffer failure
Peiyang He <[email protected]>
drm/nouveau: don't bump pin count on failed re-pin in nouveau_bo_pin_locked()
Wentao Liang <[email protected]>
drm/nouveau: Fix gem reference leak in validate_init()
Peiyang He <[email protected]>
drm/nouveau: fix double-free in nvif_vmm_dtor
Wentao Liang <[email protected]>
drm/nouveau: Fix bridge reference leak in nv1a_ram_new()
Guangshuo Li <[email protected]>
drm/nouveau: fix autosuspend cleanup during teardown
Wentao Liang <[email protected]>
drm/amdgpu: Fix vmid_wait fence leak in amdgpu_ring_init()
Wentao Liang <[email protected]>
drm/amdgpu: Fix runtime PM leak in amdgpu_debugfs_test_ib_show()
Wentao Liang <[email protected]>
drm/amdgpu: Fix last_update fence leak in amdgpu_vm_init()
Wentao Liang <[email protected]>
drm/amd/display: Fix dc stream excess put in dm_update_crtc_state()
Christian König <[email protected]>
drm/i915: fix incorrect RCU teardown order
Dongliang Qin <[email protected]>
rds: ib: Clear the sg list when mapping an MR fails
Zixuan Chai <[email protected]>
llc: reserve device headroom for allocated frames
Ridham Khurana <[email protected]>
gpio: zynq: fix runtime PM leak on request error path
Wentao Liang <[email protected]>
gpio: arizona: Fix runtime PM leak in arizona_gpio_direction_out()
Hui Peng <[email protected]>
ipv6: sr: enforce exact attribute length for SEG6_ATTR_DST
Norbert Szetei <[email protected]>
ipv6: do not let ipv6_find_hdr() return an offset past the packet end
Wentao Liang <[email protected]>
fsl/fman: Fix clk reference leak in read_dts_node()
Josef Bacik <[email protected]>
writeback: report a Tasks-RCU quiescent state per cgwb drain pass
Pavankumar Kondeti <[email protected]>
workqueue: Fix NULL current_pwq deref in flush dependency check
Patrick Lu (Anthropic) <[email protected]>
writeback: bound cleanup_offline_cgwb() rescans by rotating scanned inodes
Hui Peng <[email protected]>
fou: reject omitted FOU_ATTR_IPPROTO on FOU_ENCAP_DIRECT
Matthias Goergens <[email protected]>
ata: libata-scsi: bound the ATA passthru sense descriptor writes
Dairui Zhang <[email protected]>
af_packet: fix integer overflow in prb_calc_retire_blk_tmo()
Aohan Mei <[email protected]>
sctp: discard the rest of the packet on a stale-cookie error
Eric Dumazet <[email protected]>
tipc: reject invalid and unexpected GRP_ACK_MSG to prevent bc_ackers underflow
Mario Limonciello <[email protected]>
x86/PCI: Disable enhanced atomics on AMD NBIO 7.7 and 7.11
Kuniyuki Iwashima <[email protected]>
af_unix: Drop all SCM attributes for SOCKMAP.
Pablo Neira Ayuso <[email protected]>
netfilter: nf_tables: join hook list via splice_list_rcu() in commit phase
Pablo Neira Ayuso <[email protected]>
rculist: add list_splice_rcu() for private lists
Mark Amirkan <[email protected]>
mptcp: return sk_wait_data() errors from recvmsg()
Sean Christopherson <[email protected]>
perf/x86/intel: Make @data a mandatory param for intel_guest_get_msrs()
Sean Christopherson <[email protected]>
perf/x86/intel: Don't pointlessly context switch DS_AREA (and PEBS config) if PEBS is unused
Sean Christopherson <[email protected]>
perf/x86/intel: Don't write PEBS_ENABLED on host<=>guest xfers if CPU has PEBS isolation, to fix stuck PEBS_ENABLED
Sean Christopherson <[email protected]>
perf/x86/intel: Ensure KVM guest PEBS path doesn't set unwanted PERF_GLOBAL_CTRL bits
Hui Peng <[email protected]>
autofs: fix sbi->pipe file reference leak in autofs_kill_sb()
Eric Dumazet <[email protected]>
vlan: ensure sufficient headroom in vlan_dev_hard_header()
Eric Dumazet <[email protected]>
net/sched: sch_teql: fix shadowed err in __teql_resolve()
Eric Dumazet <[email protected]>
bridge: check llc_mac_hdr_init() return value in br_send_bpdu()
Eric Dumazet <[email protected]>
llc: fix skb UAF and leaks on llc_mac_hdr_init() failure
Coia Prant <[email protected]>
net: ethernet: stmmac: dwmac-rk: fix bulk clock leak when the PHY clock fails
Ginger Li <[email protected]>
tipc: Fix a data race on mon->peer_cnt in mon_timeout()
Sidraya Jayagond <[email protected]>
net/smc: fix UAF on lgr list traversal in smcr_port_err()
Sang-Hoon Choi <[email protected]>
nfp: hold IPsec RX state under the XArray lock
Yilin Zhang <[email protected]>
tcp: fix use-after-free of retransmit_skb_hint in tcp_send_synack()
Aleksei Sviridkin <[email protected]>
net: dsa: mt7530: fix NULL dereference on unbind of MT7531 and MT7621
David Dai <[email protected]>
bonding: crypto offload enabled, non-offload slave failover, rekey failed
Norbert Szetei <[email protected]>
net: xps: reject an out of range traffic class
Sanghyun Park <[email protected]>
vxlan: use one headroom snapshot for neighbour replies
Xuanqiang Luo <[email protected]>
ip_gre: Reject enabling collect metadata through changelink
Florian Fainelli <[email protected]>
net: bcmgenet: mask DMA_TIMEOUT_MASK when reading DMA_RING0_TIMEOUT
Florian Fainelli <[email protected]>
net: bcmgenet: validate Ethernet address in bcmgenet_set_mac_addr
Florian Fainelli <[email protected]>
net: bcmgenet: do not skip WoL power up on GENET V1
Doug Berger <[email protected]>
net: bcmgenet: allow return of power up status
Doug Berger <[email protected]>
net: bcmgenet: move bcmgenet_power_up into resume_noirq
Florian Fainelli <[email protected]>
net: bcmgenet: initialize u64 stats seq counter for all queues
Florian Fainelli <[email protected]>
net: bcmgenet: fix 64-bit RTNL stats reading in ethtool on 32-bit systems
Ivan Delalande <[email protected]>
tg3: use random MAC address when tg3_get_device_address fails
Dragan Simic <[email protected]>
driver core: Add device probe log helper dev_warn_probe()
Uwe Kleine-König <[email protected]>
driver core: Make dev_err_probe() silent for -ENOMEM
Uwe Kleine-König <[email protected]>
driver core: Better advertise dev_err_probe()
Johan Almbladh <[email protected]>
bpf: Fix BSWAP 32 and 16 on MIPS64
Johan Almbladh <[email protected]>
bpf: Fix immediate JMP JEQ/JNE on MIPS32
Ido Schimmel <[email protected]>
vrf: Stop corrupting skb->csum when capturing CHECKSUM_COMPLETE packets
Shihuang Liu <[email protected]>
net: skbuff: fix pull-bound underflow in skb_checksum_setup_ipv6()
Jakub Kicinski <[email protected]>
veth: manage XDP program pointers during channel resize
Victor Nogueira <[email protected]>
net/sched: act_gate: budget the per-entry list in get_fill_size
Deepanshu Kartikey <[email protected]>
nfc: pn533: fix OOB read in pn533_acr122_is_rx_frame_valid()
Ömer Mete Kaya <[email protected]>
nfc: llcp: fix slab-out-of-bounds reads when logging service names
Ömer Mete Kaya <[email protected]>
nfc: llcp: fix WKS SAP hijacking via prefix match in nfc_llcp_wks_sap()
Ömer Mete Kaya <[email protected]>
nfc: llcp: fix -ENOMEM on connect with zero-length service name
Pengpeng Hou <[email protected]>
nfc: st21nfca: validate ISO15693 inventory length
Cong Nguyen <[email protected]>
nfc: llcp: fix sdreq TLV list leak on parse/alloc/send failure
Chris Gellermann <[email protected]>
nfc: virtual_ncidev: Add missing ioctl compat handler
Chris Gellermann <[email protected]>
selftests/nci: Fix out-of-bounds store on thread join
Chaithanya Lagisetty <[email protected]>
selftests: nci: Fix uninitialized family ID on missing attribute
Lee Jones <[email protected]>
nfc: llcp: Fix race condition in accept_queue lifecycle
Lei Zhu <[email protected]>
selftests: nci: Correct pthread_create return value check
Aldo Ariel Panzardo <[email protected]>
nfc: llcp: Fix list corruption / refcount desync in nfc_llcp_recv_dm()
Pengpeng Hou <[email protected]>
nfc: st21nfca: validate received frame size
Pengpeng Hou <[email protected]>
nfc: nfcmrvl: validate helper command length before pull
Weiming Shi <[email protected]>
bpf: Reject dev-bound-only programs on other devices
Maxime Chevallier <[email protected]>
net: stmmac: dwmac4: Use the correct bufzise when the len is exactly 8K
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Capture all packets for vlan checks
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Check the dev->features for S-TAG offload testing
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Support running selftests on DSA conduits
Xin Long <[email protected]>
sctp: hold asoc or transport before mod_timer() in timer handlers
Bernardo Soares <[email protected]>
net/mlx5: Bridge, don't fail unlink of untracked/unsupported peer ports
Bernardo Soares <[email protected]>
net/mlx5: Bridge, don't fail switchdev events of sibling eswitch ports
Zhao Gongyi <[email protected]>
bpf, sockmap: Reject max_entries > INT_MAX in sock_map_alloc
Emil Tsalapatis <[email protected]>
bpf: Fix bpf_sock context code generation
Emil Tsalapatis <[email protected]>
bpf: Fix bounds check for skb-backed dynptrs
Jakub Kicinski <[email protected]>
genetlink: report the real command id for dump-only ops in policy dumps
bui duc phuc <[email protected]>
net: ethernet: ti: netcp: fix pm_runtime usage counter leak on error
Mikhail Zaslonko <[email protected]>
s390/debug: Fix NULL pointer dereference in debug_info_copy()
Mikhail Zaslonko <[email protected]>
s390/debug: Do not register views for failed static debug areas
Myeonghun Pak <[email protected]>
tg3: clean up PHYLIB resources on probe failure
Pengpeng Hou <[email protected]>
net: usb: sr9700: include receive overhead in the length check
Hui Peng <[email protected]>
Bluetooth: RFCOMM: Reject short EA=0 frames in rfcomm_recv_frame()
Hui Peng <[email protected]>
Bluetooth: bnep: fix out-of-bounds reads on short RX/TX frames and control fallthrough
Li Youhong <[email protected]>
drm/bridge: samsung-dsim: fix TE GPIO lifetime for host attach
Junrui Luo <[email protected]>
drm/virtio: release the GEM object on virtio_gpu_vram_create() errors
Junrui Luo <[email protected]>
drm/virtio: fix object leaks in virtio_gpu_resource_create_blob_ioctl()
Junrui Luo <[email protected]>
drm/virtio: fix object leak in virtio_gpu_resource_create_ioctl()
Junrui Luo <[email protected]>
drm/virtio: fix object leak when drm_gem_handle_create() fails
Jamal Hadi Salim <[email protected]>
net/sched: sch_hfsc: bound the classify inner-filter walk with a drift budget
Aamir Ahmed <[email protected]>
net: usb: catc: bound the RX packet length in catc_rx_done()
Yiqi Sun <[email protected]>
sctp: avoid livelock while updating retransmit path
Kuniyuki Iwashima <[email protected]>
ip6_gre: Call ip6erspan_tunnel_unlink_md() in ip6erspan_changelink().
Lorenzo Bianconi <[email protected]>
net: ethernet: mtk_eth_soc: unregister net_devices in case of probe failure
Breno Leitao <[email protected]>
net: mediatek: mtk_eth_sock: allocate dummy net_device dynamically
Breno Leitao <[email protected]>
net: create a dummy net_device allocator
Breno Leitao <[email protected]>
net: core: Fix documentation
Amit Cohen <[email protected]>
net: Do not return value from init_dummy_netdev()
Jérémy Jean <[email protected]>
net: gue: reject invalid REMCSUM offsets
Nguyen Ngoc Thang <[email protected]>
net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure
Francesco Magazzu <[email protected]>
drm/nouveau/clk: don't clobber reclock status when restoring volt/fan
Dan Carpenter <[email protected]>
drm/nouveau/clk: fix list cursor use after loop in nvkm_clk_ustate_update
Joseph Qi <[email protected]>
ocfs2: make ocfs2_calc_xattr_init() return void
Zeng Heng <[email protected]>
arm64: io: Reject non-user protection in ioremap_prot()
Naman Gulati <[email protected]>
netfilter: ctnetlink: fix suspicious RCU usage in expect_iter_name
Julian Anastasov <[email protected]>
ipvs: revalidate ihl before icmp_send
Karl Mehltretter <[email protected]>
netfilter: nft_synproxy: use the family-aware checksum helper
Florian Westphal <[email protected]>
netfilter: nfnetlink_queue: hold nfnl mutex in event notifier
Scott Mitchell <[email protected]>
netfilter: nfnetlink_queue: nfqnl_instance GFP_ATOMIC -> GFP_KERNEL_ACCOUNT allocation
Jérémy Jean <[email protected]>
netfilter: flowtable: publish HW_DEAD after worker is done
Kumar Kartikeya Dwivedi <[email protected]>
libbpf: Reject truncated ldimm64 CO-RE relocations
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Restrict CO-RE poisoning to relocatable instructions
Jamal Hadi Salim <[email protected]>
net/sched: cls_u32: fix manual hash table handle IDR aliasing
Weiming Shi <[email protected]>
bpf: Skip unsettled links in link iterator
Zhiling Zou <[email protected]>
xsk: Use a 32-bit compare in xsk_map_gen_lookup
Julian Sun <[email protected]>
fs: avoid repeated scans in evict_inodes()
Vineeth Vijayan <[email protected]>
s390/cio: Guard PMCW field accesses with dnv check
Vineeth Vijayan <[email protected]>
s390/cio: Check pmcw.dnv before pmcw.ena in I/O entry points
Vineeth Vijayan <[email protected]>
s390/cio: Fix cio_update_schib() to not cache invalid schib
Karl Mehltretter <[email protected]>
s390/pci/docs: Fix sriov_numvfs attribute name
Niklas Schnelle <[email protected]>
docs: s390/pci: Improve and update PCI documentation
Bart Van Assche <[email protected]>
scsi: megaraid_sas: Protect megasas_get_ctrl_info() in megasas_resume()
Eva Kurchatova <[email protected]>
selftests: cgroup: give the O_TMPFILE open in get_temp_fd() a mode
Sean Christopherson <[email protected]>
cgroup: selftests: Move memcontrol specific helpers out of common cgroup_util.c
Lee Jones <[email protected]>
Bluetooth: mgmt: Dequeue pending mesh_send_sync entries on cancel
Christiano Amora <[email protected]>
Bluetooth: SMP: reject Security Request over BR/EDR
Ran Hongyun <[email protected]>
squashfs: Add dictionary size range check to prevent shift-out-of-bounds
Karl Mehltretter <[email protected]>
KVM: arm64: Return -EINVAL for an empty SMCCC filter range at base 0
Fuad Tabba <[email protected]>
KVM: arm64: vgic-its: Skip unreachable devices instead of failing the save
Marc Zyngier <[email protected]>
KVM: arm64: vgic-its: Add stronger type-checking to the ITS entry sizes
Slawomir Stepien <[email protected]>
HID: amd_sfh: Validate PCI BAR size before mapping
Sean Anderson <[email protected]>
pinctrl: meson: Fix typo in s4 group name
Geliang Tang <[email protected]>
bpf, sockmap: Fix self-redirect copied_seq double-counting
Jiayuan Chen <[email protected]>
bpf: Fix out-of-bounds read of rtt_min in sock_ops
Jose Fernandez (Anthropic) <[email protected]>
bpf: Avoid soft lockup in __htab_map_lookup_and_delete_batch()
Oscar Priego Verdugo <[email protected]>
HID: elecom: fix bus type for M-XGL20DLBK
Jiayuan Chen <[email protected]>
tcp: Skip cond_resched() in inet_csk_listen_stop() under BPF context
Jiayuan Chen <[email protected]>
bpf: Fix out-of-bounds read of sk_protocol in bpf_sock_destroy()
Jiayuan Chen <[email protected]>
bpf: Fix divide-by-zero in btf_struct_walk()
Sven Schnelle <[email protected]>
selftests/ftrace: Fix unique symbol check in kprobe_non_uniq_symbol.tc
Weiming Shi <[email protected]>
bpf: Disallow bpf_skb_pull_data() for LWT_SEG6LOCAL
Daniel Borkmann <[email protected]>
bpf: Fix bpf_skb_change_tail wrt csum partial skbs
Claudio Imbrenda <[email protected]>
KVM: s390: Fix IRQ injection with SIGP Stop and Store Status
Mostafa Saleh <[email protected]>
remoteproc: qcom_q6v5_adsp: Fix iommu_unmap() usage
Phil Sutter <[email protected]>
netfilter: nf_tables: Simplify chain netdev notifier
Phil Sutter <[email protected]>
netfilter: nf_tables: Tolerate chains with no remaining hooks
Helge Deller <[email protected]>
apparmor: Fix 8-byte alignment for initial dfa blob streams
Gaosheng Cui <[email protected]>
apparmor: Fix memory leak in unpack_profile()
Fedor Pchelkin <[email protected]>
apparmor: free the allocated pdb objects
Wenwu Hou <[email protected]>
erofs: fix large folio race in erofs_fscache_req_complete
Jinjie Ruan <[email protected]>
spi: zynqmp-gqspi: Use devm_spi_alloc_host()
Mickaël Salaün <[email protected]>
selftests/landlock: Add layout1.refer_mount_root
Itai Handler <[email protected]>
spi: spi-zynqmp-gqspi: stop the controller on shutdown
Namjae Jeon <[email protected]>
ksmbd: fix partial normalized name responses
Eric Dumazet <[email protected]>
ipv6: mcast: fix RCU list diversion in ip6_mc_del1_src()
Eric Dumazet <[email protected]>
ipv6: mcast: use copy-on-write RCU updates in ip6_mc_source()
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for MCAST_ socket options.
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for IPV6_DROP_MEMBERSHIP and MCAST_LEAVE_GROUP.
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for IPV6_ADD_MEMBERSHIP and MCAST_JOIN_GROUP.
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Use in6_dev_get() in ipv6_dev_mc_dec().
Frank Sorenson <[email protected]>
smb: client: fix missing iov bounds check in parse_posix_sids()
Frank Sorenson <[email protected]>
smb: client: fix missing lower-bound check on DFS referral string offsets
Frank Sorenson <[email protected]>
smb: client: fix server->total_read for compound encrypted PDUs
Frank Sorenson <[email protected]>
smb: client: fix potential OOB read in smb3_enum_snapshots()
Frank Sorenson <[email protected]>
smb: client: fix next_buffer UAF and NextCommand bounds in compound PDUs
Paulo Alcantara <[email protected]>
smb: client: fix smbd_connection leak on cifs_get_tcp_session() error
Frank Sorenson <[email protected]>
smb: client: reject short Next offsets in parse_server_interfaces()
Paulo Alcantara <[email protected]>
smb: client: fix rlist race and missing initialization
Paulo Alcantara <[email protected]>
smb: client: cancel reconnect work in clean_demultiplex_info()
Guangshuo Li <[email protected]>
drm/msm/hdmi_phy: fix runtime PM cleanup on probe failure
Guangshuo Li <[email protected]>
drm/msm/adreno: fix autosuspend cleanup during teardown
Sajal Gupta <[email protected]>
drm/gud: fix out-of-bounds write in gud_plane_atomic_check()
Rik van Riel <[email protected]>
wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver
Zhao Li <[email protected]>
wifi: mwifiex: validate action frame fixed fields
Pengpeng Hou <[email protected]>
wifi: mwifiex: validate scan response extents
Doruk Tan Ozturk <[email protected]>
wifi: mwifiex: bound the pairwise-cipher OUI walk to the IE length
Shengzhuo Wei <[email protected]>
wifi: p54: require a full exp_if record in PDR_INTERFACE_LIST
Shengzhuo Wei <[email protected]>
wifi: p54: validate curve data length in the calibration curve converters
Tianchu Chen <[email protected]>
wifi: wilc1000: fix RX buffer OOB-write in wilc_wlan_handle_isr_ext()
Ali Ahmet Memis <[email protected]>
wifi: wilc1000: fix out-of-bounds read in P2P public action frames
Runyu Xiao <[email protected]>
wifi: wlcore: release runtime PM ref on regdomain config failure
Tianchu Chen <[email protected]>
wifi: rsi: fix heap OOB write on key removal
Jiangshan Yi <[email protected]>
wifi: libertas_tf: fix UAF in lbtf_free_adapter()
Stanislaw Gruszka <[email protected]>
wifi: iwlegacy: fix broadcast stations deallocation
Jiangshan Yi <[email protected]>
wifi: brcmsmac: fix UAF in brcms_free_timer()
Wentao Liang <[email protected]>
watchdog: starfive-wdt: Fix runtime PM leak in starfive_wdt_pm_start()
Wentao Liang <[email protected]>
watchdog: sp5100_tco: Fix pci_dev reference leak in sp5100_tco_init()
Tzung-Bi Shih <[email protected]>
watchdog: rtd119x: Avoid division by zero
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Propagate error code in resume()
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Fix premature reset during timeout update
Tzung-Bi Shih <[email protected]>
watchdog: digicolor: Avoid division by zero
Li Jun <[email protected]>
watchdog: da9063: fix suspend/resume handling of HW_RUNNING watchdog
Guangshuo Li <[email protected]>
hwmon: (w83793) release probe data through kref
Guangshuo Li <[email protected]>
hwmon: (w83791d) remove fan/pwm 4-5 sysfs group on remove
Sanman Pradhan <[email protected]>
hwmon: (pmbus/tps53679) Select page 0 for single-page TPS53676
Sanman Pradhan <[email protected]>
hwmon: (pmbus/tps53679) Fix TPS53676 phase page decoding
Nuno Sá <[email protected]>
hwmon: (pmbus/core) increase number of phases and add new mask
Muhammad Bilal <[email protected]>
hwmon: (hp-wmi-sensors) Fix use-after-free in fungible_show()
Iván Ezequiel Rodriguez <[email protected]>
Input: zero ff_effect before compat copy in input_ff_effect_from_user
Dmitry Torokhov <[email protected]>
Input: synaptics-rmi4 - fix GPF in suspend and resume when unbound
Raphaël Larocque <[email protected]>
Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
Hans de Goede <[email protected]>
Input: soc_button_array - check btns_desc->package.count
Hans de Goede <[email protected]>
Input: soc_button_array - fix MS Surface Pro 11 probe failure
Dmitry Torokhov <[email protected]>
Input: rmi_smbus - fix out-of-bounds read in rmi_smb_write_block()
Chris Sommers <[email protected]>
Input: i8042 - add quirk for Acer Aspire Go 15 AG15-42P
Iván Ezequiel Rodriguez <[email protected]>
Input: evdev - zero absinfo before partial copy in EVIOCSABS
Linkai Gong <[email protected]>
Input: cyttsp5 - clamp the HID report size before memcpy
Alexei Turtanov <[email protected]>
Input: atkbd - skip deactivate for Xiaomi Redmi Book Pro 16 2026
Alvin Šipraga <[email protected]>
Input: adp5588-keys - cache GPIO state before registering the gpiochip
Diogo Ivo (Schneider Electric) <[email protected]>
mmc: sdhci_am654: Reset command and data lines on failed tuning
Xu Rao <[email protected]>
mmc: spi: reset bytes_xfered before retrying CRC failures
Runyu Xiao <[email protected]>
mmc: sh_mmcif: initialize IRQ-thread mutex before requesting interrupt
Felix Gu <[email protected]>
mmc: sdio_uart: fix xmit_fifo leak when the port table is full
Myeonghun Pak <[email protected]>
mmc: sdhci-of-aspeed: Remove children before releasing SDC resources
Florian Maillard <[email protected]>
mmc: rtsx_pci_sdmmc: ignore broken write-protect on ThinkPad X260
Fan Wu <[email protected]>
mmc: mxcmmc: cancel data work and watchdog on remove
Fan Wu <[email protected]>
mmc: hsq: Fix use-after-free in retry work
Zhu Ling <[email protected]>
mmc: core: Fix OF node reference leak on card add failure
Fan Wu <[email protected]>
mmc: core: Cancel SDIO IRQ work before freeing host
Christian Göttsche <[email protected]>
selinux: always fill AVC decision in avc_has_perm_noaudit()
Karl Mehltretter <[email protected]>
selinux: recheck intermediate backing files on mprotect()
Karl Mehltretter <[email protected]>
selinux: preserve user SID across nested backing files
Shuhei Takeshita <[email protected]>
IB/hfi1: Fix the PIO_CRED credit-return mmap
Shuhei Takeshita <[email protected]>
IB/hfi1: Resolve the credit-return buffer through the send context's node
Shuangpeng Bai <[email protected]>
IB/mlx4: Fix use-after-free on pkey sysfs registration failure
Guangshuo Li <[email protected]>
i2c: imx: disable autosuspend on remove
Shengzhuo Wei <[email protected]>
i2c: imx: release DMA channels on probe error
Linkai Gong <[email protected]>
i2c: atr: fix dangling adapter pointer on add failure
Shengzhuo Wei <[email protected]>
i2c: at91: release DMA channels on remove and probe error
Jarkko Sakkinen <[email protected]>
KEYS: trusted: Fix tpm2_load_cmd() boundary check
Maoyi Xie <[email protected]>
keys: translate request_key_auth pid for the reading procfs instance
Shakeel Butt <[email protected]>
mm/mlock: use the IRQ-safe accessor for NR_MLOCK in __munlock_folio()
Yifei Gao <[email protected]>
memstick: ms_block: destroy io_queue workqueue on removal
Chengfeng Ye <[email protected]>
xfrm: serialize state GC with device state flush
Alberto Carboneri <[email protected]>
scsi: core: Validate MODE SENSE lengths in scsi_cdl_enable()
Mark Amirkan <[email protected]>
net/packet: avoid truncating TPACKET_V3 private size
Mark Amirkan <[email protected]>
net/packet: clear RX owner on VNET header error
Jamal Hadi Salim <[email protected]>
net/sched: hhf: cap hh_flows_limit at change time
Guanglei Zhu <[email protected]>
net: wwan: mhi_wwan_mbim: check skb_copy_bits() return value
Guanglei Zhu <[email protected]>
net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain
Guanglei Zhu <[email protected]>
net: wwan: t7xx: validate the netif index in t7xx_ccmni_recv_skb()
Mark Amirkan <[email protected]>
net: lan743x: fix RX checksum use-after-free
Zhiling Zou <[email protected]>
ipv6: xfrm: use full sockets in local error paths
Alexander Chesnokov <[email protected]>
dmaengine: ti: k3-udma-glue: fix NULL dereference in k3_udma_glue_release_rx_chn()
Christian Lugnberg <[email protected]>
dmaengine: sun6i: fix undefined behaviour in sun6i_dma_tx_status
Christian Lugnberg <[email protected]>
dmaengine: sun6i: fix non-atomic read of DMA position registers
Chengfeng Ye <[email protected]>
Bluetooth: hci_sync: Serialize local codec list cleanup
Laxman Acharya Padhya <[email protected]>
Bluetooth: hci_codec: validate vendor codec count length
Aamir Ahmed <[email protected]>
Bluetooth: eir: validate service data length before reading UUID
Nicolas Thibert <[email protected]>
Bluetooth: btusb: fix NXP IW610 composite device handling
Mark Rutland <[email protected]>
arm64: percpu: Fix this_cpu_and() mask generation
Mark Rutland <[email protected]>
arm64: percpu: Fix this_cpu_write() casting
Koichiro Den <[email protected]>
arm64: dts: renesas: r8a779f0: Set UFS lane count
Bradley Morgan <[email protected]>
arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
Thomas Huth <[email protected]>
kselftest/arm64: Fix size of thread_data values for pthread_join()
Benoît Sevens <[email protected]>
HID: logitech-hidpp: fix race condition when accessing stale stack pointer
Wyatt Feng <[email protected]>
net: xfrm: reject unrepresentable espintcp transport headers
Zhiling Zou <[email protected]>
openvswitch: avoid reallocating confirmed conntrack labels
Jeffin Philip <[email protected]>
RDMA/core: fix refcount bug in iwpm_get_nlmsg_request()
Quanye Yang <[email protected]>
RDMA/ucma: Serialize join and leave on copy_to_user failure
Inbal Schussheim <[email protected]>
tcp: exclude old ACKs from tcp fast path
Aohan Mei <[email protected]>
rds: ib: use rds_conn_drop() on protocol version mismatch
Hyunwoo Kim <[email protected]>
exec: Cleanup POSIX timers right after de_thread()
Wentao Liang <[email protected]>
cifs: Fix server use-after-free in cifs_chan_skip_or_disable()
Niklas Cassel <[email protected]>
ata: libahci: clear PxCLBU and PxFBU for AHCI_HFLAG_32BIT_ONLY
Jiangshan Yi <[email protected]>
ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
Yuho Choi <[email protected]>
ALSA: virtio: reset device before deleting virtqueues
Jeremy Nyberg <[email protected]>
Input: xpad - fix PDP Marvel Xbox 360 controller
Roberts Kursitis <[email protected]>
Input: xpad - add support for Azeron devices
Erich Sartison <[email protected]>
Input: xpad - add support for Victrix Pro BFG Controller
Bitterblue Smith <[email protected]>
wifi: rtw88: Fix the random "error beacon valid" messages for USB
Bitterblue Smith <[email protected]>
wifi: rtw88: TX QOS Null data the same way as Null data
Kevin Hao <[email protected]>
net: cpsw: Execute ndo_set_rx_mode callback in a work queue
Kevin Hao <[email protected]>
net: cpsw_new: Execute ndo_set_rx_mode callback in a work queue
Zi Yan <[email protected]>
mm/huge_memory: use folio's memcg inside __folio_split()
Filipe Manana <[email protected]>
btrfs: abort transaction on failure to update inode for hole punching and reflinking
Filipe Manana <[email protected]>
btrfs: remove redundant root argument from btrfs_update_inode()
Filipe Manana <[email protected]>
btrfs: simplify error check condition at btrfs_dirty_inode()
Dmitriy Chumachenko <[email protected]>
drm/amdgpu: check ras and obj before dereference
Dmitriy Okunev <[email protected]>
net: mvpp2: prevent buffer overflow in page_pool allocation
James Clark <[email protected]>
net: macb: fix ordering around PTP timestamp read
Linus Walleij <[email protected]>
net: ethernet: cortina: Ack RX overrun interrupt correctly
Eric Dumazet <[email protected]>
net: lock the socket in sock_gettstamp()
Yige Jiang <[email protected]>
net: netsec: fix device_node reference leak on phy_np
HyeongJun An <[email protected]>
ASoC: hdmi-codec: Report a change when the channel status moves
Sasha Levin <[email protected]>
ASoC: ux500: Parenthesize MSP_{RX,TX}_CLKPOL_BIT() arguments
Shivaprasad G Bhat <[email protected]>
powerpc/iommu: Fix the overflow validation in iommu_tce_check_ioba
Amit Machhiwal <[email protected]>
KVM: PPC: Book3S HV: fix secure device page leak on uv_page_in() failure
Amit Machhiwal <[email protected]>
KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()
Eric Dumazet <[email protected]>
drop_monitor: fix out-of-bounds write in reset_per_cpu_data()
Eric Dumazet <[email protected]>
drop_monitor: synchronize tracepoint unregistration on error path
Eric Dumazet <[email protected]>
pppoatm: ensure a writable skb header and linear data
Juan Perdomo <[email protected]>
Bluetooth: RFCOMM: avoid socket lock inversion in listener cleanup
Tzung-Bi Shih <[email protected]>
Bluetooth: btmtksdio: Fix PM runtime reference leak in shutdown
Chris Lu <[email protected]>
Bluetooth: btmtk: fix wrong status for short WMT FUNC_CTRL events
Luiz Augusto von Dentz <[email protected]>
Bluetooth: ISO: Fix parent socket leak in iso_conn_ready()
Baineng Shou <[email protected]>
dmaengine: mmp_pdma: fix wrong sg length in mmp_pdma_prep_slave_sg()
Namjae Jeon <[email protected]>
ksmbd: keep compound responses on query info errors
Namjae Jeon <[email protected]>
ksmbd: fix partial file information responses
Namjae Jeon <[email protected]>
ksmbd: return buffer overflow for partial filesystem info
Eric Dumazet <[email protected]>
tcp: do not let tcp_rmem be set below 4096
Kuniyuki Iwashima <[email protected]>
tcp: Don't call skb_clone_and_charge_r() for close()d listener in tcp_v6_do_rcv().
Nikolay Aleksandrov <[email protected]>
net: bridge: mst: move switchdev call outside rcu
Karl Mehltretter <[email protected]>
wifi: brcmfmac: fix lost 802.1x TX completion wakeup
Hohyun Sim <[email protected]>
net: fddi: skfp: fix NULL deref when setting the MAC address while down
Dong Chenchen <[email protected]>
ipv4: icmp: reject RTN_UNREACHABLE input routes in icmp_route_lookup
Andrea Mayer <[email protected]>
seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation
Dmitry Baryshkov <[email protected]>
drm/msm/dsi: round the byte clock rate after reparenting to the PHY PLL
Filipe Manana <[email protected]>
btrfs: tree-checker: print dev extent offset in error message
Slavin Liu <[email protected]>
ALSA: hda: trace PCM open only after assigning a stream
Karl Mehltretter <[email protected]>
drm/vc4: Use managed KMS polling to fix UAF on unbind
Thomas Zimmermann <[email protected]>
drm/ast: Automatically clean up poll helper
Zihan Xi <[email protected]>
wifi: virt_wifi: don't transfer operstate before register
Xiang Mei <[email protected]>
ALSA: 6fire: fix OOB write from device-reported iso length
Takashi Iwai <[email protected]>
ALSA: usb: 6fire: Avoid embedded URBs
Takashi Iwai <[email protected]>
ALSA: 6fire: Clean ups with guard()
Karl Mehltretter <[email protected]>
Input: trackpoint - fix the inertia attribute name in the ABI document
Nguyen Ngoc Thang <[email protected]>
ALSA: pcm: set timer->private_data before registering the PCM timer
AngeloGioacchino Del Regno <[email protected]>
phy: mediatek: phy-mtk-hdmi-mt8195: Fix TMDS clk bit ratio setting
AngeloGioacchino Del Regno <[email protected]>
phy: mediatek: phy-mtk-hdmi-mt8195: Fix PLL calc divisor overflow
Takashi Iwai <[email protected]>
ALSA: bcd2000: Fix race between rawmidi and disconnect
Karl Mehltretter <[email protected]>
keys: fix lost wakeup when reaping a dead key type
Thadeu Lima de Souza Cascardo <[email protected]>
drm: Fix drm_pending_vblank_event leak in error path for out_fence_ptr
Shouping Wang <[email protected]>
perf/arm-cmn: Fix wp_dev_sel2 setting for multi-DTM configurations
Pablo Neira Ayuso <[email protected]>
netfilter: flowtable: hold reference on ct until flow is released
Theodor Arsenij Larionov Trichkine <[email protected]>
netfilter: nft_nat: fully initialise new_addr in netmap setup
Jérémy Jean <[email protected]>
RDMA/siw: Bound fragmented header copies by the remaining length
Leon Romanovsky <[email protected]>
RDMA/efa: Keep EQ resources alive while IRQ is registered
Leon Romanovsky <[email protected]>
RDMA/efa: Keep admin queues alive while IRQ is registered
Alex Bereza <[email protected]>
dmaengine: xilinx_dma: Fix hardware buffer descriptor chain after cyclic DMA
Alex Bereza <[email protected]>
dmaengine: xilinx_dma: Fix hardware buffer descriptor reuse order
Karl Mehltretter <[email protected]>
scsi: qla2xxx: Fix the ql2xfc2target parameter description
Meijing Zhao <[email protected]>
mm: memblock: show all region flags in debugfs
Johannes Berg <[email protected]>
wifi: mac80211: set up the TX info early to fix failure paths
Johannes Berg <[email protected]>
wifi: mac80211: rework ack_frame_id handling a bit
Johannes Berg <[email protected]>
wifi: mac80211: mesh: release the channel if start fails
Johannes Berg <[email protected]>
wifi: mac80211: add HE 6 GHz capability in the scan elems len
Johannes Berg <[email protected]>
wifi: mac80211: don't access the TSF of a down interface
Johannes Berg <[email protected]>
wifi: mac80211: don't RCU-dereference the mesh CSA settings we just set
Johannes Berg <[email protected]>
wifi: mac80211: don't allow link changes when iface is down
Johannes Berg <[email protected]>
wifi: mac80211: require a peer station for TDLS setup confirm
Johannes Berg <[email protected]>
wifi: mac80211: reset the AP_VLAN tailroom counter on ifdown
Johannes Berg <[email protected]>
wifi: mac80211_hwsim: don't hand frames to mac80211 while stopping
Johannes Berg <[email protected]>
wifi: mac80211: unlist vifs when their netdev is unregistered
Johannes Berg <[email protected]>
wifi: mac80211: suppress chanctx warning for debugfs reset
Johannes Berg <[email protected]>
wifi: mac80211: don't offload TC setup on AP_VLAN interfaces
Johannes Berg <[email protected]>
wifi: cfg80211: don't filter by BSS type when removing stale entries
Johannes Berg <[email protected]>
wifi: cfg80211: only group hidden BSSes with beacon entries
Shivank Garg <[email protected]>
dmaengine: wait for RCU readers before releasing dma_device
Shivank Garg <[email protected]>
dmaengine: fix use-after-free in dma_chan_put() and dma_release_channel()
Shivank Garg <[email protected]>
dmaengine: Fix device kref underflow in dma_chan_put()
Donggeun Yoo <[email protected]>
dma-coherent: report a failed reserved memory assignment
Chen-Yu Tsai <[email protected]>
dma-coherent: Warn if OF reserved memory is beyond current coherent DMA mask
Orgad Shaneh <[email protected]>
MIPS: Octeon: apply USB FDT fixups also when USB is modular
Bard Liao <[email protected]>
soundwire: cadence_master: wait and cancel cdns->work before clock stop
Johannes Berg <[email protected]>
wifi: cfg80211: check IP header size in cfg80211_classify8021d()
Carolina Jubran <[email protected]>
IB/IPoIB: Avoid restoring OPER_UP after multicast flush
Shmulik Cohen <[email protected]>
wifi: libipw: reject too-short association responses
Shmulik Cohen <[email protected]>
wifi: libipw: reject too-short beacon and probe responses
Peng Hao <[email protected]>
wifi: mwifiex: fix IRQ leak using wrong index in MSI-X error path
Mariano Baragiola <[email protected]>
wifi: virt_wifi: free skb when disconnected
Ruoyu Wang <[email protected]>
dmaengine: sprd: Fix runtime PM reference leak in probe
Quanye Yang <[email protected]>
RDMA/rtrs-clt: Fix CQ pool leak when connect is interrupted
Jacob Moroni <[email protected]>
RDMA/irdma: Enforce local fence for IB_WR_REG_MR
Li RongQing <[email protected]>
RDMA/mad: Fix receive buffer leak when PKey enforcement fails
Yehyeong Lee <[email protected]>
IB/isert: wait for deferred control PDU completions before releasing the connection
Yehyeong Lee <[email protected]>
IB/iser: reject a remote invalidation of an unregistered direction
Krystian Kaniewski <[email protected]>
RDMA/core: Reject unregistering netdevs in ib_get_eth_speed
Eric Dumazet <[email protected]>
net: convert dev->reg_state to u8
Michael Bommarito <[email protected]>
RDMA/rxe: insert mcg into mcg_tree only after rxe_mcast_add() succeeds
Xixin Liu <[email protected]>
clk: scpi: bound-check DVFS index in scpi_dvfs_recalc_rate
Xixin Liu <[email protected]>
firmware: arm_scpi: reject DVFS OPP count above MAX_DVFS_OPPS
Gang Yan <[email protected]>
RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access
Norbert Szetei <[email protected]>
RDMA/rxe: validate access flags before swapping the MR's PD
Guoqing Jiang <[email protected]>
RDMA/siw: Clear association under lock if siw_qp_modify fails in siw_accept
Guoqing Jiang <[email protected]>
RDMA/siw: Cleanup siw_accept
Guoqing Jiang <[email protected]>
RDMA/siw: Introduce siw_cep_set_free_and_put
Pengpeng Hou <[email protected]>
ARM: socfpga: select the PL310 erratum 753970 workaround
Maher Azzouzi <[email protected]>
esp: downgrade zerocopy managed frags before mutating skb frags
Eric Dumazet <[email protected]>
xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()
Kyle Zeng <[email protected]>
xfrm: fix compat ALLOCSPI request use-after-free
Sabrina Dubroca <[email protected]>
xfrm: avoid RCU warnings around the per-netns netlink socket
Ido Schimmel <[email protected]>
ipv6: Honor oif when choosing nexthop for locally generated traffic
Ido Schimmel <[email protected]>
ipv6: Select best matching nexthop object in fib6_table_lookup()
Arash Golgol <[email protected]>
media: video-i2c: fix buffer queue ordering
Jens Axboe <[email protected]>
sunvdc: fix -EIO issue due to lack of retries
Günther Noack <[email protected]>
selftests/landlock: Add tests for whiteout object creation
Sasha Levin <[email protected]>
Revert "alpha: fix ieee_swcr_to_fpcr setting FPCR_DNOD unconditionally"
Sasha Levin <[email protected]>
Revert "alpha: don't leak hardware-fabricated FP exception bits to user space"
Mickaël Salaün <[email protected]>
selftests/landlock: Add disconnected leafs and branch test suites
Tingmao Wang <[email protected]>
selftests/landlock: Add tests for access through disconnected paths
Sasha Levin <[email protected]>
Revert "hwmon: (emc1403) Rely on subsystem locking"
Sasha Levin <[email protected]>
Revert "hwmon: (emc1403) Drop hysteresis for low limit temperature"
Paolo Abeni <[email protected]>
mptcp: close race between scheduler and state change
Paolo Abeni <[email protected]>
mptcp: avoid unneeded actions on subflow reset
Paolo Abeni <[email protected]>
mptcp: fix bad accounting in __mptcp_subflow_push_pending()
Kiran K <[email protected]>
Bluetooth: btintel: Fix compiler warning for multi_v7_defconfig config
Mallesh Koujalagi <[email protected]>
workqueue: Update documentation as per system_percpu_wq naming
Eric Biggers <[email protected]>
netfilter: nft_set_pipapo_avx2: add missing vzeroupper
Eric Biggers <[email protected]>
crypto: sun8i-ce - Remove crypto_rng interface
Eric Biggers <[email protected]>
crypto: sun8i-ss - Remove crypto_rng interface
Xuanqiang Luo <[email protected]>
fou: Fix use-after-free in fou_create()
Weiming Shi <[email protected]>
net: appletalk: fix NULL pointer dereference in aarp_send_ddp()
Weiming Shi <[email protected]>
i2c: smbus: reject oversized block transfers in the common path
Kazuki Hanai <[email protected]>
ALSA: us122l: Prevent write upgrades for read mappings
Gary Guo <[email protected]>
net: usb: pegasus: don't rely on id table pointer arithmetic
Gary Guo <[email protected]>
media: as102: do not rely on id table address comparison
Gary Guo <[email protected]>
usb: serial: spcp8x5: don't store usb_device_id
Gary Guo <[email protected]>
usb: usbtmc: don't store usb_device_id
Gary Guo <[email protected]>
wifi: ath9k_htc: don't store usb_device_id
Gary Guo <[email protected]>
usb: xusbatm: don't rely on id table pointer arithmetic
Ian Rogers <[email protected]>
perf evsel: Add per-thread warning for EOPNOTSUPP open failues
Sasha Levin <[email protected]>
Revert "perf tests: Fix flakiness in BPF counters test on hybrid systems"
Sasha Levin <[email protected]>
Revert "selftests/mm: report unique test names for each cow test"
Sasha Levin <[email protected]>
Revert "selftests/mm: skip COW tmpfile cases when fallocate() is unsupported"
Sasha Levin <[email protected]>
Revert "nvme: apple: Add Apple A11 support"
Sasha Levin <[email protected]>
Revert "nvme-apple: Drop the PRP null check chicken bit"
Sasha Levin <[email protected]>
Revert "nvme-apple: Prevent shared tags across queues on Apple A11"
Sasha Levin <[email protected]>
Revert "nvme-apple: Reset q->sq_tail during queue init"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sc8180x: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sdm845: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8150: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8250: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8350: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8450: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8550: Fix the PCIe iommu-map entries"
Darrick J. Wong <[email protected]>
xfs: bail out on bitmap errors in xrep_agfl_fill
Darrick J. Wong <[email protected]>
xfs: count escaped corruption errors in scrub stats
Darrick J. Wong <[email protected]>
xfs: signal inode btree xref error if get_rec returns an error
Darrick J. Wong <[email protected]>
xfs: snapshot old AGFL before rewriting it
Darrick J. Wong <[email protected]>
xfs: snapshot scrub stats when rendering them
Bjoern Doebel <[email protected]>
smb: client: fix heap overflow in DACL owner/group rewrite
Bjoern Doebel <[email protected]>
smb: client: avoid leaking refcount when cifs_sb_tlink() fails
Bjoern Doebel <[email protected]>
smb: client: avoid leaking refcount in cifs_queue_oplock_break()
Paulo Alcantara <[email protected]>
smb: client: fix file type corruption in wsl_to_fattr()
Paulo Alcantara <[email protected]>
smb: client: fix file type corruption in cifs_reparse_point_to_fattr()
Paulo Alcantara <[email protected]>
smb: client: fix one-byte OOB read in smb2_parse_native_symlink()
Karl Mehltretter <[email protected]>
smb: client: pin DFS superblock in iterator callback
Aohan Mei <[email protected]>
smb: client: reject userspace cifs.idmap descriptions
Gang Yan <[email protected]>
selftests: mptcp: fix an UAF in mptcp_connect.c
Matthieu Baerts (NGI0) <[email protected]>
mptcp: syncookies: remember the request backup flag
Matthieu Baerts (NGI0) <[email protected]>
mptcp: subflow: no need to copy thmac during ulp_clone
Matthieu Baerts (NGI0) <[email protected]>
mptcp: options: handle MPC data + csum reqd + no csum
Joe Damato <[email protected]>
bnxt_en: Propagate RX ring init failures in bnxt_init_nic()
Joe Damato <[email protected]>
bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()
Joe Damato <[email protected]>
bnxt_en: Only restore LRO if the device supports TPA
Michael Bommarito <[email protected]>
media: v4l2-ctrls: validate AV1 tile counts
Michael Bommarito <[email protected]>
media: v4l2-ctrls: validate HEVC tile counts
Michael Bommarito <[email protected]>
media: verisilicon: rockchip: reject AV1 frames exceeding the tile capacity
Michael Bommarito <[email protected]>
media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer
Haotian Zhang <[email protected]>
media: v4l2-h264: Fix memcmp() size in B1 reference list comparison
Michael Bommarito <[email protected]>
media: mediatek: vcodec: bound AV1 tile-start copy to the array capacity
Michael Bommarito <[email protected]>
media: verisilicon: hantro: bound G2 HEVC tile loop to the buffer capacity
Michael Bommarito <[email protected]>
media: hevc: add bounded tile-count helpers
Vishnu Razdan <[email protected]>
hwmon: (pmbus) Clear generic status alarms with CLEAR_FAULTS
Fan Wu <[email protected]>
hwmon: (gpio-fan) Fix use-after-free in alarm work
Cong Nguyen <[email protected]>
hwmon: (applesmc) fix key backlight workqueue leak on register failure
Harald Freudenberger <[email protected]>
s390/crypto: Fix missing scrub of temp buffers with AES ctr and gcm algorithm
Nagamani PV <[email protected]>
s390/qeth: allow bridgeport queries despite OS_MISMATCH
leixiang <[email protected]>
KVM: PPC: Book3S HV: Set irqfd->producer only on success
Ibrahim Hashimov <[email protected]>
mac802154: fix use-after-free of sdata via queued RX frames
Kyle Zeng <[email protected]>
ipvs: reject invalid states in connection template sync records
Zihan Xi <[email protected]>
ipv4: fib: bound automatic table ID allocation
David Carlier <[email protected]>
ieee802154: hwsim: serialize pib updates to fix double-free
Zhiling Zou <[email protected]>
ieee802154: 6lowpan: fix NULL dereference in lowpan_newlink
Yilin Zhang <[email protected]>
inet: frags: invalidate queues before flushing them
Weiming Shi <[email protected]>
fbdev: vfb: defer cleanup until the last reference
Nathan Chancellor <[email protected]>
scripts/sorttable: Mark long_size as __maybe_unused
Xiong Weimin <[email protected]>
vdpa: solidrun: Free IRQs after request failure
Xiong Weimin <[email protected]>
vdpa: ifcvf: Put device on unsupported feature error
Ilya Maximets <[email protected]>
netfilter: report NLM_F_DUMP_FILTERED when all is filtered out
Chengfeng Ye <[email protected]>
netfilter: nf_log: unregister loggers before per-net teardown
Norbert Szetei <[email protected]>
net: openvswitch: fix use-after-free of the flow table mask array
Fourie Zhang <[email protected]>
net: mpls: clear inner_protocol when the last label is popped
Sahil Chandna <[email protected]>
net: mana: Reserve extra CQ slot for the fence completion CQE
Johan Hovold <[email protected]>
net: hso: fix TIOCMIWAIT race
Sebastian Andrzej Siewior <[email protected]>
ring-buffer: Acquire the lock with irqsave in rb_wake_up_waiters()
Thorsten Blum <[email protected]>
drm/i915: Fix memory leak in query_perf_config_list()
Sunil Khatri <[email protected]>
drm/drm_exec: fix up contended obj when num_objects is 0
Jann Horn <[email protected]>
exec: do_close_on_exec() before taking exec_update_lock
Runyu Xiao <[email protected]>
cpufreq: initialize policy rwsem before sysfs publication
Zhongqiu Han <[email protected]>
cpufreq: zero-initialize policy cpumask before sysfs publication
Rong Zhang <[email protected]>
Bluetooth: btrtl: Don't leak return code when parsing firmware format v2
Runyu Xiao <[email protected]>
ASoC: sti: initialize IRQ lock before requesting IRQ
Tianchu Chen <[email protected]>
ASoC: sprd: validate compress buffer sizes against fixed allocations
Donggeun Yoo <[email protected]>
tracing: Keep the entry count when the histogram stats allocation fails
Donggeun Yoo <[email protected]>
tracing: Let histogram values keep the percent and graph modifiers
Donggeun Yoo <[email protected]>
tracing: Free histogram the field rejected for a bad modifier
Donggeun Yoo <[email protected]>
tracing: Free histogram var refs regardless of how often they are referenced
Donggeun Yoo <[email protected]>
tracing: Free histogram the var ref when its initialization fails
Henry Martin <[email protected]>
tracing/user_events: Don't destroy fields when event removal fails
Thomas Gleixner <[email protected]>
tick/broadcast: Plug clockevents replacement race
Ido Schimmel <[email protected]>
tunnels: Drop stale dst when building an ICMP error for PMTUD
Ali Ahmet Memis <[email protected]>
ufs: validate cylinder group metadata before caching it
Ali Ahmet Memis <[email protected]>
ufs: create the root dentry after loading cylinder metadata
James Hilliard <[email protected]>
watchdog: sunxi_wdt: preserve boot-enabled watchdog
Harry Wentland <[email protected]>
dm/amdgpu: fix malformed link_settings debugfs output
Tristan Madani <[email protected]>
ALSA: usbusx2y: fix in04_last array size mismatch with in04_buf
Roman Prucha <[email protected]>
ALSA: ctxfi: Fix CA20K2 S/PDIF passthrough
Donggeun Yoo <[email protected]>
tracing: Fix memory corruption from the histogram stacktrace modifier
Zihan Xi <[email protected]>
ipv6: fix fib6 walker UAF on seq stop
Vernon Yang <[email protected]>
x86/mm: Fix user-space data loss with MADV_FREE and THP
Eric Biggers <[email protected]>
crypto: x86/aria - add missing vzeroupper in AVX-512 code
Eric Biggers <[email protected]>
crypto: x86/aria - add missing vzeroupper in AVX2 code
Shivaprasad G Bhat <[email protected]>
powerpc/eeh: Fix recursive locking on devices without EEH sensitive driver
Thorsten Blum <[email protected]>
powerpc/ps3: Fix repository.c build failure
Namjae Jeon <[email protected]>
ksmbd: prevent out-of-bounds reads in share config responses
Maurizio Lombardi <[email protected]>
scsi: target: iscsi: Fix hang for aborted WRITE_PENDING commands
Stian Halseth <[email protected]>
sunvdc: unmap LDC cookies when the descriptor send fails
Eelco Chaudron <[email protected]>
openvswitch: fix wrong flag value in get_ipv6_ext_hdrs()
Greg Marsden <[email protected]>
net/rds: fix tcp stream corruption with large pages
Ratheesh Kannoth <[email protected]>
octeontx2-af: fix PF/CGX debugfs PCI bus lookup
Aamir Ahmed <[email protected]>
net: hinic: fix mailbox segment buffer overflow
Li Youhong <[email protected]>
net: sun4i-emac: fix missing of_node_put() for phy_node
Kuniyuki Iwashima <[email protected]>
net/sched: cls_api: Don't replay RTM_GETCHAIN in tc_ctl_chain().
Victor Nogueira <[email protected]>
net/sched: cls_route: Fix in-place replace
Pedro Tammela <[email protected]>
net/sched: cls_route: make netlink errors meaningful
Victor Nogueira <[email protected]>
net/sched: cls_route: Reject handle aliasing
Victor Nogueira <[email protected]>
net/sched: cls_route: free emptied bucket on filter move
Dapeng Mi <[email protected]>
perf/x86/intel: Correct pt_regs->flags update for PEBS path
Dapeng Mi <[email protected]>
perf/x86/intel/ds: Factor out PEBS group processing code to functions
Changbin Du <[email protected]>
perf/x86/intel/ds: Remove redundant assignments to sample.period
Kan Liang <[email protected]>
perf/x86/intel/ds: Clarify adaptive PEBS processing
Yabin Cui <[email protected]>
perf/core: Check sample_type in perf_sample_save_callchain
Thibault Ferrante <[email protected]>
selftests/powerpc/tm: Fix tcheck() reading uninitialised CR value
Lorenzo Bianconi <[email protected]>
net: stmmac: initialize ptp_lock at probe time
Qingfang Deng <[email protected]>
ppp_synctty: ensure a writeable skb header
Eric Dumazet <[email protected]>
vxlan: initialize _md in vxlan_xmit_one()
Guillaume Nault <[email protected]>
vxlan: Pull inner IP header in vxlan_xmit_one().
Beniamino Galvani <[email protected]>
vxlan: use generic function for tunnel IPv6 route lookup
Beniamino Galvani <[email protected]>
ipv6: add new arguments to udp_tunnel6_dst_lookup()
Beniamino Galvani <[email protected]>
ipv6: remove "proto" argument from udp_tunnel6_dst_lookup()
Beniamino Galvani <[email protected]>
vxlan: use generic function for tunnel IPv4 route lookup
Ratheesh Kannoth <[email protected]>
octeontx2-pf: reset HTB scheduler topology before freeing queues
Pengpeng Hou <[email protected]>
hwmon: (aspeed-pwm-tacho) Propagate reset deassert errors
Cong Nguyen <[email protected]>
hwmon: (gpio-fan) take fan_data->lock in gpio_fan_shutdown()
Marek Vasut <[email protected]>
net: ks8851: Fix receiver error in 100BASE-TX mode following software power-down
Yicong Hui <[email protected]>
net/micrel: Fix typos in micrel driver code comments
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Sync timeout value if WDT was running at boot
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Fix undefined behavior
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Fix spurious reset on suspend
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Enable clock before accessing hardware registers
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Fix clock leak and spurious timer in settimeout()
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Avoid division by zero
David Arcari <[email protected]>
watchdog: fix hrtimer start when pretimeout is zero
Nicolai Buchwitz <[email protected]>
net: macb: destroy the phylink instance on the probe error path
Luiz Augusto von Dentz <[email protected]>
Bluetooth: btusb: Fix UAF of btusb_data by rx_work
Jacob Keller <[email protected]>
ice: add missing xa_destroy for sched_node_ids
HyeongJun An <[email protected]>
ALSA: hda: Report a change when only the channel status bytes move
Takashi Iwai <[email protected]>
ALSA: hda/common: Use guard() for mutex locks
Takashi Iwai <[email protected]>
ALSA: hda/common: Use cleanup macros for PM controls
Takashi Iwai <[email protected]>
ALSA: hda: Introduce auto cleanup macros for PM
Karl Mehltretter <[email protected]>
drm/logicvc: Drop the select of the nonexistent CONFIG_DRM_KMS_DMA_HELPER
Linus Walleij <[email protected]>
net: ethernet: cortina: Count RX descriptors for freeq refill
Linus Walleij <[email protected]>
net: ethernet: cortina: Count RX drops once per frame
Linus Walleij <[email protected]>
net: ethernet: cortina: No mapping is a dropped rx
Linus Walleij <[email protected]>
net: ethernet: cortina: Count dropped frames as NAPI work
Linus Walleij <[email protected]>
net: ethernet: cortina: Finish RX updates before NAPI completion
Linus Walleij <[email protected]>
net: ethernet: cortina: Fix budget accounting
Alice Mikityanska <[email protected]>
net: ipv6: Clamp to IP6_MAX_MTU in ip6_dst_mtu_maybe_forward
Alice Mikityanska <[email protected]>
net: ipv6: Fix UDP length overflow with PMTU discover and big MTU
Eric Dumazet <[email protected]>
ipv6: lockless IPV6_MTU implementation
Eric Dumazet <[email protected]>
ipv6: lockless IPV6_MULTICAST_HOPS implementation
Eric Dumazet <[email protected]>
ipv6: lockless IPV6_MULTICAST_LOOP implementation
Eric Dumazet <[email protected]>
ipv6: lockless IPV6_UNICAST_HOPS implementation
Karl Mehltretter <[email protected]>
virtio_input: stop callbacks before unregistering input device
Xiong Weimin <[email protected]>
virtio_input: reset device if input_register_device() fails
Andrew Stellman <[email protected]>
virtio-pci: return IRQ_HANDLED after non-zero ISR
Linfeng Sun <[email protected]>
vdpa_sim_net: check TX pull result before RX copy
Linfeng Sun <[email protected]>
vdpa_sim_blk: reject out-of-range sector starts
Yu Zhang <[email protected]>
vhost-vdpa: don't install the eventfd_ctx_fdget() error in config_ctx
Jia Jia <[email protected]>
vhost/vdpa: reject VRING_NUM larger than device max
Si-Wei Liu <[email protected]>
vhost-vdpa: clean iotlb map during reset for older userspace
Si-Wei Liu <[email protected]>
vdpa: introduce .compat_reset operation callback
Si-Wei Liu <[email protected]>
vhost-vdpa: introduce IOTLB_PERSIST backend feature bit
Si-Wei Liu <[email protected]>
vdpa: introduce .reset_map operation callback
Si-Wei Liu <[email protected]>
vhost-vdpa: introduce descriptor group backend feature
Si-Wei Liu <[email protected]>
vdpa: introduce dedicated descriptor group for virtqueue
Jia Jia <[email protected]>
virtio_console: do not free control-out buffers on remove
hpp.iscas <[email protected]>
ASoC: mt6351: Publish the OF module alias
Florian Westphal <[email protected]>
netfilter: ip6_tables: set F_PROTO when proto value is nonzero
Florian Westphal <[email protected]>
netfilter: nfnetlink_log: cope with concurrent instance destruction
hpp.iscas <[email protected]>
ASoC: Intel: SST: Publish the PCI module aliases
hpp.iscas <[email protected]>
ASoC: bcm: bcm63xx: Publish the OF module aliases
Edward Adam Davis <[email protected]>
ALSA: caiaq: Decoupling ep1_in_urb in caiaq dev
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Reject non-scalar bpf_loop iteration counts
Vineeth Karumanchi <[email protected]>
net: macb: fix NULL pointer dereference on unbind with fixed-link
Théo Lebrun <[email protected]>
net: macb: rename bp->sgmii_phy field to bp->phy
Allen Pais <[email protected]>
workqueue: Introduce from_work() helper for cleaner callback declarations
Jamal Hadi Salim <[email protected]>
net/sched: ets: clamp quantum in parse and fallback paths
Jamal Hadi Salim <[email protected]>
net/sched: drr: clamp quantum in change class
Jamal Hadi Salim <[email protected]>
net/sched: pie: clamp psched_mtu in pie_drop_early
Jamal Hadi Salim <[email protected]>
net/sched: hhf: clamp quantum in change and init paths
Jamal Hadi Salim <[email protected]>
net/sched: sfq: clamp quantum in change path
Jamal Hadi Salim <[email protected]>
net/sched: fq_pie: clamp quantum in change path
Eric Dumazet <[email protected]>
net_sched: sch_fq_pie: implement lockless fq_pie_dump()
Lama Kayal <[email protected]>
net/mlx5: E-Switch, prevent mc_list repopulation during vport disable
Yael Chemla <[email protected]>
net/mlx5: E-Switch: fix use-after-free in mlx5_eswitch_termtbl_put
Carolina Jubran <[email protected]>
net/mlx5e: Fix use-after-free race in sample_restore_put()
Carolina Jubran <[email protected]>
net/mlx5e: Fix ETS zero BW reporting when one TC holds 100%
Shahar Shitrit <[email protected]>
net/mlx5e: Fix setting RS FEC after remapping
Weiming Shi <[email protected]>
net/sched: defer qdisc freeing after failed creation
Thorsten Blum <[email protected]>
powerpc/kexec_file: Use inclusive range checks in add_usable_mem()
Nikhil P. Rao <[email protected]>
pds_core: fix cmd_regs access racing BAR unmap on reset
Jamal Hadi Salim <[email protected]>
net: cap tx_queue_len at S16_MAX to prevent oversized ring allocations
Seungwon Bae <[email protected]>
vxlan: reject dynamic fdb entries that reference a nexthop id
Alexandra Winter <[email protected]>
s390/ism: folio_put() after error
Jason Winter <[email protected]>
net: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow
Viswajith Murali <[email protected]>
octeontx2-af: mcs: Clear stale X2P calibration state before calibration
Nikolay Aleksandrov <[email protected]>
net: bridge: mcast: properly convert mglist to rcu
Jakub Kicinski <[email protected]>
net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size
Jakub Kicinski <[email protected]>
net: dsa: bcm_sf2: bound the CFP rule dump by the caller's buffer size
Eric Dumazet <[email protected]>
bonding: use skb_cow_head() in bond_do_alb_xmit() and rlb_arp_xmit()
Ido Schimmel <[email protected]>
nexthop: Initialize extack in remove_nh_grp_entry()
Jiayuan Chen <[email protected]>
selftests/bpf: Fix flaky bpf_nf test when random NAT port is 0
Brad Cowie <[email protected]>
selftests/bpf: Update tests for new ct zone opts for nf_conntrack kfuncs
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark bpf_btf_find_by_name_kind() as sleepable
Justin Chen <[email protected]>
net: bcmasp: fix tx_spb_ring_full() checking same slot cnt times
Justin Chen <[email protected]>
net: bcmasp: clear txcb->last before writing each descriptor
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Clean up the bus when fetching ML caps fails
Mohamed Khalfella <[email protected]>
nvme: remove stale namespaces by NSID range during scan
Stuart Hayes <[email protected]>
nvme_core: scan namespaces asynchronously
Jiayuan Chen <[email protected]>
bpf: Fix NULL-ptr-deref in btf_var_show()
Jiayuan Chen <[email protected]>
bpf: Fix NULL-ptr-deref when showing a void BTF type
Takashi Iwai <[email protected]>
ALSA: caiaq: Fix potential double-free at error path
HyeongJun An <[email protected]>
selftests/alsa: Fix the step check for INTEGER controls
Lorenzo Bianconi <[email protected]>
net: stmmac: reconfigure RX packet parser table in stmmac_hw_setup() after reset
Allison Henderson <[email protected]>
net/rds: don't let rds_conn_shutdown() consume a concurrent drop
Håkon Bugge <[email protected]>
net/rds: acquire the fastpath locks in rds_conn_shutdown()
Allison Henderson <[email protected]>
net/rds: acquire RDS_IN_XMIT in rds_tcp_reset_callbacks()
Gerd Rausch <[email protected]>
net/rds: tcp: don't force RDS_CONN_RESETTING over a concurrent shutdown
Allison Henderson <[email protected]>
net/rds: clear cp_flags bits individually in rds_conn_path_reset()
Allison Henderson <[email protected]>
net/rds: use clear_bit_unlock() in release_refill()
Allison Henderson <[email protected]>
net/rds: use wq_has_sleeper() in release_in_xmit()
Eric Dumazet <[email protected]>
bonding: do not clear curr_active_slave prematurely when releasing all slaves
Eduard Zingerman <[email protected]>
bpf: reject BPF_PSEUDO_FUNC reference to the main program
Henry Martin <[email protected]>
tracing/probes: Fix use-after-free on field name/type of events with multiple probes
Joas Antonio dos Santos <[email protected]>
netfilter: nf_conntrack_sip: fix OOB read in sip_skip_whitespace()
Kyle Zeng <[email protected]>
ipvs: fix reversed sequence option serialization
Qu Wenruo <[email protected]>
btrfs: do not force reloc root creation during qgroup_account_snapshot()
Avi Weiss <[email protected]>
btrfs: send: fix lost error return value in will_overwrite_ref()
Qu Wenruo <[email protected]>
btrfs: fix the possible bioc_list memory leak during error
Dan Carpenter <[email protected]>
btrfs: directly return 0 on no error code in btrfs_insert_raid_extent()
Shuangpeng Bai <[email protected]>
btrfs: fix transaction use-after-free in raid stripe insertion
Linus Walleij <[email protected]>
ASoC: ux500: Program the MSP FIFO watermarks
Linus Walleij <[email protected]>
ASoC: ux500: Request the MSP MMIO resource
Linus Walleij <[email protected]>
mfd: db8500-prcmu: Fold dbx500 header into db8500
Kees Cook <[email protected]>
arm: Handle KCOV __init vs inline mismatches
Zijun Hu <[email protected]>
mfd: db8500-prcmu: Remove needless return in three void APIs
Linus Walleij <[email protected]>
ASoC: ux500: Validate MSP DAI configuration
Linus Walleij <[email protected]>
ASoC: ux500: Correct MSP frame and bit clock setup
Linus Walleij <[email protected]>
ASoC: ux500: Propagate MSP setup errors
Linus Walleij <[email protected]>
ASoC: ux500: Fix MSP stream lifecycle handling
Qingyu Zhang <[email protected]>
ALSA: ump: do not touch legacy_rmidi before it exists
Takashi Iwai <[email protected]>
ALSA: ump: Update rawmidi name per EP name update
Takashi Iwai <[email protected]>
ALSA: ump: Copy safe string name to rawmidi
Takashi Iwai <[email protected]>
ALSA: ump: Copy FB name string more safely
Takashi Iwai <[email protected]>
ALSA: rawmidi: Show substream activity in info ioctl
Takashi Iwai <[email protected]>
ALSA: rawmidi: Expose the tied device number in info ioctl
Eric Dumazet <[email protected]>
locking/lockdep: Invalidate stale class_cache entries for zapped classes
Leo Yan <[email protected]>
perf/core: Skip empty AUX records with only format flags
Ivy Lopez <[email protected]>
scsi: mpt3sas: Avoid out-of-bounds cpumask_of_node() call in _base_assign_reply_queues()
Eric Dumazet <[email protected]>
bonding: alb: fix uninitialized transport header access in alb_determine_nd()
Guanghui Yang <[email protected]>
btrfs: restore active device pointers after failed sprout
Guanghui Yang <[email protected]>
btrfs: detach failed sprout device from transaction update list
wangdicheng <[email protected]>
ASoC: amd: yc: fix memory leak in acp6x_pdm_dma_close()
wangdicheng <[email protected]>
ASoC: amd: renoir: fix disable_pdm_interrupts() to clear mask bits
Vasily Gorbik <[email protected]>
s390/boot: Fix physical memory search range
Xu Rao <[email protected]>
ALSA: hda: restore MFG widget enumeration after core split
Takashi Iwai <[email protected]>
ALSA: hda/core: Use guard() for mutex locks
Hui Su <[email protected]>
staging: fbtft: make dirty_lock IRQ-safe
Kuniyuki Iwashima <[email protected]>
af_packet: Don't cast tpacket_hdr.tp_len to int in tpacket_parse_header().
Eric Dumazet <[email protected]>
ipv6: sr: restore network header before routing and forwarding
Tung Nguyen <[email protected]>
tipc: fix NULL deref in tipc_named_node_up() on empty publication list
Eric Dumazet <[email protected]>
ip6_gre: check tunnel info before xmit in ip6gre_tunnel_xmit
Qingfang Deng <[email protected]>
ppp: ppp_async: simplify tty disc_data access
Jamal Hadi Salim <[email protected]>
net/sched: cls_u32: fix duplicate handle when node ID pool is exhausted
Linus Walleij <[email protected]>
ASoC: ab8500: Validate and program TDM slots correctly
Linus Walleij <[email protected]>
ASoC: ab8500: Correct digital interface format setup
Linus Walleij <[email protected]>
ASoC: ab8500: Repair the DAPM capture graph
Linus Walleij <[email protected]>
ASoC: ab8500: Reset the audio block before configuring it
Gongwei Li <[email protected]>
Bluetooth: hci_mrvl: Fix wrong return value check of wait_on_bit_timeout()
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: clear FLAG_DEFER_SETUP only for same PID/PSM
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: fix chan mode for LE_CONN_REQ + EXT_FLOWCTL pchan
Aleksandr Nogikh <[email protected]>
Bluetooth: hci_core: Fix race condition during device registration
Laxman Acharya Padhya <[email protected]>
Bluetooth: btintel: validate version TLV value lengths
Kiran K <[email protected]>
Bluetooth: btintel: Export few static functions
Kiran K <[email protected]>
Bluetooth: btintel: Print firmware SHA1
Jiacheng Xu <[email protected]>
workqueue: reject watchdog thresholds that overflow jiffies
Marco Crivellari <[email protected]>
workqueue: replace use of system_wq with system_percpu_wq
Vasily Gorbik <[email protected]>
s390/ipl: Fix NULL deref in dump_reipl without re-IPL parm block
Vasily Gorbik <[email protected]>
s390/ipl: Fix NULL deref in kdump without re-IPL parm block
Alexander Gordeev <[email protected]>
s390/os_info: Introduce value entries
Heiko Carstens <[email protected]>
s390/checksum: provide and use cksm() inline assembly
Heiko Carstens <[email protected]>
s390/checksum: call instrument_read() instead of kasan_check_read()
Namjae Jeon <[email protected]>
ksmbd: rate limit unmapped SID errors
Yilin Zhang <[email protected]>
ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF
Colin Ian King <[email protected]>
OPP: of: Fix potential multiplication overflow when calculating freq
Tzung-Bi Shih <[email protected]>
watchdog: msc313e: Fix NULL pointer dereference in PM callbacks
Baul Lee <[email protected]>
vxlan: mdb: Fix use-after-free in vxlan_mdb_remote_src_del()
James Nugraha <[email protected]>
net: amd-xgbe: discard rx packets with bad FCS
Xuanqiang Luo <[email protected]>
raw: annotate disconnect-side IPv4 match writers
Henry Martin <[email protected]>
sctp: fix soft lockup from unpadded ASCONF-ACK parameter iteration
Andy Shevchenko <[email protected]>
smb: client: transport: Fix debug printing in __release_mid()
Huiwen He <[email protected]>
smb/client: mark file sparse before emulating insert range
Milan P. Gandhi <[email protected]>
scsi: mpi3mr: Fix target device refcount leak in mpi3mr_sas_port_add()
Milan P. Gandhi <[email protected]>
scsi: mpi3mr: Fix NULL pointer dereference in mpi3mr_sas_port_add()
Xin Long <[email protected]>
sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START
Victor Nogueira <[email protected]>
net/sched: act_api: fix skb sizing and action leak on reoffload delete
Pedro Tammela <[email protected]>
net/sched: act_api: conditional notification of events
Pedro Tammela <[email protected]>
net/sched: act_api: don't open code max()
Pedro Tammela <[email protected]>
rtnl: add helper to send if skb is not null
Victor Nogueira <[email protected]>
net/sched: act_api: size the RTM_GETACTION reply from the actions
Victor Nogueira <[email protected]>
net/sched: act_api: budget all shared attributes in notify skbs
Eric Dumazet <[email protected]>
net: icmp: avoid invalid transport header access in icmp_send tracepoint
Slawomir Stepien <[email protected]>
drm/cirrus-qemu: Validate BAR0 size during probe
Thomas Zimmermann <[email protected]>
drm/cirrus: Use video aperture helpers
Ali Ahmet Memis <[email protected]>
ufs: do not treat unreadable directory blocks as empty
Matthew Wilcox (Oracle) <[email protected]>
ufs: Convert ufs_get_page() to ufs_get_folio()
Matthew Wilcox (Oracle) <[email protected]>
ufs: Convert ufs_get_page() to use a folio
Jeff Layton <[email protected]>
ufs: convert to new timestamp accessors
Hongfu Li <[email protected]>
selftests/cgroup: Fix cg_run_in_subcgroups ignoring arg parameter
Xixin Liu <[email protected]>
nvme-rdma: fix -EIO cleanup order in queue_rq
Youssef Samir <[email protected]>
accel/qaic: Address potential out-of-bounds read in resp_worker()
Dan Carpenter <[email protected]>
drm/virtio: Fix a NULL vs ERR_PTR() bug in virtio_gpu_user_framebuffer_create()
Jad Keskes <[email protected]>
EDAC/device_sysfs: Use kstrtouint() for poll_msec to prevent truncation
Qiuxu Zhuo <[email protected]>
EDAC/igen6: Fix channel address decode for non-hash mode
Qiuxu Zhuo <[email protected]>
EDAC/igen6: Fix channel selection hash
Qiuxu Zhuo <[email protected]>
EDAC/igen6: Fix interleave boundary condition
Russell King (Oracle) <[email protected]>
ARM: ensure interrupts are enabled in __do_user_fault()
Xie Yuanbin <[email protected]>
ARM: 9484/1: enable interrupts when unhandled user faults are triggered
Sasha Levin <[email protected]>
Revert "Bluetooth: btusb: Add ASUS USB-BT540 for Realtek 8761CU"
Sasha Levin <[email protected]>
Revert "Bluetooth: btusb: Add ASUS USB-BT600 for Realtek 8761CU"
SJ Park <[email protected]>
mm/damon/core: avoid infinite kdamond_merge_regions() internal loop
Saravana Kannan <[email protected]>
of: dynamic: Fix overlayed devices not probing because of fw_devlink
Kuniyuki Iwashima <[email protected]>
af_unix: Unlink scc_entry in unix_del_edge().
Namjae Jeon <[email protected]>
ksmbd: use memcmp() to compare ClientGUIDs
HyeongJun An <[email protected]>
ASoC: meson: aiu: Validate written enum values
Cássio Gabriel <[email protected]>
ASoC: topology: Check PCM and DAI name strings before use
Kuniyuki Iwashima <[email protected]>
ipv4: fib: Don't dump dying fib_info in fib_leaf_notify().
Jiri Olsa <[email protected]>
bpf: Guard __get_user acesss with access_ok for uprobe_multi data
Selvin Xavier <[email protected]>
RDMA/bnxt_re: Proper rollback if the ioremap fails
Jie Gan <[email protected]>
coresight: platform: defer connection counter increment until alloc succeeds
Xin Long <[email protected]>
sctp: fix err_chunk memory leaks in INIT handling
Nuoqi Gui <[email protected]>
bpf: Mask pseudo pointer values in verifier logs
Pauli Virtanen <[email protected]>
Bluetooth: ISO: fix malformed ISO_END/CONT handling
Cen Zhang (Microsoft) <[email protected]>
tipc: fix integer overflow in tipc_recvmsg() and tipc_recvstream()
Yehyeong Lee <[email protected]>
net: drop_monitor: fix info leak in NET_DM_ATTR_PAYLOAD
Eric Dumazet <[email protected]>
drop_monitor: fix size calculations for 64-bit attributes
Eric Dumazet <[email protected]>
drop_monitor: perform u64_stats updates under IRQ-disabled section
Vlatko Kosturjak <[email protected]>
ppp_async: drop the errored frame instead of resetting its headroom
Laxman Acharya Padhya <[email protected]>
wifi: mt76: mt7921: skip unknown CLC firmware records
Laxman Acharya Padhya <[email protected]>
wifi: mt76: mt7921: validate CLC firmware records
Christophe JAILLET <[email protected]>
tracing/histograms: Simplify last_cmd_set()
Gil Portnoy <[email protected]>
ksmbd: remove stale channels from all sessions on teardown
Genevieve Chan <[email protected]>
firmware: stratix10-svc: fix FCS SMC call kernel-doc
Florian Westphal <[email protected]>
netfilter: nfnetlink_log: wait for rcu grace period before freeing pernet state
Lin Xianglin <[email protected]>
ASoC: amd: yc: Add DMI quirk for HyperX OMEN Gaming Laptop 16-ap1xxx
Zizhi Wo <[email protected]>
scsi: core: Do not block on tag allocation in scsi_eh_lock_door()
Rudi Heitbaum <[email protected]>
ASoC: rt5645: Perform the initial jack detect at probe
Jisheng Zhang <[email protected]>
spi: dw: fix wrong RX_SAMPLE_DLY setting after resume
Guenter Roeck <[email protected]>
hwmon: (corsair-psu) Fix linear11 calculation
Jia Jia <[email protected]>
vhost-scsi: flush backend after device ioctls
Zhang Heng <[email protected]>
ASoC: amd: yc: Add DMI quirk for HP Victus Laptop 16-e1xxx
Hardik Garg <[email protected]>
Drivers: hv: vmbus: add VTL2 redirect connection ID
Robert Abrahamse <[email protected]>
ALSA: usb-audio: Add quirk for Corsair Virtuoso (later revision)
Jiale Yao <[email protected]>
Bluetooth: RFCOMM: validate skb length in rfcomm_recv_frame
Deepanshu Kartikey <[email protected]>
wifi: cfg80211: validate IEs in cfg80211_wext_siwgenie()
Li Qiang <[email protected]>
cifs: validate idmap key payload length
Vaibhav Jain <[email protected]>
powerpc/pseries: Ensure vpa,slb_shadow & dtl are unregistered during crash
Michal Swiatkowski <[email protected]>
ice: pass the return value of skb_checksum_help()
Madhavender Singh <[email protected]>
ALSA: hda/realtek: Add mute LED quirk for HP Laptop 14s-dr1xxx
Markus Lindner <[email protected]>
ALSA: usb-audio: Add dB map quirk for Razer Barracuda X 2.4
Minhong He <[email protected]>
phonet: check register_netdevice_notifier() error in phonet_device_init()
Pengpeng Hou <[email protected]>
drm/gma500: return errors from Oaktrail HDMI I2C reads
Namjae Jeon <[email protected]>
ksmbd: preserve VFS inherited POSIX ACL mask
Ibrahim Hashimov <[email protected]>
wifi: mac80211_hwsim: reject undersized HWSIM_ATTR_TX_INFO
Kamal Wadhwa <[email protected]>
regulator: core: clamp voltage constraints before applying apply_uV
Jay Vadayath <[email protected]>
smb: client: bound dirent name against end of SMB response in cifs_filldir
Georgi Valkov <[email protected]>
wifi: mwifiex: replace one-element arrays with flexible array members
Zhang Heng <[email protected]>
ALSA: hda/realtek: Add HDA_CODEC_QUIRK for Samsung 750XBE/730XBE
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: acpi: validate WGDS table revision index
Daniel C. Ribeiro <[email protected]>
ALSA: usb-audio: Add FIXED_RATE quirk for JBL Quantum650 Wireless
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: bound aligned TLV advance in FW parser
Takashi Iwai <[email protected]>
ALSA: hda/realtek: Add quirk for HP Pavilion x360
Timur Kristóf <[email protected]>
drm/amd/pm/si: Don't schedule thermal work when queue isn't initialized
Pu Hu <[email protected]>
arm64: kprobes: Allow reentering kprobes while single-stepping
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix out-of-bounds tid_data access in BA notif
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: add a check on the tid coming from the firmware
Yu Peng <[email protected]>
arm64: fixmap: Allow 256K early_ioremap() at any offset
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix a possible underflow
Huiwen He <[email protected]>
smb/client: flush dirty data before punching a hole
Tao Cui <[email protected]>
blk-cgroup: fix leaks and online flag on radix_tree_insert failure
Marcel Kłos <[email protected]>
ALSA: hda/realtek: Add quirk for HP EliteBook 830 G8 (8AB8) to enable mute LEDs
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix sched scan IE sizing
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix an off-by-1 boundary check
Filipe Manana <[email protected]>
btrfs: fix reloc root cleanup in merge_reloc_roots()
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: validate sta_id in BA window status notif
Wang YuWei <[email protected]>
spi: dw-dma: Wait for controller idle before completing Tx
Filipe Manana <[email protected]>
btrfs: fix use-after-free on reloc root after error in insert_dirty_subvol()
Dave Chen <[email protected]>
btrfs: only account delalloc bytes for regular file inodes in btrfs_getattr()
Chen Bowen <[email protected]>
ALSA: hda/realtek: Fix speakers on MECHREVO WUJIE Series
Huiwen He <[email protected]>
smb/client: reduce fallocate zero buffer allocation
Pengpeng Hou <[email protected]>
wifi: rsi: validate beacon length before fixed buffer copy
Jozsef Kadlecsik <[email protected]>
netfilter: ipset: mark the rcu locked areas properly
Pengpeng Hou <[email protected]>
wifi: libipw: fix key index receive bound checks
Liang Hao <[email protected]>
gpio: dwapb: Mask interrupts at hardware initialization
Zhao Li <[email protected]>
wifi: cfg80211: validate rx/tx MLME callback frame lengths before access
Namjae Jeon <[email protected]>
ksmbd: validate SID namespace before mapping IDs
Namjae Jeon <[email protected]>
ksmbd: mark invalid session responses as signed
Namjae Jeon <[email protected]>
ksmbd: find bound sessions during reauthentication
Zhao Li <[email protected]>
wifi: cfg80211: validate assoc response length before status and IE access
Pengpeng Hou <[email protected]>
wifi: libertas: reject short monitor TX frames
Pengpeng Hou <[email protected]>
wifi: rsi: avoid reading TKIP MIC keys for non-TKIP ciphers
Zhao Li <[email protected]>
wifi: mac80211: validate deauth frame length before reason access
Corentin Labbe <[email protected]>
wifi: ralink: RT2X00: init EEPROM properly
Pengpeng Hou <[email protected]>
ALSA: usb-audio: caiaq: validate EP1 reply lengths
Namjae Jeon <[email protected]>
ksmbd: fix credit charge calculation for SMB2 QUERY_INFO
Perry Yuan <[email protected]>
drm/amdgpu: flush pending RCU callbacks on module unload
Jetha Chan <[email protected]>
ASoC: amd: yc: Add Alienware m15 R7 AMD to DMIC quirk table
David Howells <[email protected]>
cachefiles: Fix double fput
Yousef Alhouseen <[email protected]>
xen/gntalloc: validate grant count before allocation
Farhad Alemi <[email protected]>
freevxfs: don't BUG() on unknown typed-extent type
Yousef Alhouseen <[email protected]>
xen/front-pgdir-shbuf: free grant reference head on errors
Qiang Liu <[email protected]>
ksmbd: Fix acl.sd_buf memory leak and invalid sd_size error handling
Qiang Liu <[email protected]>
ksmbd: fix n.data memory leak in ksmbd_vfs_set_dos_attrib_xattr
Gustavo Kenji Mendonça Kaneko <[email protected]>
drm/arm/komeda: fix error handling for clk_prepare_enable() and callers
Qiang Liu <[email protected]>
ksmbd: fix sd_ndr.data memory leak in ksmbd_vfs_set_sd_xattr
Florian Westphal <[email protected]>
netfilter: nf_conntrack_expect: zero at allocation time
Gustavo Kenji Mendonça Kaneko <[email protected]>
drm/arm/malidp: use clk_bulk API in runtime PM resume and suspend
Weiming Shi <[email protected]>
btrfs: tree-checker: validate INODE_REF's namelen
Praveen Talari <[email protected]>
spi: core: Abort active target transfer on controller suspend
Haoxiang Li <[email protected]>
fbdev: pm2fb: unwind WC setup on probe failure
Arnd Bergmann <[email protected]>
eth: mlx5: fix macsec dependency
Adriana Stancu <[email protected]>
rtc: bq32000: add delay between RTC reads
Yu Kuai <[email protected]>
blk-cgroup: protect iterating blkgs with blkcg->lock in blkcg_print_stat()
Runyu Xiao <[email protected]>
net: au1000: move free_irq out of the close-time spinlocked section
Pengpeng Hou <[email protected]>
regulator: da9121: Use subvariant ids in the I2C table
Krzysztof Wilczyński <[email protected]>
PCI/sysfs: Use kstrtobool() to parse the ROM attribute input
Krzysztof Wilczyński <[email protected]>
PCI/proc: Fix race between pci_proc_init() and pci_bus_add_device()
Namjae Jeon <[email protected]>
ksmbd: treat read-control opens as stat opens only for leases
Namjae Jeon <[email protected]>
ksmbd: break RH leases before delete-on-close
Namjae Jeon <[email protected]>
ksmbd: start file id allocation at 1
Namjae Jeon <[email protected]>
ksmbd: deny renaming directory with open children
Namjae Jeon <[email protected]>
ksmbd: apply create security descriptor first
Namjae Jeon <[email protected]>
ksmbd: treat unnamed DATA stream as base file
Namjae Jeon <[email protected]>
ksmbd: use connection ClientGUID for lease lookup
Namjae Jeon <[email protected]>
ksmbd: align SMB2 oplock break ack handling
Namjae Jeon <[email protected]>
ksmbd: validate SMB2 lease create contexts
Namjae Jeon <[email protected]>
ksmbd: fix lease break and ack state handling
Tommy Huang <[email protected]>
rtc: aspeed: add AST2700 compatible
Samuel Moelius <[email protected]>
f2fs: validate inline dentry name lengths before conversion
Chen Cheng <[email protected]>
md/raid5: let stripe batch bm_seq comparison wrap-safe
Yu Kuai <[email protected]>
md/raid5: account discard IO
Hans Zhang <[email protected]>
PCI: mediatek: Protect root bus removal with rescan lock
Hans Zhang <[email protected]>
PCI: rockchip: Protect root bus removal with rescan lock
Hans Zhang <[email protected]>
PCI: altera: Protect root bus removal with rescan lock
Hans Zhang <[email protected]>
PCI: iproc: Protect root bus removal with rescan lock
Jean-Louis Colaco <[email protected]>
ALSA: usb-audio: Add quirk for YAMAHA CDS3000
Timur Kristóf <[email protected]>
drm/amdgpu: Use system unbound workqueue for soft IH ring
Xiaogang Chen <[email protected]>
drm/amdkfd: check find_first_zero_bit before __set_bit on kfd->doorbell_bitmap
Xiaogang Chen <[email protected]>
drm/amdkfd: Let driver decide buffer size at AMDKFD_IOC_GET_DMABUF_INFO ioctl
Matthew Bystrin <[email protected]>
mfd: rsmu: Add 8a34002 support
Akashdeep Kaur <[email protected]>
mfd: tps65219: Make poweroff handler conditional on system-power-controller
Tobias Deiminger <[email protected]>
leds: pca9532: Don't stop blinking for non-zero brightness
Yousef Alhouseen <[email protected]>
leds: uleds: Return -EFAULT on copy_to_user() failure
Galen Hassen <[email protected]>
ALSA: hda/conexant: Add pin config quirk for Lenovo IdeaPad Slim 5 16AKP10
Jakub Kicinski <[email protected]>
tls: reject the combination of TLS and sockmap
Ai Chao <[email protected]>
ALSA: usb-audio: Add quirk flags for SC13A
guoqi0226 <[email protected]>
spi: Add NULL check for spi_get_device_id() in spi_get_device_match_data()
Rob Herring (Arm) <[email protected]>
gpio: pisosr: Read "ngpios" as u32
Arnd Bergmann <[email protected]>
scsi: bfa: Reduce kernel stack usage in bfa_fcs_lport_fdmi_build_portattr_block()
Zhang Tianci <[email protected]>
fuse: set ff->flock only on success
Jiri Kosina <[email protected]>
HID: hidpp: fix potential UAF in hidpp_connect_event()
Viktor Menshin <[email protected]>
ALSA: hda/realtek: Add quirk for Lenovo Xiaoxin 14 GT
Rosen Penev <[email protected]>
sparc: Disable compat support with LLD
Adrian Hunter <[email protected]>
i3c: mipi-i3c-hci: Tolerate i3c_master_add_i3c_dev_locked() failures in DAA
Fredric Cover <[email protected]>
smb: client: fix races in cifsd thread creation
Alice Mikityanska <[email protected]>
net/sched: act_csum: don't mangle UDP tunnel GSO packets
Agalakov Daniil <[email protected]>
e1000e: limit endianness conversion to boundary words
Raf Dickson <[email protected]>
vsock: use sk_acceptq_is_full() helper in all transports
Vadim Fedorenko <[email protected]>
ptp: ocp: add shutdown callback
Nazim Amirul <[email protected]>
net: stmmac: xgmac2: disable RBUE in default RX interrupt mask
Rosen Penev <[email protected]>
sparc64: uprobes: add missing break
Nils Helmig <[email protected]>
Bluetooth: btusb: Add TP-Link UB600 for Realtek 8761BUV
bui duc phuc <[email protected]>
ASoC: rockchip: spdif: Restore regcache cache-only mode on sync failure
bui duc phuc <[email protected]>
ASoC: rockchip: rockchip_pdm: Reorder clock enable sequence
bui duc phuc <[email protected]>
ASoC: rockchip: rockchip_pdm: Handle runtime PM resume failures in set_fmt
Samuel Moelius <[email protected]>
Bluetooth: L2CAP: validate connectionless PSM length
Cris <[email protected]>
Bluetooth: btusb: Add support for TP-Link TL-UB250
Hrvoje Nuic <[email protected]>
Bluetooth: btusb: Add Mercusys MA530 for Realtek RTL8761BUV
Vadim Fedorenko <[email protected]>
spi: xilinx: let transfers timeout in case of no IRQ
Potin Lai <[email protected]>
hwmon: (pmbus/lm25066) Fix PMBus coefficients for LM5064/5066/5066i
Tze Yee Ng <[email protected]>
dmaengine: dw-axi-dmac: fix PM for system sleep and channel alloc
Jose Ignacio Tornos Martinez <[email protected]>
PCI: Avoid SBR for Qualcomm WCN6855/WCN7850 WiFi, SDX62/SDX65 modems
Yuho Choi <[email protected]>
sctp: Unwind address notifier registration on failure
Mohamed Khalfella <[email protected]>
nvme-fc: Do not cancel requests in io target before it is initialized
Nikolay Metchev <[email protected]>
platform/x86: intel-hid: Add HP ProBook x360 440 G1 to button_array_table
Xu Rao <[email protected]>
ata: libata-pmp: add JMicron JMS562 quirk
Moritz Baron <[email protected]>
ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14IRH8
Furst Blumier <[email protected]>
ALSA: hda/realtek: Add quirk for HP 255 15.6 inch G9 Notebook PC
Evgenii Burenchev <[email protected]>
vdpa/ifcvf: handle dev_set_name() failure in ifcvf_vdpa_dev_add()
George Moussalem <[email protected]>
net: dsa: qca8k: Add support for force mode for fixed link topology
Kory Maincent <[email protected]>
hwmon: (adt7462) Add of_match_table to support devicetree
KangNing Liao <[email protected]>
btrfs: protect sb_write_pointer() with invalidate lock
Jiajia Liu <[email protected]>
wifi: mt76: transform aspm_conf for pci_disable_link_state
Gleb Sonichev <[email protected]>
platform/x86: dell-laptop: add Inspiron N5110 to touchpad LED quirk table
Chuck Lever <[email protected]>
tls: Flush backlog before waiting for a new record
Rosen Penev <[email protected]>
net: ibm: emac: mal: fix potential system hang in mal_remove()
Al Viro <[email protected]>
configfs_depend_prep(): pass configfs_dirent instead of dentry
Chuck Lever <[email protected]>
xprtrdma: Add request-pool slack for delayed recycling
Aurelien DESBRIERES <[email protected]>
RDMA/rtrs-srv: Fix integer underflow in process_read and process_write
Dai Ngo <[email protected]>
NFS: fix eof updates after NFSv4.2 fallocate/zero-range
Zhang Cen <[email protected]>
btrfs: tree-checker: validate names in ROOT_REF and ROOT_BACKREF
ZhengYuan Huang <[email protected]>
btrfs: balance: fix potential bg lookup failure in btrfs_may_alloc_data_chunk()
Rosen Penev <[email protected]>
netfilter: nf_conntrack: use get_unaligned_be32() in tcp_sack()
Ruoyu Wang <[email protected]>
ALSA: es18xx: check control allocation before private data setup
Haoxiang Li <[email protected]>
net: microchip: sparx5: clean up PSFP resources on flower setup failure
Maoyi Xie <[email protected]>
hsr: broadcast netlink notifications in the device's net namespace
Guangshuo Li <[email protected]>
net: cpsw_new: unregister devlink on port registration failure
Dawei Feng <[email protected]>
bpf: NUL-terminate replaced sysctl value
Li RongQing <[email protected]>
RDMA/mlx5: Fix state and counter desync on loopback enable failure
Jason Gunthorpe <[email protected]>
RDMA/umem: Be careful about boundary conditions in ib_umem_find_best_pgsz()
Thiyagarajan Pandiyan <[email protected]>
wifi: nl80211: Increase ie_len size to prevent truncated IEs in new peer notifications
Yongqiang Sun <[email protected]>
drm/amdkfd: Unwind debug trap enable on copy_to_user failure
Rosen Penev <[email protected]>
ipmi: si: Use platform_get_irq_optional() to retrieve interrupt
Andrei Faleichyk <[email protected]>
ALSA: hda/realtek: Add quirk for ASUS VivoBook X509DAP
Michael Walle <[email protected]>
clk: keystone: don't cache clock rate
Shay Drory <[email protected]>
net/mlx5: E-Switch, align disable sequence with switchdev-to-legacy transition
Cyrill Gorcunov <[email protected]>
RDMA/irdma: Fix typo in SQ completions generation
Shiwu Zhang <[email protected]>
drm/amdgpu: fix buffer overflow during vBIOS update
Asad Kamal <[email protected]>
drm/amd/pm: bound pp_dpm_set_pp_table() memcpy
Alysa Liu <[email protected]>
drm/amdkfd: fix UAF race in destroy_queue_cpsch
Mathias Nyman <[email protected]>
xhci: Prevent queuing new commands if xhci is inaccessible
Priyansh Jain <[email protected]>
thermal/drivers/qcom/tsens: Atomic temperature read with hardware-guided retries
Ioana Ciornei <[email protected]>
dpaa2-switch: fix handling of NAPI on the remove path
David Yang <[email protected]>
net: dsa: sja1105: flower: reject cross-chip redirect
Ioana Ciornei <[email protected]>
dpaa2-switch: fix the error path in dpaa2_switch_rx()
Ioana Ciornei <[email protected]>
dpaa2-switch: rework FDB management on the bridge leave path
Cássio Gabriel <[email protected]>
ALSA: seq: oss: Reject reads that cannot fit the next event
Cássio Gabriel <[email protected]>
ASoC: codecs: rk3328: Use managed GPIO and clock helpers
Alessandro Schino <[email protected]>
ntfs3: fix out-of-bounds read in ntfs_dir_emit() and hdr_find_e()
ZhengYuan Huang <[email protected]>
fs/ntfs3: validate index entry key bounds
ZhengYuan Huang <[email protected]>
fs/ntfs3: preserve non-DOS attribute bits in system.dos_attrib
Simon Xue <[email protected]>
iommu/rockchip: disable fetch dte time limit
Jose Ignacio Tornos Martinez <[email protected]>
net: wwan: t7xx: Add delay between MD and SAP suspend
Wentao Liang <[email protected]>
net: qrtr: fix node refcount leak on ctrl packet alloc failure
Chen Pei <[email protected]>
ACPI: PCI: Clear _DEP dependencies after PCI root bridge attach
liyouhong <[email protected]>
ata: ahci: fail probe if BAR too small for claimed ports
Cezary Rojewski <[email protected]>
ASoC: codecs: pcm3168a: Drop CONFIG_PM-conditional preproc directive
Srinivas Kandagatla <[email protected]>
ASoC: qcom: q6apm: return error code to consumers on failures
Miaoqing Pan <[email protected]>
wifi: ath11k: fix invalid data access in ath11k_dp_rx_h_undecap_nwifi
Rosen Penev <[email protected]>
net: ibm: emac: Reserve VLAN header in MJS limit
Daniel Borkmann <[email protected]>
libbpf: Also reset {insn,data}_cur on realloc failure
Sanjay Chitroda <[email protected]>
iio: accel: mma8452: switch to non-devm request_threaded_irq()
Rik van Riel <[email protected]>
perf/ftrace: Fix WARNING in __unregister_ftrace_function
Miao Li <[email protected]>
iio: light: stk3310: Deal with the ps interrupt issue in PM
Lad Prabhakar <[email protected]>
mmc: renesas_sdhi: Add OF entry for RZ/G2E SoC
Karl Mehltretter <[email protected]>
tracing: Disable KCOV instrumentation for trace_irqsoff.o
Lad Prabhakar <[email protected]>
mmc: renesas_sdhi: Add OF entry for RZ/G2N SoC
Osama Abdelkader <[email protected]>
mmc: davinci: fix mmc_add_host order in probe
Bard Liao <[email protected]>
soundwire: only handle alert events when the peripheral is attached
Andreas Gruenbacher <[email protected]>
gfs2: page poisoning fix
Charles Keepax <[email protected]>
soundwire: dmi-quirks: Disable ghost Realtek devices
Tiezhu Yang <[email protected]>
libbpf: Add __NR_bpf definition for LoongArch
Cezary Rojewski <[email protected]>
ASoC: Intel: catpt: Complete coredump handling
Timur Tabi <[email protected]>
drm/nouveau/gsp: add SEC2 to GA100 chip table
Alexandre Courbot <[email protected]>
scripts: modpost: detect and report truncated buf_printf() output
shayderrr <[email protected]>
host1x: bus: Fix missing ops null check in error teardown
Claudiu Beznea <[email protected]>
pinctrl: renesas: rzv2m: Use -ENOTSUPP instead of -EOPNOTSUPP
Viacheslav Dubeyko <[email protected]>
hfs: rework hfsplus_readdir() logic
ikaros <[email protected]>
ACPICA: add boundary checks in two places
ikaros <[email protected]>
ACPICA: Enhance buffer validation in acpi_ut_walk_aml_resources()
Weiming Shi <[email protected]>
ACPICA: Fix NULL pointer dereference in acpi_ns_custom_package()
ikaros <[email protected]>
ACPICA: Enhance OEM ID and Table ID validation in acpi_ex_load_table_op()
ikaros <[email protected]>
ACPICA: Add validation for node in acpi_ns_build_normalized_path()
ikaros <[email protected]>
ACPICA: Add package limit checks in parser functions
ikaros <[email protected]>
ACPICA: validate handler object type in two places
ikaros <[email protected]>
ACPICA: Improve argument parsing in acpi_ps_get_next_simple_arg()
ikaros <[email protected]>
ACPICA: Fix integer overflow in acpi_ex_opcode_3A_1T_1R() (mid_op)
ikaros <[email protected]>
ACPICA: Prevent adding invalid references
ikaros <[email protected]>
ACPICA: validate byte_count in acpi_ps_get_next_package_length()
ikaros <[email protected]>
ACPICA: add boundary checks in acpi_ps_get_next_field()
ikaros <[email protected]>
ACPICA: Fix use-after-free in acpi_ds_terminate_control_method()
ikaros <[email protected]>
ACPICA: Fix condition check in acpi_ps_parse_loop()
Jeremy Klarenbeek <[email protected]>
drm/amd/pm/si: Fix updating clock limits from power states
Haoxiang Li <[email protected]>
net: thunderx: fix PTP device ref leak in nicvf_probe()
Fernando Fernandez Mancera <[email protected]>
ipv6: addrconf: fix temp address generation after prefix deprecation
Luka Gejak <[email protected]>
net: hsr: require valid EOT supervision TLV
Uwe Küchler <[email protected]>
ALSA: usb-audio: Add quirk for Novation Mininova
Mostafa Saleh <[email protected]>
irqchip/gic-v4: Don't advertise VLPIs if no ITS is probed
Stepan Ionichev <[email protected]>
iio: adc: qcom-spmi-iadc: balance enable_irq_wake() on driver unbind
Rosen Penev <[email protected]>
mips: cps: Assemble jr.hb with an R2 ISA level
Dario Binacchi <[email protected]>
drm/panel: simple: Add AM-1280800W8TZQW-T00H
Daniel Lezcano <[email protected]>
thermal/drivers/tegra/soctherma: Switch to devm cooling device registration
Adrian Ng Ho Yin <[email protected]>
clk: socfpga: agilex: implement l3_main_free_clk
Heiko Carstens <[email protected]>
s390/zcore: Removed unused variables
Jiayuan Chen <[email protected]>
rds: annotate data-race around rs_seen_congestion
Maoyi Xie <[email protected]>
rds: filter RDS_INFO_* getsockopt by caller's netns
Chenguang Zhao <[email protected]>
netlabel: fix IPv6 unlabeled address add error handling
Dian-Syuan Yang <[email protected]>
wifi: rtw89: pci: enable LTR based on pcie control register
Zqiang <[email protected]>
rcu-tasks: Fix possible boot-time tests failed for the call_rcu_tasks()
Venkat Rao Bagalkote <[email protected]>
char/nvram: Remove redundant nvram_mutex
Christian Marangi <[email protected]>
usb: host: add ARCH_AIROHA in XHCI MTK dependency
Marco Felsch <[email protected]>
serial: 8250: fix possible ISR soft lockup
Maoyi Xie <[email protected]>
usb: gadget: aspeed_udc: avoid past-the-end iterator in dequeue
Dave Carey <[email protected]>
USB: cdc-acm: start bulk-IN polling when ALWAYS_POLL_CTRL is set
Stepan Ionichev <[email protected]>
usb: gadget: goku_udc: avoid NULL deref of dev->driver in INT_USBRESET log
Oliver Neukum <[email protected]>
usb: core: hcd: fix possible deadlock in rh control transfers
Adrian Wowk <[email protected]>
usbip: vhci_hcd: fix NULL deref in status_show_vhci
Christoph Hellwig <[email protected]>
isofs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
omfs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
hpfs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
jfs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
qnx4: handle set_blocksize failures
Christoph Hellwig <[email protected]>
minix: handle set_blocksize failures
Christoph Hellwig <[email protected]>
bfs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
affs: handle set_blocksize failures
Christoph Hellwig <[email protected]>
ntfs3: handle set_blocksize failures
Christoph Hellwig <[email protected]>
befs: handle set_blocksize failures
Allison Henderson <[email protected]>
net/rds: Don't sleep inside rds_ib_conn_path_shutdown
Eric Dumazet <[email protected]>
net/sched: sch_drr: make cl->quantum lockless
Eric Dumazet <[email protected]>
net: bridge: remove stale rcu_barrier() in br_multicast_dev_del()
Jan Volckaert <[email protected]>
net: usb: qmi_wwan: add MeiG SRM813Q
Maurizio Lombardi <[email protected]>
nvme-core: align fabrics_q teardown with admin_q in nvme_free_ctrl
Yury Norov <[email protected]>
bitfield: wire __bf_shf to __builtin_ctzll
Gil Fine <[email protected]>
thunderbolt: Verify Router Ready bit is set after router enumeration
Gil Fine <[email protected]>
thunderbolt: Increase timeout for Configuration Ready bit
Sudeep Holla <[email protected]>
firmware: arm_scmi: Validate BASE_ERROR_EVENT payload size
Sudeep Holla <[email protected]>
firmware: arm_scmi: Validate SENSOR_UPDATE payload size
Alan Borzeszkowski <[email protected]>
thunderbolt: Improve multi-display DisplayPort tunnel allocation
Pooja Katiyar <[email protected]>
thunderbolt: Don't access path config space on Lane 1 adapters in tb_switch_reset_host()
Ido Schimmel <[email protected]>
bridge: Add missing READ_ONCE() annotations around FDB destination port
Pierre Barre <[email protected]>
9p: use kvzalloc for readdir buffer
Leonardo Bras <[email protected]>
arm64/daifflags: Make local_daif_*() helpers __always_inline
Pierre Barre <[email protected]>
9p: invalidate readdir buffer on seek
Andrea Righi <[email protected]>
sched/fair: Reject misfit pulls onto busy SMT siblings on asym-capacity
Cássio Gabriel <[email protected]>
ALSA: usx2y: Drain pending US-428 pipe-4 output commands
David Francis <[email protected]>
drm/amdkfd: Check bounds on allocate_doorbell
Sunday Clement <[email protected]>
drm/amdkfd: Fix OOB memory exposure in get_wave_state()
David Francis <[email protected]>
drm/amdkfd: Check bounds for allocate_sdma_queue restore_sdma_id
Bjorn Helgaas <[email protected]>
PCI: Wait for device readiness after D3hot -> D0uninitialized transition
Joonwon Kang <[email protected]>
mailbox: Make mbox_send_message() return error code when tx fails
Chenguang Zhao <[email protected]>
RDMA/mlx5: Use QP port when decoding responder CQEs
Alessandro Baldi <[email protected]>
media: imon: Add iMON VFD HID OEM v1.2 key mappings
Thorsten Blum <[email protected]>
crypto: atmel-ecc - add support for atecc608b
Lukas Wunner <[email protected]>
crypto: ecc - Unbreak the build on arm with CONFIG_KASAN_STACK=y
Kumar Meiyappan <[email protected]>
scsi: pm8001: Reject non-fatal dump when controller is crashed
Kumar Meiyappan <[email protected]>
scsi: pm8001: Reject firmware update in fatal error state
Alexey Klimov <[email protected]>
clk: samsung: exynos850: mark APM I3C clocks as critical
Peter Ujfalusi <[email protected]>
soundwire: intel: Move suspend tracking from trigger to pm suspend
Pengpeng Hou <[email protected]>
drivers/of: validate status properties in reconfig state changes
Stefan Berger <[email protected]>
integrity: Check for NULL returned by asymmetric_key_public_key
Mieczyslaw Nalewaj <[email protected]>
net: dsa: realtek: rtl8365mb: add support for RTL8367SB
Ping-Ke Shih <[email protected]>
wifi: rtw89: phy: check length before parsing PHY status IE
Arash Golgol <[email protected]>
media: video-i2c: use vb2_video_unregister_device on driver removal
Sophie D <[email protected]>
drm/gud: Add RCade Display Adapter VID/PID pair
chunzhi.lin <[email protected]>
net: phy: motorcomm: use device properties for firmware tuning
Viacheslav Dubeyko <[email protected]>
hfsplus: rework hfsplus_readdir() logic
Florian Eckert <[email protected]>
PCI: intel-gw: Enable clock before PHY init
Tom Chung <[email protected]>
drm/amd/display: Fix CRC open failure during active rendering
Stepan Ionichev <[email protected]>
mmc: davinci: avoid NULL deref of host->data in IRQ handler
Shawn Lin <[email protected]>
mmc: core: Add validation for host-provided max_segs
Ethan Nelson-Moore <[email protected]>
ASoC: ti: omap3pandora: update board check to use DT compatible
Parth Pancholi <[email protected]>
drm/bridge: tc358768: Set pre_enable_prev_first for reverse order
Geert Uytterhoeven <[email protected]>
clk: renesas: cpg-mssr: Add number of clock cells check
Thorsten Blum <[email protected]>
crypto: omap - add omap_des_unregister_algs helper
Ruoyu Wang <[email protected]>
crypto: ixp4xx - fix buffer chain unwind on allocation failure
Haoxiang Li <[email protected]>
media: em28xx-video: fix missing res_free() on init_usb_xfer failure
Marek Behún <[email protected]>
net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
Marek Behún <[email protected]>
net: dsa: mv88e6xxx: define .pot_clear() for 6321
Ben Reed <[email protected]>
PCI: switchtec: Add Gen6 Device IDs
Marek Behún <[email protected]>
net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
Zhaoyang Yu <[email protected]>
media: dm1105: fix missing error check for dma_alloc_coherent
Alan Borzeszkowski <[email protected]>
thunderbolt: Don't create multiple DMA tunnels on firmware connection manager
Mika Westerberg <[email protected]>
thunderbolt: Set tb->root_switch to NULL when domain is stopped
Mika Westerberg <[email protected]>
thunderbolt: Keep the domain reference while processing hotplug
Mika Westerberg <[email protected]>
thunderbolt: Keep XDomain reference during the lifetime of a service
Mika Westerberg <[email protected]>
thunderbolt: Release request if tb_cfg_request() fails in __tb_xdomain_response()
Riccardo Boninsegna <[email protected]>
media: rc: mceusb: Add support for 04eb:e033
Viken Dadhaniya <[email protected]>
spi: spi-qcom-qspi: Fix incomplete error handling in runtime PM
Pengpeng Hou <[email protected]>
soundwire: validate DT compatible before parsing it
Danielle Ratson <[email protected]>
bridge: Do not suppress ARP probes and DAD NS unconditionally
Siew Chin Lim <[email protected]>
firmware: stratix10-svc: change get provision data to async SMC call
Marco Elver <[email protected]>
kcsan: Silence -Wmaybe-uninitialized when calling __kcsan_check_access()
Panagiotis Petrakopoulos <[email protected]>
wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
Johannes Berg <[email protected]>
wifi: mac80211: always allow transmitting null-data on TXQs
Johannes Berg <[email protected]>
wifi: nl80211: reject beacons with bad HE operation
Viacheslav Dubeyko <[email protected]>
hfsplus: fix issue of direct writes beyond end-of-file
Lukas Wunner <[email protected]>
PCI: Stop setting cached power state to 'unknown' on unbind
Thomas Weißschuh <[email protected]>
tools/nolibc: avoid call to wcslen() in _start_c() inserted by clang
Hirokazu Honda <[email protected]>
tee: optee: Allow MT_NORMAL_TAGGED shared memory
Xu Yang <[email protected]>
usb: gadget: udc: skip pullup() if already connected
Goldwyn Rodrigues <[email protected]>
ima: return error early if file xattr cannot be changed
Cássio Gabriel <[email protected]>
ALSA: usb-audio: Propagate write errors in generic mixer put callbacks
Lijo Lazar <[email protected]>
drm/amd/pm: Check SMUv13.0.6/12 metrics integrity
Dmitry Baryshkov <[email protected]>
drm/panel: jadard-jd9365da-h3: set prepare_prev_first
Dominik Kaszewski <[email protected]>
drm/amd/display: Fix DPMS using partially updated pipe context
Ioana Ciornei <[email protected]>
bus: fsl-mc: wait for the MC firmware to complete its boot
Boris Brezillon <[email protected]>
drm/gem: Consider GEM object reclaimable if shrinking fails
Abdifatah Suruur <[email protected]>
ksmbd: fix use-after-free in oplock break notification
-------------
Diffstat:
.../ABI/testing/sysfs-devices-platform-trackpoint | 2 +- Documentation/arch/s390/pci.rst | 144 +- Documentation/hwmon/emc1403.rst | 8 +- Documentation/networking/ip-sysctl.rst | 2 + Documentation/sound/designs/midi-2.0.rst | 11 + Makefile | 4 +- arch/alpha/include/uapi/asm/fpu.h | 8 +- arch/alpha/kernel/traps.c | 6 +- arch/alpha/math-emu/math.c | 88 +- arch/arm/mach-socfpga/Kconfig | 2 +- arch/arm/mach-ux500/cpu-db8500.c | 6 +- arch/arm/mm/cache-feroceon-l2.c | 2 +- arch/arm/mm/cache-tauros2.c | 2 +- arch/arm/mm/fault.c | 12 +- arch/arm64/boot/dts/qcom/sc8180x.dtsi | 16 +- arch/arm64/boot/dts/qcom/sdm845.dtsi | 64 +- arch/arm64/boot/dts/qcom/sm8150.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8250.dtsi | 12 +- arch/arm64/boot/dts/qcom/sm8350.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8450.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8550.dtsi | 8 +- arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 1 + arch/arm64/include/asm/daifflags.h | 10 +- arch/arm64/include/asm/fixmap.h | 6 +- arch/arm64/include/asm/io.h | 3 +- arch/arm64/include/asm/kprobes.h | 6 + arch/arm64/include/asm/percpu.h | 16 +- arch/arm64/kernel/hibernate-asm.S | 2 + arch/arm64/kernel/probes/kprobes.c | 23 +- arch/arm64/kvm/hypercalls.c | 3 +- arch/arm64/kvm/vgic/vgic-its.c | 96 +- arch/arm64/kvm/vgic/vgic.h | 23 - arch/mips/cavium-octeon/octeon-platform.c | 4 +- arch/mips/kernel/cps-vec.S | 6 + arch/mips/net/bpf_jit_comp32.c | 2 +- arch/mips/net/bpf_jit_comp64.c | 3 +- arch/powerpc/kernel/eeh_driver.c | 2 - arch/powerpc/kernel/iommu.c | 2 +- arch/powerpc/kexec/file_load_64.c | 2 +- arch/powerpc/kvm/book3s_hv.c | 4 +- arch/powerpc/kvm/book3s_hv_nested.c | 2 + arch/powerpc/kvm/book3s_hv_uvmem.c | 5 +- arch/powerpc/platforms/ps3/repository.c | 5 +- arch/powerpc/platforms/pseries/kexec.c | 13 +- arch/riscv/kvm/vcpu_sbi_hsm.c | 4 +- arch/riscv/kvm/vcpu_timer.c | 5 +- arch/s390/boot/physmem_info.c | 2 +- arch/s390/crypto/aes_s390.c | 16 +- arch/s390/include/asm/checksum.h | 29 +- arch/s390/include/asm/debug.h | 8 +- arch/s390/include/asm/os_info.h | 19 +- arch/s390/kernel/debug.c | 15 +- arch/s390/kernel/ipl.c | 19 +- arch/s390/kernel/os_info.c | 21 +- arch/s390/kvm/interrupt.c | 72 +- arch/sparc/Kconfig | 1 + arch/sparc/kernel/uprobes.c | 1 + arch/x86/crypto/aria-aesni-avx2-asm_64.S | 6 + arch/x86/crypto/aria-gfni-avx512-asm_64.S | 3 + arch/x86/events/amd/ibs.c | 3 +- arch/x86/events/intel/core.c | 76 +- arch/x86/events/intel/ds.c | 208 ++- arch/x86/include/asm/perf_event.h | 16 +- arch/x86/include/asm/pgtable.h | 2 +- arch/x86/pci/fixup.c | 99 ++ block/blk-cgroup.c | 13 +- crypto/Makefile | 5 + drivers/accel/qaic/qaic_control.c | 46 +- drivers/acpi/acpica/dsmethod.c | 43 + drivers/acpi/acpica/evhandler.c | 11 + drivers/acpi/acpica/exconfig.c | 26 +- drivers/acpi/acpica/exoparg3.c | 2 +- drivers/acpi/acpica/nsnames.c | 6 + drivers/acpi/acpica/nsprepkg.c | 7 + drivers/acpi/acpica/nsxfname.c | 4 + drivers/acpi/acpica/psargs.c | 134 +- drivers/acpi/acpica/psloop.c | 30 +- drivers/acpi/acpica/psparse.c | 14 + drivers/acpi/acpica/utcopy.c | 10 +- drivers/acpi/acpica/utresrc.c | 30 + drivers/acpi/pci_root.c | 4 + drivers/ata/ahci.c | 22 + drivers/ata/libahci.c | 15 +- drivers/ata/libata-pmp.c | 7 +- drivers/ata/libata-scsi.c | 10 +- drivers/base/core.c | 200 ++- drivers/block/sunvdc.c | 26 +- drivers/bluetooth/btintel.c | 68 +- drivers/bluetooth/btintel.h | 47 +- drivers/bluetooth/btmtk.c | 7 +- drivers/bluetooth/btmtksdio.c | 4 +- drivers/bluetooth/btrtl.c | 5 +- drivers/bluetooth/btusb.c | 41 +- drivers/bluetooth/hci_mrvl.c | 3 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 46 + drivers/char/ipmi/ipmi_si_platform.c | 5 +- drivers/char/nvram.c | 16 +- drivers/char/virtio_console.c | 21 +- drivers/clk/clk-scpi.c | 2 +- drivers/clk/keystone/sci-clk.c | 8 + drivers/clk/renesas/renesas-cpg-mssr.c | 3 + drivers/clk/samsung/clk-exynos850.c | 5 +- drivers/clk/socfpga/clk-agilex.c | 2 + drivers/clk/ux500/clk-prcmu.c | 20 +- drivers/clk/ux500/u8500_of_clk.c | 2 +- drivers/clocksource/timer-orion.c | 2 +- drivers/cpufreq/cpufreq.c | 6 +- drivers/cpuidle/cpuidle-ux500.c | 6 +- drivers/crypto/allwinner/Kconfig | 16 - drivers/crypto/allwinner/sun8i-ce/Makefile | 1 - drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 55 - drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c | 159 -- drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 29 - drivers/crypto/allwinner/sun8i-ss/Makefile | 1 - drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 39 - drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c | 177 -- drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 23 - drivers/crypto/atmel-ecc.c | 11 +- drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c | 25 +- drivers/crypto/omap-des.c | 26 +- .../crypto/virtio/virtio_crypto_akcipher_algs.c | 91 +- .../crypto/virtio/virtio_crypto_skcipher_algs.c | 13 +- drivers/cxl/core/pmem.c | 21 +- drivers/cxl/core/region.c | 2 +- drivers/cxl/cxl.h | 4 +- drivers/cxl/mem.c | 18 +- drivers/dma/dmaengine.c | 10 +- drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 11 +- drivers/dma/mmp_pdma.c | 2 +- drivers/dma/sprd-dma.c | 3 +- drivers/dma/sun6i-dma.c | 9 +- drivers/dma/ti/k3-udma-glue.c | 5 +- drivers/dma/xilinx/xilinx_dma.c | 26 +- drivers/edac/edac_device_sysfs.c | 11 +- drivers/edac/igen6_edac.c | 27 +- drivers/firmware/arm_scmi/base.c | 15 +- drivers/firmware/arm_scmi/sensors.c | 10 +- drivers/firmware/arm_scpi.c | 4 +- drivers/firmware/stratix10-svc.c | 4 +- drivers/gpio/gpio-arizona.c | 8 +- drivers/gpio/gpio-dwapb.c | 17 + drivers/gpio/gpio-pisosr.c | 4 +- drivers/gpio/gpio-tps65219.c | 2 +- drivers/gpio/gpio-zynq.c | 10 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 23 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 + drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 1 + drivers/gpu/drm/amd/amdgpu/atom.c | 9 +- drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 10 +- drivers/gpu/drm/amd/amdkfd/kfd_debug.c | 6 + .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 17 +- drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | 8 +- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 11 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 17 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 7 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 +- drivers/gpu/drm/amd/display/dc/core/dc.c | 24 +- drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 +- drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c | 7 +- .../gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c | 3 +- .../display/dc/link/protocols/link_dp_training.c | 4 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 31 +- drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 3 + .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 4 + drivers/gpu/drm/arm/display/komeda/komeda_dev.c | 6 +- drivers/gpu/drm/arm/display/komeda/komeda_drv.c | 14 +- drivers/gpu/drm/arm/malidp_drv.c | 22 +- drivers/gpu/drm/ast/ast_mode.c | 4 +- drivers/gpu/drm/bridge/samsung-dsim.c | 2 +- drivers/gpu/drm/bridge/tc358768.c | 2 + drivers/gpu/drm/drm_atomic_uapi.c | 13 +- drivers/gpu/drm/drm_exec.c | 13 + drivers/gpu/drm/drm_gem.c | 10 + drivers/gpu/drm/drm_probe_helper.c | 27 + drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c | 21 +- drivers/gpu/drm/gud/gud_drv.c | 1 + drivers/gpu/drm/gud/gud_pipe.c | 4 +- drivers/gpu/drm/i915/gem/i915_gem_object.c | 2 +- drivers/gpu/drm/i915/i915_query.c | 4 +- drivers/gpu/drm/logicvc/Kconfig | 1 - drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 3 +- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 + drivers/gpu/drm/msm/dsi/dsi_host.c | 36 +- drivers/gpu/drm/msm/hdmi/hdmi_phy.c | 8 +- drivers/gpu/drm/nouveau/nouveau_bo.c | 3 +- drivers/gpu/drm/nouveau/nouveau_drm.c | 5 +- drivers/gpu/drm/nouveau/nouveau_gem.c | 2 + drivers/gpu/drm/nouveau/nvif/vmm.c | 1 + drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 23 +- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c | 2 + drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c | 2 + drivers/gpu/drm/panel/panel-simple.c | 28 + drivers/gpu/drm/tiny/cirrus.c | 7 +- drivers/gpu/drm/vc4/vc4_kms.c | 2 +- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +- drivers/gpu/drm/virtio/virtgpu_gem.c | 2 +- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 6 +- drivers/gpu/drm/virtio/virtgpu_submit.c | 11 +- drivers/gpu/drm/virtio/virtgpu_vram.c | 17 +- drivers/gpu/host1x/bus.c | 4 +- drivers/hid/amd-sfh-hid/amd_sfh_common.h | 4 + drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 10 + drivers/hid/hid-alps.c | 6 +- drivers/hid/hid-ids.h | 3 + drivers/hid/hid-logitech-hidpp.c | 25 +- drivers/hid/hid-quirks.c | 3 +- drivers/hid/wacom_sys.c | 5 +- drivers/hv/connection.c | 47 +- drivers/hv/hyperv_vmbus.h | 2 + drivers/hwmon/adt7462.c | 8 + drivers/hwmon/applesmc.c | 7 +- drivers/hwmon/aspeed-pwm-tacho.c | 4 +- drivers/hwmon/corsair-psu.c | 23 +- drivers/hwmon/emc1403.c | 73 +- drivers/hwmon/gpio-fan.c | 13 +- drivers/hwmon/hp-wmi-sensors.c | 2 + drivers/hwmon/pmbus/lm25066.c | 60 +- drivers/hwmon/pmbus/pmbus.h | 3 +- drivers/hwmon/pmbus/pmbus_core.c | 4 +- drivers/hwmon/pmbus/tps53679.c | 11 +- drivers/hwmon/w83791d.c | 1 + drivers/hwmon/w83793.c | 4 +- drivers/hwtracing/coresight/coresight-platform.c | 12 +- drivers/i2c/busses/i2c-at91-core.c | 3 + drivers/i2c/busses/i2c-at91-master.c | 12 +- drivers/i2c/busses/i2c-at91.h | 1 + drivers/i2c/busses/i2c-imx.c | 3 + drivers/i2c/i2c-atr.c | 1 + drivers/i2c/i2c-core-smbus.c | 12 + drivers/i3c/master/mipi-i3c-hci/cmd_v1.c | 4 +- drivers/i3c/master/mipi-i3c-hci/cmd_v2.c | 4 +- drivers/iio/accel/mma8452.c | 19 +- drivers/iio/adc/qcom-spmi-iadc.c | 18 +- drivers/iio/light/stk3310.c | 76 +- drivers/infiniband/core/iwpm_util.c | 9 +- drivers/infiniband/core/mad.c | 3 +- drivers/infiniband/core/ucma.c | 7 +- drivers/infiniband/core/umem.c | 18 +- drivers/infiniband/core/verbs.c | 12 +- drivers/infiniband/hw/bnxt_re/qplib_res.c | 11 + drivers/infiniband/hw/efa/efa_com.c | 7 +- drivers/infiniband/hw/efa/efa_com.h | 1 + drivers/infiniband/hw/efa/efa_main.c | 35 +- drivers/infiniband/hw/hfi1/file_ops.c | 23 +- drivers/infiniband/hw/irdma/utils.c | 2 +- drivers/infiniband/hw/irdma/verbs.c | 2 +- drivers/infiniband/hw/mlx4/sysfs.c | 4 + drivers/infiniband/hw/mlx5/cq.c | 3 +- drivers/infiniband/hw/mlx5/main.c | 11 + drivers/infiniband/sw/rxe/rxe_mcast.c | 50 +- drivers/infiniband/sw/rxe/rxe_mr.c | 3 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 13 +- drivers/infiniband/sw/siw/siw_cm.c | 75 +- drivers/infiniband/sw/siw/siw_qp_rx.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib.h | 7 + drivers/infiniband/ulp/ipoib/ipoib_ib.c | 12 +- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 16 +- drivers/infiniband/ulp/iser/iser_initiator.c | 16 +- drivers/infiniband/ulp/isert/ib_isert.c | 22 + drivers/infiniband/ulp/isert/ib_isert.h | 2 + drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 + drivers/infiniband/ulp/rtrs/rtrs-clt.h | 2 + drivers/infiniband/ulp/rtrs/rtrs-srv.c | 12 +- drivers/input/evdev.c | 2 + drivers/input/input-compat.c | 2 + drivers/input/joystick/xpad.c | 10 +- drivers/input/keyboard/adp5588-keys.c | 12 +- drivers/input/keyboard/atkbd.c | 8 + drivers/input/misc/soc_button_array.c | 16 +- drivers/input/mouse/synaptics.c | 8 + drivers/input/rmi4/rmi_driver.c | 13 + drivers/input/rmi4/rmi_smbus.c | 10 +- drivers/input/serio/i8042-acpipnpio.h | 7 + drivers/input/touchscreen/cyttsp5.c | 1 + drivers/iommu/rockchip-iommu.c | 8 + drivers/irqchip/irq-gic-v3-its.c | 1 + drivers/leds/leds-pca9532.c | 8 +- drivers/leds/uleds.c | 11 +- drivers/mailbox/mailbox.c | 6 +- drivers/md/raid5.c | 35 +- drivers/media/i2c/video-i2c.c | 7 +- drivers/media/pci/dm1105/dm1105.c | 7 +- .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 5 +- .../platform/verisilicon/hantro_g2_hevc_dec.c | 6 +- .../verisilicon/rockchip_vpu981_hw_av1_dec.c | 57 +- drivers/media/rc/imon.c | 4 + drivers/media/rc/mceusb.c | 2 + drivers/media/usb/as102/as102_usb_drv.c | 75 +- drivers/media/usb/em28xx/em28xx-video.c | 4 +- drivers/media/v4l2-core/v4l2-ctrls-core.c | 32 + drivers/media/v4l2-core/v4l2-h264.c | 3 +- drivers/memstick/core/ms_block.c | 2 + drivers/mfd/ab8500-core.c | 2 +- drivers/mfd/db8500-prcmu.c | 6 +- drivers/mfd/rsmu_i2c.c | 2 + drivers/mfd/rsmu_spi.c | 2 + drivers/mfd/tps65219.c | 14 +- drivers/mmc/core/bus.c | 2 +- drivers/mmc/core/host.c | 1 + drivers/mmc/core/queue.c | 8 +- drivers/mmc/core/sdio_uart.c | 3 + drivers/mmc/host/davinci_mmc.c | 16 +- drivers/mmc/host/mmc_hsq.c | 8 +- drivers/mmc/host/mmc_spi.c | 1 + drivers/mmc/host/mxcmmc.c | 4 + drivers/mmc/host/renesas_sdhi_internal_dmac.c | 2 + drivers/mmc/host/rtsx_pci_sdmmc.c | 5 + drivers/mmc/host/sdhci-of-aspeed.c | 5 +- drivers/mmc/host/sdhci_am654.c | 4 +- drivers/mmc/host/sh_mmcif.c | 3 +- drivers/net/bareudp.c | 11 +- drivers/net/bonding/bond_alb.c | 32 +- drivers/net/bonding/bond_main.c | 6 +- drivers/net/dsa/bcm_sf2_cfp.c | 2 + drivers/net/dsa/mt7530-mdio.c | 18 +- drivers/net/dsa/mv88e6xxx/chip.c | 23 +- drivers/net/dsa/qca/qca8k-8xxx.c | 22 +- drivers/net/dsa/qca/qca8k.h | 1 + drivers/net/dsa/realtek/rtl8365mb.c | 14 + drivers/net/dsa/sja1105/sja1105_flower.c | 4 +- drivers/net/ethernet/allwinner/sun4i-emac.c | 2 + drivers/net/ethernet/amd/au1000_eth.c | 3 +- drivers/net/ethernet/amd/pds_core/fw.c | 10 +- drivers/net/ethernet/amd/pds_core/main.c | 8 +- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 3 +- 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/asp2/bcmasp_intf.c | 4 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 19 +- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 63 +- drivers/net/ethernet/broadcom/genet/bcmgenet.h | 5 +- drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c | 20 +- drivers/net/ethernet/broadcom/tg3.c | 15 +- drivers/net/ethernet/cadence/macb.h | 2 +- drivers/net/ethernet/cadence/macb_main.c | 39 +- drivers/net/ethernet/cadence/macb_ptp.c | 9 + drivers/net/ethernet/cavium/thunder/nicvf_main.c | 8 +- drivers/net/ethernet/cortina/gemini.c | 79 +- .../net/ethernet/freescale/dpaa2/dpaa2-switch.c | 69 +- drivers/net/ethernet/freescale/fman/fman.c | 1 + drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c | 3 + drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c | 4 +- drivers/net/ethernet/ibm/emac/core.c | 3 +- drivers/net/ethernet/ibm/emac/mal.c | 6 +- drivers/net/ethernet/intel/e1000e/ethtool.c | 19 +- drivers/net/ethernet/intel/ice/ice_common.c | 9 +- drivers/net/ethernet/intel/ice/ice_sched.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 20 +- drivers/net/ethernet/intel/ice/ice_type.h | 2 +- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 +- drivers/net/ethernet/marvell/octeontx2/af/mcs.c | 10 + .../ethernet/marvell/octeontx2/af/rvu_debugfs.c | 10 +- drivers/net/ethernet/marvell/octeontx2/nic/qos.c | 60 +- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 +- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 2 +- drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en/port.c | 15 +- .../ethernet/mellanox/mlx5/core/en/rep/bridge.c | 45 +- .../net/ethernet/mellanox/mlx5/core/en/tc/sample.c | 7 +- drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 3 + .../ethernet/mellanox/mlx5/core/en_accel/macsec.c | 2 + drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 - .../net/ethernet/mellanox/mlx5/core/esw/bridge.c | 15 +- .../net/ethernet/mellanox/mlx5/core/esw/bridge.h | 2 + drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 8 +- .../mellanox/mlx5/core/eswitch_offloads_termtbl.c | 7 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 + drivers/net/ethernet/micrel/ks8842.c | 4 +- drivers/net/ethernet/micrel/ks8851_common.c | 10 +- drivers/net/ethernet/micrel/ks8851_spi.c | 4 +- drivers/net/ethernet/micrel/ksz884x.c | 4 +- drivers/net/ethernet/microchip/lan743x_main.c | 2 +- .../net/ethernet/microchip/sparx5/sparx5_psfp.c | 5 +- .../ethernet/microchip/sparx5/sparx5_tc_flower.c | 18 +- drivers/net/ethernet/microsoft/mana/mana_en.c | 6 +- drivers/net/ethernet/netronome/nfp/crypto/ipsec.c | 3 +- drivers/net/ethernet/socionext/netsec.c | 2 + drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 5 +- drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 4 +- drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 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 | 9 + drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c | 1 - .../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 106 +- drivers/net/ethernet/ti/cpsw.c | 41 +- drivers/net/ethernet/ti/cpsw_new.c | 39 +- drivers/net/ethernet/ti/cpsw_priv.h | 1 + drivers/net/ethernet/ti/netcp_core.c | 2 +- drivers/net/fddi/skfp/skfddi.c | 3 +- drivers/net/gtp.c | 18 +- drivers/net/ieee802154/mac802154_hwsim.c | 10 +- drivers/net/phy/motorcomm.c | 41 +- drivers/net/ppp/ppp_async.c | 89 +- drivers/net/ppp/ppp_synctty.c | 14 +- drivers/net/usb/catc.c | 15 +- drivers/net/usb/cdc_mbim.c | 5 + drivers/net/usb/cx82310_eth.c | 1 + drivers/net/usb/hso.c | 2 +- drivers/net/usb/lan78xx.c | 9 +- drivers/net/usb/pegasus.c | 54 +- drivers/net/usb/pegasus.h | 3 - drivers/net/usb/qmi_wwan.c | 2 + drivers/net/usb/sr9700.c | 3 +- drivers/net/veth.c | 2 + drivers/net/vrf.c | 2 - drivers/net/vxlan/vxlan_core.c | 266 +-- drivers/net/vxlan/vxlan_mdb.c | 8 + drivers/net/wireless/ath/ath11k/dp_rx.c | 50 +- drivers/net/wireless/ath/ath12k/qmi.c | 59 +- drivers/net/wireless/ath/ath12k/qmi.h | 2 + drivers/net/wireless/ath/ath9k/hif_usb.c | 12 +- drivers/net/wireless/ath/ath9k/hif_usb.h | 2 +- .../wireless/broadcom/brcm80211/brcmfmac/core.c | 2 + .../broadcom/brcm80211/brcmsmac/mac80211_if.c | 4 + drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 10 +- drivers/net/wireless/intel/iwlegacy/common.c | 2 +- drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 5 + drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 13 +- drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 19 +- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 6 +- drivers/net/wireless/intel/iwlwifi/mvm/rx.c | 5 + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 4 +- drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 11 +- drivers/net/wireless/intersil/p54/eeprom.c | 22 +- drivers/net/wireless/marvell/libertas/tx.c | 7 + drivers/net/wireless/marvell/libertas_tf/main.c | 2 +- drivers/net/wireless/marvell/mwifiex/fw.h | 18 +- drivers/net/wireless/marvell/mwifiex/join.c | 8 +- drivers/net/wireless/marvell/mwifiex/pcie.c | 2 +- drivers/net/wireless/marvell/mwifiex/scan.c | 54 +- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 2 +- drivers/net/wireless/marvell/mwifiex/util.c | 10 +- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 33 +- drivers/net/wireless/mediatek/mt76/pci.c | 8 +- drivers/net/wireless/microchip/wilc1000/cfg80211.c | 14 + drivers/net/wireless/microchip/wilc1000/wlan.c | 9 + drivers/net/wireless/ralink/rt2x00/rt2400pci.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt2500pci.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt61pci.c | 2 +- drivers/net/wireless/realtek/rtw88/fw.c | 11 +- drivers/net/wireless/realtek/rtw88/tx.c | 2 +- drivers/net/wireless/realtek/rtw89/core.c | 4 +- drivers/net/wireless/realtek/rtw89/pci.c | 16 +- drivers/net/wireless/rsi/rsi_91x_hal.c | 8 + drivers/net/wireless/rsi/rsi_91x_mgmt.c | 8 +- drivers/net/wireless/ti/wlcore/main.c | 4 +- drivers/net/wireless/virtual/mac80211_hwsim.c | 45 +- drivers/net/wireless/virtual/virt_wifi.c | 4 +- drivers/net/wwan/mhi_wwan_mbim.c | 28 +- drivers/net/wwan/t7xx/t7xx_netdev.c | 4 + drivers/net/wwan/t7xx/t7xx_pci.c | 3 + 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/virtual_ncidev.c | 3 +- drivers/nvme/host/apple.c | 182 +- drivers/nvme/host/core.c | 64 +- drivers/nvme/host/fabrics.c | 6 +- drivers/nvme/host/fc.c | 7 +- drivers/nvme/host/rdma.c | 18 +- drivers/of/dynamic.c | 20 +- drivers/of/overlay.c | 15 + drivers/opp/of.c | 2 +- drivers/pci/controller/dwc/pcie-intel-gw.c | 19 +- drivers/pci/controller/pcie-altera.c | 2 + drivers/pci/controller/pcie-iproc.c | 2 + drivers/pci/controller/pcie-mediatek.c | 2 + drivers/pci/controller/pcie-rockchip-host.c | 2 + drivers/pci/of_property.c | 11 +- drivers/pci/pci-driver.c | 10 +- drivers/pci/pci-sysfs.c | 11 +- drivers/pci/pci.c | 24 +- drivers/pci/proc.c | 79 +- drivers/pci/quirks.c | 3 + drivers/pci/switch/switchtec.c | 16 + drivers/perf/arm-cmn.c | 10 +- drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c | 4 +- drivers/phy/mediatek/phy-mtk-hdmi-mt8195.h | 3 + drivers/pinctrl/meson/pinctrl-meson-s4.c | 2 +- drivers/pinctrl/pinctrl-single.c | 3 +- drivers/pinctrl/renesas/pinctrl-rzv2m.c | 4 +- drivers/platform/x86/dell/dell-laptop.c | 9 + drivers/platform/x86/intel/hid.c | 7 + drivers/ptp/ptp_ocp.c | 1 + drivers/regulator/core.c | 163 +- drivers/regulator/da9121-regulator.c | 18 +- drivers/regulator/db8500-prcmu.c | 12 +- drivers/remoteproc/qcom_q6v5_adsp.c | 8 +- drivers/rtc/rtc-aspeed.c | 1 + drivers/rtc/rtc-bq32k.c | 9 + drivers/s390/char/zcore.c | 8 +- drivers/s390/cio/chp.c | 3 + drivers/s390/cio/cio.c | 11 +- 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/net/ism_drv.c | 4 +- drivers/s390/net/qeth_l2.h | 3 +- drivers/s390/net/qeth_l2_main.c | 26 +- drivers/s390/net/qeth_l2_sys.c | 7 +- drivers/scsi/bfa/bfa_fcs_lport.c | 2 +- drivers/scsi/libiscsi_tcp.c | 3 + drivers/scsi/megaraid/megaraid_sas_base.c | 4 +- drivers/scsi/mpi3mr/mpi3mr_transport.c | 8 + drivers/scsi/mpt3sas/mpt3sas_base.c | 5 +- drivers/scsi/pm8001/pm8001_ctl.c | 8 + drivers/scsi/pm8001/pm80xx_hwi.c | 7 + drivers/scsi/qla2xxx/qla_os.c | 2 +- drivers/scsi/scsi.c | 24 +- drivers/scsi/scsi_error.c | 2 +- drivers/soc/ti/pm33xx.c | 2 +- drivers/soundwire/bus.c | 4 + drivers/soundwire/cadence_master.c | 7 + drivers/soundwire/dmi-quirks.c | 35 + drivers/soundwire/intel.c | 31 +- drivers/soundwire/intel_ace2x.c | 39 +- drivers/soundwire/slave.c | 4 +- drivers/spi/spi-dw-dma.c | 3 +- drivers/spi/spi-dw.h | 1 + drivers/spi/spi-qcom-qspi.c | 44 +- drivers/spi/spi-xilinx.c | 6 +- drivers/spi/spi-zynqmp-gqspi.c | 52 +- drivers/spi/spi.c | 9 +- drivers/staging/fbtft/fbtft-core.c | 9 +- drivers/target/iscsi/iscsi_target.c | 4 +- drivers/tee/optee/call.c | 3 +- drivers/thermal/db8500_thermal.c | 10 +- drivers/thermal/qcom/tsens.c | 111 +- drivers/thermal/qcom/tsens.h | 1 + drivers/thermal/tegra/soctherm.c | 6 +- drivers/thunderbolt/icm.c | 10 + drivers/thunderbolt/switch.c | 6 + drivers/thunderbolt/tb.c | 9 +- drivers/thunderbolt/tb_regs.h | 1 + drivers/thunderbolt/usb4.c | 11 +- drivers/thunderbolt/xdomain.c | 41 +- drivers/tty/serial/8250/8250_port.c | 7 + drivers/usb/atm/xusbatm.c | 6 +- drivers/usb/class/cdc-acm.c | 6 + drivers/usb/class/usbtmc.c | 2 - drivers/usb/core/hcd.c | 14 +- drivers/usb/gadget/udc/aspeed_udc.c | 7 +- drivers/usb/gadget/udc/core.c | 7 +- drivers/usb/gadget/udc/goku_udc.c | 3 +- drivers/usb/host/Kconfig | 2 +- drivers/usb/host/xhci-debugfs.c | 16 +- drivers/usb/host/xhci-hub.c | 117 +- drivers/usb/host/xhci-mem.c | 40 +- drivers/usb/host/xhci-pci.c | 8 +- drivers/usb/host/xhci-ring.c | 14 +- drivers/usb/host/xhci-tegra.c | 12 +- drivers/usb/host/xhci-trace.h | 5 + drivers/usb/host/xhci.c | 79 +- drivers/usb/host/xhci.h | 44 +- drivers/usb/serial/spcp8x5.c | 6 +- drivers/usb/usbip/vhci_sysfs.c | 52 +- drivers/vdpa/ifcvf/ifcvf_main.c | 14 +- drivers/vdpa/solidrun/snet_main.c | 6 +- drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 3 +- drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 7 +- drivers/vhost/scsi.c | 3 +- drivers/vhost/vdpa.c | 106 +- drivers/video/fbdev/pm2fb.c | 1 + drivers/video/fbdev/vfb.c | 11 +- drivers/virtio/virtio_input.c | 9 +- drivers/virtio/virtio_pci_common.c | 4 +- drivers/virtio/virtio_vdpa.c | 2 +- drivers/watchdog/da9063_wdt.c | 4 +- drivers/watchdog/db8500_wdt.c | 22 +- drivers/watchdog/digicolor_wdt.c | 13 +- drivers/watchdog/msc313e_wdt.c | 88 +- drivers/watchdog/rtd119x_wdt.c | 7 +- drivers/watchdog/sp5100_tco.c | 6 +- drivers/watchdog/starfive-wdt.c | 2 +- drivers/watchdog/sunxi_wdt.c | 45 +- drivers/watchdog/watchdog_hrtimer_pretimeout.c | 1 + drivers/xen/gntalloc.c | 13 +- drivers/xen/xen-front-pgdir-shbuf.c | 12 +- fs/9p/vfs_dir.c | 14 +- fs/affs/affs.h | 5 - fs/affs/super.c | 6 +- fs/autofs/inode.c | 4 + fs/befs/linuxvfs.c | 3 +- fs/bfs/inode.c | 3 +- fs/btrfs/block-group.c | 3 +- fs/btrfs/btrfs_inode.h | 2 +- fs/btrfs/file.c | 12 +- fs/btrfs/free-space-cache.c | 13 +- fs/btrfs/inode.c | 42 +- fs/btrfs/ioctl.c | 13 +- fs/btrfs/raid-stripe-tree.c | 19 +- fs/btrfs/raid-stripe-tree.h | 1 + fs/btrfs/reflink.c | 3 +- fs/btrfs/relocation.c | 47 +- fs/btrfs/send.c | 2 +- fs/btrfs/transaction.c | 13 +- fs/btrfs/tree-checker.c | 43 +- fs/btrfs/tree-log.c | 12 +- fs/btrfs/verity.c | 4 +- fs/btrfs/volumes.c | 10 +- fs/btrfs/xattr.c | 4 +- fs/btrfs/zoned.c | 2 + fs/cachefiles/namei.c | 1 - fs/configfs/dir.c | 12 +- fs/erofs/fscache.c | 2 + fs/exec.c | 51 +- fs/f2fs/inline.c | 7 + fs/freevxfs/vxfs_bmap.c | 3 +- fs/fs-writeback.c | 25 +- fs/fuse/file.c | 3 +- fs/gfs2/bmap.c | 19 + fs/gfs2/bmap.h | 1 + fs/gfs2/file.c | 10 + fs/hfs/catalog.c | 9 - fs/hfs/dir.c | 28 +- fs/hfs/hfs.h | 3 +- fs/hfs/hfs_fs.h | 2 - fs/hfs/inode.c | 4 - fs/hfsplus/catalog.c | 11 - fs/hfsplus/dir.c | 28 +- fs/hfsplus/hfsplus_fs.h | 5 +- fs/hfsplus/inode.c | 40 +- fs/hfsplus/super.c | 2 - fs/hpfs/super.c | 3 +- fs/inode.c | 11 +- fs/isofs/inode.c | 3 +- fs/jfs/super.c | 3 +- fs/minix/inode.c | 3 +- fs/nfs/nfs42proc.c | 15 +- fs/ntfs3/dir.c | 4 +- fs/ntfs3/fslog.c | 28 +- fs/ntfs3/index.c | 41 +- fs/ntfs3/super.c | 8 +- fs/ntfs3/xattr.c | 4 +- fs/ocfs2/namei.c | 9 +- fs/ocfs2/xattr.c | 13 +- fs/ocfs2/xattr.h | 8 +- fs/omfs/inode.c | 6 +- fs/qnx4/inode.c | 3 +- fs/smb/client/cifsacl.c | 30 +- fs/smb/client/connect.c | 36 +- fs/smb/client/file.c | 5 +- fs/smb/client/misc.c | 36 +- fs/smb/client/readdir.c | 9 +- fs/smb/client/reparse.c | 5 +- fs/smb/client/smb2inode.c | 11 + fs/smb/client/smb2ops.c | 75 +- fs/smb/client/smb2pdu.c | 64 +- fs/smb/client/transport.c | 11 +- fs/smb/server/mgmt/share_config.c | 36 +- fs/smb/server/mgmt/user_session.c | 25 +- fs/smb/server/misc.c | 14 +- fs/smb/server/oplock.c | 221 ++- fs/smb/server/oplock.h | 2 +- fs/smb/server/server.c | 6 + fs/smb/server/smb2misc.c | 9 +- fs/smb/server/smb2pdu.c | 366 ++-- fs/smb/server/smb2pdu.h | 1 + fs/smb/server/smbacl.c | 25 +- fs/smb/server/transport_ipc.c | 21 +- fs/smb/server/vfs.c | 46 +- fs/smb/server/vfs_cache.c | 28 +- fs/smb/server/vfs_cache.h | 8 +- fs/squashfs/xz_wrapper.c | 6 +- fs/ufs/cylinder.c | 10 + fs/ufs/dir.c | 122 +- fs/ufs/ialloc.c | 2 +- fs/ufs/inode.c | 42 +- fs/ufs/super.c | 17 +- fs/xfs/scrub/agheader_repair.c | 39 +- fs/xfs/scrub/ialloc.c | 4 + fs/xfs/scrub/scrub.c | 3 +- fs/xfs/scrub/stats.c | 60 +- fs/xfs/scrub/stats.h | 4 +- fs/xfs/xfs_icache.c | 2 +- include/drm/drm_probe_helper.h | 2 + include/keys/request_key_auth-type.h | 2 +- include/linux/bitfield.h | 2 +- include/linux/bpf.h | 2 + include/linux/dev_printk.h | 1 + include/linux/firmware/intel/stratix10-smc.h | 18 +- include/linux/fwnode.h | 1 + include/linux/ipv6.h | 35 +- include/linux/kcsan-checks.h | 6 +- include/linux/mailbox_controller.h | 2 + include/linux/mfd/db8500-prcmu.h | 252 ++- include/linux/mfd/dbx500-prcmu.h | 575 ------- include/linux/netdevice.h | 28 +- include/linux/perf_event.h | 5 + include/linux/rculist.h | 29 + include/linux/rtnetlink.h | 7 + include/linux/skbuff.h | 5 +- include/linux/switchtec.h | 1 + include/linux/thunderbolt.h | 2 + include/linux/vdpa.h | 41 +- include/linux/workqueue.h | 41 +- include/media/v4l2-hevc.h | 41 + include/net/cfg80211.h | 2 +- include/net/cfg802154.h | 1 + include/net/gue.h | 19 +- include/net/if_inet6.h | 2 - include/net/inet_sock.h | 1 + include/net/ip.h | 3 +- include/net/ip6_route.h | 2 + include/net/ip_fib.h | 5 + include/net/ipv6.h | 4 +- include/net/mac80211.h | 9 +- include/net/netfilter/nf_conntrack.h | 5 + include/net/netfilter/nf_tables.h | 3 - include/net/netns/nftables.h | 1 + include/net/netns/xfrm.h | 2 +- include/net/nfc/hci.h | 2 +- include/net/nfc/nfc.h | 3 +- include/net/sch_generic.h | 2 +- include/net/sock.h | 2 +- include/net/udp_tunnel.h | 7 +- include/rdma/ib_umem.h | 4 +- include/sound/hda_codec.h | 30 + include/sound/rawmidi.h | 2 + include/trace/events/icmp.h | 13 +- include/uapi/linux/vhost_types.h | 7 + include/uapi/linux/virtio_crypto.h | 1 + include/uapi/sound/asound.h | 6 +- kernel/bpf/bpf_iter.c | 2 +- kernel/bpf/btf.c | 22 +- kernel/bpf/cgroup.c | 1 + kernel/bpf/disasm.c | 5 +- kernel/bpf/hashtab.c | 24 +- kernel/bpf/helpers.c | 58 +- kernel/bpf/offload.c | 2 + kernel/bpf/syscall.c | 5 +- kernel/bpf/verifier.c | 15 +- kernel/dma/coherent.c | 13 +- kernel/events/ring_buffer.c | 9 +- kernel/locking/lockdep.c | 50 +- kernel/rcu/tasks.h | 3 +- kernel/sched/fair.c | 11 +- kernel/time/clockevents.c | 35 +- kernel/time/tick-broadcast.c | 36 +- kernel/time/tick-internal.h | 2 + kernel/trace/Makefile | 5 +- kernel/trace/bpf_trace.c | 11 + kernel/trace/ring_buffer.c | 13 +- kernel/trace/trace_event_perf.c | 12 +- kernel/trace/trace_events_hist.c | 53 +- kernel/trace/trace_events_user.c | 26 +- kernel/trace/trace_probe.c | 48 +- kernel/trace/trace_probe.h | 2 + kernel/workqueue.c | 7 +- mm/backing-dev.c | 5 +- mm/damon/core.c | 13 +- mm/huge_memory.c | 10 + mm/memblock.c | 18 +- mm/mlock.c | 2 +- net/8021q/vlan.c | 23 - net/8021q/vlan.h | 2 + net/8021q/vlan_dev.c | 61 +- net/9p/client.c | 2 +- net/appletalk/aarp.c | 5 + net/atm/pppoatm.c | 42 +- net/bluetooth/bnep/core.c | 17 +- net/bluetooth/bnep/netdev.c | 8 +- net/bluetooth/eir.c | 10 +- net/bluetooth/hci_codec.c | 36 +- net/bluetooth/hci_conn.c | 14 +- net/bluetooth/hci_core.c | 4 +- net/bluetooth/hci_sock.c | 20 +- net/bluetooth/hci_sync.c | 2 + net/bluetooth/iso.c | 32 +- net/bluetooth/l2cap_core.c | 28 +- net/bluetooth/mgmt.c | 27 +- net/bluetooth/msft.c | 2 +- net/bluetooth/rfcomm/core.c | 6 + net/bluetooth/rfcomm/sock.c | 19 +- net/bluetooth/smp.c | 17 + net/bridge/br_arp_nd_proxy.c | 16 +- net/bridge/br_device.c | 2 +- net/bridge/br_fdb.c | 7 +- net/bridge/br_input.c | 2 +- net/bridge/br_mst.c | 20 +- net/bridge/br_multicast.c | 11 +- net/bridge/br_stp_bpdu.c | 5 +- net/core/dev.c | 68 +- net/core/drop_monitor.c | 22 +- net/core/filter.c | 67 +- net/core/skbuff.c | 16 +- net/core/skmsg.c | 4 + net/core/sock.c | 13 +- net/core/sock_map.c | 1 + net/dccp/ipv6.c | 2 +- net/hsr/hsr_forward.c | 2 +- net/hsr/hsr_netlink.c | 9 +- net/ieee802154/6lowpan/core.c | 2 +- net/ipv4/arp.c | 1 + net/ipv4/esp4.c | 6 + net/ipv4/fib_rules.c | 4 +- net/ipv4/fib_trie.c | 4 + net/ipv4/fou_core.c | 6 +- net/ipv4/icmp.c | 17 +- net/ipv4/inet_connection_sock.c | 3 +- net/ipv4/inet_fragment.c | 6 + net/ipv4/ip_gre.c | 12 + net/ipv4/ip_tunnel_core.c | 6 + net/ipv4/nexthop.c | 2 +- net/ipv4/sysctl_net_ipv4.c | 4 +- net/ipv4/tcp_input.c | 3 +- net/ipv4/tcp_output.c | 3 + net/ipv4/udp.c | 4 +- net/ipv6/addrconf.c | 13 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/esp6.c | 6 + net/ipv6/exthdrs.c | 4 +- net/ipv6/exthdrs_core.c | 3 + net/ipv6/ip6_fib.c | 4 +- net/ipv6/ip6_gre.c | 8 +- net/ipv6/ip6_output.c | 23 +- net/ipv6/ip6_udp_tunnel.c | 37 +- net/ipv6/ipv6_sockglue.c | 90 +- net/ipv6/mcast.c | 273 +-- net/ipv6/ndisc.c | 4 +- net/ipv6/netfilter/ip6_tables.c | 5 + net/ipv6/netfilter/ip6t_rpfilter.c | 2 +- net/ipv6/netfilter/ip6t_rt.c | 11 +- net/ipv6/route.c | 22 +- net/ipv6/seg6.c | 4 +- net/ipv6/seg6_local.c | 3 + net/ipv6/tcp_ipv6.c | 6 +- net/ipv6/xfrm6_output.c | 10 +- net/llc/llc_c_ac.c | 2 +- net/llc/llc_s_ac.c | 4 + net/llc/llc_sap.c | 8 +- net/mac80211/cfg.c | 14 +- net/mac80211/debugfs.c | 2 +- net/mac80211/debugfs_netdev.c | 9 + net/mac80211/ieee80211_i.h | 7 +- net/mac80211/iface.c | 31 +- net/mac80211/main.c | 4 + net/mac80211/mesh.c | 1 - net/mac80211/mlme.c | 6 +- net/mac80211/pm.c | 8 +- net/mac80211/status.c | 4 +- net/mac80211/tdls.c | 19 +- net/mac80211/tx.c | 46 +- net/mac802154/ieee802154_i.h | 8 + net/mac802154/iface.c | 6 + net/mac802154/main.c | 1 + net/mac802154/rx.c | 120 +- net/mac802154/scan.c | 10 +- net/mptcp/options.c | 3 +- net/mptcp/protocol.c | 15 +- net/mptcp/protocol.h | 3 +- net/mptcp/subflow.c | 12 +- net/mptcp/syncookies.c | 5 +- net/netfilter/ipset/ip_set_hash_gen.h | 13 +- net/netfilter/ipvs/ip_vs_core.c | 6 + net/netfilter/ipvs/ip_vs_sync.c | 30 +- net/netfilter/nf_conntrack_expect.c | 3 +- net/netfilter/nf_conntrack_netlink.c | 16 +- net/netfilter/nf_conntrack_proto_tcp.c | 10 +- net/netfilter/nf_conntrack_sip.c | 2 +- net/netfilter/nf_flow_table_core.c | 12 +- net/netfilter/nf_flow_table_offload.c | 7 +- net/netfilter/nf_log_syslog.c | 6 +- net/netfilter/nf_tables_api.c | 151 +- net/netfilter/nfnetlink_log.c | 28 +- net/netfilter/nfnetlink_queue.c | 77 +- net/netfilter/nft_chain_filter.c | 50 +- net/netfilter/nft_nat.c | 2 +- net/netfilter/nft_set_pipapo_avx2.c | 1 + net/netfilter/nft_set_rbtree.c | 2 - net/netfilter/nft_synproxy.c | 3 +- net/netlabel/netlabel_unlabeled.c | 2 +- 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 | 173 +- net/nfc/llcp_sock.c | 67 +- net/nfc/nci/core.c | 10 +- net/nfc/netlink.c | 7 +- net/nfc/nfc.h | 3 +- net/openvswitch/conntrack.c | 14 +- net/openvswitch/flow.c | 4 +- net/openvswitch/flow_table.c | 4 +- net/packet/af_packet.c | 108 +- net/packet/internal.h | 2 +- net/phonet/pn_dev.c | 30 +- net/qrtr/af_qrtr.c | 4 +- net/rds/af_rds.c | 63 +- net/rds/connection.c | 102 +- net/rds/ib_cm.c | 27 +- net/rds/ib_frmr.c | 11 +- net/rds/ib_recv.c | 9 +- net/rds/message.c | 4 +- net/rds/send.c | 16 +- net/rds/tcp.c | 164 +- net/rds/tcp_listen.c | 6 +- net/sched/act_api.c | 136 +- net/sched/act_csum.c | 8 +- net/sched/act_ct.c | 5 +- net/sched/act_gate.c | 30 +- net/sched/cls_api.c | 2 +- net/sched/cls_route.c | 101 +- net/sched/cls_u32.c | 44 +- net/sched/sch_api.c | 2 +- net/sched/sch_drr.c | 13 +- net/sched/sch_ets.c | 12 +- net/sched/sch_fq_pie.c | 62 +- net/sched/sch_generic.c | 24 +- net/sched/sch_hfsc.c | 22 + net/sched/sch_hhf.c | 15 +- net/sched/sch_pie.c | 2 +- net/sched/sch_sfq.c | 7 +- net/sched/sch_teql.c | 7 +- net/sctp/associola.c | 15 +- net/sctp/input.c | 7 +- net/sctp/ipv6.c | 12 +- net/sctp/protocol.c | 10 +- net/sctp/sm_make_chunk.c | 14 +- net/sctp/sm_sideeffect.c | 48 +- net/sctp/sm_statefuns.c | 7 + net/smc/smc_core.c | 2 + net/smc/smc_ib.c | 10 +- net/sunrpc/xprtrdma/verbs.c | 21 +- net/tipc/group.c | 4 +- net/tipc/monitor.c | 3 +- net/tipc/name_table.c | 32 +- net/tipc/socket.c | 4 +- net/tls/tls_main.c | 11 + net/tls/tls_sw.c | 18 +- net/unix/af_unix.c | 42 +- net/unix/garbage.c | 1 + net/vmw_vsock/hyperv_transport.c | 2 +- net/vmw_vsock/vmci_transport.c | 2 +- net/wireless/mlme.c | 105 +- net/wireless/nl80211.c | 8 +- net/wireless/scan.c | 12 +- net/wireless/util.c | 26 +- net/wireless/wext-sme.c | 9 + net/xdp/xskmap.c | 2 +- net/xfrm/espintcp.c | 6 +- net/xfrm/xfrm_input.c | 11 + net/xfrm/xfrm_state.c | 5 + net/xfrm/xfrm_user.c | 37 +- scripts/mod/modpost.c | 11 +- scripts/sorttable.c | 2 +- security/apparmor/lsm.c | 4 +- security/apparmor/policy.c | 13 +- security/apparmor/policy_unpack.c | 2 + security/integrity/digsig_asymmetric.c | 4 + security/integrity/ima/ima_appraise.c | 5 + security/keys/gc.c | 4 +- security/keys/request_key_auth.c | 12 +- security/keys/trusted-keys/trusted_tpm2.c | 12 +- security/selinux/avc.c | 5 +- security/selinux/hooks.c | 158 +- security/selinux/include/objsec.h | 10 +- sound/core/pcm_native.c | 35 +- sound/core/pcm_timer.c | 7 +- sound/core/rawmidi.c | 4 + sound/core/seq/oss/seq_oss_rw.c | 3 +- sound/core/ump.c | 94 +- sound/hda/ext/hdac_ext_controller.c | 6 +- sound/hda/hdac_bus.c | 8 +- sound/hda/hdac_component.c | 6 +- sound/hda/hdac_device.c | 28 +- sound/hda/hdac_regmap.c | 35 +- sound/isa/es18xx.c | 4 + sound/pci/ctxfi/cthw20k2.c | 1 + sound/pci/hda/hda_codec.c | 119 +- sound/pci/hda/hda_controller.c | 26 +- sound/pci/hda/hda_proc.c | 4 +- sound/pci/hda/hda_sysfs.c | 77 +- sound/pci/hda/patch_conexant.c | 12 + sound/pci/hda/patch_realtek.c | 44 + sound/soc/amd/renoir/acp3x-pdm-dma.c | 2 +- sound/soc/amd/yc/acp6x-mach.c | 21 + sound/soc/amd/yc/acp6x-pdm-dma.c | 2 + sound/soc/bcm/bcm63xx-i2s-whistler.c | 1 + sound/soc/codecs/ab8500-codec.c | 543 +++--- sound/soc/codecs/hdmi-codec.c | 6 +- sound/soc/codecs/mt6351.c | 1 + sound/soc/codecs/pcm3168a.c | 20 +- sound/soc/codecs/rk3328_codec.c | 54 +- sound/soc/codecs/rt5645.c | 4 + sound/soc/codecs/rt712-sdca-dmic.c | 14 +- sound/soc/intel/atom/sst/sst_pci.c | 1 + sound/soc/intel/avs/core.c | 11 +- sound/soc/intel/catpt/ipc.c | 8 + sound/soc/intel/catpt/loader.c | 3 + sound/soc/intel/catpt/registers.h | 12 + sound/soc/meson/aiu-acodec-ctrl.c | 3 + sound/soc/meson/aiu-codec-ctrl.c | 3 + sound/soc/qcom/qdsp6/q6apm.c | 10 +- sound/soc/rockchip/rockchip_pdm.c | 16 +- sound/soc/rockchip/rockchip_spdif.c | 1 + sound/soc/soc-topology.c | 37 +- sound/soc/sprd/sprd-pcm-compress.c | 15 +- sound/soc/sti/uniperif_reader.c | 4 +- sound/soc/ti/omap3pandora.c | 5 +- sound/soc/ux500/ux500_msp_dai.c | 132 +- sound/soc/ux500/ux500_msp_dai.h | 11 - sound/soc/ux500/ux500_msp_i2s.c | 260 ++- sound/soc/ux500/ux500_msp_i2s.h | 16 +- sound/usb/6fire/chip.c | 40 +- sound/usb/6fire/comm.c | 42 +- sound/usb/6fire/comm.h | 2 +- sound/usb/6fire/midi.c | 64 +- sound/usb/6fire/midi.h | 2 +- sound/usb/6fire/pcm.c | 221 +-- sound/usb/6fire/pcm.h | 5 +- sound/usb/bcd2000/bcd2000.c | 33 +- sound/usb/caiaq/audio.c | 10 +- sound/usb/caiaq/device.c | 53 +- sound/usb/caiaq/device.h | 4 +- sound/usb/caiaq/input.c | 6 + sound/usb/caiaq/midi.c | 6 +- sound/usb/mixer.c | 17 +- sound/usb/mixer_maps.c | 25 + sound/usb/quirks-table.h | 22 + sound/usb/quirks.c | 4 + sound/usb/usx2y/us122l.c | 9 +- sound/usb/usx2y/usbusx2y.c | 45 +- sound/usb/usx2y/usbusx2y.h | 4 +- sound/virtio/virtio_card.c | 4 +- tools/build/feature/test-bpf.c | 2 + tools/include/nolibc/crt.h | 2 +- tools/lib/bpf/bpf.c | 2 + tools/lib/bpf/gen_loader.c | 2 + tools/lib/bpf/libbpf.c | 7 + tools/lib/bpf/relo_core.c | 58 +- tools/perf/tests/shell/stat_bpf_counters.sh | 30 +- tools/perf/util/evsel.c | 4 + tools/testing/selftests/alsa/mixer-test.c | 4 +- .../selftests/arm64/mte/check_gcr_el1_cswitch.c | 2 +- tools/testing/selftests/bpf/config | 1 + tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 7 + tools/testing/selftests/bpf/progs/test_bpf_nf.c | 112 +- tools/testing/selftests/cgroup/cgroup_util.c | 82 +- tools/testing/selftests/cgroup/cgroup_util.h | 8 +- tools/testing/selftests/cgroup/test_kmem.c | 2 +- tools/testing/selftests/cgroup/test_memcontrol.c | 78 + .../ftrace/test.d/kprobe/kprobe_non_uniq_symbol.tc | 2 +- tools/testing/selftests/landlock/fs_test.c | 1746 +++++++++++++++++++- tools/testing/selftests/mm/cow.c | 338 ++-- tools/testing/selftests/nci/nci_dev.c | 45 +- tools/testing/selftests/net/fib_nexthops.sh | 28 + tools/testing/selftests/net/mptcp/mptcp_connect.c | 4 +- tools/testing/selftests/net/pmtu.sh | 2 +- tools/testing/selftests/net/test_vxlan_mdb.sh | 6 + tools/testing/selftests/powerpc/tm/tm.h | 8 +- tools/thermal/tmon/tui.c | 2 +- 1071 files changed, 14700 insertions(+), 7671 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/1193 ksmbd: fix use-after-free in oplock break notification
6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Abdifatah Suruur <[email protected]>
commit 0e753899627b5e28a9fea8bca98262a6f65a2452 upstream.
smb2_oplock_break_noti() reads opinfo->conn without any lock and dereferences it after two allocations which may sleep. When the durable handle owning the oplock is disconnected, session_fd_check() clears opinfo->conn and drops its conn reference under ci->m_lock, and the last ksmbd_conn_put() frees the connection. A break triggered by another connection that races with the teardown can then resurrect the freed connection: ksmbd_conn_get() is a plain atomic_inc, and the queued break work later dereferences the stale conn via ksmbd_conn_write(), a use-after-free reachable by any authenticated client holding a durable batch oplock.
Thread the caller's inode into the notification path instead of taking a new reference on it. Every caller of oplock_break() already holds a live ksmbd_file (or an explicit ksmbd_inode_lookup_lock() reference, in the parent lease break paths) on the inode that owns the break target's oplock list, so ci cannot be freed during the call, and its lock can be taken without dereferencing opinfo->o_fp, which a concurrent close may free. Select and pin the connection under ci->m_lock, the same lock session_fd_check() and ksmbd_reopen_durable_fd() use to update opinfo->conn, so a concurrent detach either loses the race to the clear or keeps the connection alive until the notification work releases it. Transfer the reference to the work item and release it on allocation failures.
[ This tree predates the deferred break machinery
(oplock_break_add()/oplock_break_drain_none()) that the original commit is layered on, so it is ported in the same patch: the three walks that hold ci->m_lock (smb_send_parent_lease_break_noti(), smb_lazy_parent_lease_break_close(), smb_break_all_levII_oplock()) collect the breaks and drain them after releasing the lock, and every oplock_break() call site runs outside ci->m_lock, so smb2_oplock_break_conn_get() takes the read lock itself, as in the 6.18.y backport. ]
--- fs/smb/server/oplock.c | 118 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 14 deletions(-)
fs/smb/server/oplock.c +104 -14
@@ -708,31 +708,67 @@ static void __smb2_oplock_break_noti(struct work_struct *wk)ksmbd_conn_put (conn); } +/* +* Select and pin the connection used for an oplock break before doing any +* allocations which may sleep. The caller of oplock_break() holds a live +* reference on ci (a file being opened, a file being operated on, or an +* explicit ksmbd_inode_lookup_lock() reference in the parent lease break +* paths), so the inode cannot be freed during the call. +* +* opinfo->conn is cleared under ci->m_lock by session_fd_check() when the +* durable handle owning the oplock is disconnected, reassigned by +* ksmbd_reopen_durable_fd() under the same lock, and the last +* ksmbd_conn_put() of the old connection frees it. Holding the read lock +* excludes both writers, so the connection cannot be freed while it is +* selected. +*/ +static struct ksmbd_conn *smb2_oplock_break_conn_get (struct oplock_info *opinfo, +struct ksmbd_inode *ci) +{ +struct ksmbd_conn *conn; + +down_read (&ci->m_lock); + conn =READ_ONCE (opinfo->conn); +if (conn && !ksmbd_conn_releasing (conn)) + conn =ksmbd_conn_get (conn); +else + conn =NULL ; +up_read (&ci->m_lock); + +return conn; +} +/** * smb2_oplock_break_noti() - send smb2 exclusive/batch to level2 oplock * break command from server to client * @opinfo: oplock info object +* @ci: inode owning the break target's oplock list, pinned by +* the caller * * Return: 0 on success, otherwise error */ -static int smb2_oplock_break_noti (struct oplock_info *opinfo) +static int smb2_oplock_break_noti (struct oplock_info *opinfo, +struct ksmbd_inode *ci) {struct ksmbd_conn *conn;struct oplock_break_info *br_info;int ret =0 ;struct ksmbd_work *work; - conn =READ_ONCE (opinfo->conn); + conn =smb2_oplock_break_conn_get (opinfo, ci);if (!conn)return 0 ; work =ksmbd_alloc_work_struct (); -if (!work) +if (!work) { +ksmbd_conn_put (conn);return -ENOMEM ; + } br_info =kmalloc (sizeof (struct oplock_break_info ),GFP_KERNEL );if (!br_info) {ksmbd_free_work_struct (work); +ksmbd_conn_put (conn);return -ENOMEM ; }
@@ -741,7 +777,8 @@ static int smb2_oplock_break_noti(struct oplock_info *opinfo) br_info->open_trunc = opinfo->open_trunc; work->request_buf = (char *)br_info; - work->conn =ksmbd_conn_get (conn); +/* Transfer the reference acquired by smb2_oplock_break_conn_get(). */ + work->conn = conn; work->sess = opinfo->sess;ksmbd_conn_r_count_inc (conn);
@@ -890,8 +927,8 @@ static void wait_lease_breaking(struct oplock_info *opinfo) } } -static int oplock_break (struct oplock_info *brk_opinfo,int req_op_level, -struct ksmbd_work *in_work) +static int oplock_break (struct oplock_info *brk_opinfo,struct ksmbd_inode *ci, +int req_op_level,struct ksmbd_work *in_work) {int err =0 ;
@@ -957,7 +994,7 @@ static int oplock_break(struct oplock_info *brk_opinfo, int req_op_level,if (brk_opinfo->is_lease) err =smb2_lease_break_noti (brk_opinfo);else - err =smb2_oplock_break_noti (brk_opinfo); + err =smb2_oplock_break_noti (brk_opinfo, ci);ksmbd_debug (OPLOCK ,"oplock granted = %d\n" , brk_opinfo->level);if (brk_opinfo->op_state ==OPLOCK_CLOSING )
@@ -969,6 +1006,43 @@ static int oplock_break(struct oplock_info *brk_opinfo, int req_op_level,return err; } +struct oplock_break_entry { +struct list_head list; +struct oplock_info *opinfo; +}; + +/* +* Collect an oplock for a deferred break. oplock_break() may block for +* the client's break acknowledgment, and the close that wakes that wait +* needs ci->m_lock for write, so the walks that hold ci->m_lock defer the +* break until the lock is released. +*/ +static int oplock_break_add (struct list_head *head,struct oplock_info *opinfo) +{ +struct oplock_break_entry *ent; + + ent =kmalloc (sizeof (*ent),GFP_KERNEL ); +if (!ent) +return -ENOMEM ; + + ent->opinfo = opinfo; +list_add_tail (&ent->list, head); +return 0 ; +} + +static void oplock_break_drain_none (struct list_head *head, +struct ksmbd_inode *ci) +{ +struct oplock_break_entry *ent, *tmp; + +list_for_each_entry_safe (ent, tmp, head, list) { +oplock_break (ent->opinfo, ci,SMB2_OPLOCK_LEVEL_NONE ,NULL ); +list_del (&ent->list); +opinfo_put (ent->opinfo); +kfree (ent); + } +} +void destroy_lease_table (struct ksmbd_conn *conn) {struct lease_table *lb, *lbtmp;
@@ -1112,6 +1186,7 @@ void smb_send_parent_lease_break_noti(struct ksmbd_file *fp, {struct oplock_info *opinfo;struct ksmbd_inode *p_ci =NULL ; +LIST_HEAD (brk_list);if (lctx->version !=2 )return ;
@@ -1137,12 +1212,14 @@ void smb_send_parent_lease_break_noti(struct ksmbd_file *fp,continue ; } -oplock_break (opinfo,SMB2_OPLOCK_LEVEL_NONE ,NULL ); -opinfo_put (opinfo); +if (oplock_break_add (&brk_list, opinfo)) +opinfo_put (opinfo); } }up_read (&p_ci->m_lock); +oplock_break_drain_none (&brk_list, p_ci); +ksmbd_inode_put (p_ci); }
@@ -1150,6 +1227,7 @@ void smb_lazy_parent_lease_break_close(struct ksmbd_file *fp) {struct oplock_info *opinfo;struct ksmbd_inode *p_ci =NULL ; +LIST_HEAD (brk_list);rcu_read_lock (); opinfo =rcu_dereference (fp->f_opinfo);
@@ -1178,12 +1256,14 @@ void smb_lazy_parent_lease_break_close(struct ksmbd_file *fp)continue ; } -oplock_break (opinfo,SMB2_OPLOCK_LEVEL_NONE ,NULL ); -opinfo_put (opinfo); +if (oplock_break_add (&brk_list, opinfo)) +opinfo_put (opinfo); } }up_read (&p_ci->m_lock); +oplock_break_drain_none (&brk_list, p_ci); +ksmbd_inode_put (p_ci); }
@@ -1280,7 +1360,7 @@ int smb_grant_oplock(struct ksmbd_work *work, int req_op_level, u64 pid, goto op_break_not_needed; } - err =oplock_break (prev_opinfo,SMB2_OPLOCK_LEVEL_II , work); + err =oplock_break (prev_opinfo, fp->f_ci,SMB2_OPLOCK_LEVEL_II , work);opinfo_put (prev_opinfo);if (err == -ENOENT ) goto set_lev;
@@ -1366,7 +1446,7 @@ static void smb_break_all_write_oplock(struct ksmbd_work *work, } brk_opinfo->open_trunc = is_trunc; -oplock_break (brk_opinfo,SMB2_OPLOCK_LEVEL_II , work); +oplock_break (brk_opinfo, fp->f_ci,SMB2_OPLOCK_LEVEL_II , work);opinfo_put (brk_opinfo); }
@@ -1383,6 +1463,7 @@ void smb_break_all_levII_oplock(struct ksmbd_work *work, struct ksmbd_file *fp,struct oplock_info *op, *brk_op;struct ksmbd_inode *ci;struct ksmbd_conn *conn = work->conn; +LIST_HEAD (brk_list);if (!test_share_config_flag (work->tcon->share_conf,KSMBD_SHARE_FLAG_OPLOCKS ))
@@ -1430,12 +1511,21 @@ void smb_break_all_levII_oplock(struct ksmbd_work *work, struct ksmbd_file *fp, SMB2_LEASE_KEY_SIZE)) goto next; brk_op->open_trunc = is_trunc; -oplock_break (brk_op,SMB2_OPLOCK_LEVEL_NONE ,NULL ); + +/* +* Defer the break until ci->m_lock is released: oplock_break() +* may block waiting for the break acknowledgment, and the +* close that wakes that wait needs ci->m_lock for write. +*/ +if (!oplock_break_add (&brk_list, brk_op)) +continue ; next:opinfo_put (brk_op); }up_read (&ci->m_lock); +oplock_break_drain_none (&brk_list, ci); +if (op)opinfo_put (op); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 2/1193 drm/gem: Consider GEM object reclaimable if shrinking fails
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Boris Brezillon <[email protected]>
[ Upstream commit 71c8224a18825102ee1e5e70498f96f6c2d2a81d ]
If the object wasn't moved to a different LRU after the shrink callback returns, it means the buffer is still reclaimable. Update the remaining counter to reflect that.
v2:
- Collect R-b
v3:
- Collect R-b
v4:
- No changes
v5:
- No changes
v6:
- No changes
v7:
- No changes
--- drivers/gpu/drm/drm_gem.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/gpu/drm/drm_gem.c +10 -0
@@ -1519,6 +1519,16 @@ drm_gem_lru_scan(struct drm_gem_lru *lru,*/ WARN_ON (obj->lru == &still_in_lru);WARN_ON (obj->lru == lru); + }else if (obj->lru == &still_in_lru) { +/* +* If the object wasn't moved and wasn't shrunk either, +* it's still remaining as reclaimable. Note that +* obj->lru is supposed to be checked with the LRU lock +* held for an accurate result, but we don't care about +* accuracy here. Worst thing that could happen is an +* extra scan. +*/ + *remaining += obj->size >>PAGE_SHIFT ; }dma_resv_unlock (obj->resv);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 3/1193 bus: fsl-mc: wait for the MC firmware to complete its boot
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ioana Ciornei <[email protected]>
[ Upstream commit 208858b1b48eba83d073542372329cf8ed606526 ]
There are use cases in which the Management Complex firmware boot process is started by the bootloader which does not wait for the boot to complete. This is mainly done in order to reduce the overall boot time of a DPAA2 based SoC.
In this kind of circumstance, the fsl-mc bus driver needs to make sure that the MC firmware boot process is finished before proceeding to the usual operations such as interrogating the firmware to gather all existent DPAA2 objects, creating the fsl-mc devices on the bus etc.
Add this kind of check early in the boot process of the fsl-mc bus and defer the probe in case the firmware is still in its boot process.
--- drivers/bus/fsl-mc/fsl-mc-bus.c | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)
drivers/bus/fsl-mc/fsl-mc-bus.c +46 -0
@@ -66,6 +66,13 @@ struct fsl_mc_addr_translation_range {#define GCR1_P1_STOP BIT(31)#define GCR1_P2_STOP BIT(30) +#define FSL_MC_GSR 0x8 +#define FSL_MC_GSR_BOOT_DONE BIT(0) +#define FSL_MC_GSR_MCS_MASK GENMASK(7, 0) +#define FSL_MC_GSR_MCS_ERR_MASK GENMASK(7, 1) +#define FSL_MC_GSR_BC_MASK GENMASK(15, 8) +#define FSL_MC_GSR_BC_SHIFT 8 +#define FSL_MC_FAPR 0x28#define MC_FAPR_PL BIT(18)#define MC_FAPR_BMT BIT(17)
@@ -1035,6 +1042,41 @@ static int get_mc_addr_translation_ranges(struct device *dev,return 0 ; } +static u32 fsl_mc_read_gsr (struct fsl_mc *mc) +{ +return readl (mc->fsl_mc_regs +FSL_MC_GSR ); +} + +static int fsl_mc_firmware_check (struct platform_device *pdev) +{ +struct fsl_mc *mc =platform_get_drvdata (pdev); +u32 gsr, boot_done, boot_code, mcs; + + gsr =fsl_mc_read_gsr (mc); + boot_code = (gsr &FSL_MC_GSR_BC_MASK ) >>FSL_MC_GSR_BC_SHIFT ; +if (boot_code ==0xDD ) { +dev_err (&pdev->dev, +"fsl-mc: DPL processing was not started, DPAA2 will not work!\n" ); +return -EOPNOTSUPP ; + } + + boot_done = gsr &FSL_MC_GSR_BOOT_DONE ; +if (!boot_done) { +dev_dbg (&pdev->dev, +"fsl-mc: DPL processing in progress, defer probe\n" ); +return -EPROBE_DEFER ; + } + + mcs = gsr &FSL_MC_GSR_MCS_MASK ; +if (mcs &FSL_MC_GSR_MCS_ERR_MASK ) { +dev_err (&pdev->dev, +"fsl-mc: MC boot completed with error 0x%x\n" , mcs); +return -EINVAL ; + } + +return 0 ; +} +/* * fsl_mc_bus_probe - callback invoked when the root MC bus is being * added
@@ -1099,6 +1141,10 @@ static int fsl_mc_bus_probe(struct platform_device *pdev) mc->fsl_mc_regs + FSL_MC_GCR1); } + error =fsl_mc_firmware_check (pdev); +if (error) +return error; +/* * Get physical address of MC portal for the root DPRC: */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 4/1193 drm/amd/display: Fix DPMS using partially updated pipe context
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dominik Kaszewski <[email protected]>
[ Upstream commit 6fd45b5d8955bbc362ac3dfe181529f7b1cfd224 ]
[Why & How]
DPMS functions should not use partially updated pipe context passed as argument of commit_planes_do_stream_update, and instead use the one in current_state, which is guaranteed to be the most recently programmed HW config.
--- drivers/gpu/drm/amd/display/dc/core/dc.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
drivers/gpu/drm/amd/display/dc/core/dc.c +14 -7
@@ -3225,27 +3225,34 @@ static void commit_planes_do_stream_update(struct dc *dc, stream->test_pattern.cust_pattern_size); } +// DPMS should not use partially updated pipe context +struct pipe_ctx *dpms_pipe_ctx = &dc->current_state->res_ctx.pipe_ctx[j]; +if (stream_update->dpms_off) {if (*stream_update->dpms_off) { - dc->link_srv->set_dpms_off (pipe_ctx); + dc->link_srv->set_dpms_off (dpms_pipe_ctx);/* for dpms, keep acquired resources*/ -if (pipe_ctx->stream_res.audio && !dc->debug.az_endpoint_mute_only) - pipe_ctx->stream_res.audio->funcs->az_disable (pipe_ctx->stream_res.audio); +if (dpms_pipe_ctx->stream_res.audio && !dc->debug.az_endpoint_mute_only) { +struct audio *audio = dpms_pipe_ctx->stream_res.audio; + + audio->funcs->az_disable (audio); + } dc->optimized_required = true; }else {if (get_seamless_boot_stream_count (context) ==0 ) dc->hwss.prepare_bandwidth (dc, dc->current_state); - dc->link_srv->set_dpms_on (dc->current_state, pipe_ctx); + dc->link_srv->set_dpms_on (dc->current_state, dpms_pipe_ctx); } - }else if (pipe_ctx->stream->link->wa_flags.blank_stream_on_ocs_change && stream_update->output_color_space - && !stream->dpms_off &&dc_is_dp_signal (pipe_ctx->stream->signal)) { + }else if (dpms_pipe_ctx->stream->link->wa_flags.blank_stream_on_ocs_change && + stream_update->output_color_space && + !stream->dpms_off &&dc_is_dp_signal (dpms_pipe_ctx->stream->signal)) {/* * Workaround for firmware issue in some receivers where they don't pick up * correct output color space unless DP link is disabled/re-enabled */ - dc->link_srv->set_dpms_on (dc->current_state, pipe_ctx); + dc->link_srv->set_dpms_on (dc->current_state, dpms_pipe_ctx); }if (stream_update->abm_level && pipe_ctx->stream_res.abm) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 5/1193 drm/panel: jadard-jd9365da-h3: set prepare_prev_first
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <[email protected]>
[ Upstream commit b55a4b5d4769a650f52ea3f1ae680610169d125e ]
Sending DSI commands from the prepare() callback requires DSI link to be up at that point. For DSI hosts is guaranteed only if the panel driver sets the .prepare_prev_first flag. Set it to let these panels work with the DSI hosts which don't power on the link in their .mode_set callback.
--- drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +2 -0
@@ -626,6 +626,8 @@ static int jadard_dsi_probe(struct mipi_dsi_device *dsi)if (ret)return ret; + jadard->panel.prepare_prev_first = true; +drm_panel_add (&jadard->panel);mipi_dsi_set_drvdata (dsi, jadard);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 6/1193 drm/amd/pm: Check SMUv13.0.6/12 metrics integrity
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lijo Lazar <[email protected]>
[ Upstream commit 6fc63d80c01a480e3d2c98620f07d46e5bcfc85a ]
Check if data fetch is proper by matching the first few bytes against 0xFFs. If 0xFFs, that means data couldn't be read properly.
--- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c +4 -0
@@ -317,6 +317,10 @@ static int smu_v13_0_6_get_metrics_table(struct smu_context *smu,amdgpu_asic_invalidate_hdp (smu->adev,NULL );memcpy (smu_table->metrics_table, table->cpu_addr, table_size); +if (!memchr_inv (smu_table->metrics_table,0xff , +min (16 , table_size))) +return -EHWPOISON ; + smu_table->metrics_time = jiffies; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 7/1193 ALSA: usb-audio: Propagate write errors in generic mixer put callbacks
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cássio Gabriel <[email protected]>
[ Upstream commit 87a6f2fa6e6c69bb649fa327635a0bd977724603 ]
mixer_ctl_feature_put(), mixer_ctl_procunit_put(), and mixer_ctl_selector_put() ignore failures from their SET_CUR helper routines and report the control as changed whenever the requested value differs from the current one.
If the device rejects the write, userspace still sees success although the hardware state did not change. Propagate write failures instead, using filter_error() so ignore_ctl_error keeps the same semantics as the existing get paths.
--- sound/usb/mixer.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
sound/usb/mixer.c +13 -4
@@ -1463,7 +1463,10 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (oval != val) { -snd_usb_set_cur_mix_value (cval, c +1 , cnt, val); + err =snd_usb_set_cur_mix_value (cval, c +1 , + cnt, val); +if (err <0 ) +return filter_error (cval, err); changed =1 ; } cnt++;
@@ -1478,7 +1481,9 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -snd_usb_set_cur_mix_value (cval,0 ,0 , val); + err =snd_usb_set_cur_mix_value (cval,0 ,0 , val); +if (err <0 ) +return filter_error (cval, err); changed =1 ; } }
@@ -2343,7 +2348,9 @@ static int mixer_ctl_procunit_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -set_cur_ctl_value (cval, cval->control <<8 , val); + err =set_cur_ctl_value (cval, cval->control <<8 , val); +if (err <0 ) +return filter_error (cval, err);return 1 ; }return 0 ;
@@ -2707,7 +2714,9 @@ static int mixer_ctl_selector_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -set_cur_ctl_value (cval, cval->control <<8 , val); + err =set_cur_ctl_value (cval, cval->control <<8 , val); +if (err <0 ) +return filter_error (cval, err);return 1 ; }return 0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 8/1193 ima: return error early if file xattr cannot be changed
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Goldwyn Rodrigues <[email protected]>
[ Upstream commit 69fc6474236d9edda6983623e4282f2bdfd8e3d8 ]
During early boot, the filesystem is read-only and any changes to xattrs are not allowed. This fails in case of ext4 because changing xattr starts an ext4 transaction which fails with the following warning.
WARNING: fs/ext4/ext4_jbd2.c:75 at ext4_journal_check_start+0x63/0xa0 [ext4], CPU#1: systemd-sysroot/561 CPU: 1 UID: 0 PID: 561 Comm: systemd-sysroot Not tainted 6.19.12-1-default #1 PREEMPT(voluntary) openSUSE Tumbleweed c2dfc3c9d9f6f1233251c5d4410574fe82a348ee Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:ext4_journal_check_start+0x63/0xa0 [ext4] Call Trace: __ext4_journal_start_sb+0x3e/0x180 [ext4 6d025f3bc52c89a957b89a89d211fadf5e9434e1] ext4_xattr_set+0x104/0x150 [ext4 6d025f3bc52c89a957b89a89d211fadf5e9434e1] __vfs_setxattr+0x9a/0xd0 __vfs_setxattr_noperm+0x76/0x1f0 ima_appraise_measurement+0x23e/0xe40 ima_d_path+0x5a/0xd0 process_measurement+0xb29/0xc40 ? copy_from_kernel_nofault+0x21/0xe0 ? fscrypt_file_open+0xc0/0xe0 ? ext4_file_open+0x60/0x490 [ext4 6d025f3bc52c89a957b89a89d211fadf5e9434e1] ? bpf_prog_31efb7c56239148b_restrict_filesystems+0xab/0x126 ? __bpf_prog_exit+0x23/0xd0 ? __bpf_tramp_exit+0xd/0x50 ? bpf_trampoline_6442530367+0x9f/0xea ima_file_check+0x57/0x80 security_file_post_open+0x50/0xf0 path_openat+0x493/0x1650 do_filp_open+0xc7/0x170
Detect the state of the file early and return the error.
--- security/integrity/ima/ima_appraise.c | 5 +++++ 1 file changed, 5 insertions(+)
security/integrity/ima/ima_appraise.c +5 -0
@@ -90,6 +90,11 @@ static int ima_fix_xattr(struct dentry *dentry,int rc, offset;u8 algo = iint->ima_hash->algo; +if (IS_RDONLY (d_inode (dentry))) +return -EROFS ; +if (IS_IMMUTABLE (d_inode (dentry))) +return -EPERM ; +if (algo <=HASH_ALGO_SHA1 ) { offset =1 ; iint->ima_hash->xattr.sha1.type =IMA_XATTR_DIGEST ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 9/1193 usb: gadget: udc: skip pullup() if already connected
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xu Yang <[email protected]>
[ Upstream commit 62911bc82b0332aee7546156800d3516500fa1e1 ]
The device controller may update vbus status via usb_udc_vbus_handler(), which tries to connect the gadget even though gadget_bind_driver() has already called usb_udc_connect_control_locked(). This causes pullup() to be called twice. Avoid this by checking if gadget->connected is true.
This also set gadget->connected as false in usb_gadget_activate() if it became connected while it was being deactivated. Otherwise, usb_gadget_connect_locked will return early and pullup() won't be called.
--- drivers/usb/gadget/udc/core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/usb/gadget/udc/core.c +6 -1
@@ -714,6 +714,9 @@ static int usb_gadget_connect_locked(struct usb_gadget *gadget) goto out; } +if (gadget->connected) + goto out; +if (gadget->deactivated || !gadget->udc->allow_connect || !gadget->udc->started) {/* * If the gadget isn't usable (because it is deactivated,
@@ -887,8 +890,10 @@ int usb_gadget_activate(struct usb_gadget *gadget)* If gadget has been connected before deactivation, or became connected * while it was being deactivated, we call usb_gadget_connect(). */ -if (gadget->connected) +if (gadget->connected) { + gadget->connected = false; ret =usb_gadget_connect_locked (gadget); + } unlock:mutex_unlock (&gadget->udc->connect_lock);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 10/1193 tee: optee: Allow MT_NORMAL_TAGGED shared memory
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hirokazu Honda <[email protected]>
[ Upstream commit 1a6e94a8ff32e7879effd1e4a45bf112e506edc1 ]
On ARM64, shared memory can have MT_NORMAL_TAGGED attribute when using the Memory Tagging Extension (MTE). The OP-TEE driver needs to recognize this as normal memory to allow sharing such buffers with the Secure World.
--- drivers/tee/optee/call.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/tee/optee/call.c +2 -1
@@ -486,7 +486,8 @@ static bool is_normal_memory(pgprot_t p)return (((pgprot_val (p) &L_PTE_MT_MASK ) ==L_PTE_MT_WRITEALLOC ) || ((pgprot_val (p) &L_PTE_MT_MASK ) ==L_PTE_MT_WRITEBACK ));#elif defined(CONFIG_ARM64 ) -return (pgprot_val (p) &PTE_ATTRINDX_MASK ) ==PTE_ATTRINDX (MT_NORMAL ); +return ((pgprot_val (p) &PTE_ATTRINDX_MASK ) ==PTE_ATTRINDX (MT_NORMAL )) || + ((pgprot_val (p) &PTE_ATTRINDX_MASK ) ==PTE_ATTRINDX (MT_NORMAL_TAGGED ));#else #error "Unsupported architecture"#endif
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 11/1193 tools/nolibc: avoid call to wcslen() in _start_c() inserted by clang
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Weißschuh <[email protected]>
[ Upstream commit 4c6826ee7d04f489ad6fcf46ae6dd595fe9c6295 ]
Clang may convert the loop to find _auxv into a call to wcslen() which is missing on nolibc. -fsanitize needs to be disabled for this to happen.
Use the same pattern as in the nolibc strlen() implementation to avoid the function call generation.
--- tools/include/nolibc/crt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/include/nolibc/crt.h +1 -1
@@ -52,7 +52,7 @@ void _start_c(long *sp)/* find _auxv */ for (auxv = (void *)envp; *auxv++;) - ; + __asm__("" ); _auxv = auxv;/* go to application */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 12/1193 PCI: Stop setting cached power state to unknown on unbind
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lukas Wunner <[email protected]>
[ Upstream commit d462c8e89e84bfb6417e6b4c88e0cb7cc747ba41 ]
When a PCI device is unbound from its driver, pci_device_remove() sets the cached power state in pci_dev->current_state to PCI_UNKNOWN. This was introduced by commit 2449e06a5696 ("PCI: reset pci device state to unknown state for resume") to invalidate the cached power state in case the system is subsequently put to sleep.
For bound devices, the cached power state is set to PCI_UNKNOWN in pci_pm_suspend_noirq(), immediately before entering system sleep.
Extend to unbound devices for consistency.
This obviates the need to change the cached power state on unbind, so stop doing so.
--- drivers/pci/pci-driver.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
drivers/pci/pci-driver.c +2 -8
@@ -490,13 +490,6 @@ static void pci_device_remove(struct device *dev)/* Undo the runtime PM settings in local_pci_probe() */ pm_runtime_put_sync (dev); -/* -* If the device is still on, set the power state as "unknown", -* since it might change by the next time we load the driver. -*/ -if (pci_dev->current_state ==PCI_D0 ) - pci_dev->current_state =PCI_UNKNOWN ; -/* * We would love to complain here if pci_dev->is_enabled is set, that * the driver should have called pci_disable_device(), but the
@@ -874,7 +867,7 @@ static int pci_pm_suspend_noirq(struct device *dev)if (!pm) {pci_save_state (pci_dev); - goto Fixup; + goto set_unknown; }if (pm->suspend_noirq) {
@@ -926,6 +919,7 @@ static int pci_pm_suspend_noirq(struct device *dev) goto Fixup; } +set_unknown:pci_pm_set_unknown_state (pci_dev);/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 13/1193 hfsplus: fix issue of direct writes beyond end-of-file
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Viacheslav Dubeyko <[email protected]>
[ Upstream commit 5f63ac80aef2ee6bb58eab62e98c264774872da6 ]
The xfstests' test-case generic/729 fails with error:
sudo ./check generic/729
FSTYP -- hfsplus PLATFORM -- Linux/x86_64 hfsplus-testing-0001 7.0.0-rc1+ #36 SMP PREEMPT_DYNAMIC Fri Apr 17 12:40:51 PDT 2026 MKFS_OPTIONS -- /dev/loop51
MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
generic/729 23s ... [failed, exit status 1]- output mismatch
mmap-rw-fault: /mnt/test/mmap-rw-fault.tmp: Input/output error
The hfsplus_get_block() only allows creating the next sequential block. It returns -EIO for direct writes beyond EOF. This patch waits for any in-flight DIO on the inode to finish. Then, it extends the file by calling generic_cont_expand_simple() with the goal to guarantee that blockdev_direct_IO() finds all needed blocks already reachable sequentially. And, finally, it flushes and invalidates the DIO range again so the page cache is clean before the direct write begins.
sudo ./check generic/729
FSTYP -- hfsplus PLATFORM -- Linux/x86_64 hfsplus-testing-0001 7.0.0-rc1+ #40 SMP PREEMPT_DYNAMIC Thu Apr 16 15:41:03 PDT 2026 MKFS_OPTIONS -- /dev/loop51
MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
generic/729 23s ... 32s
Ran: generic/729
Passed all 1 tests
--- fs/hfsplus/inode.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-)
fs/hfsplus/inode.c +36 -2
@@ -129,9 +129,44 @@ static ssize_t hfsplus_direct_IO(struct kiocb *iocb, struct iov_iter *iter)struct file *file = iocb->ki_filp;struct address_space *mapping = file->f_mapping;struct inode *inode = mapping->host; +loff_t isize;size_t count =iov_iter_count (iter); +loff_t end = iocb->ki_pos + count;ssize_t ret; +/* +* The hfsplus_get_block() only allows creating the next sequential block. +* For direct writes beyond EOF, expand the file first. +*/ +if (iov_iter_rw (iter) ==WRITE && iocb->ki_pos >i_size_read (inode)) { +loff_t start_off, end_off; +loff_t start_page, end_page; + + isize =i_size_read (inode); + +/* +* Wait for any in-flight DIO on this inode to finish before +* calling generic_cont_expand_simple(). +*/ +inode_dio_wait (inode); + + ret =generic_cont_expand_simple (inode, iocb->ki_pos); +if (ret) +return ret; + + start_off = isize; + end_off = (end >0 ) ? end -1 : end; + + ret =filemap_write_and_wait_range (mapping, start_off, end_off); +if (ret) +return ret; + + start_page = start_off >>PAGE_SHIFT ; + end_page = end_off >>PAGE_SHIFT ; + +invalidate_inode_pages2_range (mapping, start_page, end_page); + } + ret =blockdev_direct_IO (iocb, inode, iter, hfsplus_get_block);/*
@@ -139,8 +174,7 @@ static ssize_t hfsplus_direct_IO(struct kiocb *iocb, struct iov_iter *iter)* blocks outside i_size. Trim these off again. */ if (unlikely (iov_iter_rw (iter) ==WRITE && ret <0 )) { -loff_t isize =i_size_read (inode); -loff_t end = iocb->ki_pos + count; + isize =i_size_read (inode);if (end > isize)hfsplus_write_failed (mapping, end);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 14/1193 wifi: nl80211: reject beacons with bad HE operation
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
[ Upstream commit 8b9a100e1a76c52988b31099b349fd95a58c8768 ]
The HE operation element not only needs to be longer than the fixed part, but also have an appropriate size for the variable part inside of it. Check this.
--- net/wireless/nl80211.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
net/wireless/nl80211.c +5 -1
@@ -5825,8 +5825,12 @@ static int nl80211_calculate_ap_params(struct cfg80211_ap_settings *params)if (cap && cap->datalen >=sizeof (*params->he_cap) +1 ) params->he_cap = (void *)(cap->data +1 ); cap =cfg80211_find_ext_elem (WLAN_EID_EXT_HE_OPERATION , ies, ies_len); -if (cap && cap->datalen >=sizeof (*params->he_oper) +1 ) +if (cap && cap->datalen >=sizeof (*params->he_oper) +1 ) { params->he_oper = (void *)(cap->data +1 ); +/* takes extension ID into account */ +if (cap->datalen <ieee80211_he_oper_size ((void *)params->he_oper)) +return -EINVAL ; + } cap =cfg80211_find_ext_elem (WLAN_EID_EXT_EHT_CAPABILITY , ies, ies_len);if (cap) {if (!cap->datalen)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 15/1193 wifi: mac80211: always allow transmitting null-data on TXQs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
[ Upstream commit 51129a2ca0482b006d0e12a0aa025ff1e1cad2cb ]
Jouni reported that certain sequences of tests caused some WDS tests to fail after applying the upcoming hwsim changes for NAN. I bisected that down to converting hwsim to TXQs, and after a long debug session found that the 4-addr NDP was getting dropped, because it goes out via a (management) TXQ and is a data frame.
It's unclear to me now why this only happens in some test sequences (e.g. "sigma_dut_sae_h2e_ap_loop ap_wds_sta" and "sigma_dut_eap_ttls_all_akm_suites ap_wds_sta_open"), maybe that affects timing and the frame is otherwise delayed in some way.
Correct the check to only drop frames that actually carry data, not NDPs.
--- net/mac80211/tx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/mac80211/tx.c +1 -1
@@ -3882,7 +3882,7 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,* injected frames or EAPOL frames from the local station. */ if (unlikely(!(info->flags & IEEE80211_TX_CTL_INJECTED) && - ieee80211_is_data(hdr->frame_control) && + ieee80211_is_data_present(hdr->frame_control) && !ieee80211_vif_is_mesh(&tx.sdata->vif) && tx.sdata->vif.type != NL80211_IFTYPE_OCB && !is_multicast_ether_addr(hdr->addr1) &&
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 16/1193 wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Panagiotis Petrakopoulos <[email protected]>
[ Upstream commit d5e6f353ce1e1c25b8458ea390ed09d2377412c5 ]
It was recently reported that rtw_fw_adaptivity_result() in fw.c dereferences rtwdev->chip->edcca_th without a NULL check. The issue is that devices with the 8821CE chip don't define edcca_th in their chip info. As a result, when rtw_fw_adaptivity_result() tries to dereference it, the kernel triggers an oops.
Add a NULL check for edcca_th before dereferencing it in rtw_fw_adaptivity_result() in fw.c. Placing the check at the function entry avoids logging any garbage values.
This change does not address the root cause for this behavior, but it prevents the NULL dereference and the resulting oops while a more permanent solution is developed.
Tested on a 8822CE chip which defines edcca_th, so this issue is not present on it, but it still uses this driver and I can verify there are no regressions.
--- drivers/net/wireless/realtek/rtw88/fw.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/wireless/realtek/rtw88/fw.c +3 -0
@@ -197,6 +197,9 @@ static void rtw_fw_adaptivity_result(struct rtw_dev *rtwdev, u8 *payload,struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;struct rtw_c2h_adaptivity *result = (struct rtw_c2h_adaptivity *)payload; +if (!edcca_th) +return ; + rtw_dbg(rtwdev, RTW_DBG_ADAPTIVITY, "Adaptivity: density %x igi %x l2h_th_init %x l2h %x h2l %x option %x\n", result->density, result->igi, result->l2h_th_init, result->l2h,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 17/1193 kcsan: Silence -Wmaybe-uninitialized when calling __kcsan_check_access()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Elver <[email protected]>
[ Upstream commit 07a1a6562ce29e2e0c134a57882d6e52e8758492 ]
Some subsystems enable -Wmaybe-uninitialized [1], which can trigger false positives when KCSAN is enabled. Specifically, passing an uninitialized variable to functions that instrument accesses (e.g., copy_from_user()) results in calls to __kcsan_check_access().
Because __kcsan_check_access() takes a const volatile void *ptr, GCC infers that the function may only read the memory location, and thus warns if the passed variable is uninitialized.
However, KCSAN is a dynamic analysis tool for data race detection; while it does read the memory location to detect concurrent modifications, the "initialized'ness" of the memory location is irrelevant for its analysis.
Use absolute_pointer() in __kcsan_check_write(), kcsan_check_write(), and kcsan_check_atomic_write() to hide the pointer from the compiler, preventing it from concluding that the pointer passed points to uninitialized memory.
This fixes warnings like:
| CC fs/ntfs3/file.o | In file included from include/asm-generic/rwonce.h:27, | from arch/arm64/include/asm/rwonce.h:81, | from include/linux/compiler.h:369, | from include/linux/array_size.h:5, | from include/linux/kernel.h:16, | from include/linux/backing-dev.h:12, | from fs/ntfs3/file.c:10: | In function 'instrument_copy_from_user_before', | inlined from '_inline_copy_from_user' at include/linux/uaccess.h:184:2, | inlined from 'copy_from_user' at include/linux/uaccess.h:221:9, | inlined from 'ntfs_ioctl_fitrim' at fs/ntfs3/file.c:77:6, | inlined from 'ntfs_ioctl' at fs/ntfs3/file.c:164:10: | include/linux/kcsan-checks.h:220:28: error: 'range' may be used uninitialized [-Werror=maybe-uninitialized] | 220 | #define kcsan_check_access __kcsan_check_access | | ^ | include/linux/kcsan-checks.h:311:9: note: in expansion of macro 'kcsan_check_access' | 311 | kcsan_check_access(ptr, size, KCSAN_ACCESS_WRITE) | | ^~~~~~~~~~~~~~~~~~ | include/linux/instrumented.h:147:9: note: in expansion of macro 'kcsan_check_write' | 147 | kcsan_check_write(to, n); | | ^~~~~~~~~~~~~~~~~ | include/linux/kcsan-checks.h: In function 'ntfs_ioctl': | include/linux/kcsan-checks.h:37:6: note: by argument 1 of type 'const volatile void *' to '__kcsan_check_access' declared here | 37 | void __kcsan_check_access(const volatile void *ptr, size_t size, int type); | | ^~~~~~~~~~~~~~~~~~~~ | fs/ntfs3/file.c:65:29: note: 'range' declared here | 65 | struct fstrim_range range; | | ^~~~~
--- include/linux/kcsan-checks.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
include/linux/kcsan-checks.h +3 -3
@@ -282,7 +282,7 @@ static inline void __kcsan_disable_current(void) { }* @size: size of access */ #define __kcsan_check_write (ptr, size) \ - __kcsan_check_access(ptr, size, KCSAN_ACCESS_WRITE) + __kcsan_check_access(absolute_pointer(ptr), size, KCSAN_ACCESS_WRITE)/** * __kcsan_check_read_write - check regular read-write access for races
@@ -308,7 +308,7 @@ static inline void __kcsan_disable_current(void) { }* @size: size of access */ #define kcsan_check_write (ptr, size) \ - kcsan_check_access(ptr, size, KCSAN_ACCESS_WRITE) + kcsan_check_access(absolute_pointer(ptr), size, KCSAN_ACCESS_WRITE)/** * kcsan_check_read_write - check regular read-write access for races
@@ -331,7 +331,7 @@ static inline void __kcsan_disable_current(void) { }#define kcsan_check_atomic_read (ptr, size) \ kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC)#define kcsan_check_atomic_write (ptr, size) \ - kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC | KCSAN_ACCESS_WRITE) + kcsan_check_access(absolute_pointer(ptr), size, KCSAN_ACCESS_ATOMIC | KCSAN_ACCESS_WRITE)#define kcsan_check_atomic_read_write (ptr, size) \ kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_COMPOUND)#endif
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 18/1193 firmware: stratix10-svc: change get provision data to async SMC call
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Siew Chin Lim <[email protected]>
[ Upstream commit 4b0a32016347bfd6ae9849f21b1b767905f68d14 ]
Change INTEL_SIP_SMC_FCS_GET_PROVISION_DATA's SMC call to async from sync to avoid long runtime which may cause the watchdog timeout issue.
--- drivers/firmware/stratix10-svc.c | 4 ++-- include/linux/firmware/intel/stratix10-smc.h | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-)
drivers/firmware/stratix10-svc.c +2 -2
@@ -340,6 +340,7 @@ static void svc_thread_recv_status_ok(struct stratix10_svc_data *p_data,case COMMAND_FCS_SEND_CERTIFICATE :case COMMAND_FCS_DATA_ENCRYPTION :case COMMAND_FCS_DATA_DECRYPTION : +case COMMAND_FCS_GET_PROVISION_DATA : cb_data->status =BIT (SVC_STATUS_OK );break ;case COMMAND_RECONFIG_DATA_SUBMIT :
@@ -366,7 +367,6 @@ static void svc_thread_recv_status_ok(struct stratix10_svc_data *p_data, cb_data->kaddr2 = &res.a2;break ;case COMMAND_FCS_RANDOM_NUMBER_GEN : -case COMMAND_FCS_GET_PROVISION_DATA :case COMMAND_POLL_SERVICE_STATUS : cb_data->status =BIT (SVC_STATUS_OK ); cb_data->kaddr1 = &res.a1;
@@ -533,7 +533,7 @@ static int svc_normal_to_secure_thread(void *data)break ;case COMMAND_FCS_GET_PROVISION_DATA : a0 =INTEL_SIP_SMC_FCS_GET_PROVISION_DATA ; - a1 = (unsigned long )pdata->paddr; + a1 =0 ; a2 =0 ;break ;
include/linux/firmware/intel/stratix10-smc.h +4 -8
@@ -600,24 +600,20 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)/** * Request INTEL_SIP_SMC_FCS_GET_PROVISION_DATA -* Sync call to dump all the fuses and key hashes +* Async call to dump all the fuses and key hashes * * Call register usage: * a0 INTEL_SIP_SMC_FCS_GET_PROVISION_DATA -* a1 the physical address for firmware to write structure of fuse and -* key hashes -* a2-a7 not used +* a1-a7 not used * * Return status: * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FCS_ERROR or * INTEL_SIP_SMC_FCS_REJECTED -* a1 mailbox error -* a2 physical address for the structure of fuse and key hashes -* a3 the size of structure +* a1-a3 not used * */ #define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA 94#define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \ - INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA) + INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)#endif
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 19/1193 bridge: Do not suppress ARP probes and DAD NS unconditionally
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Danielle Ratson <[email protected]>
[ Upstream commit fee1fc1d5a5475f5516d406a03e443348cd0f06c ]
When neighbor suppression is enabled on a VXLAN port, the bridge is expected to reply to ARP/NS messages on behalf of remote hosts when both FDB and neighbor entries exist. This allows the bridge to suppress flooding of these messages to the VXLAN overlay.
According to RFC 9161 ("Operational Aspects of Proxy ARP/ND in Ethernet Virtual Private Networks"):
"A PE SHOULD reply to broadcast/multicast address resolution messages, i.e., ARP Requests, ARP probes, NS messages, as well as DAD NS messages. An ARP probe is an ARP Request constructed with an all-zero sender IP address that may be used by hosts for IPv4 Address Conflict Detection as specified in [RFC5227]".
However, the current implementation unconditionally suppresses ARP probes and DAD Neighbor Solicitations, which breaks Duplicate Address Detection (DAD) over EVPN.
For DAD to work correctly over the VXLAN fabric:
- When the bridge does not know the answer:
flood the probe/DAD packet to allow remote VTEPs to respond.
- When the bridge knows the answer:
reply to indicate the address is in use.
Fix by adjusting the early suppression checks to exclude ARP probes and DAD NS from unconditional suppression.
When replying to a DAD NS, br_nd_send() is adjusted to set the NA destination to the all-nodes multicast address (ff02::1) and clear the Solicited flag, in accordance with RFC 4861 section 7.2.4.
--- net/bridge/br_arp_nd_proxy.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
net/bridge/br_arp_nd_proxy.c +11 -5
@@ -162,7 +162,7 @@ void br_do_proxy_suppress_arp(struct sk_buff *skb, struct net_bridge *br,return ;if (parp->ar_op !=htons (ARPOP_RREQUEST ) && parp->ar_op !=htons (ARPOP_RREPLY ) && - (ipv4_is_zeronet (sip) || sip == tip)) { + sip == tip) {/* prevent flooding to neigh suppress ports */ BR_INPUT_SKB_CB (skb)->proxyarp_replied =1 ;return ;
@@ -260,6 +260,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p,int ns_olen;int i, len;u8 *daddr; +bool dad;u16 pvid;if (!dev ||skb_linearize (request))
@@ -298,8 +299,13 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, } } + dad =ipv6_addr_any (&ipv6_hdr (request)->saddr); +/* Ethernet header */ -ether_addr_copy (eth_hdr (reply)->h_dest, daddr); +if (dad) +ipv6_eth_mc_map (&in6addr_linklocal_allnodes,eth_hdr (reply)->h_dest); +else +ether_addr_copy (eth_hdr (reply)->h_dest, daddr);ether_addr_copy (eth_hdr (reply)->h_source, n->ha);eth_hdr (reply)->h_proto =htons (ETH_P_IPV6 ); reply->protocol =htons (ETH_P_IPV6 );
@@ -315,7 +321,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, pip6->priority =ipv6_hdr (request)->priority; pip6->nexthdr =IPPROTO_ICMPV6 ; pip6->hop_limit =255 ; - pip6->daddr =ipv6_hdr (request)->saddr; + pip6->daddr = dad ? in6addr_linklocal_allnodes :ipv6_hdr (request)->saddr; pip6->saddr = *(struct in6_addr *)n->primary_key;skb_pull (reply,sizeof (struct ipv6hdr ));
@@ -328,7 +334,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, na->icmph.icmp6_type =NDISC_NEIGHBOUR_ADVERTISEMENT ; na->icmph.icmp6_router = (n->flags &NTF_ROUTER ) ?1 :0 ; na->icmph.icmp6_override =1 ; - na->icmph.icmp6_solicited =1 ; + na->icmph.icmp6_solicited = dad ?0 :1 ; na->target = ns->target;ether_addr_copy (&na->opt[2 ], n->ha); na->opt[0 ] =ND_OPT_TARGET_LL_ADDR ;
@@ -429,7 +435,7 @@ void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br, saddr = &iphdr->saddr; daddr = &iphdr->daddr; -if (ipv6_addr_any (saddr) || !ipv6_addr_cmp (saddr, daddr)) { +if (!ipv6_addr_cmp (saddr, daddr)) {/* prevent flooding to neigh suppress ports */ BR_INPUT_SKB_CB (skb)->proxyarp_replied =1 ;return ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 20/1193 soundwire: validate DT compatible before parsing it
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pengpeng Hou <[email protected]>
[ Upstream commit 45c7bda7b7440183850012153988e40b300f40d0 ]
sdw_of_find_slaves() fetches raw "compatible" bytes with of_get_property() and then immediately parses them with sscanf("sdw%01x%04hx%04hx%02hhx", ...).
Live-tree OF properties are stored as raw bytes plus a separate length; they are not globally guaranteed to be NUL-terminated. Validate the first compatible string before parsing it.
--- drivers/soundwire/slave.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/soundwire/slave.c +2 -2
@@ -233,8 +233,8 @@ int sdw_of_find_slaves(struct sdw_bus *bus)struct sdw_slave_id id;const __be32 *addr; - compat =of_get_property (node,"compatible" ,NULL ); -if (!compat) + ret =of_property_read_string (node,"compatible" , &compat); +if (ret)continue ; ret = sscanf(compat, "sdw%01x%04hx%04hx%02hhx", &sdw_version,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 21/1193 spi: spi-qcom-qspi: Fix incomplete error handling in runtime PM
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Viken Dadhaniya <[email protected]>
[ Upstream commit d283d5d4d9f6d081ddb65e371be26fffeb611c42 ]
The runtime PM functions had incomplete error handling that could leave the system in an inconsistent state. If any operation failed midway through suspend or resume, some resources would be left in the wrong state while others were already changed, leading to potential clock/power imbalances.
Reorder the suspend/resume sequences to avoid brownout risk by ensuring the performance state is set appropriately before clocks are enabled and clocks are disabled before dropping the performance state.
Fix by adding proper error checking for all operations and using goto-based cleanup to ensure all successfully acquired resources are properly released on any error.
--- drivers/spi/spi-qcom-qspi.c | 44 ++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-)
drivers/spi/spi-qcom-qspi.c +36 -8
@@ -820,20 +820,34 @@ static int __maybe_unused qcom_qspi_runtime_suspend(struct device *dev)struct qcom_qspi *ctrl =spi_controller_get_devdata (host);int ret; -/* Drop the performance state vote */ -dev_pm_opp_set_rate (dev,0 );clk_bulk_disable_unprepare (QSPI_NUM_CLKS , ctrl->clks); ret =icc_disable (ctrl->icc_path_cpu_to_qspi);if (ret) {dev_err_ratelimited (ctrl->dev,"%s: ICC disable failed for cpu: %d\n" , __func__, ret); -return ret; + goto err_enable_clk; } -pinctrl_pm_select_sleep_state (dev); + ret =pinctrl_pm_select_sleep_state (dev); +if (ret) + goto err_enable_icc; + +/* Drop the performance state vote */ + ret =dev_pm_opp_set_rate (dev,0 ); +if (ret) + goto err_select_default_state;return 0 ; + +err_select_default_state: +pinctrl_pm_select_default_state (dev); +err_enable_icc: +icc_enable (ctrl->icc_path_cpu_to_qspi); +err_enable_clk: +if (clk_bulk_prepare_enable (QSPI_NUM_CLKS , ctrl->clks)) +dev_err_ratelimited (ctrl->dev,"Failed to re-enable clocks\n" ); +return ret; }static int __maybe_unused qcom_qspi_runtime_resume (struct device *dev)
@@ -842,20 +856,34 @@ static int __maybe_unused qcom_qspi_runtime_resume(struct device *dev)struct qcom_qspi *ctrl =spi_controller_get_devdata (host);int ret; -pinctrl_pm_select_default_state (dev); + ret =dev_pm_opp_set_rate (dev, ctrl->last_speed *4 ); +if (ret) +return ret; + + ret =pinctrl_pm_select_default_state (dev); +if (ret) + goto err_opp_set_rate_zero; ret =icc_enable (ctrl->icc_path_cpu_to_qspi);if (ret) {dev_err_ratelimited (ctrl->dev,"%s: ICC enable failed for cpu: %d\n" , __func__, ret); -return ret; + goto err_select_sleep_state; } ret =clk_bulk_prepare_enable (QSPI_NUM_CLKS , ctrl->clks);if (ret) -return ret; + goto err_disable_icc; -return dev_pm_opp_set_rate (dev, ctrl->last_speed *4 ); +return 0 ; + +err_disable_icc: +icc_disable (ctrl->icc_path_cpu_to_qspi); +err_select_sleep_state: +pinctrl_pm_select_sleep_state (dev); +err_opp_set_rate_zero: +dev_pm_opp_set_rate (dev,0 ); +return ret; }static int __maybe_unused qcom_qspi_suspend (struct device *dev)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 22/1193 media: rc: mceusb: Add support for 04eb:e033
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Riccardo Boninsegna <[email protected]>
[ Upstream commit 0692c2602e4cd410aa045f8991bd1c142b2e56f9 ]
This is a Sonix SN8P2202XG microcontroller with firmware compatible with the already supported Northstar 04eb:e004, implementing an MCE IR receiver (PCB seems to be tracked for a transmitter too but missing related parts).
Found in a Skintek SK-CR-IN+IR ( http://www.skintek.it/SK-CR-IN+IR.php ) internal 3.5 inch USB card reader and MCE receiver combo (implemented by, and wired as, separate USB devices)
PCB marking: AU6475 966816 STIR REV:A02 MCE
--- drivers/media/rc/mceusb.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/media/rc/mceusb.c +2 -0
@@ -398,6 +398,8 @@ static const struct usb_device_id mceusb_dev_table[] = { { USB_DEVICE(VENDOR_COMPRO, 0x3082) },/* Northstar Systems, Inc. eHome Infrared Transceiver */ { USB_DEVICE(VENDOR_NORTHSTAR, 0xe004) }, +/* Northstar Systems, Inc. eHome Infrared Transceiver - variant */ + { USB_DEVICE(VENDOR_NORTHSTAR, 0xe033) },/* TiVo PC IR Receiver */ { USB_DEVICE(VENDOR_TIVO, 0x2000), .driver_info = TIVO_KIT },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 23/1193 thunderbolt: Release request if tb_cfg_request() fails in __tb_xdomain_response()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit 4c63f29872cb444b33665348bbd2f45cab06afcd ]
If tb_cfg_request() fails setting up the request (for example the control channel is shut down already) it returns an error without calling the callback. To avoid leaking that memory, call tb_cfg_request_put() if tb_cfg_request() fails.
--- drivers/thunderbolt/xdomain.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/thunderbolt/xdomain.c +6 -1
@@ -139,6 +139,7 @@ static int __tb_xdomain_response(struct tb_ctl *ctl, const void *response, size_t size, enum tb_cfg_pkg_type type) {struct tb_cfg_request *req; +int ret; req =tb_cfg_request_alloc ();if (!req)
@@ -150,7 +151,11 @@ static int __tb_xdomain_response(struct tb_ctl *ctl, const void *response, req->request_size = size; req->request_type = type; -return tb_cfg_request (ctl, req, response_ready, req); + ret =tb_cfg_request (ctl, req, response_ready, req); +if (ret) +tb_cfg_request_put (req); + +return ret; }/**
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 24/1193 thunderbolt: Keep XDomain reference during the lifetime of a service
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit 8b4060998637f06975fceee9b73845d8672d411e ]
This is needed because we release the service ID in tb_service_release() and the ID array is owned by the parent XDomain.
--- drivers/thunderbolt/xdomain.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/thunderbolt/xdomain.c +2 -1
@@ -1025,6 +1025,7 @@ static void tb_service_release(struct device *dev)ida_simple_remove (&xd->service_ids, svc->id);kfree (svc->key);kfree (svc); +tb_xdomain_put (xd); }struct device_type tb_service_type = {
@@ -1133,7 +1134,7 @@ static void enumerate_services(struct tb_xdomain *xd) svc->id = id; svc->dev.bus = &tb_bus_type; svc->dev.type = &tb_service_type; - svc->dev.parent = &xd->dev; + svc->dev.parent =get_device (&xd->dev);dev_set_name (&svc->dev,"%s.%d" ,dev_name (&xd->dev), svc->id);tb_service_debugfs_init (svc);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 25/1193 thunderbolt: Keep the domain reference while processing hotplug
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit 138ec65b2c761f065b19d115aed2b8246fc272f5 ]
We process hotplug events in a workqueue that may run after the domain has been removed by tb_domain_remove(). For example if user unloads the driver while at the same time plugging a device router we may have scheduled tb_handle_hotplug() to run. Avoid possible UAF in this case by taking the domain reference before scheduling the hotplug handler in tb_queue_hotplug().
--- drivers/thunderbolt/tb.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/thunderbolt/tb.c +4 -1
@@ -191,7 +191,7 @@ static void tb_queue_hotplug(struct tb *tb, u64 route, u8 port, bool unplug)if (!ev)return ; - ev->tb = tb; + ev->tb =tb_domain_get (tb); ev->route = route; ev->port = port; ev->unplug = unplug;
@@ -2324,6 +2324,9 @@ static void tb_handle_hotplug(struct work_struct *work)pm_runtime_mark_last_busy (&tb->dev);pm_runtime_put_autosuspend (&tb->dev); +/* Undo the refcount increased in tb_queue_hotplug() */ +tb_domain_put (tb); +kfree (ev); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 26/1193 thunderbolt: Set tb->root_switch to NULL when domain is stopped
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit e56249d8a68e712f3b60e1f3fdbb5b4fea146468 ]
Similarly what we do with the firmware connection manager. This makes tb_xdp_handle_request() return error to the remote host. However, we need to make sure we keep the uuid alive so that we can reply until the whole domain is released.
--- drivers/thunderbolt/tb.c | 1 + drivers/thunderbolt/xdomain.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-)
drivers/thunderbolt/tb.c +1 -0
@@ -2646,6 +2646,7 @@ static void tb_stop(struct tb *tb)tb_tunnel_free (tunnel); }tb_switch_remove (tb->root_switch); + tb->root_switch =NULL ; tcm->hotplug_active = false;/* signal tb_handle_hotplug to quit */ }
drivers/thunderbolt/xdomain.c +5 -1
@@ -754,7 +754,7 @@ static void tb_xdp_handle_request(struct work_struct *work)mutex_lock (&tb->lock);if (tb->root_switch) - uuid = tb->root_switch->uuid; + uuid =kmemdup (tb->root_switch->uuid,sizeof (*uuid),GFP_KERNEL );else uuid =NULL ;mutex_unlock (&tb->lock);
@@ -868,6 +868,7 @@ static void tb_xdp_handle_request(struct work_struct *work) } out: +kfree (uuid);kfree (xw->pkg);kfree (xw);
@@ -2272,6 +2273,9 @@ static struct tb_xdomain *switch_find_xdomain(struct tb_switch *sw, {struct tb_port *port; +if (!sw) +return NULL ; +tb_switch_for_each_port (sw, port) {struct tb_xdomain *xd;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 27/1193 thunderbolt: Dont create multiple DMA tunnels on firmware connection manager
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Borzeszkowski <[email protected]>
[ Upstream commit cf0c38ee554c3e9062408cc3a38325483d52ecd0 ]
Firmware connection manager supports only one DMA tunnel per XDomain connection. Firmware prior Intel Titan Ridge failed the operation directly but the same does not happen anymore on Titan Ridge and forward. For this reason add an explicit check, and fail the operation accordingly in the driver.
--- drivers/thunderbolt/icm.c | 10 ++++++++++ drivers/thunderbolt/xdomain.c | 25 +++++++++++++++++++------ include/linux/thunderbolt.h | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-)
drivers/thunderbolt/icm.c +10 -0
@@ -565,6 +565,11 @@ static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd,struct icm_fr_pkg_approve_xdomain request;int ret; +if (atomic_read (&xd->ntunnels) >=1 ) { +tb_warn (tb,"only one tunnel is supported by the firmware\n" ); +return -EOPNOTSUPP ; + } +memset (&request,0 ,sizeof (request)); request.hdr.code =ICM_APPROVE_XDOMAIN ; request.link_info = xd->depth <<ICM_LINK_INFO_DEPTH_SHIFT | xd->link;
@@ -1132,6 +1137,11 @@ static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd,struct icm_tr_pkg_approve_xdomain request;int ret; +if (atomic_read (&xd->ntunnels) >=1 ) { +tb_warn (tb,"only one tunnel is supported by the firmware\n" ); +return -EOPNOTSUPP ; + } +memset (&request,0 ,sizeof (request)); request.hdr.code =ICM_APPROVE_XDOMAIN ; request.route_hi =upper_32_bits (xd->route);
drivers/thunderbolt/xdomain.c +19 -6
@@ -1960,6 +1960,7 @@ struct tb_xdomain *tb_xdomain_alloc(struct tb *tb, struct device *parent,INIT_DELAYED_WORK (&xd->state_work, tb_xdomain_state_work);INIT_DELAYED_WORK (&xd->properties_changed_work, tb_xdomain_properties_changed); +atomic_set (&xd->ntunnels,0 ); xd->local_uuid =kmemdup (local_uuid,sizeof (uuid_t),GFP_KERNEL );if (!xd->local_uuid)
@@ -2230,9 +2231,15 @@ int tb_xdomain_enable_paths(struct tb_xdomain *xd, int transmit_path, int transmit_ring, int receive_path, int receive_ring) { - return tb_domain_approve_xdomain_paths(xd->tb, xd, transmit_path, -transmit_ring ,receive_path , -receive_ring ); + int ret; + + ret =tb_domain_approve_xdomain_paths (xd->tb, xd, transmit_path, + transmit_ring, receive_path, + receive_ring); +if (ret) +return ret; +atomic_inc (&xd->ntunnels); +return 0 ; }EXPORT_SYMBOL_GPL (tb_xdomain_enable_paths);
@@ -2255,9 +2262,15 @@ int tb_xdomain_disable_paths(struct tb_xdomain *xd, int transmit_path, int transmit_ring, int receive_path, int receive_ring) { - return tb_domain_disconnect_xdomain_paths(xd->tb, xd, transmit_path, -transmit_ring ,receive_path , -receive_ring ); + int ret; + + ret =tb_domain_disconnect_xdomain_paths (xd->tb, xd, transmit_path, + transmit_ring, receive_path, + receive_ring); +if (ret) +return ret; +atomic_dec (&xd->ntunnels); +return 0 ; }EXPORT_SYMBOL_GPL (tb_xdomain_disable_paths);
include/linux/thunderbolt.h +2 -0
@@ -224,6 +224,7 @@ enum tb_link_width {* changed notification * @bonding_possible: True if lane bonding is possible on local side * @target_link_width: Target link width from the remote host +* @ntunnels: Keeps track of how many tunnels go through this XDomain * @link: Root switch link the remote domain is connected (ICM only) * @depth: Depth in the chain the remote domain is connected (ICM only) *
@@ -270,6 +271,7 @@ struct tb_xdomain {int properties_changed_retries;bool bonding_possible;u8 target_link_width; +atomic_t ntunnels;u8 link;u8 depth; };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 28/1193 media: dm1105: fix missing error check for dma_alloc_coherent
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhaoyang Yu <[email protected]>
[ Upstream commit 3eaac9e02d8591d3c790db572ef1c8fa5a841fdb ]
The return value of dm1105_dma_map(), which handles DMA memory allocation, is ignored in dm1105_hw_init(). If dma_alloc_coherent() fails, the driver will proceed using a NULL pointer for DMA transfers, leading to a kernel oops or invalid hardware access.
Fix this by checking the return value and propagating -ENOMEM on failure.
--- drivers/media/pci/dm1105/dm1105.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/media/pci/dm1105/dm1105.c +6 -1
@@ -768,6 +768,8 @@ static void dm1105_ir_exit(struct dm1105_dev *dm1105)static int dm1105_hw_init (struct dm1105_dev *dev) { +int ret; +dm1105_disable_irqs (dev);dm_writeb (DM1105_HOST_CTR ,0 );
@@ -778,7 +780,10 @@ static int dm1105_hw_init(struct dm1105_dev *dev)dm_writew (DM1105_TSCTR ,0xc10a );/* map DMA and set address */ -dm1105_dma_map (dev); + ret =dm1105_dma_map (dev); +if (ret) +return -ENOMEM ; +dm1105_set_dma_addr (dev);/* big buffer */ dm_writel (DM1105_RLEN ,5 *DM1105_DMA_BYTES );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 29/1193 net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <[email protected]>
[ Upstream commit d201c2612e5aada0c931cd55115175e0a5141023 ]
The 6320 family has 9 global1 interrupt, not 8. Fix it.
--- drivers/net/dsa/mv88e6xxx/chip.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/dsa/mv88e6xxx/chip.c +2 -2
@@ -6130,7 +6130,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = { .global1_addr = 0x1b, .global2_addr = 0x1c, .age_time_coeff = 15000, - .g1_irqs = 8, + .g1_irqs = 9, .g2_irqs = 10, .atu_move_port_mask = 0xf, .pvt = true,
@@ -6157,7 +6157,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = { .global1_addr = 0x1b, .global2_addr = 0x1c, .age_time_coeff = 15000, - .g1_irqs = 8, + .g1_irqs = 9, .g2_irqs = 10, .atu_move_port_mask = 0xf, .pvt = true,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 30/1193 PCI: switchtec: Add Gen6 Device IDs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Reed <[email protected]>
[ Upstream commit 5e6c21c56998e1e58d2f314e70779989ea0fee5d ]
Add device IDs for the next generation of switchtec products.
No changes to the driver were required with the new version of the hardware.
[logang: rewrote commit message]
--- drivers/pci/switch/switchtec.c | 16 ++++++++++++++++ include/linux/switchtec.h | 1 + 2 files changed, 17 insertions(+)
drivers/pci/switch/switchtec.c +16 -0
@@ -1851,6 +1851,22 @@ static const struct pci_device_id switchtec_pci_tbl[] = {SWITCHTEC_PCI_DEVICE (0x5552 ,SWITCHTEC_GEN5 ),/* PAXA 52XG5 */ SWITCHTEC_PCI_DEVICE (0x5536 ,SWITCHTEC_GEN5 ),/* PAXA 36XG5 */ SWITCHTEC_PCI_DEVICE (0x5528 ,SWITCHTEC_GEN5 ),/* PAXA 28XG5 */ +SWITCHTEC_PCI_DEVICE (0x6048 ,SWITCHTEC_GEN6 ),/* PFXs 48XG6 */ +SWITCHTEC_PCI_DEVICE (0x6064 ,SWITCHTEC_GEN6 ),/* PFXs 64XG6 */ +SWITCHTEC_PCI_DEVICE (0x6044 ,SWITCHTEC_GEN6 ),/* PFXs 144XG6 */ +SWITCHTEC_PCI_DEVICE (0x6060 ,SWITCHTEC_GEN6 ),/* PFXs 160XG6 */ +SWITCHTEC_PCI_DEVICE (0x6148 ,SWITCHTEC_GEN6 ),/* PSXs 48XG6 */ +SWITCHTEC_PCI_DEVICE (0x6164 ,SWITCHTEC_GEN6 ),/* PSXs 64XG6 */ +SWITCHTEC_PCI_DEVICE (0x6144 ,SWITCHTEC_GEN6 ),/* PSXs 144XG6 */ +SWITCHTEC_PCI_DEVICE (0x6160 ,SWITCHTEC_GEN6 ),/* PSXs 160XG6 */ +SWITCHTEC_PCI_DEVICE (0x6248 ,SWITCHTEC_GEN6 ),/* PFX 48XG6 */ +SWITCHTEC_PCI_DEVICE (0x6264 ,SWITCHTEC_GEN6 ),/* PFX 64XG6 */ +SWITCHTEC_PCI_DEVICE (0x6244 ,SWITCHTEC_GEN6 ),/* PFX 144XG6 */ +SWITCHTEC_PCI_DEVICE (0x6260 ,SWITCHTEC_GEN6 ),/* PFX 160XG6 */ +SWITCHTEC_PCI_DEVICE (0x6348 ,SWITCHTEC_GEN6 ),/* PSX 48XG6 */ +SWITCHTEC_PCI_DEVICE (0x6364 ,SWITCHTEC_GEN6 ),/* PSX 64XG6 */ +SWITCHTEC_PCI_DEVICE (0x6344 ,SWITCHTEC_GEN6 ),/* PSX 144XG6 */ +SWITCHTEC_PCI_DEVICE (0x6360 ,SWITCHTEC_GEN6 ),/* PSX 160XG6 */ SWITCHTEC_PCI100X_DEVICE (0x1001 ,SWITCHTEC_GEN4 ),/* PCI1001 16XG4 */ SWITCHTEC_PCI100X_DEVICE (0x1002 ,SWITCHTEC_GEN4 ),/* PCI1002 12XG4 */ SWITCHTEC_PCI100X_DEVICE(0x1003, SWITCHTEC_GEN4), /* PCI1003 16XG4 */
include/linux/switchtec.h +1 -0
@@ -42,6 +42,7 @@ enum switchtec_gen {SWITCHTEC_GEN3 ,SWITCHTEC_GEN4 ,SWITCHTEC_GEN5 , + SWITCHTEC_GEN6, }; struct mrpc_regs {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 31/1193 net: dsa: mv88e6xxx: define .pot_clear() for 6321
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <[email protected]>
[ Upstream commit 17826d9708a57d27011d0a6efdebb628d6f8299a ]
Commit 9e907d739cc3 ("net: dsa: mv88e6xxx: add POT operation") did not add the .pot_clear() method to the 6321 switch operations structure. Add them now.
--- drivers/net/dsa/mv88e6xxx/chip.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/dsa/mv88e6xxx/chip.c +1 -0
@@ -5121,6 +5121,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = { .set_egress_port = mv88e6095_g1_set_egress_port, .watchdog_ops = &mv88e6390_watchdog_ops, .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu, + .pot_clear = mv88e6xxx_g2_pot_clear, .hardware_reset_pre = mv88e6xxx_g2_eeprom_wait, .hardware_reset_post = mv88e6xxx_g2_eeprom_wait, .reset = mv88e6352_g1_reset,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 32/1193 net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <[email protected]>
[ Upstream commit e0fdb4157a85056bd256a7aebac4a3a2f580b201 ]
Commit 9e5baf9b3636 ("net: dsa: mv88e6xxx: add RMU disable op") did not add the .rmu_disable() method for the 6320 family. Add it now.
--- drivers/net/dsa/mv88e6xxx/chip.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/dsa/mv88e6xxx/chip.c +2 -0
@@ -5072,6 +5072,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = { .hardware_reset_pre = mv88e6xxx_g2_eeprom_wait, .hardware_reset_post = mv88e6xxx_g2_eeprom_wait, .reset = mv88e6352_g1_reset, + .rmu_disable = mv88e6352_g1_rmu_disable, .vtu_getnext = mv88e6352_g1_vtu_getnext, .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, .stu_getnext = mv88e6352_g1_stu_getnext,
@@ -5125,6 +5126,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = { .hardware_reset_pre = mv88e6xxx_g2_eeprom_wait, .hardware_reset_post = mv88e6xxx_g2_eeprom_wait, .reset = mv88e6352_g1_reset, + .rmu_disable = mv88e6352_g1_rmu_disable, .vtu_getnext = mv88e6352_g1_vtu_getnext, .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, .stu_getnext = mv88e6352_g1_stu_getnext,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 33/1193 media: em28xx-video: fix missing res_free() on init_usb_xfer failure
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Haoxiang Li <[email protected]>
[ Upstream commit cc20e81da6d99926f94fad7af21f75c07e865769 ]
res_get() is called before em28xx_init_usb_xfer(), but the error path of em28xx_init_usb_xfer() does not release the resource, leading to a persistent busy state.
--- drivers/media/usb/em28xx/em28xx-video.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/media/usb/em28xx/em28xx-video.c +3 -1
@@ -1105,8 +1105,10 @@ int em28xx_start_analog_streaming(struct vb2_queue *vq, unsigned int count) dev->max_pkt_size, dev->packet_multiplier, em28xx_urb_data_copy); -if (rc <0 ) +if (rc <0 ) { +res_free (dev, vq->type);return rc; + }/* * djh: it's not clear whether this code is still needed. I'm
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 34/1193 crypto: ixp4xx - fix buffer chain unwind on allocation failure
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ruoyu Wang <[email protected]>
[ Upstream commit 25056329384010a8672552b134f609601dc4f80e ]
chainup_buffers() builds a linked list of buffer descriptors for a scatterlist. If dma_pool_alloc() fails while constructing the list, the current code sets buf to NULL and later dereferences it unconditionally at the end of the function:
buf->next = NULL; buf->phys_next = 0;
This can lead to a null-pointer dereference on allocation failure.
If the failure happens after part of the descriptor chain has already been allocated and DMA-mapped, the partially constructed chain also needs to be released.
Fix this by terminating the partially constructed chain on allocation failure and letting the callers unwind it via their existing cleanup paths. Also fix ablk_perform() to preserve the hook pointers before checking for failure, so partially built chains can be freed correctly.
--- drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-)
drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c +14 -11
@@ -884,8 +884,9 @@ static struct buffer_desc *chainup_buffers(struct device *dev, ptr =sg_virt (sg); next_buf =dma_pool_alloc (buffer_pool, flags, &next_buf_phys);if (!next_buf) { - buf =NULL ; -break ; + buf->next =NULL ; + buf->phys_next =0 ; +return NULL ; }sg_dma_address (sg) =dma_map_single (dev, ptr, len, dir); buf->next = next_buf;
@@ -983,7 +984,7 @@ static int ablk_perform(struct skcipher_request *req, int encrypt)unsigned int nbytes = req->cryptlen;enum dma_data_direction src_direction =DMA_BIDIRECTIONAL ;struct ablk_ctx *req_ctx =skcipher_request_ctx (req); -struct buffer_desc src_hook; +struct buffer_desc *buf, src_hook;struct device *dev = &pdev->dev;unsigned int offset; gfp_t flags = req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ?
@@ -1025,22 +1026,24 @@ static int ablk_perform(struct skcipher_request *req, int encrypt)/* This was never tested by Intel * for more than one dst buffer, I think. */ req_ctx->dst =NULL ; -if (!chainup_buffers (dev, req->dst, nbytes, &dst_hook, - flags,DMA_FROM_DEVICE )) - goto free_buf_dest; - src_direction =DMA_TO_DEVICE ; + buf =chainup_buffers (dev, req->dst, nbytes, &dst_hook, + flags,DMA_FROM_DEVICE ); req_ctx->dst = dst_hook.next; crypt->dst_buf = dst_hook.phys_next; +if (!buf) + goto free_buf_dest; + src_direction =DMA_TO_DEVICE ; }else { req_ctx->dst =NULL ; } req_ctx->src =NULL ; -if (!chainup_buffers (dev, req->src, nbytes, &src_hook, flags, - src_direction)) - goto free_buf_src; - + buf =chainup_buffers (dev, req->src, nbytes, &src_hook, flags, + src_direction); req_ctx->src = src_hook.next; crypt->src_buf = src_hook.phys_next; +if (!buf) + goto free_buf_src; + crypt->ctl_flags |=CTL_FLAG_PERFORM_ABLK ;qmgr_put_entry (send_qid,crypt_virt2phys (crypt));BUG_ON (qmgr_stat_overflow (send_qid));
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 35/1193 crypto: omap - add omap_des_unregister_algs helper
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thorsten Blum <[email protected]>
[ Upstream commit 9ab1392b1163daab674484d6ddacf16f0ad4c040 ]
Add a new helper omap_des_unregister_algs() and replace two for loops in omap_des_probe() and omap_des_remove(), which also ensure ->registered is reset to 0.
--- drivers/crypto/omap-des.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
drivers/crypto/omap-des.c +16 -10
@@ -946,6 +946,20 @@ static int omap_des_get_pdev(struct omap_des_dev *dd,return 0 ; } +static void omap_des_unregister_algs (const struct omap_des_pdata *pdata) +{ +struct omap_des_algs_info *alg_info; +int i; + +for (i = pdata->algs_info_size -1 ; i >=0 ; i--) { + alg_info = &pdata->algs_info[i]; + +crypto_engine_unregister_skciphers (alg_info->algs_list, + alg_info->registered); + alg_info->registered =0 ; + } +} +static int omap_des_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1051,11 +1065,7 @@ static int omap_des_probe(struct platform_device *pdev)return 0 ; err_algs: -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); - +omap_des_unregister_algs (dd->pdata); err_engine:if (dd->engine)crypto_engine_exit (dd->engine);
@@ -1075,16 +1085,12 @@ static int omap_des_probe(struct platform_device *pdev)static int omap_des_remove (struct platform_device *pdev) {struct omap_des_dev *dd =platform_get_drvdata (pdev); -int i, j;spin_lock_bh (&list_lock);list_del (&dd->list);spin_unlock_bh (&list_lock); -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); +omap_des_unregister_algs (dd->pdata);tasklet_kill (&dd->done_task);omap_des_dma_cleanup (dd);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 36/1193 clk: renesas: cpg-mssr: Add number of clock cells check
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <[email protected]>
[ Upstream commit 7f0c422c7fbfd9294ff9321ada0c63561e5c6ea0 ]
The number of clock cells is not validated in the clock provider's clk_src_get() callback. Add the missing check.
--- drivers/clk/renesas/renesas-cpg-mssr.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/clk/renesas/renesas-cpg-mssr.c +3 -0
@@ -278,6 +278,9 @@ struct clk *cpg_mssr_clk_src_twocell_get(struct of_phandle_args *clkspec,struct clk *clk;int range_check; +if (clkspec->args_count !=2 ) +return ERR_PTR (-EINVAL ); +switch (clkspec->args[0 ]) {case CPG_CORE : type ="core" ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 37/1193 drm/bridge: tc358768: Set pre_enable_prev_first for reverse order
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Parth Pancholi <[email protected]>
[ Upstream commit 6b2bb5438bcfd7bad868665cd2aed1caf9ba3f2b ]
Enable the pre_enable_prev_first flag on the tc358768 bridge to reverse the pre-enable order, calling bridge pre_enable before panel prepare. This ensures the bridge is ready before sending panel init commands in the case of panels sending init commands in panel prepare function.
--- drivers/gpu/drm/bridge/tc358768.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/bridge/tc358768.c +2 -0
@@ -448,6 +448,8 @@ static int tc358768_dsi_host_attach(struct mipi_dsi_host *host, DRM_MODE_CONNECTOR_DSI);if (IS_ERR (bridge))return PTR_ERR (bridge); + + bridge->pre_enable_prev_first = true; } priv->output.dev = dev;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 38/1193 ASoC: ti: omap3pandora: update board check to use DT compatible
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ethan Nelson-Moore <[email protected]>
[ Upstream commit 45efb8fbdae303539e7fb5562e147583d4ed63ad ]
The omap3pandora driver contains a check for the ARM machine ID via the machine_is_omap3_pandora() macro. The board concerned now supports only FDT booting, which does not use machine IDs, and therefore the code should be updated to check the DT compatible property instead. The legacy board file for this machine was removed in commit 7fcf7e061edd ("ARM: OMAP2+: Remove legacy booting support for Pandora"). The presence of this machine ID check prevents the removal of machine IDs no longer used by the kernel from arch/arm/tools/mach-types, because the machine_is_*() macros are generated from mach-types. To resolve this issue, use of_machine_is_compatible() instead.
--- sound/soc/ti/omap3pandora.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
sound/soc/ti/omap3pandora.c +3 -2
@@ -11,12 +11,12 @@#include <linux/delay.h> #include <linux/regulator/consumer.h> #include <linux/module.h> +#include <linux/of.h> #include <sound/core.h> #include <sound/pcm.h> #include <sound/soc.h> -#include <asm/mach-types.h> #include <linux/platform_data/asoc-ti-mcbsp.h> #include "omap-mcbsp.h"
@@ -223,7 +223,8 @@ static int __init omap3pandora_soc_init(void) {int ret; -if (!machine_is_omap3_pandora ()) +if (!of_machine_is_compatible ("openpandora,omap3-pandora-600mhz" ) && + !of_machine_is_compatible ("openpandora,omap3-pandora-1ghz" ))return -ENODEV ;pr_info ("OMAP3 Pandora SoC init\n" );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 39/1193 mmc: core: Add validation for host-provided max_segs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shawn Lin <[email protected]>
[ Upstream commit 3e0483e93a8be320f70a1ff68d835f7f015af311 ]
The max_segs field is of type unsigned short, and if a host driver sets an excessively large value, it may be truncated to zero. This can cause mmc_alloc_sg() to call kmalloc_objs() with a zero size allocation request, which leads to undefined behavior.
Under the SLUB allocator, kmalloc(0) returns a special pointer (ZERO_SIZE_PTR). The subsequent 'if (sg)' check will evaluate to true, and sg_init_table() will then attempt to access invalid memory, resulting in a crash:
dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 133
mmc1: new UHS-I speed SDR104 SDHC card at address aaaa
Unable to handle kernel paging request at virtual address 0000001ffffffff0
Mem abort info:
ESR = 0x0000000096000004
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
FSC = 0x04: level 0 translation fault
Data abort info:
ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
CM = 0, WnR = 0, TnD = 0, TagAccess = 0
GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
user pgtable: 4k pages, 48-bit VAs, pgdp=0000000102c88000 [0000001ffffffff0] pgd=0000000000000000, p4d=0000000000000000
Internal error: Oops: 0000000096000004 [#1] SMP Modules linked in: CPU: 2 UID: 0 PID: 102 Comm: kworker/2:1 Not tainted 7.0.0-rc6-next-20260331-00013-g4d93c25963c5-dirty #80 PREEMPT Hardware name: Rockchip RK3576 EVB V10 Board (DT) Workqueue: events_freezable mmc_rescan pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : sg_init_table+0x2c/0x50 lr : sg_init_table+0x24/0x50
sp : ffff8000837db710
x29: ffff8000837db710 x28: 000000000000c000 x27: 0000000000000300
x26: 0000000000000000 x25: 0000000000000040 x24: ffff0000c46a0000
x23: 0000000000000000 x22: ffff0000c0c73c00 x21: 0000000000000010
x20: 0000000000000010 x19: 0000000000000000 x18: 000000000000002c
x17: 0000000000000000 x16: 0000000000000001 x15: 0000000000000000
x14: 0000000000000400 x13: ffff8000837dc000 x12: 0000000000000000
x11: ffff0000c0c73ca0 x10: 0000000000000040 x9 : 459ec1f0abbdbb00 x8 : 0000001fffffffe0 x7 : 0000000000000000 x6 : 000000000000003f x5 : 0000000000035579 x4 : 0000000000000901 x3 : 0000000000000000 x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000010
Call trace: sg_init_table+0x2c/0x50 (P) mmc_mq_init_request+0x64/0x90 blk_mq_alloc_map_and_rqs+0x3ac/0x480 blk_mq_alloc_set_map_and_rqs+0x98/0x1e0 blk_mq_alloc_tag_set+0x1c0/0x290 mmc_init_queue+0x120/0x370 mmc_blk_alloc_req+0x150/0x420
To prevent this, add a validation check in mmc_mq_init_request() to detect when sg_len (derived from max_segs) is zero. If sg_len is zero, we return an error and print an error message, allowing host driver developers to identify and fix incorrect max_segs configuration.
This is a defensive measure that ensures the MMC core fails gracefully when host drivers provide invalid max_segs values, rather than crashing with a page fault.
--- drivers/mmc/core/queue.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/mmc/core/queue.c +7 -1
@@ -211,8 +211,14 @@ static int mmc_mq_init_request(struct blk_mq_tag_set *set, struct request *req,struct mmc_queue *mq = set->driver_data;struct mmc_card *card = mq->card;struct mmc_host *host = card->host; +u16 sg_len =mmc_get_max_segments (host); - mq_rq->sg =mmc_alloc_sg (mmc_get_max_segments (host),GFP_KERNEL ); +if (!sg_len) { +dev_err (mmc_dev (host),"Wrong max_segs assigned\n" ); +return -EINVAL ; + } + + mq_rq->sg =mmc_alloc_sg (sg_len,GFP_KERNEL );if (!mq_rq->sg)return -ENOMEM ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 40/1193 mmc: davinci: avoid NULL deref of host->data in IRQ handler
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stepan Ionichev <[email protected]>
[ Upstream commit 4f28846aaf8db9668e338b8987973f8935edff34 ]
mmc_davinci_irq() returns early only when both host->cmd and host->data are NULL:
if (host->cmd == NULL && host->data == NULL) {
...
return IRQ_NONE;
}So we may legitimately reach the rest of the handler with host->data == NULL (and therefore data == NULL). The DATDNE branch already guards against this with an explicit "if (data != NULL)" check, but the subsequent TOUTRD ("read data timeout") and CRCWR/CRCRD ("data CRC error") branches dereference data unconditionally:
if (qstatus & MMCST0_TOUTRD) {
data->error = -ETIMEDOUT; <-- NULL deref
...
davinci_abort_data(host, data);
}
if (qstatus & (MMCST0_CRCWR | MMCST0_CRCRD)) {
data->error = -EILSEQ; <-- NULL deref
...
}If either bit is set in qstatus while host->data is NULL, the kernel will crash inside the IRQ handler. smatch flags this:
drivers/mmc/host/davinci_mmc.c:933 mmc_davinci_irq() error: we
previously assumed 'data' could be null (see line 914)
Gate both branches on a non-NULL data, matching the existing pattern used by the DATDNE branch.
No functional change for callers where data is non-NULL, which is the only case in which these branches did meaningful work before this change.
--- drivers/mmc/host/davinci_mmc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/mmc/host/davinci_mmc.c +2 -2
@@ -933,7 +933,7 @@ static irqreturn_t mmc_davinci_irq(int irq, void *dev_id) } } -if (qstatus &MMCST0_TOUTRD ) { +if (data && (qstatus &MMCST0_TOUTRD )) {/* Read data timeout */ data->error = -ETIMEDOUT ; end_transfer =1 ;
@@ -945,7 +945,7 @@ static irqreturn_t mmc_davinci_irq(int irq, void *dev_id)davinci_abort_data (host, data); } -if (qstatus & (MMCST0_CRCWR |MMCST0_CRCRD )) { +if (data && (qstatus & (MMCST0_CRCWR |MMCST0_CRCRD ))) {/* Data CRC error */ data->error = -EILSEQ ; end_transfer =1 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 41/1193 drm/amd/display: Fix CRC open failure during active rendering
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tom Chung <[email protected]>
[ Upstream commit 5eb2fdafeb6f4a442643b77a21a4c9e70586a146 ]
[Why]
Opening the CRC data file during active rendering can fail with -EINVAL. The wait for commit->hw_done returns remaining jiffies on success, but the CRC path was treating that as an error.
[How]
Handle wait_for_completion_interruptible_timeout() correctly:
positive return as success, 0 as timeout, and negative as error.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c +6 -1
@@ -291,8 +291,13 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name)*/ ret =wait_for_completion_interruptible_timeout ( &commit->hw_done,10 *HZ ); -if (ret) +if (ret <0 ) + goto cleanup; + +if (ret ==0 ) { + ret = -ETIMEDOUT ; goto cleanup; + } } enable =amdgpu_dm_is_valid_crc_source (source);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 42/1193 PCI: intel-gw: Enable clock before PHY init
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Eckert <[email protected]>
[ Upstream commit febf9ed3c35e5eec7ea384ebbd55a5296e3ca5e9 ]
To ensure that the boot sequence is correct, the DWC PCIe core clock must be switched on before PHY init call [1]. This changes are based on patched kernel sources of the MaxLinear SDK.
The reason why the MaxLinear SDK is used as a reference here is, that this PCIe DWC IP is used in the URX851 and URX850 SoC. This SoC was originally developed by Intel when they acquired Lantiq’s home networking division in 2015 [2]. In 2020 the home network division was sold to MaxLinear [3]. Since then, this SoC belongs to MaxLinear. They use their own SDK, which runs on kernel version '5.15.x'.
[1] https://github.com/maxlinear/linux/blob/updk_9.1.90/drivers/pci/controller/dwc/pcie-intel-gw.c#L544
[2] https://www.intc.com/news-events/press-releases/detail/364/intel-to-acquire-lantiq-advancing-the-connected-home
[3] https://investors.maxlinear.com/press-releases/detail/395/maxlinear-to-acquire-intels-home-gateway-platform
--- drivers/pci/controller/dwc/pcie-intel-gw.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
drivers/pci/controller/dwc/pcie-intel-gw.c +10 -9
@@ -286,13 +286,9 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)intel_pcie_core_rst_assert (pcie);intel_pcie_device_rst_assert (pcie); - - ret =phy_init (pcie->phy); -if (ret) -return ret; -intel_pcie_core_rst_deassert (pcie); +/* Controller clock must be provided earlier than PHY */ ret =clk_prepare_enable (pcie->core_clk);if (ret) {dev_err (pcie->pci.dev,"Core clock enable failed: %d\n" , ret);
@@ -301,13 +297,17 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie) pci->atu_base = pci->dbi_base +0xC0000 ; + ret =phy_init (pcie->phy); +if (ret) + goto phy_err; +intel_pcie_ltssm_disable (pcie);intel_pcie_link_setup (pcie);intel_pcie_init_n_fts (pci); ret =dw_pcie_setup_rc (&pci->pp);if (ret) - goto app_init_err; + goto err;dw_pcie_upconfig_setup (pci);
@@ -316,7 +316,7 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie) ret =dw_pcie_wait_for_link (pci);if (ret) - goto app_init_err; + goto err;/* Enable integrated interrupts */ pcie_app_wr_mask(pcie, PCIE_APP_IRNEN, PCIE_APP_IRN_INT,
@@ -324,11 +324,12 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)return 0 ; -app_init_err: +err: +phy_exit (pcie->phy); +phy_err:clk_disable_unprepare (pcie->core_clk); clk_err:intel_pcie_core_rst_assert (pcie); -phy_exit (pcie->phy);return ret; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 43/1193 hfsplus: rework hfsplus_readdir() logic
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Viacheslav Dubeyko <[email protected]>
[ Upstream commit 4b0496432844628ad05a5b1efce329a3340174d2 ]
The xfstests' test-case generic/637 fails with error:
FSTYP -- hfsplus
PLATFORM -- Linux/x86_64 hfsplus-testing-0001 6.15.0-rc4+ #8 SMP PREEMPT_DYNAMIC Thu May 1 16:43:22 PDT 2025 MKFS_OPTIONS -- /dev/loop51MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
QA output created by 637
entries 7 and 8 have duplicate d_off 8
Found unlinked files in open dir (see xfstests-dev/results//generic/637.full for details)
Debugging of the hfsplus_readdir() logic showed this:
hfsplus: hfsplus_readdir(): 163 ctx->pos 0
hfsplus: hfsplus_readdir(): 189 ctx->pos 1
hfsplus: hfsplus_readdir(): 264 ctx->pos 2, ino 18
hfsplus: hfsplus_readdir(): 264 ctx->pos 3, ino 19
hfsplus: hfsplus_readdir(): 264 ctx->pos 4, ino 28
hfsplus: hfsplus_readdir(): 264 ctx->pos 5, ino 118
hfsplus: hfsplus_readdir(): 264 ctx->pos 6, ino 29
hfsplus: hfsplus_readdir(): 264 ctx->pos 7, ino 30
hfsplus: hfsplus_readdir(): 264 ctx->pos 8, ino 31
hfsplus: hfsplus_readdir(): 304 ctx->pos 8
hfsplus: hfsplus_unlink():420 dir->i_ino 17, inode->i_ino 28
hfsplus: hfsplus_readdir(): 141 ctx->pos 7
hfsplus: hfsplus_readdir(): 264 ctx->pos 7, ino 31
hfsplus: hfsplus_readdir(): 264 ctx->pos 8, ino 32
hfsplus: hfsplus_readdir(): 264 ctx->pos 9, ino 33
It means that hfsplus_readdir() stopped the processing of folder's items on ctx->pos 8, then, item with ino 28 has been deleted and hfsplus_readdir() re-started the logic from ctx->pos 7. As a result, previous and new sets of folder's items have overlapping values for the case of d_off 8.
Currently, HFS+ has very complicated and fragile logic of rd->file->f_pos correction in hfsplus_delete_cat(). This patch removes this logic and it stores the current pos into hfsplus_readdir_data. Finally, if rd->pos == ctx->pos then hfsplus_readdir() tries to find the position in b-tree's node by means of hfsplus_cat_key. This position is used to re-start the folder's content traversal.
sudo ./check generic/637
FSTYP -- hfsplus PLATFORM -- Linux/x86_64 hfsplus-testing-0001 7.1.0-rc1+ #44 SMP PREEMPT_DYNAMIC Mon May 4 15:58:45 PDT 2026 MKFS_OPTIONS -- /dev/loop51
MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
generic/637 22s ... 22s
Ran: generic/637
Passed all 1 tests
--- fs/hfsplus/catalog.c | 11 ----------- fs/hfsplus/dir.c | 28 +++++++++++----------------- fs/hfsplus/hfsplus_fs.h | 5 +---- fs/hfsplus/inode.c | 2 -- fs/hfsplus/super.c | 2 -- 5 files changed, 12 insertions(+), 36 deletions(-)
fs/hfsplus/catalog.c +0 -11
@@ -332,7 +332,6 @@ int hfsplus_delete_cat(u32 cnid, struct inode *dir, const struct qstr *str)struct super_block *sb = dir->i_sb;struct hfs_find_data fd;struct hfsplus_fork_raw fork; -struct list_head *pos;int err, off;u16 type;
@@ -390,16 +389,6 @@ int hfsplus_delete_cat(u32 cnid, struct inode *dir, const struct qstr *str)hfsplus_free_fork (sb, cnid, &fork,HFSPLUS_TYPE_RSRC ); } -/* we only need to take spinlock for exclusion with ->release() */ -spin_lock (&HFSPLUS_I (dir)->open_dir_lock); -list_for_each (pos, &HFSPLUS_I (dir)->open_dir_list) { -struct hfsplus_readdir_data *rd = - list_entry(pos, struct hfsplus_readdir_data, list); -if (fd.tree->keycmp (fd.search_key, (void *)&rd->key) <0 ) - rd->file->f_pos--; - } -spin_unlock (&HFSPLUS_I (dir)->open_dir_lock); - err =hfs_brec_remove (&fd);if (err) goto out;
fs/hfsplus/dir.c +11 -17
@@ -185,7 +185,15 @@ static int hfsplus_readdir(struct file *file, struct dir_context *ctx) }if (ctx->pos >= inode->i_size) goto out; - err =hfs_brec_goto (&fd, ctx->pos -1 ); + rd = file->private_data; +if (rd && rd->pos == ctx->pos) { +memcpy (fd.search_key, &rd->key,sizeof (struct hfsplus_cat_key )); + err =hfs_brec_find (&fd, hfs_find_rec_by_key); +if (err == -ENOENT ) + err =hfs_brec_goto (&fd,1 ); + }else { + err =hfs_brec_goto (&fd, ctx->pos -1 ); + }if (err) goto out;for (;;) {
@@ -261,7 +269,6 @@ static int hfsplus_readdir(struct file *file, struct dir_context *ctx)if (err) goto out; } - rd = file->private_data;if (!rd) { rd =kmalloc (sizeof (struct hfsplus_readdir_data ),GFP_KERNEL );if (!rd) {
@@ -269,15 +276,8 @@ static int hfsplus_readdir(struct file *file, struct dir_context *ctx) goto out; } file->private_data = rd; - rd->file = file; -spin_lock (&HFSPLUS_I (inode)->open_dir_lock); -list_add (&rd->list, &HFSPLUS_I (inode)->open_dir_list); -spin_unlock (&HFSPLUS_I (inode)->open_dir_lock); } -/* -* Can be done after the list insertion; exclusion with -* hfsplus_delete_cat() is provided by directory lock. -*/ + rd->pos = ctx->pos;memcpy (&rd->key, fd.key,sizeof (struct hfsplus_cat_key )); out:kfree (strbuf);
@@ -287,13 +287,7 @@ static int hfsplus_readdir(struct file *file, struct dir_context *ctx)static int hfsplus_dir_release (struct inode *inode,struct file *file) { -struct hfsplus_readdir_data *rd = file->private_data; -if (rd) { -spin_lock (&HFSPLUS_I (inode)->open_dir_lock); -list_del (&rd->list); -spin_unlock (&HFSPLUS_I (inode)->open_dir_lock); -kfree (rd); - } +kfree (file->private_data);return 0 ; }
fs/hfsplus/hfsplus_fs.h +1 -4
@@ -246,8 +246,6 @@ struct hfsplus_inode_info {sector_t fs_blocks;u8 userflags;/* BSD user file flags */ u32 subfolders;/* Subfolder count (HFSX only) */ -struct list_head open_dir_list; -spinlock_t open_dir_lock;loff_t phys_size;struct inode vfs_inode;
@@ -297,8 +295,7 @@ struct hfs_find_data { };struct hfsplus_readdir_data { -struct list_head list; -struct file *file; +loff_t pos;struct hfsplus_cat_key key; };
fs/hfsplus/inode.c +0 -2
@@ -450,8 +450,6 @@ struct inode *hfsplus_new_inode(struct super_block *sb, struct inode *dir, inode->i_mtime = inode->i_atime =inode_set_ctime_current (inode); hip =HFSPLUS_I (inode); -INIT_LIST_HEAD (&hip->open_dir_list); -spin_lock_init (&hip->open_dir_lock);mutex_init (&hip->extents_lock);atomic_set (&hip->opencnt,0 ); hip->extent_state =0 ;
fs/hfsplus/super.c +0 -2
@@ -90,8 +90,6 @@ struct inode *hfsplus_iget(struct super_block *sb, unsigned long ino)HFSPLUS_I (inode)->fs_blocks =0 ;HFSPLUS_I (inode)->userflags =0 ;HFSPLUS_I (inode)->subfolders =0 ; -INIT_LIST_HEAD (&HFSPLUS_I (inode)->open_dir_list); -spin_lock_init (&HFSPLUS_I (inode)->open_dir_lock);HFSPLUS_I (inode)->phys_size =0 ; if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID ||
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 44/1193 net: phy: motorcomm: use device properties for firmware tuning
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: chunzhi.lin <[email protected]>
[ Upstream commit fffedfece2b46bb99b00740697f6c0c874de3cf4 ]
The Motorcomm PHY driver reads optional firmware properties via of_property_read_*() from phydev->mdio.dev.of_node. This works for Device Tree based systems, but causes ACPI platforms to ignore the same properties when they are supplied through _DSD.
As a result, ACPI-described Motorcomm PHY devices fall back to default settings instead of applying firmware-provided tuning such as rx/tx internal delay, drive strength, clock output frequency, and optional boolean controls like auto-sleep-disabled, keep-pll-enabled, and tx clock inversion.
Switch these lookups to device_property_read_*() so the driver uses the generic firmware node interface and can consume the same property names from either Device Tree or ACPI.
This keeps the existing DT behavior unchanged while allowing ACPI platforms to honor PHY configuration from firmware.
We have completed testing on Sophgo RISC-V architecture server SD3-10. This server has a 64-core Thead C920 CPU whose DWMAC is connected to Motorcomm's PHY YT8531. This server supports UEFI boot and it would like to use the ACPI table.
--- drivers/net/phy/motorcomm.c | 41 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 21 deletions(-)
drivers/net/phy/motorcomm.c +20 -21
@@ -10,7 +10,7 @@#include <linux/kernel.h> #include <linux/module.h> #include <linux/phy.h> -#include <linux/of.h> +#include <linux/property.h> #define PHY_ID_YT8511 0x0000010a#define PHY_ID_YT8521 0x0000011a
@@ -752,12 +752,12 @@ static u32 ytphy_get_delay_reg_value(struct phy_device *phydev, u16 *rxc_dly_en, u32 dflt) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;int tb_size_half = tb_size /2 ;u32 val;int i; -if (of_property_read_u32 (node, prop_name, &val)) +if (device_property_read_u32 (dev, prop_name, &val)) goto err_dts_val;/* when rxc_dly_en is NULL, it is get the delay for tx, only half of
@@ -901,12 +901,12 @@ static int yt8531_get_ds_map(struct phy_device *phydev, u32 cur)static int yt8531_set_ds (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;u32 ds_field_low, ds_field_hi, val;int ret, ds;/* set rgmii rx clk driver strength */ -if (!of_property_read_u32 (node,"motorcomm,rx-clk-drv-microamp" , &val)) { +if (!device_property_read_u32 (dev,"motorcomm,rx-clk-drv-microamp" , &val)) { ds =yt8531_get_ds_map (phydev, val);if (ds <0 ) return dev_err_probe(&phydev->mdio.dev, ds,
@@ -923,7 +923,7 @@ static int yt8531_set_ds(struct phy_device *phydev)return ret;/* set rgmii rx data driver strength */ -if (!of_property_read_u32 (node,"motorcomm,rx-data-drv-microamp" , &val)) { +if (!device_property_read_u32 (dev,"motorcomm,rx-data-drv-microamp" , &val)) { ds =yt8531_get_ds_map (phydev, val);if (ds <0 ) return dev_err_probe(&phydev->mdio.dev, ds,
@@ -956,7 +956,6 @@ static int yt8531_set_ds(struct phy_device *phydev)*/ static int yt8521_probe (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node;struct device *dev = &phydev->mdio.dev;struct yt8521_priv *priv;int chip_config;
@@ -1006,7 +1005,7 @@ static int yt8521_probe(struct phy_device *phydev)return ret; } -if (of_property_read_u32 (node,"motorcomm,clk-out-frequency-hz" , &freq)) +if (device_property_read_u32 (dev,"motorcomm,clk-out-frequency-hz" , &freq)) freq =YTPHY_DTS_OUTPUT_CLK_DIS ;if (phydev->drv->phy_id ==PHY_ID_YT8521 ) {
@@ -1074,11 +1073,11 @@ static int yt8521_probe(struct phy_device *phydev)static int yt8531_probe (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;u16 mask, val;u32 freq; -if (of_property_read_u32 (node,"motorcomm,clk-out-frequency-hz" , &freq)) +if (device_property_read_u32 (dev,"motorcomm,clk-out-frequency-hz" , &freq)) freq =YTPHY_DTS_OUTPUT_CLK_DIS ;switch (freq) {
@@ -1571,7 +1570,7 @@ static int yt8521_resume(struct phy_device *phydev)*/ static int yt8521_config_init (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;int old_page;int ret =0 ;
@@ -1586,7 +1585,7 @@ static int yt8521_config_init(struct phy_device *phydev) goto err_restore_page; } -if (of_property_read_bool (node,"motorcomm,auto-sleep-disabled" )) { +if (device_property_read_bool (dev,"motorcomm,auto-sleep-disabled" )) {/* disable auto sleep */ ret =ytphy_modify_ext (phydev,YT8521_EXTREG_SLEEP_CONTROL1_REG ,YT8521_ESC1R_SLEEP_SW ,0 );
@@ -1594,7 +1593,7 @@ static int yt8521_config_init(struct phy_device *phydev) goto err_restore_page; } -if (of_property_read_bool (node,"motorcomm,keep-pll-enabled" )) { +if (device_property_read_bool (dev,"motorcomm,keep-pll-enabled" )) {/* enable RXC clock when no wire plug */ ret =ytphy_modify_ext (phydev,YT8521_CLOCK_GATING_REG ,YT8521_CGR_RX_CLK_EN ,0 );
@@ -1607,14 +1606,14 @@ static int yt8521_config_init(struct phy_device *phydev)static int yt8531_config_init (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;int ret; ret =ytphy_rgmii_clk_delay_config_with_lock (phydev);if (ret <0 )return ret; -if (of_property_read_bool (node,"motorcomm,auto-sleep-disabled" )) { +if (device_property_read_bool (dev,"motorcomm,auto-sleep-disabled" )) {/* disable auto sleep */ ret = ytphy_modify_ext_with_lock(phydev, YT8521_EXTREG_SLEEP_CONTROL1_REG,
@@ -1623,7 +1622,7 @@ static int yt8531_config_init(struct phy_device *phydev)return ret; } -if (of_property_read_bool (node,"motorcomm,keep-pll-enabled" )) { +if (device_property_read_bool (dev,"motorcomm,keep-pll-enabled" )) {/* enable RXC clock when no wire plug */ ret = ytphy_modify_ext_with_lock(phydev, YT8521_CLOCK_GATING_REG,
@@ -1650,7 +1649,7 @@ static int yt8531_config_init(struct phy_device *phydev)*/ static void yt8531_link_change_notify (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;bool tx_clk_1000_inverted = false;bool tx_clk_100_inverted = false;bool tx_clk_10_inverted = false;
@@ -1658,17 +1657,17 @@ static void yt8531_link_change_notify(struct phy_device *phydev)u16 val =0 ;int ret; -if (of_property_read_bool (node,"motorcomm,tx-clk-adj-enabled" )) +if (device_property_read_bool (dev,"motorcomm,tx-clk-adj-enabled" )) tx_clk_adj_enabled = true;if (!tx_clk_adj_enabled)return ; -if (of_property_read_bool (node,"motorcomm,tx-clk-10-inverted" )) +if (device_property_read_bool (dev,"motorcomm,tx-clk-10-inverted" )) tx_clk_10_inverted = true; -if (of_property_read_bool (node,"motorcomm,tx-clk-100-inverted" )) +if (device_property_read_bool (dev,"motorcomm,tx-clk-100-inverted" )) tx_clk_100_inverted = true; -if (of_property_read_bool (node,"motorcomm,tx-clk-1000-inverted" )) +if (device_property_read_bool (dev,"motorcomm,tx-clk-1000-inverted" )) tx_clk_1000_inverted = true;if (phydev->speed <0 )
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 45/1193 drm/gud: Add RCade Display Adapter VID/PID pair
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sophie D <[email protected]>
[ Upstream commit ac5ac0acf11df04295eb1811066097b7022d6c7f ]
The RCade Display Adapter is a hardware device that allows driving an Arcade CRT display via the GUD protocol. Currently it spoofs an existing GUD VID/PID pair. However, now that it has its own pair assigned, it makes sense to add this to the list of pairs that GUD supports natively.
More information can be found in the project repositories:
https://gitlab.scd31.com/stephen/stm32-usb-vga-adapter-hardware
https://gitlab.scd31.com/stephen/stm32-usb-vga-rcade-adapter
--- drivers/gpu/drm/gud/gud_drv.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/gud/gud_drv.c +1 -0
@@ -660,6 +660,7 @@ static int gud_resume(struct usb_interface *intf)static const struct usb_device_id gud_id_table[] = { {USB_DEVICE_INTERFACE_CLASS (0x1d50 ,0x614d ,USB_CLASS_VENDOR_SPEC ) }, {USB_DEVICE_INTERFACE_CLASS (0x16d0 ,0x10a9 ,USB_CLASS_VENDOR_SPEC ) }, + {USB_DEVICE_INTERFACE_CLASS (0x1209 ,0x4fb3 ,USB_CLASS_VENDOR_SPEC ) }, { } };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 46/1193 media: video-i2c: use vb2_video_unregister_device on driver removal
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arash Golgol <[email protected]>
[ Upstream commit 56384b486b80ce4a2bc93689aae49995f908f90d ]
The driver uses vb2_fop_release() as its file release operation, so vb2_video_unregister_device() should be used instead of video_unregister_device() during driver removal.
This ensures that the vb2 queue is properly disconnected before the video device is unregistered.
--- drivers/media/i2c/video-i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/i2c/video-i2c.c +1 -1
@@ -911,7 +911,7 @@ static void video_i2c_remove(struct i2c_client *client)if (data->chip->set_power) data->chip->set_power (data, false); -video_unregister_device (&data->vdev); +vb2_video_unregister_device (&data->vdev); }#ifdef CONFIG_PM
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 47/1193 wifi: rtw89: phy: check length before parsing PHY status IE
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ping-Ke Shih <[email protected]>
[ Upstream commit 884495c39de1a02f42bd40051b921e2311d6ac91 ]
Hardware might report PHY status IE with unexpected length, and parser might access out of range. Check the length ahead.
--- drivers/net/wireless/realtek/rtw89/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/net/wireless/realtek/rtw89/core.c +3 -1
@@ -1423,13 +1423,15 @@ static int rtw89_core_rx_parse_phy_sts(struct rtw89_dev *rtwdev,const struct rtw89_phy_sts_iehdr *iehdr = pos; ie_len =rtw89_core_get_phy_status_ie_len (rtwdev, iehdr); -rtw89_core_process_phy_status_ie (rtwdev, iehdr, phy_ppdu); pos += ie_len;if (pos > end || ie_len ==0 ) {rtw89_debug (rtwdev,RTW89_DBG_TXRX ,"phy status parse failed\n" ); +return -EINVAL ; } + +rtw89_core_process_phy_status_ie (rtwdev, iehdr, phy_ppdu); }rtw89_phy_antdiv_parse (rtwdev, phy_ppdu);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 48/1193 net: dsa: realtek: rtl8365mb: add support for RTL8367SB
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mieczyslaw Nalewaj <[email protected]>
[ Upstream commit 28702a215c96917d85558ad6309a57ab224808c0 ]
Add chip info entry for the Realtek RTL8367SB switch. This device has chip ID 0x6367 and version 0x0010. It exposes two external interfaces:
port 6 supports MII, TMII, RMII, RGMII, SGMII and HSGMII, while port 7 supports MII, TMII, RMII and RGMII. Use the existing 8365MB-VC jam table for initialization.
--- drivers/net/dsa/realtek/rtl8365mb.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
drivers/net/dsa/realtek/rtl8365mb.c +14 -0
@@ -541,6 +541,20 @@ static const struct rtl8365mb_chip_info rtl8365mb_chip_infos[] = { .jam_table = rtl8365mb_init_jam_8365mb_vc, .jam_size = ARRAY_SIZE(rtl8365mb_init_jam_8365mb_vc), }, + { + .name = "RTL8367SB", + .chip_id = 0x6367, + .chip_ver = 0x0010, + .extints = { + { 6, 1, PHY_INTF(MII) | PHY_INTF(TMII) | + PHY_INTF(RMII) | PHY_INTF(RGMII) | + PHY_INTF(SGMII) | PHY_INTF(HSGMII) }, + { 7, 2, PHY_INTF(MII) | PHY_INTF(TMII) | + PHY_INTF(RMII) | PHY_INTF(RGMII) }, + }, + .jam_table = rtl8365mb_init_jam_8365mb_vc, + .jam_size = ARRAY_SIZE(rtl8365mb_init_jam_8365mb_vc), + }, { .name = "RTL8367RB-VB", .chip_id = 0x6367,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 49/1193 integrity: Check for NULL returned by asymmetric_key_public_key
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Berger <[email protected]>
[ Upstream commit c93a5f038ccc11ed8558ce642f62d5ede701a348 ]
Check for a NULL pointer returned by asymmetric_key_public_key and return -ENOKEY in this case.
--- security/integrity/digsig_asymmetric.c | 4 ++++ 1 file changed, 4 insertions(+)
security/integrity/digsig_asymmetric.c +4 -0
@@ -108,6 +108,10 @@ int asymmetric_verify(struct key *keyring, const char *sig, pks.hash_algo = hash_algo_name[hdr->hash_algo]; pk =asymmetric_key_public_key (key); +if (!pk) { + ret = -ENOKEY ; + goto out; + } pks.pkey_algo = pk->pkey_algo;if (!strcmp (pk->pkey_algo,"rsa" )) { pks.encoding ="pkcs1" ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 50/1193 drivers/of: validate status properties in reconfig state changes
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pengpeng Hou <[email protected]>
[ Upstream commit 0b6b12c5dcce16e604d4cde953bef46531b98571 ]
Live-tree reconfiguration properties also carry raw values plus explicit lengths. of_reconfig_get_state_change() currently treats status property values as NUL-terminated strings and feeds them straight into strcmp().
Factor the "okay" / "ok" check out into a helper that first verifies that the property contains a bounded C string within prop->length. Malformed status updates should be treated as not enabling the node.
--- drivers/of/dynamic.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
drivers/of/dynamic.c +16 -4
@@ -73,6 +73,20 @@ static const char *action_names[] = { [OF_RECONFIG_UPDATE_PROPERTY] = "UPDATE_PROPERTY", }; +static bool of_property_status_ok (const struct property *prop) +{ +const char *status; + +if (!prop || !prop->value || prop->length <=0 ) +return false; + + status = prop->value; +if (strnlen (status, prop->length) >= prop->length) +return false; + +return !strcmp (status,"okay" ) || !strcmp (status,"ok" ); +} +#define _do_print (func, prefix, action, node, prop, ...) ({ \ func("changeset: " prefix "%-15s %pOF%s%s\n", \ ##__VA_ARGS__, action_names[action], node, \
@@ -134,11 +148,9 @@ int of_reconfig_get_state_change(unsigned long action, struct of_reconfig_data *if (prop && !strcmp (prop->name,"status" )) { is_status =1 ; - status_state = !strcmp (prop->value,"okay" ) || - !strcmp (prop->value,"ok" ); + status_state =of_property_status_ok (prop);if (old_prop) - old_status_state = !strcmp (old_prop->value,"okay" ) || - !strcmp (old_prop->value,"ok" ); + old_status_state =of_property_status_ok (old_prop); }switch (action) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 51/1193 soundwire: intel: Move suspend tracking from trigger to pm suspend
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Ujfalusi <[email protected]>
[ Upstream commit acf676b9de0c86bc735a7f04962d3d688e156ffc ]
Mark all open DAI runtimes as suspended in the component .suspend callback instead of relying on SNDRV_PCM_TRIGGER_SUSPEND, which is not delivered during PAUSE or xrun states.
If during system suspend a dai is open it means that it is in either in SUSPENDED, PAUSED or STOPPED (due to xrun) state and they will need to be re-initialized during resume (which is done in .prepare callback).
--- drivers/soundwire/intel.c | 31 ++++++-------------------- drivers/soundwire/intel_ace2x.c | 39 ++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 37 deletions(-)
drivers/soundwire/intel.c +7 -24
@@ -857,19 +857,6 @@ static int intel_trigger(struct snd_pcm_substream *substream, int cmd, struct sn }switch (cmd) { -case SNDRV_PCM_TRIGGER_SUSPEND : - -/* -* The .prepare callback is used to deal with xruns and resume operations. -* In the case of xruns, the DMAs and SHIM registers cannot be touched, -* but for resume operations the DMAs and SHIM registers need to be initialized. -* the .trigger callback is used to track the suspend case only. -*/ - - dai_runtime->suspended = true; - -break ; -case SNDRV_PCM_TRIGGER_PAUSE_PUSH : dai_runtime->paused = true;break ;
@@ -906,10 +893,12 @@ static int intel_component_dais_suspend(struct snd_soc_component *component)struct snd_soc_dai *dai;/* -* In the corner case where a SUSPEND happens during a PAUSE, the ALSA core -* does not throw the TRIGGER_SUSPEND. This leaves the DAIs in an unbalanced state. -* Since the component suspend is called last, we can trap this corner case -* and force the DAIs to release their resources. +* Mark all open streams as suspended. +* Open streams at this point can be in SUSPENDED, PAUSED or STOPPED +* state and during prepare the DMAs and SHIM registers need to be +* initialized for them. +* The STOPPED state is a special corner case which can happen if audio +* experiences xrun at suspend time. */ for_each_component_dais (component, dai) {struct sdw_cdns *cdns =snd_soc_dai_get_drvdata (dai);
@@ -917,13 +906,7 @@ static int intel_component_dais_suspend(struct snd_soc_component *component) dai_runtime = cdns->dai_runtime_array[dai->id]; -if (!dai_runtime) -continue ; - -if (dai_runtime->suspended) -continue ; - -if (dai_runtime->paused) +if (dai_runtime) dai_runtime->suspended = true; }
drivers/soundwire/intel_ace2x.c +26 -13
@@ -445,19 +445,6 @@ static int intel_trigger(struct snd_pcm_substream *substream, int cmd, struct sn }switch (cmd) { -case SNDRV_PCM_TRIGGER_SUSPEND : - -/* -* The .prepare callback is used to deal with xruns and resume operations. -* In the case of xruns, the DMAs and SHIM registers cannot be touched, -* but for resume operations the DMAs and SHIM registers need to be initialized. -* the .trigger callback is used to track the suspend case only. -*/ - - dai_runtime->suspended = true; - -break ; -case SNDRV_PCM_TRIGGER_PAUSE_PUSH : dai_runtime->paused = true;break ;
@@ -481,8 +468,34 @@ static const struct snd_soc_dai_ops intel_pcm_dai_ops = { .get_stream = intel_get_sdw_stream, }; +static int intel_component_dais_suspend (struct snd_soc_component *component) +{ +struct snd_soc_dai *dai; + +/* +* Mark all open streams as suspended. +* Open streams at this point can be in SUSPENDED, PAUSED or STOPPED +* state and during prepare the DMAs and SHIM registers need to be +* initialized for them. +* The STOPPED state is a special corner case which can happen if audio +* experiences xrun at suspend time. +*/ +for_each_component_dais (component, dai) { +struct sdw_cdns *cdns =snd_soc_dai_get_drvdata (dai); +struct sdw_cdns_dai_runtime *dai_runtime; + + dai_runtime = cdns->dai_runtime_array[dai->id]; + +if (dai_runtime) + dai_runtime->suspended = true; + } + +return 0 ; +} +static const struct snd_soc_component_driver dai_component = { .name ="soundwire" , + .suspend = intel_component_dais_suspend, };/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 52/1193 clk: samsung: exynos850: mark APM I3C clocks as critical
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexey Klimov <[email protected]>
[ Upstream commit 44984aaf1aa727ff944dd4b72fcf069d08b0056d ]
The Exynos850 APM co-processor relies on the I3C bus to communicate with the PMIC. Currently, there is no dedicated PMIC consumer driver managing these clocks, so the clock subsystem automatically gates them during the initialisation. Once gated, any subsequent ACPM communication with APM results in timeouts.
As a temporary workaround (and let's hope it doesn't become permanent), mark both gout_i3c_pclk and gout_i3c_sclk as CLK_IS_CRITICAL ones to prevent the clock subsystem from disabling them. This makes the ACPM communication functional. This workaround should be reverted once a proper ACPM PMIC driver is implemented to manage these clocks.
--- drivers/clk/samsung/clk-exynos850.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/clk/samsung/clk-exynos850.c +3 -2
@@ -613,10 +613,11 @@ static const struct samsung_gate_clock apm_gate_clks[] __initconst = { CLK_CON_GAT_GOUT_APM_APBIF_RTC_PCLK, 21, 0, 0),GATE (CLK_GOUT_TOP_RTC_PCLK ,"gout_top_rtc_pclk" ,"dout_apm_bus" ,CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_PCLK ,21 ,0 ,0 ), +/* TODO: Should be dealt with or enabled in PMIC ACPM driver */ GATE (CLK_GOUT_I3C_PCLK ,"gout_i3c_pclk" ,"dout_apm_bus" , -CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK ,21 ,0 ,0 ), +CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK ,21 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_GOUT_I3C_SCLK ,"gout_i3c_sclk" ,"mout_apm_i3c" , -CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK ,21 ,0 ,0 ), +CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK ,21 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_GOUT_SPEEDY_PCLK ,"gout_speedy_pclk" ,"dout_apm_bus" , CLK_CON_GAT_GOUT_APM_SPEEDY_APM_PCLK, 21, 0, 0),/* TODO: Should be enabled in GPIO driver (or made CLK_IS_CRITICAL) */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 53/1193 scsi: pm8001: Reject firmware update in fatal error state
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kumar Meiyappan <[email protected]>
[ Upstream commit 2a8fbcfb04aa9db189bfa3842d4f586aecd0e631 ]
pm8001_store_update_fw() allows a firmware update request even when the controller has already entered a fatal error state.
Firmware update is not valid once the controller is in that state, and attempting it can lead to a call trace. Reject the request early by checking controller_fatal_error, set the firmware status to FAIL_PARAMETERS, and return -EINVAL.
--- drivers/scsi/pm8001/pm8001_ctl.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/scsi/pm8001/pm8001_ctl.c +8 -0
@@ -823,6 +823,14 @@ static ssize_t pm8001_store_update_fw(struct device *cdev, goto out; } +if (pm8001_ha->controller_fatal_error) { +pm8001_dbg (pm8001_ha,FAIL , +"controller in fatal error state, firmware update rejected\n" ); + pm8001_ha->fw_status =FAIL_PARAMETERS ; + ret = -EINVAL ; + goto out; + } +for (i =0 ; flash_command_table[i].code !=FLASH_CMD_NONE ; i++) {if (!memcmp (flash_command_table[i].command, cmd_ptr,strlen (cmd_ptr))) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 54/1193 scsi: pm8001: Reject non-fatal dump when controller is crashed
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kumar Meiyappan <[email protected]>
[ Upstream commit aa3b8f56ef27ed72394a752820abdec4608b731c ]
pm80xx_get_non_fatal_dump() can be called even after the controller has entered a fatal error state. In that case the forensic memory contents are not safe to access for a non-fatal dump request, and attempting to do so can trigger a call trace.
Check controller_fatal_error before reading the non-fatal dump buffer and return -EINVAL when the controller is already in a crashed state.
This prevents non-fatal dump collection from running in an invalid controller state.
--- drivers/scsi/pm8001/pm80xx_hwi.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/scsi/pm8001/pm80xx_hwi.c +7 -0
@@ -401,6 +401,13 @@ ssize_t pm80xx_get_non_fatal_dump(struct device *cdev,char *buf_copy = buf; temp = (u32 *)pm8001_ha->memoryMap.region[FORENSIC_MEM ].virt_ptr; + +if (pm8001_ha->controller_fatal_error) { +pm8001_dbg (pm8001_ha,FAIL , +"non-fatal dump not available in fatal error state\n" ); +return -EINVAL ; + } +if (++pm8001_ha->non_fatal_count ==1 ) {if (pm8001_ha->chip_id == chip_8001) { snprintf(pm8001_ha->forensic_info.data_buf.direct_data,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 55/1193 crypto: ecc - Unbreak the build on arm with CONFIG_KASAN_STACK=y
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lukas Wunner <[email protected]>
[ Upstream commit c64ba13e2033c3c6dc1a097bf35f9f1fe457c3f7 ]
Andrew reports build breakage of arm allmodconfig, reproducible with gcc 14.2.0 and 15.2.0:
crypto/ecc.c: In function 'ecc_point_mult':
crypto/ecc.c:1380:1: error: the frame size of 1360 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
gcc aggressively inlines functions called by ecc_point_mult() (without there being any explicit inline declarations), which pushes stack usage close to the limit imposed by CONFIG_FRAME_WARN. allmodconfig implies CONFIG_KASAN_STACK=y, which increases the stack above that limit.
In the bugzilla entry linked below, gcc maintainers explain that gcc estimates extra stack usage caused by inlining, but ASAN instrumentation is added in post-IPA passes and thus the inlining heuristics cannot account for it.
It could be argued that -Werror=frame-larger-than=1280 instructs the compiler to avoid inlining beyond that limit lest the build breaks, which would imply gcc behaves incorrectly. But gcc maintainers reject this notion and believe that a warning switch should never affect code generation, even if it is promoted to an error.
One way to unbreak the build is to limit inlining via -finline-limit=100 or by explicitly declaring some functions noinline. However while it does keep stack usage of individual functions below the limit, *total* stack usage increases.
A longterm solution is to refactor ecc.c for reduced stack usage. It currently performs ECC point multiplication with a Montgomery ladder which uses co-Z (conjugate) addition to trade off memory for speed. The algorithm is susceptible to timing attacks and needs to be replaced with a constant time Montgomery ladder, which should consume less memory and thus resolve the stack usage issue as a side effect.
In the interim, raise the limit for ecc.c, as is already done for several other files in the source tree.
Constrain to gcc because clang 19.1.7 does not exhibit the issue. It makes do with a 724 bytes stack frame even though it inlines almost the same functions as gcc.
--- crypto/Makefile | 5 +++++ 1 file changed, 5 insertions(+)
crypto/Makefile +5 -0
@@ -187,6 +187,11 @@ obj-$(CONFIG_CRYPTO_ECC) += ecc.o obj-$(CONFIG_CRYPTO_ESSIV) += essiv.o obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124949 +ifeq ($(CONFIG_ARM)$(CONFIG_KASAN_STACK)$(CONFIG_CC_IS_GCC),yyy) +CFLAGS_ecc.o += $(call cc-option,-Wframe-larger-than=1536) +endif + ecdh_generic-y += ecdh.o ecdh_generic-y += ecdh_helper.o obj-$(CONFIG_CRYPTO_ECDH) += ecdh_generic.o
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 56/1193 crypto: atmel-ecc - add support for atecc608b
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thorsten Blum <[email protected]>
[ Upstream commit b668edaf8dcc8d09f6f1e71797422b44d4bd22a3 ]
Tested on hardware with an ATECC608B at 0x60. The device binds successfully, passes the driver's sanity check, and registers the ecdh-nist-p256 KPP algorithm.
The hardware ECDH path was also exercised using a minimal KPP test module, covering private key generation, public key derivation, and shared secret computation.
--- drivers/crypto/atmel-ecc.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/crypto/atmel-ecc.c +3 -0
@@ -365,6 +365,8 @@ static void atmel_ecc_remove(struct i2c_client *client)static const struct of_device_id atmel_ecc_dt_ids[] = { { .compatible ="atmel,atecc508a" , + }, { + .compatible ="atmel,atecc608b" , }, {/* sentinel */ }
@@ -374,6 +376,7 @@ MODULE_DEVICE_TABLE(of, atmel_ecc_dt_ids);static const struct i2c_device_id atmel_ecc_id[] = { {"atecc508a" }, + {"atecc608b" }, { } };MODULE_DEVICE_TABLE (i2c, atmel_ecc_id);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 57/1193 media: imon: Add iMON VFD HID OEM v1.2 key mappings
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alessandro Baldi <[email protected]>
[ Upstream commit d97d13c24d7893abcfb80d38630ce74daaa1434c ]
Add Vol+/Vol-/Mute panel button mappings for iMON VFD HID OEM v1.2. This version differs in the codes that generate the KEY_VOLUMEUP, KEY_VOLUMEDOWN and KEY_MUTE events.
--- drivers/media/rc/imon.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/media/rc/imon.c +4 -0
@@ -295,6 +295,10 @@ static const struct imon_usb_dev_descr imon_OEM_VFD = { { 0x000100000000ffeell, KEY_VOLUMEUP }, { 0x010000000000ffeell, KEY_VOLUMEDOWN }, { 0x000000000100ffeell, KEY_MUTE }, +/* iMON VFD HID OEM v1.2 */ + { 0x000000000a00ffeell, KEY_VOLUMEUP }, + { 0x000000000b00ffeell, KEY_VOLUMEDOWN }, + { 0x000000000c00ffeell, KEY_MUTE },/* 0xffdc iMON MCE VFD */ { 0x00010000ffffffeell, KEY_VOLUMEUP }, { 0x01000000ffffffeell, KEY_VOLUMEDOWN },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 58/1193 RDMA/mlx5: Use QP port when decoding responder CQEs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chenguang Zhao <[email protected]>
[ Upstream commit 194762e6e436acde0f8f6aef44200b0058c36791 ]
The responder CQE path determines the link layer via rdma_port_get_link_layer(). Use qp->port instead of hardcoding port 1, which can mis-decode completions on multi-port devices.
--- drivers/infiniband/hw/mlx5/cq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/hw/mlx5/cq.c +2 -1
@@ -166,7 +166,8 @@ enum {static void handle_responder (struct ib_wc *wc,struct mlx5_cqe64 *cqe,struct mlx5_ib_qp *qp) { -enum rdma_link_layer ll =rdma_port_get_link_layer (qp->ibqp.device,1 ); +enum rdma_link_layer ll = +rdma_port_get_link_layer (qp->ibqp.device, qp->port);struct mlx5_ib_dev *dev =to_mdev (qp->ibqp.device);struct mlx5_ib_srq *srq =NULL ;struct mlx5_ib_wq *wq;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 59/1193 mailbox: Make mbox_send_message() return error code when tx fails
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joonwon Kang <[email protected]>
[ Upstream commit 96a3d2f3167f5644b30e60171898e67123c3c2c6 ]
When the mailbox controller failed transmitting message, the error code was only passed to the client's tx done handler and not to mbox_send_message() in blocking mode. For this reason, the function could return a false success. This commit resolves the issue by introducing the tx status and checking it before mbox_send_message() returns.
This commit works with the premise that the multi-threads' access to a channel in blocking mode is serialized by clients, not by the mailbox APIs, since the current mbox_send_message() in blocking mode does not support multi-threads.
--- drivers/mailbox/mailbox.c | 6 +++++- include/linux/mailbox_controller.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-)
drivers/mailbox/mailbox.c +5 -1
@@ -110,8 +110,10 @@ static void tx_tick(struct mbox_chan *chan, int r)if (chan->cl->tx_done) chan->cl->tx_done (chan->cl, mssg, r); -if (r != -ETIME && chan->cl->tx_block) +if (r != -ETIME && chan->cl->tx_block) { + chan->tx_status = r;complete (&chan->tx_complete); + } }static enum hrtimer_restart txdone_hrtimer (struct hrtimer *hrtimer)
@@ -281,6 +283,8 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg)if (ret ==0 ) { t = -ETIME ;tx_tick (chan, t); + }else if (chan->tx_status <0 ) { + t = chan->tx_status; } }
include/linux/mailbox_controller.h +2 -0
@@ -111,6 +111,7 @@ struct mbox_controller {* @txdone_method: Way to detect TXDone chosen by the API * @cl: Pointer to the current owner of this channel * @tx_complete: Transmission completion +* @tx_status: Transmission status * @active_req: Currently active request hook * @msg_count: No. of mssg currently queued * @msg_free: Index of next available mssg slot
@@ -123,6 +124,7 @@ struct mbox_chan {unsigned txdone_method;struct mbox_client *cl;struct completion tx_complete; +int tx_status;void *active_req;unsigned msg_count, msg_free;void *msg_data[MBOX_TX_QUEUE_LEN ];
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 60/1193 PCI: Wait for device readiness after D3hot -> D0uninitialized transition
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bjorn Helgaas <[email protected]>
[ Upstream commit 41167a1e98536b4baf0846fd259c8124bd1c4e1b ]
For a device that advertises No_Soft_Reset == 0, a transition from D3hot to D0uninitialized is a soft reset, and the resulting internal device state is undefined.
Per PCIe r7.0, sec 2.3.1, a transition from D3hot to D0uninitialized mandates a minimum 10 ms delay before accessing the device. Following this delay, the device is permitted to respond to initial configuration requests with a Request Retry Status (RRS) completion status if it needs more time to initialize.
Call pci_dev_wait() after pci_power_up() performs a D3hot->D0uninitialized transition to ensure the device is ready to accept config accesses, as is done after the similar transition in pci_pm_reset().
If the device is already ready, this is essentially a no-op except for one additional config read.
--- drivers/pci/pci.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-)
drivers/pci/pci.c +22 -2
@@ -1304,7 +1304,18 @@ int pci_power_up(struct pci_dev *dev)bool need_restore;pci_power_t state;u16 pmcsr; +int ret; +/* +* When setting power state to D0, platform_pci_set_power_state() +* ensures main power is on. If it puts the device in D0, it also +* completes any required delays after the transition; if it leaves +* the device in D1, D2, or D3hot, we use the PM Capability to +* transition to D0. +* +* In all cases, the device is either Configuration-Ready or +* inaccessible upon return. +*/ platform_pci_set_power_state (dev,PCI_D0 );if (!dev->pm_cap) {
@@ -1345,10 +1356,19 @@ int pci_power_up(struct pci_dev *dev)pci_write_config_word (dev, dev->pm_cap +PCI_PM_CTRL ,0 );/* Mandatory transition delays; see PCI PM 1.2. */ -if (state == PCI_D3hot) +if (state == PCI_D3hot) {pci_dev_d3_sleep (dev); -else if (state ==PCI_D2 ) +if (!(pmcsr &PCI_PM_CTRL_NO_SOFT_RESET )) { + ret =pci_dev_wait (dev,"power up D3hot->D0uninitialized" , +PCIE_RESET_READY_POLL_MS ); +if (ret) { + dev->current_state = PCI_D3cold; +return -EIO ; + } + } + }else if (state ==PCI_D2 ) {udelay (PCI_PM_D2_DELAY ); + } end: dev->current_state =PCI_D0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 61/1193 drm/amdkfd: Check bounds for allocate_sdma_queue restore_sdma_id
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Francis <[email protected]>
[ Upstream commit bfe9a7545b2a7be1c543f1741e16f2d5ec4116ae ]
allocate_sdma_queue has an option where the sdma queue id can be specified (used by CRIU). We weren't bounds-checking that value.
Confirm it's less than the maximum number of queues.
--- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +6 -0
@@ -1484,6 +1484,9 @@ static int allocate_sdma_queue(struct device_queue_manager *dqm, }if (restore_sdma_id) { +if (*restore_sdma_id >=get_num_sdma_queues (dqm)) +return -EINVAL ; +/* Re-use existing sdma_id */ if (!test_bit (*restore_sdma_id, dqm->sdma_bitmap)) {pr_err ("SDMA queue already in use\n" );
@@ -1509,6 +1512,9 @@ static int allocate_sdma_queue(struct device_queue_manager *dqm,return -ENOMEM ; }if (restore_sdma_id) { +if (*restore_sdma_id >=get_num_xgmi_sdma_queues (dqm)) +return -EINVAL ; +/* Re-use existing sdma_id */ if (!test_bit (*restore_sdma_id, dqm->xgmi_sdma_bitmap)) {pr_err ("SDMA queue already in use\n" );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 62/1193 drm/amdkfd: Fix OOB memory exposure in get_wave_state()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sunday Clement <[email protected]>
[ Upstream commit 7ef144458f48d5589e36f1b3d83e83db2e5c5ba5 ]
The get_wave_state() function for v9 trusts cp_hqd_cntl_stack_size and cp_hqd_cntl_stack_offset values read directly from the MQD, which are written by GPU microcode and fully attacker-controlled on the CRIU-restore path (via AMDKFD_IOC_RESTORE_PROCESS with H3).
this leads to an unbounded copy_to_user() that can leak adjacent GTT/kernel memory. If offset > size, integer underflow produces a ~4 GiB read length, if size is set to 1 MiB against a 4 KiB allocation, we leak 1 MiB of adjacent kernel memory (other queues' MQDs, ring buffers, KASLR pointers).
Fix by clamping both cp_hqd_cntl_stack_size to the actual allocated buffer size (q->ctl_stack_size) and cp_hqd_cntl_stack_offset to the clamped size before performing arithmetic and copy_to_user().
This ensures we never read beyond the allocated kernel BO regardless of attacker-supplied MQD field values.
--- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +8 -3
@@ -322,11 +322,15 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd, {struct v9_mqd *m;struct kfd_context_save_area_header header; +u32 cntl_stack_size; +u32 cntl_stack_offset;/* Control stack is located one page after MQD. */ void *mqd_ctl_stack = (void *)((uintptr_t )mqd +PAGE_SIZE ); m =get_mqd (mqd); + cntl_stack_size =min_t (u32, m->cp_hqd_cntl_stack_size, q->ctl_stack_size); + cntl_stack_offset =min_t (u32, m->cp_hqd_cntl_stack_offset, cntl_stack_size); *ctl_stack_used_size = m->cp_hqd_cntl_stack_size - m->cp_hqd_cntl_stack_offset;
@@ -342,9 +346,10 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,if (copy_to_user (ctl_stack, &header,sizeof (header.wave_state)))return -EFAULT ; -if (copy_to_user (ctl_stack + m->cp_hqd_cntl_stack_offset, - mqd_ctl_stack + m->cp_hqd_cntl_stack_offset, - *ctl_stack_used_size)) + *ctl_stack_used_size = cntl_stack_size - cntl_stack_offset; + +if (copy_to_user (ctl_stack + cntl_stack_offset, mqd_ctl_stack + cntl_stack_offset, + *ctl_stack_used_size))return -EFAULT ;return 0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 63/1193 drm/amdkfd: Check bounds on allocate_doorbell
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Francis <[email protected]>
[ Upstream commit 1f087bb8cf9e8797633da35c85435e557ef74d06 ]
allocated_doorbell has an option to set the doorbell id to a specific value (used by CRIU). This value was not bounds checked.
Check to confirm it's less than KFD_MAX_NUM_OF_QUEUES_PER_PROCESS.
--- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +3 -0
@@ -385,6 +385,9 @@ static int allocate_doorbell(struct qcm_process_device *qpd, }else {/* For CP queues on SOC15 */ if (restore_id) { +if (*restore_id >=KFD_MAX_NUM_OF_QUEUES_PER_PROCESS ) +return -EINVAL ; +/* make sure that ID is free */ if (__test_and_set_bit (*restore_id, qpd->doorbell_bitmap))return -EINVAL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 64/1193 ALSA: usx2y: Drain pending US-428 pipe-4 output commands
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cássio Gabriel <[email protected]>
[ Upstream commit 18977c0dd722f52217027ff75de2811c53cce2cc ]
The US-428 pipe-4 output path submits at most one pending p4out entry from the shared-memory ring per input interrupt. If userspace queues more than one command before the interrupt handler runs, later commands remain pending until later input interrupts, even when async pipe-4 URBs are available.
Drain pending entries while idle async URBs are available. Copy each command into the existing per-URB async buffer before submission, so the submitted transfer does not depend on a userspace-mapped ring slot remaining unchanged after p4out_sent is advanced.
Also update p4out_sent only after usb_submit_urb() succeeds, so a failed submission is not reported as sent.
This keeps the shared-memory ABI unchanged and fixes only the local queue-draining behavior.
--- sound/usb/usx2y/usbusx2y.c | 39 ++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-)
sound/usb/usx2y/usbusx2y.c +23 -16
@@ -180,7 +180,7 @@ static void i_usx2y_in04_int(struct urb *urb)struct usx2ydev *usx2y = urb->context;struct us428ctls_sharedmem *us428ctls = usx2y->us428ctls_sharedmem;struct us428_p4out *p4out; -int i, j, n, diff, send; +int i, j, n, diff, send, len; usx2y->in04_int_calls++;
@@ -223,24 +223,31 @@ static void i_usx2y_in04_int(struct urb *urb) }while (!err && usx2y->us04->submitted < usx2y->us04->len); } }else { -if (us428ctls && us428ctls->p4out_last >=0 && us428ctls->p4out_last <N_US428_P4OUT_BUFS ) { -if (us428ctls->p4out_last != us428ctls->p4out_sent) { - send = us428ctls->p4out_sent +1 ; -if (send >=N_US428_P4OUT_BUFS ) - send =0 ; -for (j =0 ; j <URBS_ASYNC_SEQ && !err; ++j) { -if (!usx2y->as04.urb[j]->status) { - p4out = us428ctls->p4out + send;// FIXME if more than 1 p4out is new, 1 gets lost. -usb_fill_bulk_urb (usx2y->as04.urb[j], usx2y->dev, -usb_sndbulkpipe (usx2y->dev,0x04 ), &p4out->val.vol, - p4out->type ==ELT_LIGHT ?sizeof (struct us428_lights ) :5 , - i_usx2y_out04_int, usx2y); - err =usb_submit_urb (usx2y->as04.urb[j],GFP_ATOMIC ); +while (us428ctls && + us428ctls->p4out_last >=0 && + us428ctls->p4out_last <N_US428_P4OUT_BUFS && + us428ctls->p4out_last != us428ctls->p4out_sent) { +for (j =0 ; j <URBS_ASYNC_SEQ && !err; ++j) { +if (!usx2y->as04.urb[j]->status) { + send = us428ctls->p4out_sent +1 ; +if (send >=N_US428_P4OUT_BUFS ) + send =0 ; + + p4out = us428ctls->p4out + send; + len = p4out->type ==ELT_LIGHT ? +sizeof (struct us428_lights ) :5 ; +memcpy (usx2y->as04.urb[j]->transfer_buffer, + &p4out->val.vol, len); + usx2y->as04.urb[j]->transfer_buffer_length = len; + err =usb_submit_urb (usx2y->as04.urb[j],GFP_ATOMIC ); +if (!err) us428ctls->p4out_sent = send; -break ; - } + +break ; } } +if (j >=URBS_ASYNC_SEQ || err) +break ; } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 65/1193 sched/fair: Reject misfit pulls onto busy SMT siblings on asym-capacity
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrea Righi <[email protected]>
[ Upstream commit bf6aa722198d3c06e4236e8c5a480f30a64e1513 ]
When SD_ASYM_CPUCAPACITY load balancing considers pulling a misfit task, capacity_of(dst_cpu) can overstate available compute if the SMT sibling is
busy: the core does not deliver its full nominal capacity.
If SMT is active and dst_cpu is not on a fully idle core, skip this destination so we do not migrate a misfit expecting a capacity upgrade we cannot actually provide.
--- kernel/sched/fair.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
kernel/sched/fair.c +10 -1
@@ -8834,6 +8834,7 @@ struct lb_env {int dst_cpu;struct rq *dst_rq; +bool dst_core_idle;struct cpumask *dst_grpmask;int new_dst_cpu;
@@ -10049,10 +10050,16 @@ static bool update_sd_pick_busiest(struct lb_env *env,* We can use max_capacity here as reduction in capacity on some * CPUs in the group should either be possible to resolve * internally or be covered by avg_load imbalance (eventually). +* +* When SMT is active, only pull a misfit to dst_cpu if it is on a +* fully idle core; otherwise the effective capacity of the core is +* reduced and we may not actually provide more capacity than the +* source. */ if ((env->sd->flags &SD_ASYM_CPUCAPACITY ) && (sgs->group_type == group_misfit_task) && - (!capacity_greater (capacity_of (env->dst_cpu), sg->sgc->max_capacity) || + (!env->dst_core_idle || + !capacity_greater (capacity_of (env->dst_cpu), sg->sgc->max_capacity) || sds->local_stat.group_type != group_has_spare))return false;
@@ -10626,6 +10633,8 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sdunsigned long sum_util =0 ;int sg_status =0 ; + env->dst_core_idle = !sched_smt_active () ||is_core_idle (env->dst_cpu); + do { struct sg_lb_stats *sgs = &tmp_sgs; int local_group;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 66/1193 9p: invalidate readdir buffer on seek
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre Barre <[email protected]>
[ Upstream commit e661e17ddbed524b5fbda789a091b48b6b677067 ]
The per-fid readdir buffer (fid->rdir) is populated lazily and only refilled when fully drained (rdir->head == rdir->tail). userspace lseek() on a directory fd updates file->f_pos via generic_file_llseek() but does not touch the cached buffer, so the next getdents() iterates the stale cache and emits entries from the previous position instead of the one the caller asked for.
Track the file position the cached data corresponds to in struct p9_rdir, and drop the cache on entry to iterate_shared when it no longer matches ctx->pos. The 9p protocol's Tread/Treaddir already take an arbitrary offset on every request, so a refill at the new position is always legal; no .llseek override or seek restriction is needed.
Message-ID: <[email protected]>
--- fs/9p/vfs_dir.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
fs/9p/vfs_dir.c +12 -0
@@ -27,6 +27,7 @@* struct p9_rdir - readdir accounting * @head: start offset of current dirread buffer * @tail: end offset of current dirread buffer +* @offset: file position the data at @head corresponds to * @buf: dirread buffer * * private structure for keeping track of readdir
@@ -36,6 +37,7 @@struct p9_rdir {int head;int tail; +loff_t offset;uint8_t buf[]; };
@@ -102,6 +104,9 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) kvec.iov_base = rdir->buf; kvec.iov_len = buflen; +if (rdir->head < rdir->tail && rdir->offset != ctx->pos) + rdir->head = rdir->tail =0 ; +while (1 ) {if (rdir->tail == rdir->head) {struct iov_iter to;
@@ -117,6 +122,7 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) rdir->head =0 ; rdir->tail = n; + rdir->offset = ctx->pos; }while (rdir->head < rdir->tail) { err = p9stat_read(fid->clnt, rdir->buf + rdir->head,
@@ -134,6 +140,7 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) rdir->head += err; ctx->pos += err; + rdir->offset = ctx->pos; } } }
@@ -161,6 +168,9 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx)if (!rdir)return -ENOMEM ; +if (rdir->head < rdir->tail && rdir->offset != ctx->pos) + rdir->head = rdir->tail =0 ; +while (1 ) {if (rdir->tail == rdir->head) { err = p9_client_readdir(fid, rdir->buf, buflen,
@@ -170,6 +180,7 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx) rdir->head =0 ; rdir->tail = err; + rdir->offset = ctx->pos; }while (rdir->head < rdir->tail) {
@@ -190,6 +201,7 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx) ctx->pos = curdirent.d_off; rdir->head += err; + rdir->offset = ctx->pos; } } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 67/1193 arm64/daifflags: Make local_daif_*() helpers __always_inline
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leonardo Bras <[email protected]>
[ Upstream commit 827ce94e0897a70241abf810b1d3d7d083053a39 ]
Make sure those helpers are always inlined and instrumentation safe.
--- arch/arm64/include/asm/daifflags.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
arch/arm64/include/asm/daifflags.h +5 -5
@@ -19,7 +19,7 @@/* mask/save/unmask/restore all exceptions, including interrupts. */ -static inline void local_daif_mask (void ) +static __always_inline void local_daif_mask(void) { WARN_ON(system_has_prio_mask_debugging() && (read_sysreg_s(SYS_ICC_PMR_EL1) == (GIC_PRIO_IRQOFF |
@@ -38,7 +38,7 @@ static inline void local_daif_mask(void)trace_hardirqs_off (); } -static inline unsigned long local_daif_save_flags (void ) +static __always_inline unsigned long local_daif_save_flags (void ) {unsigned long flags;
@@ -53,7 +53,7 @@ static inline unsigned long local_daif_save_flags(void)return flags; } -static inline unsigned long local_daif_save (void ) +static __always_inline unsigned long local_daif_save (void ) {unsigned long flags;
@@ -64,7 +64,7 @@ static inline unsigned long local_daif_save(void)return flags; } -static inline void local_daif_restore (unsigned long flags) +static __always_inline void local_daif_restore(unsigned long flags) {bool irq_disabled = flags &PSR_I_BIT ;
@@ -124,7 +124,7 @@ static inline void local_daif_restore(unsigned long flags)* Called by synchronous exception handlers to restore the DAIF bits that were * modified by taking an exception. */ -static inline void local_daif_inherit (struct pt_regs *regs) +static __always_inline void local_daif_inherit(struct pt_regs *regs) {unsigned long flags = regs->pstate &DAIF_MASK ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 68/1193 9p: use kvzalloc for readdir buffer
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre Barre <[email protected]>
[ Upstream commit b4d71bea144550ff4a0917f8c4b06d4063eb27a6 ]
The readdir buffer is sized to msize, so kzalloc() can fail under fragmentation with a page allocation failure in v9fs_alloc_rdir_buf() / v9fs_dir_readdir_dotl().
The buffer is only a response sink and is never pack_sg_list()'d, so kvzalloc() is safe for all transports, unlike the fcall buffers fixed in e21d451a82f3 ("9p: Use kvmalloc for message buffers on supported transports").
Message-ID: <[email protected]>
--- fs/9p/vfs_dir.c | 2 +- net/9p/client.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
fs/9p/vfs_dir.c +1 -1
@@ -72,7 +72,7 @@ static struct p9_rdir *v9fs_alloc_rdir_buf(struct file *filp, int buflen)struct p9_fid *fid = filp->private_data;if (!fid->rdir) - fid->rdir =kzalloc (sizeof (struct p9_rdir ) + buflen,GFP_KERNEL ); + fid->rdir =kvzalloc (sizeof (struct p9_rdir ) + buflen,GFP_KERNEL );return fid->rdir; }
net/9p/client.c +1 -1
@@ -889,7 +889,7 @@ static void p9_fid_destroy(struct p9_fid *fid)spin_lock_irqsave (&clnt->lock, flags);idr_remove (&clnt->fids, fid->fid);spin_unlock_irqrestore (&clnt->lock, flags); -kfree (fid->rdir); +kvfree (fid->rdir);kfree (fid); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 69/1193 bridge: Add missing READ_ONCE() annotations around FDB destination port
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ido Schimmel <[email protected]>
[ Upstream commit bcdfd9fb109e0c9d76c345b2346b6b75ed1f476d ]
When roaming, the FDB destination port can change without holding the bridge's hash lock. Therefore, add missing READ_ONCE() annotations in both RCU readers and readers that hold the lock. In the latter case, the annotation is not needed in places where the FDB entry was already validated to be a local entry since such entries cannot roam.
--- net/bridge/br_device.c | 2 +- net/bridge/br_fdb.c | 7 ++++--- net/bridge/br_input.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-)
net/bridge/br_device.c +1 -1
@@ -105,7 +105,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)else br_flood (br, skb,BR_PKT_MULTICAST , false, true, vid); }else if ((dst =br_fdb_find_rcu (br, dest, vid)) !=NULL ) { -br_forward (dst->dst, skb, false, true); +br_forward (READ_ONCE (dst->dst), skb, false, true); }else {br_flood (br, skb,BR_PKT_UNICAST , false, true, vid); }
net/bridge/br_fdb.c +4 -3
@@ -456,7 +456,8 @@ void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)spin_lock_bh (&br->hash_lock); vg =nbp_vlan_group (p);hlist_for_each_entry (f, &br->fdb_list, fdb_node) { -if (f->dst == p &&test_bit (BR_FDB_LOCAL , &f->flags) && +if (READ_ONCE (f->dst) == p && +test_bit (BR_FDB_LOCAL , &f->flags) && !test_bit (BR_FDB_ADDED_BY_USER , &f->flags)) {/* delete old one */ fdb_delete_local (br, p, f);
@@ -740,7 +741,7 @@ void br_fdb_delete_by_port(struct net_bridge *br,spin_lock_bh (&br->hash_lock);hlist_for_each_entry_safe (f, tmp, &br->fdb_list, fdb_node) { -if (f->dst != p) +if (READ_ONCE (f->dst) != p)continue ;if (!do_all)
@@ -1513,7 +1514,7 @@ void br_fdb_clear_offload(const struct net_device *dev, u16 vid)spin_lock_bh (&p->br->hash_lock);hlist_for_each_entry (f, &p->br->fdb_list, fdb_node) { -if (f->dst == p && f->key.vlan_id == vid) +if (READ_ONCE (f->dst) == p && f->key.vlan_id == vid)clear_bit (BR_FDB_OFFLOADED , &f->flags); }spin_unlock_bh (&p->br->hash_lock);
net/bridge/br_input.c +1 -1
@@ -209,7 +209,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skbif (now !=READ_ONCE (dst->used))WRITE_ONCE (dst->used, now); -br_forward (dst->dst, skb, local_rcv, false); +br_forward (READ_ONCE (dst->dst), skb, local_rcv, false); }else {if (!mcast_hit)br_flood (br, skb, pkt_type, local_rcv, false, vid);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 70/1193 thunderbolt: Dont access path config space on Lane 1 adapters in tb_switch_reset_host()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pooja Katiyar <[email protected]>
[ Upstream commit 95c4379e37a0abea72dfd389cfe2c54452523690 ]
USB4 Lane 1 adapters do not have accessible path config space. Skip the path config space cleanup in tb_switch_reset_host() for these ports. The check is for USB4 switches only. Thunderbolt 1-3 Lane 1 adapters stay as is because we do need to program their path config space.
--- drivers/thunderbolt/switch.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/thunderbolt/switch.c +6 -0
@@ -1576,6 +1576,12 @@ static int tb_switch_reset_host(struct tb_switch *sw) ret =tb_port_reset (port);if (ret)return ret; +/* +* USB4 Lane 1 adapters do not have accessible +* path config space. +*/ +if (tb_switch_is_usb4 (sw) && !port->usb4) +continue ; }else if (tb_port_is_usb3_down (port) ||tb_port_is_usb3_up (port)) {tb_usb3_port_enable (port, false);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 71/1193 thunderbolt: Improve multi-display DisplayPort tunnel allocation
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Borzeszkowski <[email protected]>
[ Upstream commit afe9021d63b46233f5c87d52b820fa26e7f562cd ]
When 3 monitors are connected through Thunderbolt dock to the system at once, one of the monitors might fail to establish DisplayPort tunnel. This happens during DP bandwidth negotiation - each monitor takes maximum bandwidth that is supported and there might not be enough for 3rd display. In this case Thunderbolt driver drops DP tunnel and 'forgets' about it but with DP bandwidth allocation mode, that comes in later, some bandwidth might be freed.
Make Thunderbolt driver check again if DP tunnel can be established after DP bandwidth consumption changed.
--- drivers/thunderbolt/tb.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/thunderbolt/tb.c +3 -0
@@ -2543,6 +2543,9 @@ static void tb_handle_dp_bandwidth_request(struct work_struct *work)/* Update other clients about the allocation change */ tb_recalc_estimated_bandwidth (tb); + +tb_dbg (tb,"checking if more DP tunnels can be established now\n" ); +tb_tunnel_dp (tb); } put_sw:
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 72/1193 firmware: arm_scmi: Validate SENSOR_UPDATE payload size
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sudeep Holla <[email protected]>
[ Upstream commit 32bc5496b48174dbca1f187f710955ee4d9527a1 ]
SENSOR_UPDATE carries one or more sensor readings after the fixed notification header. The parser derives the expected reading count from the sensor description, but it did not verify that the received payload contains those entries before parsing them.
Reject truncated update notifications before reading the variable array.
--- drivers/firmware/arm_scmi/sensors.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/firmware/arm_scmi/sensors.c +9 -1
@@ -1037,12 +1037,15 @@ scmi_sensor_fill_custom_report(const struct scmi_protocol_handle *ph,case SCMI_EVENT_SENSOR_UPDATE : {int i; +size_t expected_sz;struct scmi_sensor_info *s;const struct scmi_sensor_update_notify_payld *p = payld;struct scmi_sensor_update_report *r = report;struct sensors_info *sinfo = ph->get_priv (ph); -/* payld_sz is variable for this event */ +if (payld_sz <sizeof (*p)) +break ; + r->sensor_id =le32_to_cpu (p->sensor_id);if (r->sensor_id >= sinfo->num_sensors)break ;
@@ -1056,6 +1059,11 @@ scmi_sensor_fill_custom_report(const struct scmi_protocol_handle *ph,* readings defined for this sensor or 1 for scalar sensors. */ r->readings_count = s->num_axis ?:1 ; + expected_sz =sizeof (*p) + r->readings_count * +sizeof (p->readings[0 ]); +if (payld_sz < expected_sz) +break ; +for (i =0 ; i < r->readings_count; i++)scmi_parse_sensor_readings (&r->readings[i], &p->readings[i]);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 73/1193 firmware: arm_scmi: Validate BASE_ERROR_EVENT payload size
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sudeep Holla <[email protected]>
[ Upstream commit 56e7e64cdd0e7209a58c8ec66028d63387402919 ]
BASE_ERROR_EVENT carries a variable number of message reports, with the count encoded in error_status. The notification parser used that count without checking whether the received payload contained all reported entries.
Reject truncated payloads before copying the report array.
--- drivers/firmware/arm_scmi/base.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
drivers/firmware/arm_scmi/base.c +13 -2
@@ -324,6 +324,8 @@ static void *scmi_base_fill_custom_report(const struct scmi_protocol_handle *ph, void *report, u32 *src_id) { int i; +u32 error_status; +size_t expected_sz;const struct scmi_base_error_notify_payld *p = payld;struct scmi_base_error_report *r = report;
@@ -337,10 +339,19 @@ static void *scmi_base_fill_custom_report(const struct scmi_protocol_handle *ph,if (evt_id !=SCMI_EVENT_BASE_ERROR_EVENT ||sizeof (*p) < payld_sz)return NULL ; + expected_sz = offsetof(typeof(*p), msg_reports); +if (payld_sz < expected_sz) +return NULL ; + r->timestamp = timestamp; r->agent_id =le32_to_cpu (p->agent_id); - r->fatal =IS_FATAL_ERROR (le32_to_cpu (p->error_status)); - r->cmd_count =ERROR_CMD_COUNT (le32_to_cpu (p->error_status)); + error_status =le32_to_cpu (p->error_status); + r->fatal =IS_FATAL_ERROR (error_status); + r->cmd_count =ERROR_CMD_COUNT (error_status); + expected_sz += r->cmd_count *sizeof (p->msg_reports[0 ]); +if (payld_sz < expected_sz) +return NULL ; +for (i =0 ; i < r->cmd_count; i++) r->reports[i] =le64_to_cpu (p->msg_reports[i]); *src_id =0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 74/1193 thunderbolt: Increase timeout for Configuration Ready bit
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gil Fine <[email protected]>
[ Upstream commit ba2cc385110129d03cd0f18a1b5969a430b67a18 ]
After setting the Configuration Valid bit (ROUTER_CS_5.CV), the USB4 Connection Manager guide specifies a 500 ms timeout for the router to set the Configuration Ready bit (ROUTER_CS_6.CR). The current timeout is shorter than specified. While there, fix the kernel-doc typo.
Increase the timeout to match the CM guide recommendation.
--- drivers/thunderbolt/usb4.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/thunderbolt/usb4.c +2 -2
@@ -303,7 +303,7 @@ int usb4_switch_setup(struct tb_switch *sw)* Sets configuration valid bit for the router. Must be called before * any tunnels can be set through the router and after * usb4_switch_setup() has been called. Can be called to host and device -* routers (does nothing for the latter). +* routers (does nothing for the former). * * Returns %0 in success and negative errno otherwise. */
@@ -326,7 +326,7 @@ int usb4_switch_configuration_valid(struct tb_switch *sw)return ret;return tb_switch_wait_for_bit (sw,ROUTER_CS_6 ,ROUTER_CS_6_CR , -ROUTER_CS_6_CR ,50 ); +ROUTER_CS_6_CR ,500 ); }/**
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 75/1193 thunderbolt: Verify Router Ready bit is set after router enumeration
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gil Fine <[email protected]>
[ Upstream commit 062023c4364ffdc72978ed2de1d1435e5d4eee43 ]
The USB4 Connection Manager guide specifies that after enumerating a router, the Connection Manager shall verify that the Router Ready bit (ROUTER_CS_6.RR) has been set to ensure hardware configuration has completed. Currently, this step is missing from the enumeration sequence.
Add this check to follow the Connection Manager guide more closely.
--- drivers/thunderbolt/tb_regs.h | 1 + drivers/thunderbolt/usb4.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-)
drivers/thunderbolt/tb_regs.h +1 -0
@@ -216,6 +216,7 @@ struct tb_regs_switch_header {#define ROUTER_CS_6_WOPS BIT(2)#define ROUTER_CS_6_WOUS BIT(3)#define ROUTER_CS_6_HCI BIT(18) +#define ROUTER_CS_6_RR BIT(24)#define ROUTER_CS_6_CR BIT(25)#define ROUTER_CS_7 0x07#define ROUTER_CS_9 0x09
drivers/thunderbolt/usb4.c +6 -1
@@ -293,7 +293,12 @@ int usb4_switch_setup(struct tb_switch *sw)/* TBT3 supported by the CM */ val &= ~ROUTER_CS_5_CNS ; -return tb_sw_write (sw, &val,TB_CFG_SWITCH ,ROUTER_CS_5 ,1 ); + ret =tb_sw_write (sw, &val,TB_CFG_SWITCH ,ROUTER_CS_5 ,1 ); +if (ret) +return ret; + +return tb_switch_wait_for_bit (sw,ROUTER_CS_6 ,ROUTER_CS_6_RR , +ROUTER_CS_6_RR ,500 ); }/**
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 76/1193 bitfield: wire __bf_shf to __builtin_ctzll
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yury Norov <[email protected]>
[ Upstream commit 09472f591aa0b72c2dd6c693f48b2d6fea66c7ba ]
__bf_shf() is currently based on built-in ffsll. It's more straightforward to wire it to __builtin_ctzll, which makes it a pure rename.
Worth to notice that __builtin_ffsll() is buggy on GCC before 14.1:
int main() {
sizeof(struct {
int t : !(__builtin_ffsll(~0ULL) + 1 < 0);
});
} test.c: In function 'main':
test.c:3:21: error: bit-field 't' width not an integer constant
3 | int t : !(__builtin_ffsll(~0ULL) + 1 < 0);
| ^--- include/linux/bitfield.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/bitfield.h +1 -1
@@ -42,7 +42,7 @@* reg |= FIELD_PREP(REG_FIELD_C, c); */ -#define __bf_shf (x) (__builtin_ffsll(x) - 1) +#define __bf_shf __builtin_ctzll#define __scalar_type_to_unsigned_cases (type) \ unsigned type: (unsigned type)0, \
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 77/1193 nvme-core: align fabrics_q teardown with admin_q in nvme_free_ctrl
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maurizio Lombardi <[email protected]>
[ Upstream commit f702badaf7d31dc3dea6c66da92b5f35fadd89dc ]
Currently, the final reference for the fabrics admin queue (fabrics_q) is dropped inside nvme_remove_admin_tag_set(). However, the primary admin queue (admin_q) defers dropping its final reference until nvme_free_ctrl().
Move the blk_put_queue() call for fabrics_q from nvme_remove_admin_tag_set() to nvme_free_ctrl(). This aligns the lifecycle management of both admin queues, ensuring they are freed symmetrically when the controller is finally torn down.
--- drivers/nvme/host/core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/nvme/host/core.c +3 -3
@@ -4325,10 +4325,8 @@ EXPORT_SYMBOL_GPL(nvme_alloc_admin_tag_set);void nvme_remove_admin_tag_set (struct nvme_ctrl *ctrl) {blk_mq_destroy_queue (ctrl->admin_q); -if (ctrl->ops->flags &NVME_F_FABRICS ) { +if (ctrl->fabrics_q)blk_mq_destroy_queue (ctrl->fabrics_q); -blk_put_queue (ctrl->fabrics_q); - }blk_mq_free_tag_set (ctrl->admin_tagset); }EXPORT_SYMBOL_GPL (nvme_remove_admin_tag_set);
@@ -4471,6 +4469,8 @@ static void nvme_free_ctrl(struct device *dev)if (ctrl->admin_q)blk_put_queue (ctrl->admin_q); +if (ctrl->fabrics_q) +blk_put_queue (ctrl->fabrics_q);if (!subsys || ctrl->instance != subsys->instance)ida_free (&nvme_instance_ida, ctrl->instance);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 78/1193 net: usb: qmi_wwan: add MeiG SRM813Q
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Volckaert <[email protected]>
[ Upstream commit 9758c11fc6c138a79a28a5659feeaa3abde7aa6a ]
Add support for the Qualcomm Technology Snapdragon X35-based MeiG SRM813Q module.
The module can be put in different modes via AT commands to enable/disable GPS functionality:
MODEM - PPP mode(2dee:4d63): AT+SER=1,1
If#= 0: RMNET
If#= 1: DIAG/ADB
If#= 2: MODEM
If#= 3: AT
P: Vendor=2dee ProdID=4d63 Rev=05.15 S: Manufacturer=MEIG S: Product=LTE-A Module S: SerialNumber=1bd51f0e C: #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
NMEA mode(2dee:4d64): AT+SER=51,1
If#= 0: RMNET
If#= 1: DIAG/ADB
If#= 2: NMEA
If#= 3: AT
P: Vendor=2dee ProdID=4d64 Rev=05.15 S: Manufacturer=MEIG S: Product=LTE-A Module S: SerialNumber=1bd51f0e C: #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
--- drivers/net/usb/qmi_wwan.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/usb/qmi_wwan.c +2 -0
@@ -1457,6 +1457,8 @@ static const struct usb_device_id products[] = { {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */ {QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */ {QMI_FIXED_INTF(0x2dee, 0x4d22, 5)}, /* MeiG Smart SRM825L */ + {QMI_QUIRK_SET_DTR(0x2dee, 0x4d63, 0)}, /* MeiG SRM813Q w/ Modem(PPP) */ + {QMI_QUIRK_SET_DTR(0x2dee, 0x4d64, 0)}, /* MeiG SRM813Q w/ NMEA *//* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 79/1193 net: bridge: remove stale rcu_barrier() in br_multicast_dev_del()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit 25ae123db10ba9ab890b56bcdb0a4363aee8529a ]
This rcu_barrier() came from a time call_rcu() calls were used in net/bridge/br_multicast.c.
Now kfree_rcu() is there, we can remove this problematic rcu_barrier() which causes extreme RTNL pressure in many syzbot reports.
INFO: task syz-executor:77945 is blocked on a mutex likely owned by task kworker/u1024:5:36537. task:kworker/u1024:5 state:D stack:24616 pid:36537 tgid:36537 ppid:2 task_flags:0x4208060 flags:0x00080000 last_sleep:612797637337 Workqueue: netns cleanup_net Call Trace: <TASK> [<ffffffff81914eaa>] context_switch+0xf2a/0x1730 kernel/sched/core.c:6483 [<ffffffff81201143>] __schedule+0x1133/0x43a0 kernel/sched/core.c:8411 [<ffffffff8120446b>] __schedule_loop kernel/sched/core.c:8514 [inline] [<ffffffff8120446b>] schedule+0xab/0x260 kernel/sched/core.c:8529 [<ffffffff8121a093>] schedule_timeout+0xc3/0x2b0 kernel/time/sleep_timeout.c:75 [<ffffffff81205347>] do_wait_for_common kernel/sched/completion.c:100 [inline] [<ffffffff81205347>] __wait_for_common kernel/sched/completion.c:121 [inline] [<ffffffff81205347>] wait_for_common kernel/sched/completion.c:132 [inline] [<ffffffff81205347>] wait_for_completion+0x2c7/0x5d0 kernel/sched/completion.c:153 [<ffffffff81b8f27f>] rcu_barrier+0x49f/0x620 kernel/rcu/tree.c:3888 [<ffffffff860091b3>] br_multicast_dev_del+0x303/0x350 net/bridge/br_multicast.c:4459 [<ffffffff85fb5dbc>] br_dev_uninit+0x1c/0x40 net/bridge/br_device.c:157 [<ffffffff8568058c>] unregister_netdevice_many_notify+0x1c1c/0x2300 net/core/dev.c:12599 [<ffffffff8562be43>] ops_exit_rtnl_list net/core/net_namespace.c:187 [inline] [<ffffffff8562be43>] ops_undo_list+0x3d3/0x940 net/core/net_namespace.c:248
--- net/bridge/br_multicast.c | 2 -- 1 file changed, 2 deletions(-)
net/bridge/br_multicast.c +0 -2
@@ -4457,8 +4457,6 @@ void br_multicast_dev_del(struct net_bridge *br)br_multicast_ctx_deinit (&br->multicast_ctx);br_multicast_gc (&deleted_head);cancel_work_sync (&br->mcast_gc_work); - -rcu_barrier (); }int br_multicast_set_router (struct net_bridge_mcast *brmctx,unsigned long val)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 80/1193 net/sched: sch_drr: make cl->quantum lockless
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit a4d880b85089e12a5f2e8e2fee386310cec5b99a ]
cl->quantum does not need to be protected by RTNL or qdisc spinlock.
--- net/sched/sch_drr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
net/sched/sch_drr.c +4 -6
@@ -97,10 +97,8 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid, } } -sch_tree_lock (sch);if (tb[TCA_DRR_QUANTUM ]) - cl->quantum = quantum; -sch_tree_unlock (sch); +WRITE_ONCE (cl->quantum, quantum);return 0 ; }
@@ -251,7 +249,7 @@ static int drr_dump_class(struct Qdisc *sch, unsigned long arg, nest =nla_nest_start_noflag (skb,TCA_OPTIONS );if (nest ==NULL ) goto nla_put_failure; -if (nla_put_u32 (skb,TCA_DRR_QUANTUM , cl->quantum)) +if (nla_put_u32 (skb,TCA_DRR_QUANTUM ,READ_ONCE (cl->quantum))) goto nla_put_failure;return nla_nest_end (skb, nest);
@@ -362,7 +360,7 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch,if (!cl_is_active (cl)) {list_add_tail (&cl->alist, &q->active); -WRITE_ONCE (cl->deficit, cl->quantum); +WRITE_ONCE (cl->deficit,READ_ONCE (cl->quantum)); } sch->qstats.backlog += len;
@@ -403,7 +401,7 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch)return skb; } -WRITE_ONCE (cl->deficit, cl->deficit + cl->quantum); +WRITE_ONCE (cl->deficit, cl->deficit +READ_ONCE (cl->quantum));list_move_tail (&cl->alist, &q->active); } out:
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 81/1193 net/rds: Dont sleep inside rds_ib_conn_path_shutdown
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Allison Henderson <[email protected]>
[ Upstream commit 16f48efaeb6991193fb7775c577f06f5b20b0c90 ]
New rds rdma self tests exposed a hang when tearing down the ib network configs. This is caused by the shutdown worker thread sleeping on the wait_event call, which blocks other work items in the queue. Fix this by changing wait_event to wait_event timeout, and looping until the wait check succeeds.
--- net/rds/ib_cm.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-)
net/rds/ib_cm.c +20 -5
@@ -1043,6 +1043,19 @@ int rds_ib_conn_path_connect(struct rds_conn_path *cp)return ret; } +static unsigned long rds_ib_conn_path_shutdown_check_wait (struct rds_conn_path *cp) +{ +struct rds_connection *conn = cp->cp_conn; +struct rds_ib_connection *ic = conn->c_transport_data; + +return (!ic->i_cm_id || + (rds_ib_ring_empty (&ic->i_recv_ring) && + (atomic_read (&ic->i_signaled_sends) ==0 ) && + (atomic_read (&ic->i_fastreg_inuse_count)) ==0 && + (atomic_read (&ic->i_fastreg_wrs) ==RDS_IB_DEFAULT_FR_WR ))) ?0 + :msecs_to_jiffies (1000 ); +} +/* * This is so careful about only cleaning up resources that were built up * so that it can be called at any point during startup. In fact it
@@ -1083,11 +1096,13 @@ void rds_ib_conn_path_shutdown(struct rds_conn_path *cp)* sends to complete we're ensured that there will be no * more tx processing. */ -wait_event (rds_ib_ring_empty_wait, -rds_ib_ring_empty (&ic->i_recv_ring) && - (atomic_read (&ic->i_signaled_sends) ==0 ) && - (atomic_read (&ic->i_fastreg_inuse_count) ==0 ) && - (atomic_read (&ic->i_fastreg_wrs) ==RDS_IB_DEFAULT_FR_WR )); +while (!wait_event_timeout (rds_ib_ring_empty_wait, +rds_ib_conn_path_shutdown_check_wait (cp) ==0 , +msecs_to_jiffies (1000 ))) { +tasklet_schedule (&ic->i_send_tasklet); +tasklet_schedule (&ic->i_recv_tasklet); + } +tasklet_kill (&ic->i_send_tasklet);tasklet_kill (&ic->i_recv_tasklet);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 82/1193 befs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 7597d42a25332617a3dfe596758d780ec6c028d7 ]
befs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/befs/linuxvfs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/befs/linuxvfs.c +2 -1
@@ -890,7 +890,8 @@ befs_fill_super(struct super_block *sb, void *data, int silent)*/ sb->s_magic =BEFS_SUPER_MAGIC ;/* Set real blocksize of fs */ -sb_set_blocksize (sb, (ulong ) befs_sb->block_size); +if (!sb_set_blocksize (sb, (ulong ) befs_sb->block_size)) + goto unacquire_priv_sbp; sb->s_op = &befs_sops; sb->s_export_op = &befs_export_operations; sb->s_time_min =0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 83/1193 ntfs3: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 24f7d1824b7581ae3daf9d443c5dfeabd89df6d8 ]
ntfs3 uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/ntfs3/super.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
fs/ntfs3/super.c +6 -2
@@ -1095,7 +1095,10 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size, rec->total =cpu_to_le32 (sbi->record_size); ((struct ATTRIB *)Add2Ptr (rec, ao))->type =ATTR_END ; -sb_set_blocksize (sb,min_t (u32, sbi->cluster_size,PAGE_SIZE )); +if (!sb_set_blocksize (sb,min_t (u32, sbi->cluster_size,PAGE_SIZE ))) { + err = -EINVAL ; + goto out; + } sbi->block_mask = sb->s_blocksize -1 ; sbi->blocks_per_cluster = sbi->cluster_size >> sb->s_blocksize_bits;
@@ -1146,7 +1149,8 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size,/* * Try alternative boot (last sector) */ -sb_set_blocksize (sb, block_size); +if (!sb_set_blocksize (sb, block_size)) +return -EINVAL ; hint ="Alternative boot" ; dev_size = dev_size0;/* restore original size. */ goto read_boot;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 84/1193 affs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 0861182af5983a39bd2a891966436c5679b74a45 ]
affs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/affs/affs.h | 5 ----- fs/affs/super.c | 6 ++++-- 2 files changed, 4 insertions(+), 7 deletions(-)
fs/affs/affs.h +0 -5
@@ -226,11 +226,6 @@ static inline bool affs_validblock(struct super_block *sb, int block) block < AFFS_SB(sb)->s_partition_size); } -static inline void -affs_set_blocksize (struct super_block *sb,int size) -{ -sb_set_blocksize (sb, size); -}static inline struct buffer_head *affs_bread (struct super_block *sb,int block) {
fs/affs/super.c +4 -2
@@ -392,7 +392,8 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) size =bdev_nr_sectors (sb->s_bdev);pr_debug ("initial blocksize=%d, #blocks=%d\n" ,512 , size); -affs_set_blocksize (sb,PAGE_SIZE ); +if (!sb_set_blocksize (sb,PAGE_SIZE )) +return -EINVAL ;/* Try to find root block. Its location depends on the block size. */ i =bdev_logical_block_size (sb->s_bdev);
@@ -407,7 +408,8 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)if (root_block <0 ) sbi->s_root_block = (reserved + size -1 ) /2 ;pr_debug ("setting blocksize to %d\n" , blocksize); -affs_set_blocksize (sb, blocksize); +if (!sb_set_blocksize (sb, blocksize)) +return -EINVAL ; sbi->s_partition_size = size;/* The root block location that was calculated above is not
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 85/1193 bfs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 2430e3380936df0b648af720cae624eef035a2d1 ]
bfs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/bfs/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/bfs/inode.c +2 -1
@@ -342,7 +342,8 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) s->s_time_min =0 ; s->s_time_max =U32_MAX ; -sb_set_blocksize (s,BFS_BSIZE ); +if (!sb_set_blocksize (s,BFS_BSIZE )) + goto out; sbh =sb_bread (s,0 );if (!sbh)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 86/1193 minix: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 38a03dc2bc71e7e0746cdb9ef5e9947f72470c67 ]
minix uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/minix/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/minix/inode.c +2 -1
@@ -270,7 +270,8 @@ static int minix_fill_super(struct super_block *s, void *data, int silent) sbi->s_namelen =60 ; sbi->s_version =MINIX_V3 ; sbi->s_mount_state =MINIX_VALID_FS ; -sb_set_blocksize (s, m3s->s_blocksize); +if (!sb_set_blocksize (s, m3s->s_blocksize)) + goto out; s->s_max_links =MINIX2_LINK_MAX ; }else goto out_no_fs;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 87/1193 qnx4: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit c7d911ea1cc9a63b07e52f5e75b263be0615b289 ]
qnx4 uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/qnx4/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/qnx4/inode.c +2 -1
@@ -195,7 +195,8 @@ static int qnx4_fill_super(struct super_block *s, void *data, int silent)return -ENOMEM ; s->s_fs_info = qs; -sb_set_blocksize (s,QNX4_BLOCK_SIZE ); +if (!sb_set_blocksize (s,QNX4_BLOCK_SIZE )) +return -EINVAL ; s->s_op = &qnx4_sops; s->s_magic =QNX4_SUPER_MAGIC ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 88/1193 jfs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 05107f5602751fcfd3d108c1f579eb45aabead52 ]
jfs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/jfs/super.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/jfs/super.c +2 -1
@@ -524,7 +524,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)/* * Initialize blocksize to 4K. */ -sb_set_blocksize (sb,PSIZE ); +if (!sb_set_blocksize (sb,PSIZE )) + goto out_unload;/* * Set method vectors.
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 89/1193 hpfs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit a405996f23e04942aad064ab8d50c55827482872 ]
hpfs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/hpfs/super.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/hpfs/super.c +2 -1
@@ -584,7 +584,8 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent) }/*sbi->sb_mounting = 1;*/ -sb_set_blocksize (s,512 ); +if (!sb_set_blocksize (s,512 )) + goto bail0; sbi->sb_fs_size =-1 ;if (!(bootblock =hpfs_map_sector (s,0 , &bh0,0 ))) goto bail1;if (!(superblock =hpfs_map_sector (s,16 , &bh1,1 ))) goto bail2;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 90/1193 omfs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 18c3d6fcb557f920c9143711497625e70153874c ]
omfs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/omfs/inode.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
fs/omfs/inode.c +4 -2
@@ -479,7 +479,8 @@ static int omfs_fill_super(struct super_block *sb, void *data, int silent) sb->s_time_min =0 ; sb->s_time_max =U64_MAX /MSEC_PER_SEC ; -sb_set_blocksize (sb,0x200 ); +if (!sb_set_blocksize (sb,0x200 )) + goto end; bh =sb_bread (sb,0 );if (!bh)
@@ -531,7 +532,8 @@ static int omfs_fill_super(struct super_block *sb, void *data, int silent)* Use sys_blocksize as the fs block since it is smaller than a * page while the fs blocksize can be larger. */ -sb_set_blocksize (sb, sbi->s_sys_blocksize); +if (!sb_set_blocksize (sb, sbi->s_sys_blocksize)) + goto out_brelse_bh;/* * ...and the difference goes into a shift. sys_blocksize is always
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 91/1193 isofs: handle set_blocksize failures
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 25ef4c4d9f0e96fb89c0ae0d7127c3f12a31bc32 ]
isofs uses buffer_heads, which don't handle block size > PAGE_SIZE well. Without this, mounting we will hit the
BUG_ON(offset >= folio_size(folio));
in folio_set_bh on the first __bread_gfp call.
--- fs/isofs/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/isofs/inode.c +2 -1
@@ -859,7 +859,8 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)* entries. By forcing the blocksize in this way, we ensure * that we will never be required to do this. */ -sb_set_blocksize (s, orig_zonesize); +if (!sb_set_blocksize (s, orig_zonesize)) + goto out_freesbi; sbi->s_nls_iocharset =NULL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 92/1193 usbip: vhci_hcd: fix NULL deref in status_show_vhci
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Wowk <[email protected]>
[ Upstream commit bc150783542ba2e7c1257d1299c6f3269bdba270 ]
platform_get_drvdata() can return NULL if a VHCI host controller's probe failed (e.g. due to USB bus number exhaustion). status_show_vhci() checked for a NULL pdev but not for a NULL hcd returned by platform_get_drvdata(). Passing NULL to hcd_to_vhci_hcd() does not return NULL - it returns a pointer offset of 0x260, causing a NULL pointer dereference when that value is subsequently dereferenced.
Add a NULL check on hcd before calling hcd_to_vhci_hcd(). Move status_show_not_ready() above status_show_vhci() to make it callable from the new error path without a forward declaration.
--- drivers/usb/usbip/vhci_sysfs.c | 52 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 23 deletions(-)
drivers/usb/usbip/vhci_sysfs.c +29 -23
@@ -59,6 +59,29 @@ static void port_show_vhci(char **out, int hub, int port, struct vhci_device *vd *out +=sprintf (*out,"\n" ); } +static ssize_t status_show_not_ready (int pdev_nr,char *out) +{ +char *s = out; +int i =0 ; + +for (i =0 ; i <VHCI_HC_PORTS ; i++) { + out +=sprintf (out,"hs %04u %03u " , + (pdev_nr *VHCI_PORTS ) + i, +VDEV_ST_NOTASSIGNED ); + out +=sprintf (out,"000 00000000 0000000000000000 0-0" ); + out +=sprintf (out,"\n" ); + } + +for (i =0 ; i <VHCI_HC_PORTS ; i++) { + out +=sprintf (out,"ss %04u %03u " , + (pdev_nr *VHCI_PORTS ) +VHCI_HC_PORTS + i, +VDEV_ST_NOTASSIGNED ); + out +=sprintf (out,"000 00000000 0000000000000000 0-0" ); + out +=sprintf (out,"\n" ); + } +return out - s; +} +/* Sysfs entry to show port status */ static ssize_t status_show_vhci (int pdev_nr,char *out) {
@@ -76,6 +99,12 @@ static ssize_t status_show_vhci(int pdev_nr, char *out) } hcd =platform_get_drvdata (pdev); + +if (!hcd) { +usbip_dbg_vhci_sysfs ("show status error (hcd is NULL)\n" ); +return status_show_not_ready (pdev_nr, out); + } + vhci_hcd =hcd_to_vhci_hcd (hcd); vhci = vhci_hcd->vhci;
@@ -104,29 +133,6 @@ static ssize_t status_show_vhci(int pdev_nr, char *out)return out - s; } -static ssize_t status_show_not_ready (int pdev_nr,char *out) -{ -char *s = out; -int i =0 ; - -for (i =0 ; i <VHCI_HC_PORTS ; i++) { - out +=sprintf (out,"hs %04u %03u " , - (pdev_nr *VHCI_PORTS ) + i, -VDEV_ST_NOTASSIGNED ); - out +=sprintf (out,"000 00000000 0000000000000000 0-0" ); - out +=sprintf (out,"\n" ); - } - -for (i =0 ; i <VHCI_HC_PORTS ; i++) { - out +=sprintf (out,"ss %04u %03u " , - (pdev_nr *VHCI_PORTS ) +VHCI_HC_PORTS + i, -VDEV_ST_NOTASSIGNED ); - out +=sprintf (out,"000 00000000 0000000000000000 0-0" ); - out +=sprintf (out,"\n" ); - } -return out - s; -} -static int status_name_to_id (const char *name) {char *c;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 93/1193 usb: core: hcd: fix possible deadlock in rh control transfers
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Oliver Neukum <[email protected]>
[ Upstream commit d5559f43d76b398392b26a15cbc16d731969cd1c ]
Quoted 1 line
From within the SCSI error handler memory allocations must not
trigger IO. Handling errors in UAS and the storage driver may involve resetting a device. The thread doing the reset itself relies on VM magic. However, that is insufficient, as resetting a device involves resuming it. Resumption as well as resetting involves conrol transfers to the parent of the device to be reset. That may be a root hub. Hence usbcore must heed the flags passed to usb_submit_urb() processing control transfers to root hubs.
The problem exist since the storage driver has been merged.
--- drivers/usb/core/hcd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/usb/core/hcd.c +8 -6
@@ -452,7 +452,8 @@ rh_string(int id, struct usb_hcd const *hcd, u8 *data, unsigned len)/* Root hub control transfers execute synchronously */ -static int rh_call_control (struct usb_hcd *hcd,struct urb *urb) +static int rh_call_control (struct usb_hcd *hcd, +struct urb *urb,gfp_t mem_flags) {struct usb_ctrlrequest *cmd;u16 typeReq, wValue, wIndex, wLength;
@@ -487,8 +488,8 @@ static int rh_call_control (struct usb_hcd *hcd, struct urb *urb)* tbuf should be at least as big as the * USB hub descriptor. */ - tbuf_size =max_t (u16,sizeof (struct usb_hub_descriptor ), wLength); - tbuf =kzalloc (tbuf_size,GFP_KERNEL ); + tbuf_size =max_t (u16,sizeof (struct usb_hub_descriptor ), wLength); + tbuf =kzalloc (tbuf_size, mem_flags);if (!tbuf) { status = -ENOMEM ; goto err_alloc;
@@ -813,12 +814,13 @@ static int rh_queue_status (struct usb_hcd *hcd, struct urb *urb)return retval; } -static int rh_urb_enqueue (struct usb_hcd *hcd,struct urb *urb) +static int rh_urb_enqueue (struct usb_hcd *hcd, +struct urb *urb,gfp_t mem_flags) {if (usb_endpoint_xfer_int (&urb->ep->desc))return rh_queue_status (hcd, urb);if (usb_endpoint_xfer_control (&urb->ep->desc)) -return rh_call_control (hcd, urb); +return rh_call_control (hcd, urb, mem_flags);return -EINVAL ; }
@@ -1526,7 +1528,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)*/ if (is_root_hub (urb->dev)) { - status =rh_urb_enqueue (hcd, urb); + status =rh_urb_enqueue (hcd, urb, mem_flags); }else { status =map_urb_for_dma (hcd, urb, mem_flags);if (likely (status ==0 )) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 94/1193 usb: gadget: goku_udc: avoid NULL deref of dev->driver in INT_USBRESET log
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stepan Ionichev <[email protected]>
[ Upstream commit 5bf5e3fba9bc7dfd69701521dbe9809f8ccbdb02 ]
goku_irq() handles a number of bus events under a single ep0 path. It already guards the gadget driver suspend/resume callbacks against a NULL ->driver:
if (dev->gadget.speed != USB_SPEED_UNKNOWN
&& dev->driver
&& dev->driver->resume) {
spin_unlock(&dev->lock);
dev->driver->resume(&dev->gadget);
...
}but the very next branch unconditionally dereferences dev->driver when an INT_USBRESET arrives:
if (stat & INT_USBRESET) {
ACK(INT_USBRESET);
INFO(dev, "USB reset done, gadget %s\n",
dev->driver->driver.name);
}If the controller raises INT_USBRESET before any gadget driver has been bound (or after one has been unbound), dev->driver is NULL and the printk dereferences NULL.
smatch flags the inconsistency:
drivers/usb/gadget/udc/goku_udc.c:1618 goku_irq() error:
we previously assumed 'dev->driver' could be null (see line 1607)
Fall back to a placeholder when the gadget driver is not bound.
No functional change while a gadget driver is bound.
--- drivers/usb/gadget/udc/goku_udc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/usb/gadget/udc/goku_udc.c +2 -1
@@ -1616,7 +1616,8 @@ static irqreturn_t goku_irq(int irq, void *_dev)if (stat &INT_USBRESET ) {/* hub reset done */ ACK (INT_USBRESET );INFO (dev,"USB reset done, gadget %s\n" , - dev->driver->driver.name); + dev->driver ? dev->driver->driver.name : +"<not bound>" ); }// and INT_ERR on some endpoint's crc/bitstuff/... problem }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 95/1193 USB: cdc-acm: start bulk-IN polling when ALWAYS_POLL_CTRL is set
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Carey <[email protected]>
[ Upstream commit e5ab27ddd74e2d67a94c51c6f2ad87b1ff13912b ]
The INGENIC 17EF:6161 touchscreen composite device has a ~55-second watchdog that resets the USB device if the bulk-IN endpoint on the CDC data interface goes unread. The existing ALWAYS_POLL_CTRL quirk keeps the notification endpoint (ctrlurb / EP 0x82) polling continuously, but that alone is insufficient: the firmware monitors bulk-IN activity, not just notification-endpoint activity.
Add acm_submit_read_urbs() calls to the two ALWAYS_POLL_CTRL paths that already restart the ctrlurb:
1. acm_probe(): start bulk reads at probe time alongside the ctrlurb, so the watchdog is satisfied from first bind without requiring a userspace process to open /dev/ttyACMn.
2. acm_port_shutdown(): restart bulk reads after port close alongside the ctrlurb restart, so the watchdog keeps running when the last TTY user closes the port.
acm_read_bulk_callback() already resubmits each URB unconditionally on normal completion, so once submitted the reads remain active until an explicit kill (disconnect, suspend). acm_submit_read_urb() is a no-op for URBs that are already in flight (read_urbs_free bit clear), so the existing acm_port_activate() call remains correct and races are avoided.
Tested on Lenovo Yoga Book 9 14IAH10 (83KJ): without this patch the device resets every ~55 s when no TTY is open; with it the device remains stable indefinitely.
--- drivers/usb/class/cdc-acm.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/usb/class/cdc-acm.c +6 -0
@@ -797,6 +797,9 @@ static void acm_port_shutdown(struct tty_port *port) "ctrl polling restart failed after port close\n");/* port_shutdown() cleared DTR/RTS; restore them */ acm_set_control (acm,USB_CDC_CTRL_DTR |USB_CDC_CTRL_RTS ); +if (acm_submit_read_urbs (acm,GFP_KERNEL )) +dev_dbg (&acm->control->dev, +"read urb restart failed after port close\n" ); } }
@@ -1564,6 +1567,9 @@ static int acm_probe(struct usb_interface *intf,if (usb_submit_urb (acm->ctrlurb,GFP_KERNEL ))dev_warn (&intf->dev,"failed to start persistent ctrl polling\n" ); +if (acm_submit_read_urbs (acm,GFP_KERNEL )) +dev_warn (&intf->dev, +"failed to start persistent bulk read polling\n" ); }return 0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 96/1193 usb: gadget: aspeed_udc: avoid past-the-end iterator in dequeue
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maoyi Xie <[email protected]>
[ Upstream commit e2ffaac1884b921b8ec2b3a964c6a8b5d610bf4b ]
ast_udc_ep_dequeue() declares the loop cursor req outside the list_for_each_entry(). After the loop it tests &req->req != _req to decide whether the request was found. If the queue holds no match, req is past-the-end. It then aliases container_of(&ep->queue, struct ast_udc_request, queue) via offset cancellation. Whether that synthetic address equals _req depends on heap layout. The function can return 0 without dequeueing anything.
Default rc to -EINVAL and set it to 0 only inside the match branch. req is no longer read after the loop, so the past-the-end dereference goes away. No extra cursor variable or post-loop test is needed.
--- drivers/usb/gadget/udc/aspeed_udc.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/usb/gadget/udc/aspeed_udc.c +2 -5
@@ -694,7 +694,7 @@ static int ast_udc_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)struct ast_udc_dev *udc = ep->udc;struct ast_udc_request *req;unsigned long flags; -int rc =0 ; +int rc = -EINVAL ;spin_lock_irqsave (&udc->lock, flags);
@@ -704,14 +704,11 @@ static int ast_udc_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)list_del_init (&req->queue);ast_udc_done (ep, req, -ESHUTDOWN ); _req->status = -ECONNRESET ; + rc =0 ;break ; } } -/* dequeue request not found */ -if (&req->req != _req) - rc = -EINVAL ; -spin_unlock_irqrestore (&udc->lock, flags);return rc;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 97/1193 serial: 8250: fix possible ISR soft lockup
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Felsch <[email protected]>
[ Upstream commit 0c6bf45e5a345cc3b9ffbeaf9083ecac3c2293eb ]
There are rare cases in which the host gets stuck in the ISR because it is flooded with messages during the startup phase.
The reason for the soft lockup in the ISR is the missing FIFO error IRQ (FIFOE) handling. Not handling it and reporting IRQ_HANDLED triggers the IRQ immediately again.
Fix this by adding a check for the FIFOE status and clearing the FIFO if no data is ready (DR).
This behavior was observed on an AM62L device which uses the OMAP 8250 driver. Fix it for all 8250 drivers, since the OMAP driver's special IRQ setup handling may trigger this behavior more frequently, but it is not ensured that other 8250 drivers aren't affected.
--- drivers/tty/serial/8250/8250_port.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/tty/serial/8250/8250_port.c +7 -0
@@ -1916,6 +1916,13 @@ int serial8250_handle_irq(struct uart_port *port, unsigned int iir) status =serial_lsr_in (up); +/* +* Recover from no-data-ready and FIFO error condition to avoid getting +* stuck in the ISR. +*/ +if (!(status &UART_LSR_DR ) && (status &UART_LSR_FIFOE )) +serial8250_clear_and_reinit_fifos (up); +/* * If port is stopped and there are no error conditions in the * FIFO, then don't drain the FIFO, as this may lead to TTY buffer
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 98/1193 usb: host: add ARCH_AIROHA in XHCI MTK dependency
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christian Marangi <[email protected]>
[ Upstream commit ffeaf31f05d664581aa436d9cb92b4d1d8d301ce ]
Airoha SoC use the same register map and logic of the Mediatek xHCI driver, hence add it to the dependency list to permit compilation also on this ARCH.
--- drivers/usb/host/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/host/Kconfig +1 -1
@@ -71,7 +71,7 @@ config USB_XHCI_HISTB config USB_XHCI_MTK tristate "xHCI support for MediaTek SoCs" select MFD_SYSCON - depends on (MIPS && SOC_MT7621) || ARCH_MEDIATEK || COMPILE_TEST + depends on (MIPS && SOC_MT7621) || ARCH_MEDIATEK || ARCH_AIROHA || COMPILE_TEST help Say 'Y' to enable the support for the xHCI host controller found in MediaTek SoCs.
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 99/1193 char/nvram: Remove redundant nvram_mutex
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Venkat Rao Bagalkote <[email protected]>
[ Upstream commit e8c715f3a7dae43fabae261493a26474fec11863 ]
The global nvram_mutex in drivers/char/nvram.c is redundant and unused, and this triggers compiler warnings on some configurations.
All platform-specific nvram operations already provide their own internal synchronization, meaning the wrapper-level mutex does not provide any additional safety.
Remove the nvram_mutex definition along with all remaining lock/unlock users across PPC32, x86, and m68k code paths, and rely entirely on the per-architecture nvram implementations for locking.
--- drivers/char/nvram.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-)
drivers/char/nvram.c +3 -13
@@ -53,7 +53,6 @@#include <asm/nvram.h> #endif -static DEFINE_MUTEX (nvram_mutex);static DEFINE_SPINLOCK (nvram_state_lock);static int nvram_open_cnt;/* #times opened */ static int nvram_open_mode;/* special open modes */
@@ -310,11 +309,8 @@ static long nvram_misc_ioctl(struct file *file, unsigned int cmd,break ;#ifdef CONFIG_PPC32 case IOC_NVRAM_SYNC : -if (ppc_md.nvram_sync !=NULL ) { -mutex_lock (&nvram_mutex); +if (ppc_md.nvram_sync) ppc_md.nvram_sync (); -mutex_unlock (&nvram_mutex); - } ret =0 ;break ;#endif
@@ -324,11 +320,8 @@ static long nvram_misc_ioctl(struct file *file, unsigned int cmd,if (!capable (CAP_SYS_ADMIN ))return -EACCES ; -if (arch_nvram_ops.initialize !=NULL ) { -mutex_lock (&nvram_mutex); +if (arch_nvram_ops.initialize) ret = arch_nvram_ops.initialize (); -mutex_unlock (&nvram_mutex); - }break ;case NVRAM_SETCKS :/* just set checksum, contents unchanged (maybe useful after
@@ -336,11 +329,8 @@ static long nvram_misc_ioctl(struct file *file, unsigned int cmd,if (!capable (CAP_SYS_ADMIN ))return -EACCES ; -if (arch_nvram_ops.set_checksum !=NULL ) { -mutex_lock (&nvram_mutex); +if (arch_nvram_ops.set_checksum) ret = arch_nvram_ops.set_checksum (); -mutex_unlock (&nvram_mutex); - }break ;#endif /* CONFIG_X86 || CONFIG_M68K */ }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 100/1193 rcu-tasks: Fix possible boot-time tests failed for the call_rcu_tasks()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zqiang <[email protected]>
[ Upstream commit 42c5468f9cdc0c892fec3c0916b3ac5b670775af ]
The following scenarios will cause the call_rcu_tasks() boot-time tests failed:
CPU0 CPU1
rcu_init_tasks_generic() ->rcu_tasks_initiate_self_tests()
->call_rcu_tasks_trace(&tests[1].rh, test_rcu_tasks_callback)
->call_rcu_tasks_generic()
->havekthread = smp_load_acquire(&rtp->kthread_ptr)
"The havekthread is false"
....
rcu_tasks_kthread()
->smp_store_release(&rtp->kthread_ptr, current)
->rcu_tasks_one_gp()
->rcuwait_wait_event()
->rcu_tasks_need_gpcb()
->for (cpu = 0; cpu < dequeue_limit; cpu++)
->rcu_segcblist_n_cbs(&rtpcp->cblist) == 0
->schedule()
->raw_spin_trylock_rcu_node()
->needwake = (func == wakeme_after_rcu) ||
(rcu_segcblist_n_cbs(&rtpcp->cblist) == rcu_task_lazy_lim)
"the rcu_task_lazy_lim default value is 32, and the
func pointer is test_rcu_tasks_callback, lead to needwake
is false."
->if (havekthread && !needwake && !timer_pending(&rtpcp->lazy_timer))
"the havekthread is false, will not enter here."
....
"the needwake is false lead to rtp_irq_work can not queue,
even if the rtp->kthread_ptr already exists at this point."
->if (needwake && READ_ONCE(rtp->kthread_ptr))
->irq_work_queue(&rtpcp->rtp_irq_work)For the above scenarios, if the call_rcu_tasks() is not called again afterward, the rcu_tasks_kthread will not have a chance to be wakeup, the test_rcu_tasks_callback() will never be called, the boot-time tests failed can happen, this commit therefore check havekthread variable, if it's false and the rtpcp->cblist is empty, set needwake variable is true, if the rtp->kthread_ptr exist, the rtpcp->rtp_irq_work can be queued to wakeup rcu_tasks_kthread.
--- kernel/rcu/tasks.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
kernel/rcu/tasks.h +2 -1
@@ -372,7 +372,8 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func,// Queuing callbacks before initialization not yet supported. if (WARN_ON_ONCE (!rcu_segcblist_is_enabled (&rtpcp->cblist)))rcu_segcblist_init (&rtpcp->cblist); - needwake = (func == wakeme_after_rcu) || + needwake = (!havekthread &&rcu_segcblist_empty (&rtpcp->cblist)) || + (func == wakeme_after_rcu) || (rcu_segcblist_n_cbs (&rtpcp->cblist) == rcu_task_lazy_lim);if (havekthread && !needwake && !timer_pending (&rtpcp->lazy_timer)) {if (rtp->lazy_jiffies)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 101/1193 wifi: rtw89: pci: enable LTR based on pcie control register
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dian-Syuan Yang <[email protected]>
[ Upstream commit 779bbe1902f29d0ef131249ddd42a8dfbe21d0fb ]
Originally, driver always transmits LTR (Latency Tolerance Reporting) to pcie host, but it may cause pcie link down on some platforms because LTR is not supported. As a result, driver will check the control register of LTR setting to decide whether to enable LTR feature.
This applies to Wi-Fi 6 chips only. For Wi-Fi 7 chips, although the driver still issues LTR, the hardware has its own internal logic to determine whether to actually transmit it to pcie host.
--- drivers/net/wireless/realtek/rtw89/pci.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
drivers/net/wireless/realtek/rtw89/pci.c +15 -1
@@ -2543,6 +2543,17 @@ static int rtw89_pci_mode_op(struct rtw89_dev *rtwdev)return 0 ; } +static bool rtw89_pci_dev_ltr_enabled (struct rtw89_dev *rtwdev) +{ +struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; +struct pci_dev *pdev = rtwpci->pdev; +u16 cap; + +pcie_capability_read_word (pdev,PCI_EXP_DEVCTL2 , &cap); + +return !!(cap &PCI_EXP_DEVCTL2_LTR_EN ); +} +static int rtw89_pci_ops_deinit (struct rtw89_dev *rtwdev) {const struct rtw89_pci_info *info = rtwdev->pci_info;
@@ -2646,7 +2657,7 @@ int rtw89_pci_ltr_set(struct rtw89_dev *rtwdev, bool en) {u32 val; -if (!en) +if (!en || !rtw89_pci_dev_ltr_enabled (rtwdev))return 0 ; val =rtw89_read32 (rtwdev,R_AX_LTR_CTRL_0 );
@@ -2682,6 +2693,9 @@ int rtw89_pci_ltr_set_v1(struct rtw89_dev *rtwdev, bool en)u32 dec_ctrl;u32 val32; +if (!rtw89_pci_dev_ltr_enabled (rtwdev)) +return 0 ; + val32 =rtw89_read32 (rtwdev,R_AX_LTR_CTRL_0 );if (rtw89_pci_ltr_is_err_reg_val (val32))return -EINVAL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 102/1193 netlabel: fix IPv6 unlabeled address add error handling
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chenguang Zhao <[email protected]>
[ Upstream commit 56872b930feee7ae07b9720ca950dd9fa65596ee ]
netlbl_unlhsh_add_addr6() always returned zero after netlbl_af6list_add(), masking failures such as duplicate IPv6 static label entries.
--- net/netlabel/netlabel_unlabeled.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/netlabel/netlabel_unlabeled.c +1 -1
@@ -295,7 +295,7 @@ static int netlbl_unlhsh_add_addr6(struct netlbl_unlhsh_iface *iface,if (ret_val !=0 )kfree (entry); - return 0; + return ret_val; }#endif /* IPv6 */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 103/1193 rds: filter RDS_INFO_* getsockopt by callers netns
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maoyi Xie <[email protected]>
[ Upstream commit c96a5209dda666004b8ee1ed7f0d493d09a4f200 ]
The RDS_INFO_* family of getsockopt(2) options reads several file-scope global lists that are not per-netns:
rds_sock_info / rds6_sock_info,
rds_sock_inc_info / rds6_sock_inc_info -> rds_sock_list
rds_tcp_tc_info / rds6_tcp_tc_info -> rds_tcp_tc_list
rds_conn_info / rds6_conn_info, rds_conn_message_info_cmn (for the *_SEND_MESSAGES and *_RETRANS_MESSAGES variants), rds_for_each_conn_info (for RDS_INFO_IB_CONNECTIONS)
-> rds_conn_hash[]
The handlers do not filter by the caller's network namespace. rds_info_getsockopt() has no netns or capable() check, and rds_create() has no capable() check, so AF_RDS is reachable from an unprivileged user namespace. As a result, an unprivileged caller in a fresh user_ns plus netns can read the bound address and sock inode of every RDS socket on the host, the peer address of incoming messages on every RDS socket on the host, the peer address and TCP sequence numbers of every rds-tcp connection on the host, and the peer address and RDS sequence numbers of every RDS connection on the host.
The rds-tcp transport is reachable from a non-initial netns (see rds_set_transport()), so a one-shot init_net gate at rds_info_getsockopt() would deny legitimate per-netns visibility to rds-tcp callers. Instead, filter at each handler by comparing the netns of the caller's socket to the netns of the list entry, or to rds_conn_net(conn) for connection paths. Only copy entries whose netns matches the caller. Counters (RDS_INFO_COUNTERS) are aggregate statistics and remain global.
Reproducer (KASAN VM, rds and rds_tcp loaded): an AF_RDS socket binds 127.0.0.1:4242 in init_net as root. A child process enters a fresh user_ns plus netns and opens AF_RDS there, then calls getsockopt(SOL_RDS, RDS_INFO_SOCKETS). Before this change, the child sees the init_net socket. After this change, the child sees zero entries.
Drop the rds_sock_count, rds_tcp_tc_count, and rds6_tcp_tc_count globals. v2 used them for the size precheck and lens->nr; v3 replaced the precheck with a per-ns count from a first pass over the list, so the globals have no remaining readers. The matching increments and decrements in rds_create()/rds_destroy_sock() and rds_tcp_set_callbacks()/rds_tcp_restore_callbacks() go away with them. Reported by the kernel test robot under clang W=1.
--- net/rds/af_rds.c | 59 ++++++++++++++++++++++++++++++++++------- net/rds/connection.c | 13 +++++++++ net/rds/tcp.c | 63 ++++++++++++++++++++++++++++---------------- 3 files changed, 104 insertions(+), 31 deletions(-)
net/rds/af_rds.c +50 -9
@@ -43,7 +43,6 @@/* this is just used for stats gathering :/ */ static DEFINE_SPINLOCK (rds_sock_lock); -static unsigned long rds_sock_count;static LIST_HEAD (rds_sock_list);DECLARE_WAIT_QUEUE_HEAD (rds_poll_waitq);
@@ -82,7 +81,6 @@ static int rds_release(struct socket *sock)spin_lock_bh (&rds_sock_lock);list_del_init (&rs->rs_item); - rds_sock_count--;spin_unlock_bh (&rds_sock_lock);rds_trans_put (rs->rs_transport);
@@ -694,7 +692,6 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)spin_lock_bh (&rds_sock_lock);list_add_tail (&rs->rs_item, &rds_sock_list); - rds_sock_count++;spin_unlock_bh (&rds_sock_lock);return 0 ;
@@ -735,6 +732,7 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,struct rds_info_iterator *iter, struct rds_info_lengths *lens) { + struct net *net = sock_net(sock->sk);struct rds_sock *rs;struct rds_incoming *inc;unsigned int total =0 ;
@@ -744,6 +742,9 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,spin_lock_bh (&rds_sock_lock);list_for_each_entry (rs, &rds_sock_list, rs_item) { +/* Only show sockets in the caller's netns. */ +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ;/* This option only supports IPv4 sockets. */ if (!ipv6_addr_v4mapped (&rs->rs_bound_addr))continue ;
@@ -774,6 +775,7 @@ static void rds6_sock_inc_info(struct socket *sock, unsigned int len,struct rds_info_iterator *iter, struct rds_info_lengths *lens) { + struct net *net = sock_net(sock->sk);struct rds_incoming *inc;unsigned int total =0 ;struct rds_sock *rs;
@@ -783,6 +785,9 @@ static void rds6_sock_inc_info(struct socket *sock, unsigned int len,spin_lock_bh (&rds_sock_lock);list_for_each_entry (rs, &rds_sock_list, rs_item) { +/* Only show sockets in the caller's netns. */ +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ;read_lock (&rs->rs_recv_lock);list_for_each_entry (inc, &rs->rs_recv_queue, i_item) {
@@ -806,7 +811,9 @@ static void rds_sock_info(struct socket *sock, unsigned int len,struct rds_info_iterator *iter, struct rds_info_lengths *lens) { + struct net *net = sock_net(sock->sk);struct rds_info_socket sinfo; +unsigned int copied =0 ;unsigned int cnt =0 ;struct rds_sock *rs;
@@ -814,12 +821,24 @@ static void rds_sock_info(struct socket *sock, unsigned int len,spin_lock_bh (&rds_sock_lock); -if (len < rds_sock_count) { - cnt = rds_sock_count; - goto out; +/* First pass: count entries visible in the caller's netns. */ +list_for_each_entry (rs, &rds_sock_list, rs_item) { +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ; +if (!ipv6_addr_v4mapped (&rs->rs_bound_addr)) +continue ; + cnt++; } +if (len < cnt) + goto out; +list_for_each_entry (rs, &rds_sock_list, rs_item) { +if (copied >= cnt) +break ; +/* Only show sockets in the caller's netns. */ +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ;/* This option only supports IPv4 sockets. */ if (!ipv6_addr_v4mapped (&rs->rs_bound_addr))continue ;
@@ -832,8 +851,13 @@ static void rds_sock_info(struct socket *sock, unsigned int len, sinfo.inum =sock_i_ino (rds_rs_to_sk (rs));rds_info_copy (iter, &sinfo,sizeof (sinfo)); - cnt++; + copied++; } +/* A concurrent rds_bind() can change rs_bound_addr between the +* two passes without holding rds_sock_lock, so copied may be +* less than cnt. Report what was actually copied. +*/ + cnt = copied; out: lens->nr = cnt;
@@ -847,17 +871,32 @@ static void rds6_sock_info(struct socket *sock, unsigned int len,struct rds_info_iterator *iter, struct rds_info_lengths *lens) { + struct net *net = sock_net(sock->sk);struct rds6_info_socket sinfo6; +unsigned int copied =0 ; +unsigned int cnt =0 ;struct rds_sock *rs; len /=sizeof (struct rds6_info_socket );spin_lock_bh (&rds_sock_lock); -if (len < rds_sock_count) +/* First pass: count entries visible in the caller's netns. */ +list_for_each_entry (rs, &rds_sock_list, rs_item) { +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ; + cnt++; + } + +if (len < cnt) goto out;list_for_each_entry (rs, &rds_sock_list, rs_item) { +if (copied >= cnt) +break ; +/* Only show sockets in the caller's netns. */ +if (!net_eq (sock_net (rds_rs_to_sk (rs)), net)) +continue ; sinfo6.sndbuf =rds_sk_sndbuf (rs); sinfo6.rcvbuf =rds_sk_rcvbuf (rs); sinfo6.bound_addr = rs->rs_bound_addr;
@@ -867,10 +906,12 @@ static void rds6_sock_info(struct socket *sock, unsigned int len, sinfo6.inum =sock_i_ino (rds_rs_to_sk (rs));rds_info_copy (iter, &sinfo6,sizeof (sinfo6)); + copied++; } + cnt = copied; out: - lens->nr = rds_sock_count; + lens->nr = cnt; lens->each =sizeof (struct rds6_info_socket );spin_unlock_bh (&rds_sock_lock);
net/rds/connection.c +13 -0
@@ -540,6 +540,7 @@ static void rds_conn_message_info_cmn(struct socket *sock, unsigned int len,struct rds_info_lengths *lens, int want_send, bool isv6) { + struct net *net = sock_net(sock->sk);struct hlist_head *head;struct list_head *list;struct rds_connection *conn;
@@ -562,6 +563,9 @@ static void rds_conn_message_info_cmn(struct socket *sock, unsigned int len,struct rds_conn_path *cp;int npaths; +/* Only show connections in the caller's netns. */ +if (!net_eq (rds_conn_net (conn), net)) +continue ;if (!isv6 && conn->c_isv6)continue ;
@@ -660,6 +664,7 @@ void rds_for_each_conn_info(struct socket *sock, unsigned int len, u64 *buffer, size_t item_len) { +struct net *net =sock_net (sock->sk);struct hlist_head *head;struct rds_connection *conn;size_t i;
@@ -672,6 +677,9 @@ void rds_for_each_conn_info(struct socket *sock, unsigned int len,for (i =0 , head = rds_conn_hash; i <ARRAY_SIZE (rds_conn_hash); i++, head++) {hlist_for_each_entry_rcu (conn, head, c_hash_node) { +/* Only show connections in the caller's netns. */ +if (!net_eq (rds_conn_net (conn), net)) +continue ;/* Zero the per-item buffer before handing it to the * visitor so any field the visitor does not write -
@@ -705,6 +713,7 @@ static void rds_walk_conn_path_info(struct socket *sock, unsigned int len, u64 *buffer, size_t item_len) { +struct net *net =sock_net (sock->sk);struct hlist_head *head;struct rds_connection *conn;size_t i;
@@ -719,6 +728,10 @@ static void rds_walk_conn_path_info(struct socket *sock, unsigned int len,hlist_for_each_entry_rcu (conn, head, c_hash_node) {struct rds_conn_path *cp; +/* Only show connections in the caller's netns. */ +if (!net_eq (rds_conn_net (conn), net)) +continue ; +/* XXX We only copy the information from the first * path for now. The problem is that if there are * more than one underlying paths, we cannot report
net/rds/tcp.c +41 -22
136 lines not on this page · raw message
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 104/1193 rds: annotate data-race around rs_seen_congestion
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiayuan Chen <[email protected]>
[ Upstream commit 67636cab273ed0c0b0f2adab6c9369a471cb7966 ]
rs_seen_congestion is read in rds_poll() and written in rds_sendmsg() and rds_poll() without any lock. Use READ_ONCE()/WRITE_ONCE() to annotate these lockless accesses and silence KCSAN.
--- net/rds/af_rds.c | 4 ++-- net/rds/send.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
net/rds/af_rds.c +2 -2
@@ -217,7 +217,7 @@ static __poll_t rds_poll(struct file *file, struct socket *sock,poll_wait (file,sk_sleep (sk), wait); -if (rs->rs_seen_congestion) +if (READ_ONCE (rs->rs_seen_congestion))poll_wait (file, &rds_poll_waitq, wait);read_lock_irqsave (&rs->rs_recv_lock, flags);
@@ -245,7 +245,7 @@ static __poll_t rds_poll(struct file *file, struct socket *sock,/* clear state any time we wake a seen-congested socket */ if (mask) - rs->rs_seen_congestion =0 ; +WRITE_ONCE (rs->rs_seen_congestion,0 );return mask; }
net/rds/send.c +1 -1
@@ -1339,7 +1339,7 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len) ret =rds_cong_wait (conn->c_fcong, dport, nonblock, rs);if (ret) { - rs->rs_seen_congestion =1 ; +WRITE_ONCE (rs->rs_seen_congestion,1 ); goto out; } while (!rds_send_queue_rm(rs, conn, cpath, rm, rs->rs_bound_port,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 105/1193 s390/zcore: Removed unused variables
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Heiko Carstens <[email protected]>
[ Upstream commit 0a2aa995c0a1d363b5f0803862e84834e3876ae2 ]
allmodconfig with clang W=1 points out unused global variables:
drivers/s390/char/zcore.c:49:23: error: variable
'zcore_reipl_file' set but not used [-Werror,-Wunused-but-set-global]drivers/s390/char/zcore.c:50:23: error: variable
'zcore_hsa_file' set but not used [-Werror,-Wunused-but-set-global]
Remove both of them, since there is no point in keeping them.
--- drivers/s390/char/zcore.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
drivers/s390/char/zcore.c +2 -6
@@ -48,8 +48,6 @@ struct ipib_info {static struct debug_info *zcore_dbf;static int hsa_available;static struct dentry *zcore_dir; -static struct dentry *zcore_reipl_file; -static struct dentry *zcore_hsa_file;static struct ipl_parameter_block *zcore_ipl_block;static unsigned long os_info_flags;
@@ -357,10 +355,8 @@ static int __init zcore_init(void) goto fail; zcore_dir =debugfs_create_dir ("zcore" ,NULL ); - zcore_reipl_file =debugfs_create_file ("reipl" ,S_IRUSR , zcore_dir, -NULL , &zcore_reipl_fops); - zcore_hsa_file =debugfs_create_file ("hsa" ,S_IRUSR |S_IWUSR , zcore_dir, -NULL , &zcore_hsa_fops); +debugfs_create_file ("reipl" ,S_IRUSR , zcore_dir,NULL , &zcore_reipl_fops); +debugfs_create_file ("hsa" ,S_IRUSR |S_IWUSR , zcore_dir,NULL , &zcore_hsa_fops);register_reboot_notifier (&zcore_reboot_notifier);atomic_notifier_chain_register (&panic_notifier_list, &zcore_on_panic_notifier);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 106/1193 clk: socfpga: agilex: implement l3_main_free_clk
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Ng Ho Yin <[email protected]>
[ Upstream commit 1e7f56205813a2c48cdb3e9a4b0a24f49fd9a548 ]
The AGILEX_L3_MAIN_FREE_CLK is defined in the dt-bindings header but was never implemented in the clock driver. Per the Agilex TRM, l3_main_free_clk has no divider or mux and is a fixed 1:1 derivative of noc_free_clk that clocks most of the interconnect datapath.
--- drivers/clk/socfpga/clk-agilex.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/clk/socfpga/clk-agilex.c +2 -0
@@ -259,6 +259,8 @@ static const struct stratix10_perip_cnt_clock agilex_main_perip_cnt_clks[] = { 0, 0x3C, 0, 0, 0}, {AGILEX_NOC_FREE_CLK ,"noc_free_clk" ,NULL , noc_free_mux,ARRAY_SIZE (noc_free_mux), 0, 0x40, 0, 0, 0}, + { AGILEX_L3_MAIN_FREE_CLK, "l3_main_free_clk", "noc_free_clk", NULL, + 1, 0, 0, 1, 0, 0}, { AGILEX_L4_SYS_FREE_CLK, "l4_sys_free_clk", NULL, noc_mux, ARRAY_SIZE(noc_mux), 0, 0, 4, 0x30, 1}, { AGILEX_EMAC_A_FREE_CLK, "emaca_free_clk", NULL, emaca_free_mux, ARRAY_SIZE(emaca_free_mux),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 107/1193 thermal/drivers/tegra/soctherma: Switch to devm cooling device registration
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Lezcano <[email protected]>
[ Upstream commit ee126267bc04bfb03816ae9d71ca24c5bf99e739 ]
Use devm_thermal_of_cooling_device_register() to simplify resource management and avoid manual cleanup in error paths.
As a side effect this change has the benefit of solving an existing issue. Before, the function tegra_soctherm_remove() only called debugfs_remove_recursive() and never called thermal_cooling_device_unregister() for any of the cooling devices registered here.
After the driver removal, the thermal framework's cdev list would still hold references to thermal_cooling_device objects whose devdata pointer (ts) pointed to memory already freed by the platform device's devm cleanup.
With this change, the cooling device is unregistered when the driver is removed, thus fixing the issue above.
--- drivers/thermal/tegra/soctherm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/thermal/tegra/soctherm.c +3 -3
@@ -1699,9 +1699,9 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev) stc->init = true; }else { - tcd =thermal_of_cooling_device_register (np_stcc, - (char *)name, ts, - &throt_cooling_ops); + tcd =devm_thermal_of_cooling_device_register (dev, np_stcc, + (char *)name, ts, + &throt_cooling_ops);if (IS_ERR_OR_NULL (tcd)) { dev_err(dev, "throttle-cfg: %s: failed to register cooling device\n",
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 108/1193 drm/panel: simple: Add AM-1280800W8TZQW-T00H
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dario Binacchi <[email protected]>
[ Upstream commit 6acb810ebc5d8dea5c250326c14dc44e32dc8e92 ]
Add Ampire, AM-1280800W8TZQW-T00H 10.1" TFT LCD panel timings.
--- drivers/gpu/drm/panel/panel-simple.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
drivers/gpu/drm/panel/panel-simple.c +28 -0
@@ -737,6 +737,31 @@ static const struct panel_desc ampire_am_1280800n3tzqw_t00h = { .connector_type = DRM_MODE_CONNECTOR_LVDS, }; +static const struct drm_display_mode ampire_am_1280800w8tzqw_t00h_mode = { + .clock =72400 , + .hdisplay =1280 , + .hsync_start =1280 +40 , + .hsync_end =1280 +40 +80 , + .htotal =1280 +40 +80 +40 , + .vdisplay =800 , + .vsync_start =800 +10 , + .vsync_end =800 +10 +18 , + .vtotal =800 +10 +18 +10 , +}; + +static const struct panel_desc ampire_am_1280800w8tzqw_t00h = { + .modes = &ire_am_1280800w8tzqw_t00h_mode, + .num_modes =1 , + .bpc =8 , + .size = { + .width =217 , + .height =136 , + }, + .bus_flags =DRM_BUS_FLAG_DE_HIGH , + .bus_format =MEDIA_BUS_FMT_RGB888_1X7X4_SPWG , + .connector_type =DRM_MODE_CONNECTOR_LVDS , +}; +static const struct drm_display_mode ampire_am_480272h3tmqw_t01h_mode = { .clock =9000 , .hdisplay =480 ,
@@ -4144,6 +4169,9 @@ static const struct of_device_id platform_of_match[] = { { .compatible = "ampire,am-1280800n3tzqw-t00h", .data = &ire_am_1280800n3tzqw_t00h, + }, { + .compatible = "ampire,am-1280800w8tzqw-t00h", + .data = &ire_am_1280800w8tzqw_t00h, }, { .compatible = "ampire,am-480272h3tmqw-t01h", .data = &ire_am_480272h3tmqw_t01h,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 109/1193 mips: cps: Assemble jr.hb with an R2 ISA level
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rosen Penev <[email protected]>
[ Upstream commit e5d64f868e484da06f5c141c18c32c01c269625e ]
A MIPS allmodconfig built with LLVM can select CPU_MIPS32_R1 together with MIPS_MT_SMP. In that configuration clang invokes the integrated assembler with -march=mips32, and the MIPS MT path in cps-vec.S fails to assemble two jr.hb instructions:
arch/mips/kernel/cps-vec.S:376:2: error: instruction requires a CPU feature not currently enabled
arch/mips/kernel/cps-vec.S:490:4: error: instruction requires a CPU feature not currently enabled
The earlier jr.hb in the same file is already assembled inside a .set MIPS_ISA_LEVEL_RAW scope. The two failing sites are reached after popping back to the file's base ISA level, so LLVM correctly rejects them for an R1 target.
Wrap those jr.hb instructions in the same ISA-level push/pop used by the working site. This keeps the MT code unchanged while making the required R2 hazard-branch encoding explicit to the assembler.
--- arch/mips/kernel/cps-vec.S | 6 ++++++ 1 file changed, 6 insertions(+)
arch/mips/kernel/cps-vec.S +6 -0
@@ -392,8 +392,11 @@ LEAF(mips_cps_boot_vpes) .set pop PTR_LA t1, 1f + .set push + .set MIPS_ISA_LEVEL_RAW jr.hb t1 nop + .set pop 1: mfc0 t1, CP0_MVPCONTROL ori t1, t1, MVPCONTROL_VPC mtc0 t1, CP0_MVPCONTROL
@@ -506,8 +509,11 @@ LEAF(mips_cps_boot_vpes) li t0, TCHALT_H mtc0 t0, CP0_TCHALT PTR_LA t0, 1f + .set push + .set MIPS_ISA_LEVEL_RAW 1: jr.hb t0 nop + .set pop 2:
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 110/1193 iio: adc: qcom-spmi-iadc: balance enable_irq_wake() on driver unbind
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stepan Ionichev <[email protected]>
[ Upstream commit 929fec2964f71d4b1ac664ee963d8226c5cf01c6 ]
iadc_probe() calls enable_irq_wake() after a successful devm_request_irq(), but the driver has no remove callback or matching disable_irq_wake(), so the wake reference count on the IRQ is leaked on module unload or driver unbind.
Check the IRQ request error first, then register a devm action that calls disable_irq_wake() so the wake reference is released in the same scope as the enable. While here, drop the inverted "if (!ret) ... else return ret" in favour of the standard "if (ret) return ret;" pattern.
--- drivers/iio/adc/qcom-spmi-iadc.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
drivers/iio/adc/qcom-spmi-iadc.c +15 -3
@@ -481,6 +481,11 @@ static const struct iio_chan_spec iadc_channels[] = { }, }; +static void iadc_disable_irq_wake (void *data) +{ +disable_irq_wake ((unsigned long )data); +} +static int iadc_probe (struct platform_device *pdev) {struct device_node *node = pdev->dev.of_node;
@@ -538,9 +543,16 @@ static int iadc_probe(struct platform_device *pdev)if (!iadc->poll_eoc) { ret =devm_request_irq (dev, irq_eoc, iadc_isr,0 ,"spmi-iadc" , iadc); -if (!ret) -enable_irq_wake (irq_eoc); -else +if (ret) +return ret; + + ret =enable_irq_wake (irq_eoc); +if (ret) +return ret; + + ret =devm_add_action_or_reset (dev, iadc_disable_irq_wake, + (void *)(unsigned long )irq_eoc); +if (ret)return ret; }else {device_init_wakeup (iadc->dev,1 );
Signature · 1 line
2.53.0