6.18.53-rc1 review
Subsystems (6)
Greg Kroah-Hartman
maintainercover 6.18.53-rc1 review
This is the start of the stable review cycle for the 6.18.53 release. There are 1250 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 Sat, 19 Sep 2026 15:13:46 +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.18.53-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.18.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.18.53-rc1
Peter Zijlstra <[email protected]>
x86/mm: Fix and document DEBUG_PAGEALLOC
Griffin Kroah-Hartman <[email protected]>
misc: amd-sbi: Add null check for devm_kasprintf()
Thadeu Lima de Souza Cascardo <[email protected]>
drm/ttm: Fix bo resource use-after-free
Matthew Brost <[email protected]>
drm/ttm: Drop tt->restore after successful restore
Tvrtko Ursulin <[email protected]>
drm/ttm: Tidy usage of local variables a little bit
Paulo Alcantara <[email protected]>
smb: client: use atomic_t for mnt_cifs_flags
Bjoern Doebel <[email protected]>
smb: client: fail DACL rewrite when the new DACL exceeds 64K
Ralph Boehme <[email protected]>
smb/client: fix security flag calculation when setting security descriptors
Ralph Boehme <[email protected]>
smb: client: refactor ACL setting control flow in id_mode_to_cifs_acl()
Paolo Abeni <[email protected]>
mptcp: prevent race between disconnect() and rtx
Paolo Abeni <[email protected]>
mptcp: do not reschedule the RTX timer for fallback sockets
Eric Dumazet <[email protected]>
tcp: remove icsk->icsk_retransmit_timer
Eric Dumazet <[email protected]>
tcp: introduce icsk->icsk_keepalive_timer
Eric Dumazet <[email protected]>
tcp: rename icsk_timeout() to tcp_timeout_expires()
Joe Damato <[email protected]>
bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()
Jakub Kicinski <[email protected]>
Reapply "bnxt_en: bring back rtnl_lock() in the bnxt_open() path"
Pavan Chebbi <[email protected]>
fwctl/bnxt_en: Move common definitions to include/linux/bnxt/
Matthieu Baerts (NGI0) <[email protected]>
mptcp: pm: reset retrans_time when ADD_ADDR entry is reused
Norbert Szetei <[email protected]>
landlock: Fix use-after-free of the source's parent directory
Günther Noack <[email protected]>
landlock: Use mem_is_zero() in is_layer_masks_allowed()
Günther Noack <[email protected]>
landlock: Transpose the layer masks data structure
Günther Noack <[email protected]>
landlock: Add access_mask_subset() helper
Günther Noack <[email protected]>
landlock: Clarify documentation for the IOCTL access right
Myeonghun Pak <[email protected]>
idpf: disable DIM work before freeing q_vectors
Pavan Kumar Linga <[email protected]>
idpf: introduce idpf_q_vec_rsrc struct and move vector resources to it
Pavan Kumar Linga <[email protected]>
idpf: introduce local idpf structure to store virtchnl queue chunks
Andy Shevchenko <[email protected]>
idpf: Fix kernel-doc descriptions to avoid warnings
Jingbo Xu <[email protected]>
erofs: add sysfs feature entry for xattr prefixes
Gao Xiang <[email protected]>
erofs: separate plain and compressed filesystems formally
Runyu Xiao <[email protected]>
net: macb: initialize PTP state before registering clock
Théo Lebrun <[email protected]>
net: macb: unify device pointer naming convention
Kevin Hao <[email protected]>
net: macb: Use netif_napi_add_tx() instead of netif_napi_add() for TX NAPI
Kevin Hao <[email protected]>
net: macb: Replace open-coded implementation with napi_schedule()
Daehyeon Ko <[email protected]>
exit: hold a reference to thread_pid across proc_flush_pid
Christian Brauner <[email protected]>
ns: rename to exit_nsproxy_namespaces()
Christian Brauner <[email protected]>
ns: add __ns_ref_read()
Chengfeng Ye <[email protected]>
netfilter: cttimeout: prevent UAF during module unload
Pablo Neira Ayuso <[email protected]>
netfilter: cttimeout: detach dataplane timeout policy and repurpose refcount
Dinh Nguyen <[email protected]>
EDAC/altera: Use parent device for devres in altr_portb_setup()
Rounak Das <[email protected]>
EDAC/altera: Use ECC manager compatible to select A10/S10 IRQ layout
Donggeun Yoo <[email protected]>
tracing: Undo the registration when enabling the histogram trigger fails
Donggeun Yoo <[email protected]>
tracing: Take the reference before publishing the named histogram trigger
Donggeun Yoo <[email protected]>
tracing: Set the trace clock before registering the histogram trigger
Steven Rostedt <[email protected]>
tracing: Merge struct event_trigger_ops into struct event_command
Steven Rostedt <[email protected]>
tracing: Remove get_trigger_ops() and add count_func() from trigger ops
Javier Tia <[email protected]>
xfs: initialise args->total for parent pointer updates
Esben Haabendal <[email protected]>
drm/bridge: ti-sn65dsi83: Fix error handling in sn65dsi83_reset_work()
Satyajit Roy <[email protected]>
drm/amd/display: Honor Broadcast RGB for BT.2020 RGB output
Satyajit Roy <[email protected]>
drm/amd/display: Propagate HDMI RGB quantization selectability
Thomas Hellström <[email protected]>
drm/xe: Flush LSC untyped L1 dataport cache after rcs/ccs batches
Satyajit Roy <[email protected]>
drm/amd/display: Rebuild InfoFrames on output color space changes
Jens Axboe <[email protected]>
io_uring/rw: end write accounting from ->ki_complete
XingWang Xiang <[email protected]>
genetlink: pin family module during policy dump
Masami Hiramatsu (Google) <[email protected]>
bootconfig: Fix integer overflow in initrd size check
Sun Jian <[email protected]>
init/main: read bootconfig header with get_unaligned_le32()
Lorenzo Stoakes (ARM) <[email protected]>
x86/mm/pat: Allocate split page tables as kernel page tables
Lorenzo Stoakes (ARM) <[email protected]>
x86/mm/pat: Acquire init_mm read lock on attribute changes to avoid UAF
Mike Rapoport (Microsoft) <[email protected]>
x86/mm/pat: Don't gate cpa_lock on debug_pagealloc_enabled()
Vishal Moola (Oracle) <[email protected]>
x86/mm/pat: Convert split_large_page() to use ptdescs
Vasileios Almpanis <[email protected]>
configfs: unhash the dentry before dropping the item in rmdir
Zihan Xi <[email protected]>
ipmr: account multicast table and route memory
Matthew Brost <[email protected]>
drm/pagemap: dma-unmap pages before handling migration errors
Heikki Krogerus <[email protected]>
drm/xe/i2c: Keep the i2c controller always enabled
Heikki Krogerus <[email protected]>
i2c: designware: Global register definitions
Bob Zhou <[email protected]>
drm/amdgpu: avoid force-completing uninitialized UVD rings
Alex Deucher <[email protected]>
drm/amdgpu: plumb timedout fence through to force completion
Srinivasan Shanmugam <[email protected]>
drm/amdgpu: Make amdgpu_vm_flush() non-failing in submission path
Alex Deucher <[email protected]>
drm/amdgpu: reorder IB schedule sequence
Alex Deucher <[email protected]>
drm/amdgpu: add a helper to calculate ring distance
Srinivasan Shanmugam <[email protected]>
drm/amdgpu: Fix missing unwind in amdgpu_ib_schedule() error path
Wenjie Qi <[email protected]>
f2fs: reject setattr size changes on large folio files
Chao Yu <[email protected]>
Revert: "f2fs: check in-memory block bitmap"
Xuanqiang Luo <[email protected]>
fou: Fix use-after-free in fou_create()
Daeho Jeong <[email protected]>
f2fs: accurately adjust free_sections during free_segment_range
Chao Yu <[email protected]>
f2fs: fix to reclaim space in f2fs_allocate_pinning_section()
Chao Yu <[email protected]>
f2fs: embed f2fs_gc_kthread in f2fs_sb_info
Wenjie Qi <[email protected]>
f2fs: limit recovery filename logging to stored length
Wenjie Qi <[email protected]>
f2fs: validate MOVE_RANGE destination size
Nilesh Javali <[email protected]>
scsi: qla2xxx: Validate BSG request_len before reading vendor_cmd[]
Nilesh Javali <[email protected]>
scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock
Nilesh Javali <[email protected]>
scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error
Nilesh Javali <[email protected]>
scsi: qla2xxx: Clamp max_npiv_vports to VP_CTRL bitmap capacity
Nilesh Javali <[email protected]>
scsi: qla2xxx: Fix soft lockup polling continuation IOCB signature
Nilesh Javali <[email protected]>
scsi: qla2xxx: Use memset_io() to clear QLAFX00 request ring slot
Nilesh Javali <[email protected]>
scsi: qla2xxx: Use ring-slot helpers in __qla2x00_alloc_iocbs
Nilesh Javali <[email protected]>
scsi: qla2xxx: Skip vport under deletion in report ID acquisition
Nilesh Javali <[email protected]>
scsi: qla2xxx: Fix 64G link speed reporting in get_data_rate
Nilesh Javali <[email protected]>
scsi: qla2xxx: Bound VP index against VP_CTRL IOCB bitmap size
Nilesh Javali <[email protected]>
scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown
Nilesh Javali <[email protected]>
scsi: qla2xxx: Fix queue teardown NULL dma_free and bitmap locking
Nilesh Javali <[email protected]>
scsi: qla2xxx: Null out freed pointers in qla2x00_mem_alloc() error path
Hungyu Lin <[email protected]>
media: qcom: iris: fix runtime PM reference leaks
Sang-Heon Jeon <[email protected]>
media: remove conditional return with no effect
Dmitry Baryshkov <[email protected]>
media: iris: turn platform data into constants
Nilesh Javali <[email protected]>
scsi: qla2xxx: Zero dport diagnostics buffer to avoid info leak
Jackson Lee <[email protected]>
media: chips-media: wave5: Add timeout while stop_streaming
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
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
Chuck Lever <[email protected]>
xdrgen: Fix union declarations
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: kodiak: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sar2130p: Fix the PCIe iommu-map entries"
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"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8650: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8750: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: talos: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: lemans: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: qcs6490-rb3gen2: Fix the PCIe iommu-map entries"
Atish Patra <[email protected]>
crypto: ccp - Fix possible deadlock in SEV init failure path
Namjae Jeon <[email protected]>
ksmbd: don't hold ci->m_lock while waiting for a lease break ack
Guenter Roeck <[email protected]>
hwmon: (sht4x) Add missing locks
Henrique Carvalho <[email protected]>
smb: client: fix UBSAN array-index-out-of-bounds in smb2_copychunk_range
Darrick J. Wong <[email protected]>
xfs: actually check internal-rtdev fields in the superblock
Darrick J. Wong <[email protected]>
xfs: actually recover intended file sizes in xfs_xmi_item_recover_intent
Darrick J. Wong <[email protected]>
xfs: advance the findparent inode scan cursor while holding ILOCK
Darrick J. Wong <[email protected]>
xfs: bail out on bitmap errors in xrep_agfl_fill
Darrick J. Wong <[email protected]>
xfs: compute dquot checksum after resetting dd_lsn in repair
Darrick J. Wong <[email protected]>
xfs: count escaped corruption errors in scrub stats
Darrick J. Wong <[email protected]>
xfs: cross-reference the rtgroup superblock extent, not block
Darrick J. Wong <[email protected]>
xfs: destroy seen inode bitmap when we fail to add a dirpath
Darrick J. Wong <[email protected]>
xfs: don't leak dqacct if rhashtable insertion fails
Darrick J. Wong <[email protected]>
xfs: don't leak new_bp if xfs_btree_bload_drop_buf fails
Darrick J. Wong <[email protected]>
xfs: don't modify file attributes or poke fsnotify for dry runs
Darrick J. Wong <[email protected]>
xfs: don't spin forever on zero-length dirents when salvaging them
Darrick J. Wong <[email protected]>
xfs: fix backwards mergeability logic in refcount scrubber
Darrick J. Wong <[email protected]>
xfs: fix backwards skipping logic in xrep_quota_block
Darrick J. Wong <[email protected]>
xfs: fix bnobt repair space reservation disposal failure
Lin Jiapeng <[email protected]>
xfs: fix exchange-range reflink flag clearing issue with INO1_WRITTEN
Darrick J. Wong <[email protected]>
xfs: fix name string recording in slowpath pptr tracepoints
Darrick J. Wong <[email protected]>
xfs: fix parent rec lookup initialization in xrep_metapath_unlink
Eric Sandeen <[email protected]>
xfs: fix reclaimed page accounting in xfs_buf_free
Darrick J. Wong <[email protected]>
xfs: fix replaying dirent removals into the temporary directory
Darrick J. Wong <[email protected]>
xfs: fix rtrefcount btree block counting in scrub
Darrick J. Wong <[email protected]>
xfs: fix rtrmap cross-referencing elision logic
Darrick J. Wong <[email protected]>
xfs: fix short ifork reaping computation in xreap_bmapi_binval
Darrick J. Wong <[email protected]>
xfs: fix the rtrmap and rtrefcount _maxlevels_ondisk functions
Darrick J. Wong <[email protected]>
xfs: fix unit conversions in per_binval computation
Darrick J. Wong <[email protected]>
xfs: fix xfs_rtrmapbt_mem_cursor for non-rmap filesystems
Javier Tia <[email protected]>
xfs: initialise error in xfs_defer_finish_one()
Darrick J. Wong <[email protected]>
xfs: log the tempip after we convert it to extents format
Darrick J. Wong <[email protected]>
xfs: make the rtsummary repair fix the file size too
Darrick J. Wong <[email protected]>
xfs: preserve owner on in-memory btree creation
Anuj Gupta <[email protected]>
xfs: release alleged child inode on metapath unlink error
Darrick J. Wong <[email protected]>
xfs: report healthy filesystem events in scrub stats
Darrick J. Wong <[email protected]>
xfs: report nonexistent parents as a filesystem corruption
Darrick J. Wong <[email protected]>
xfs: reset parent pointer args before each dir tree unlink repair
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
Darrick J. Wong <[email protected]>
xfs: strengthen the "is cow staging" helpers in scrub
Darrick J. Wong <[email protected]>
xfs: truncate quota file correctly when repairing quota file
Darrick J. Wong <[email protected]>
xfs: use the rtgroup extent count to find rtrefcount gaps
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 posix_reparse_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
Diego Oliva <[email protected]>
smb: client: reject short READ responses in CIFSSMBRead()
Aohan Mei <[email protected]>
smb: client: reject userspace cifs.idmap descriptions
Qing Luo <[email protected]>
mptcp: pm: userspace: fix address ID overflow
Kalpan Jani <[email protected]>
mptcp: pm: kernel: drop pending ADD_ADDR when removing ID0
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 TPA buffer allocation failures in bnxt_queue_mem_alloc()
Joe Damato <[email protected]>
bnxt_en: Propagate RX ring init failures in bnxt_init_nic()
Joe Damato <[email protected]>
bnxt_en: Don't free the live ring's TPA state on queue restart failure
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
Javier Carrasco <[email protected]>
hwmon: (chipcap2) fix channels in humidity alarm notifications
Cong Nguyen <[email protected]>
hwmon: (applesmc) fix key backlight workqueue leak on register failure
Chengfeng Ye <[email protected]>
afs: Clear stale peer app data after address list changes
David Howells <[email protected]>
afs: Fix incorrect free in candidate cleanup in afs_lookup_server()
David Howells <[email protected]>
afs: Fix double-unmap of directory block
David Howells <[email protected]>
afs: Fix missing kunmap in afs_dir_search_bucket()
Xixin Liu <[email protected]>
perf: RISC-V: use BIT_ULL for u64 overflow masks
Xixin Liu <[email protected]>
perf: RISC-V: store available counter mask as bitmap
Harald Freudenberger <[email protected]>
s390/crypto: Map EBUSY to EIO when key conversion fails repeatedly
Harald Freudenberger <[email protected]>
s390/crypto: Fix wrong return code to engine in asynch callbacks
Harald Freudenberger <[email protected]>
s390/crypto: Fix missing scrub of temp buffers with PAES algorithm
Harald Freudenberger <[email protected]>
s390/crypto: Fix handling of EBUSY in PHMAC when req is pushed to crypto engine
Harald Freudenberger <[email protected]>
s390/crypto: Fix missing cra_flags in paes_s390
Harald Freudenberger <[email protected]>
s390/crypto: Fix missing scrub of temp buffers with AES ctr and gcm algorithm
Harald Freudenberger <[email protected]>
s390/crypto: Fix use of mutex in atomic context
Harald Freudenberger <[email protected]>
s390/crypto: Fix skcipher_walk return code handling in aes_s390
Nagamani PV <[email protected]>
s390/qeth: allow bridgeport queries despite OS_MISMATCH
Niklas Schnelle <[email protected]>
iommu/s390: Fix NULL dereference in iova_to_phys() with ZPCI_TABLE_TYPE_RFX
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
Zhiling Zou <[email protected]>
ipv6: flowlabel: cap duplicate leases per socket
Zihan Xi <[email protected]>
ipv4: fib: bound automatic table ID allocation
David Carlier <[email protected]>
ieee802154: hwsim: serialize pib updates to fix double-free
Fan Wu <[email protected]>
ieee802154: cc2520: fix FIFOP work use-after-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
Nikhil Gurudasani <[email protected]>
erofs: preserve LZMA decoders on resize failure
Jeffin Philip <[email protected]>
fs: autofs: fix memory leak in autofs_fill_super()
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
Karl Mehltretter <[email protected]>
netfs: Fix uninitialized return value in netfs_unbuffered_write()
Donggeun Yoo <[email protected]>
net: phy: dp83td510: handle the active-high LED polarity mode
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
Weiming Shi <[email protected]>
net: dsa: tag_brcm: legacy FCS: request needed tailroom
Zhiling Zou <[email protected]>
net: bridge: use option bits for CFM/MRP frame handlers
Xuanqiang Luo <[email protected]>
net/sched: act_api: release all action references on NEWACTION failure
David Carlier <[email protected]>
ring-buffer: Check resize_disabled before publishing the new subbuf order
Sebastian Andrzej Siewior <[email protected]>
ring-buffer: Acquire the lock with irqsave in rb_wake_up_waiters()
Gabriel Krisman Bertazi <[email protected]>
io_uring/net: don't overconsume buffers when using MSG_TRUNC
Gabriel Krisman Bertazi <[email protected]>
io_uring/net: let io_recv_buf_select return the length of the buffer region
Shixiong Ou <[email protected]>
drm/sched: Create a fake device for KUnit tests
Yudi Yang <[email protected]>
drm/rockchip: analogix_dp: fix unchecked bound endpoint name length
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
Leonardo Costa <[email protected]>
drm/bridge: tc358768: Enforce input bus flags via atomic_check
Donggeun Yoo <[email protected]>
function_graph: Use the saved entry's size when reprinting it
Moritz Tanner <[email protected]>
fs: don't return -EINVAL for successful nested thaw
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
Xu Rao <[email protected]>
Bluetooth: btqcomsmd: destroy RPMsg endpoints before freeing hci_dev
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
Dawid Osuchowski <[email protected]>
accel/ivpu: Limit firmware log name prints to field size
Magdalena Schulfer <[email protected]>
accel/ivpu: Validate firmware log buffer metadata
Magdalena Schulfer <[email protected]>
accel/ivpu: Validate full buffer range in ivpu_to_cpu_addr
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
Masami Hiramatsu (Google) <[email protected]>
tools/bootconfig: Fix integer overflow and truncation in size checks
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
Xiong Weimin <[email protected]>
virtio_mmio: disable IRQ wake before free_irq
James Hilliard <[email protected]>
watchdog: sunxi_wdt: preserve boot-enabled watchdog
Prike Liang <[email protected]>
drm/amdgpu: skip gfx switch_power_profile during GPU reset
Harry Wentland <[email protected]>
dm/amdgpu: fix malformed link_settings debugfs output
Samuel Holland <[email protected]>
Revert "riscv: Reset pmm when PR_TAGGED_ADDR_ENABLE is not set"
Tristan Madani <[email protected]>
ALSA: usbusx2y: validate URB actual_length in interrupt callback
Tristan Madani <[email protected]>
ALSA: usbusx2y: fix in04_last array size mismatch with in04_buf
Kazuki Hanai <[email protected]>
ALSA: us122l: Prevent write upgrades for read mappings
Roman Prucha <[email protected]>
ALSA: ctxfi: Fix CA20K2 S/PDIF passthrough
Miguel Ojeda <[email protected]>
drm/panic: clean new clippy::needless_range_loop lint for Rust 1.100.0
Miguel Ojeda <[email protected]>
rust: allow unknown_lints in generated bindings for Rust < 1.88
John Hubbard <[email protected]>
rust: allow clippy::as_underscore in the generated bindings
Donggeun Yoo <[email protected]>
tracing: Fix memory corruption from a "STACKTRACE" histogram key
Thomas Weißschuh <[email protected]>
tracing: Restore :mod: trailer after parsing in ftrace_set_clr_event()
Donggeun Yoo <[email protected]>
tracing: Fix memory corruption from the histogram stacktrace modifier
Cen Zhang (Microsoft) <[email protected]>
reboot: fix cad_pid use-after-free race
Zihan Xi <[email protected]>
ipv6: fix fib6 walker UAF on seq stop
Pedro Falcato <[email protected]>
x86/alternatives: Exclude text poking against change_page_attr()
Lorenzo Stoakes (ARM) <[email protected]>
x86/mm/pat: Acquire init_mm write lock on collapse to avoid UAF
Soheil Hassas Yeganeh <[email protected]>
x86/cfi: Fix FineIBT hash offset in cfi_get_func_hash()
Vernon Yang <[email protected]>
x86/mm: Fix user-space data loss with MADV_FREE and THP
Yazen Ghannam <[email protected]>
x86/amd_node: Fix PCI device reference counting in amd_smn_init()
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
Jason Andryuk <[email protected]>
x86/amd_node: Fix potential NULL pointer dereference
Jason Andryuk <[email protected]>
x86/amd_node: Avoid divide by zero on virtualized systems
Shivaprasad G Bhat <[email protected]>
powerpc: pci-ioda: Fix the stale irq chip reference
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
Vasileios Almpanis <[email protected]>
configfs: pin the symlink target's dirent instead of chasing ->ci_dentry
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
Lorenzo Stoakes (ARM) <[email protected]>
scripts/mksysmap: fix escape of '$' in the __pi_ pattern
Lorenzo Stoakes (ARM) <[email protected]>
scripts/mksysmap: drop the MODULE_INFO() symbols from kallsyms
Binglei Wang <[email protected]>
erofs: add missing buf->off in erofs_bread()
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()
MD Danish Anwar <[email protected]>
net: hsr: enable promiscuous mode on interlink port with fwd offload
Lorenzo Bianconi <[email protected]>
net: stmmac: fix TX descriptor availability check for TSO traffic
Russell King (Oracle) <[email protected]>
net: stmmac: add TSO check for header length
Russell King (Oracle) <[email protected]>
net: stmmac: add stmmac_tso_header_size()
Russell King (Oracle) <[email protected]>
net: stmmac: fix TSO support when some channels have TBS available
Greg Marsden <[email protected]>
net/rds: fix tcp stream corruption with large pages
Long Li <[email protected]>
net: mana: restore the XDP program pointer when pre-allocation fails
Donggeun Yoo <[email protected]>
net: phy: dp83867: handle the active-high LED polarity mode
Ratheesh Kannoth <[email protected]>
octeontx2-af: fix PF/CGX debugfs PCI bus lookup
Faicker Mo <[email protected]>
net: net_failover: Fix the deadlock in net_failover_slave_name_change()
Vladislav Karmanov <[email protected]>
net: phy: mediatek-ge: disable EEE on the MT7530 PHY
Aleksei Sviridkin <[email protected]>
net: ethernet: mtk_eth_soc: populate lpi_interfaces to fix EEE support
Christian Marangi <[email protected]>
net: ethernet: mtk_eth_soc: fix supported_interface set after phylink_create
Joris Vaisvila <[email protected]>
net: ethernet: mtk_eth_soc: avoid writing to ESW registers on MT7628
Aleksei Sviridkin <[email protected]>
net: dsa: mt7530: populate lpi_interfaces to fix EEE support
Ahmed Naseef <[email protected]>
net: dsa: mt7530: add EN7528 support
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
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
Hui Su <[email protected]>
sched/core: Call wq_worker_tick() for the execution context
Hui Su <[email protected]>
sched: Account cgroup CPU time to the execution context
Vincent Guittot <[email protected]>
sched/eevdf: Fix rb augmented with multi fields
Vincent Guittot <[email protected]>
sched/eevdf: Fix augmented max_slice
Dapeng Mi <[email protected]>
perf/x86/intel: Prevent drain_pebs() reentry
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
Thomas Richter <[email protected]>
perf/core: Allow list_del during perf_event_overflow()
Thibault Ferrante <[email protected]>
selftests/powerpc/tm: Fix tcheck() reading uninitialised CR value
Carolina Jubran <[email protected]>
net/mlx5e: Move representor vnic reporter to eswitch devlink port
Or Har-Toov <[email protected]>
net/mlx5: Register SF resource on PF port representor
Or Har-Toov <[email protected]>
devlink: Add port-level resource registration infrastructure
Or Har-Toov <[email protected]>
devlink: Refactor resource functions to be generic
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()
Ratheesh Kannoth <[email protected]>
octeontx2-pf: reset HTB scheduler topology before freeing queues
Ali Ahmet Memis <[email protected]>
hwmon: (nct6694) do not expose enable on DTIN temperature channels
Linmao Li <[email protected]>
hwmon: (corsair-cpro) Remove debugfs entries when probe fails
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()
Linmao Li <[email protected]>
hwmon: (corsair-cpro) Create debugfs entries after hwmon registration
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
Jan Havran (Advantech Czech) <[email protected]>
net: dsa: lantiq_gswip: fix GSWIP_MDIO_PHY_FCONTX_EN value
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
Paolo Abeni <[email protected]>
mptcp: remove unneeded READ_ONCE() annotation
Nicolai Buchwitz <[email protected]>
net: macb: put the "mdio" child node reference on success
Nicolai Buchwitz <[email protected]>
net: macb: destroy the phylink instance on the probe error path
Naman Gulati <[email protected]>
ipv6: null-check fib6_node before accessing in __ip6_del_rt_siblings()
Long Li <[email protected]>
net: mana: Clear RDMA teardown and suspend state in mana_rdma_probe()
Jiajia Liu <[email protected]>
Bluetooth: btusb: Fix leaked runtime PM reference in btusb_reset
Jiajia Liu <[email protected]>
Bluetooth: btusb: mediatek: Fix leaked runtime PM reference in reset
Krystian Kaniewski <[email protected]>
Bluetooth: hci_sysfs: Fix NULL pointer dereference in device_del()
Ivan Hu <[email protected]>
Bluetooth: btmtk: Declare MT7920 (MT7961 1a) Bluetooth firmware
Kiran K <[email protected]>
Bluetooth: btintel_pcie: fix tx_handle bounds off-by-one
Kiran K <[email protected]>
Bluetooth: btintel_pcie: validate packet_len before skb_put_data
Luiz Augusto von Dentz <[email protected]>
Bluetooth: btusb: Fix UAF of btusb_data by rx_work
Jakub Kicinski <[email protected]>
eth: ice: don't dereference pointers from TP_printk()
Jacob Keller <[email protected]>
ice: add missing xa_destroy for sched_node_ids
Joshua Hay <[email protected]>
idpf: account for VLAN header when parsing RSC packet header
HyeongJun An <[email protected]>
ALSA: hda: Report a change when only the channel status bytes move
Karl Mehltretter <[email protected]>
drm/logicvc: Drop the select of the nonexistent CONFIG_DRM_KMS_DMA_HELPER
Karl Mehltretter <[email protected]>
drm/adp: 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
Alice Mikityanska <[email protected]>
net: ipv4: Fix UDP length overflow with PMTU discover and big MTU
Kuniyuki Iwashima <[email protected]>
af_unix: Return immediately when manage_oob() returns NULL for 0-length buffer.
Kuniyuki Iwashima <[email protected]>
af_unix: Update last skb marker in manage_oob().
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: protect config_ctx from being freed under the config callback
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
Jia Jia <[email protected]>
virtio_console: do not free control-out buffers on remove
Karl Mehltretter <[email protected]>
virtio: fix use-after-free in unregister_virtio_device()
Sascha Bischoff <[email protected]>
irqchip/gic-v5: Preserve ICC_CR0_EL1 state
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
Guenter Roeck <[email protected]>
hwmon: (sht4x) Fix return value from heater_enable_store()
Guenter Roeck <[email protected]>
hwmon: (sht4x) Rely on subsystem locking
Antonin Godard <[email protected]>
Documentation: hwmon: replace full-width colon by a standard ASCII colon
Jared Kangas <[email protected]>
hwmon: (ina2xx) Decouple in0 and curr1 alarms
Jared Kangas <[email protected]>
hwmon: (ina2xx) Replace masks with enum in alert functions
Jared Kangas <[email protected]>
hwmon: (ina2xx) Parameterize ina2xx_data in ina226_alert_read()
Guenter Roeck <[email protected]>
hwmon: (ina2xx) Rely on subsystem locking
Jared Kangas <[email protected]>
hwmon: (ina2xx) Acquire hwmon_lock in shunt_resistor_show()
Guenter Roeck <[email protected]>
hwmon: Fix potential UAF in pec_store
Guenter Roeck <[email protected]>
Documentation/hwmon: Document hwmon_notify_event()
Geert Uytterhoeven <[email protected]>
hwmon: (ltc4282) Make sure clk_init_data is fully initialized
Vasant Hegde <[email protected]>
iommu/amd: Fix premature break in init_iommu_one() again
Karl Mehltretter <[email protected]>
iommu/amd: Do not reallocate GA log buffers on resume
Li RongQing <[email protected]>
iommu/amd: Add NUMA node affinity for IOMMU log buffers
Jason Gunthorpe <[email protected]>
iommu/riscv: Disable SADE
Fangyu Yu <[email protected]>
iommu/riscv: Add command queue lock
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
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: dualpi2: clamp psched_mtu at all call sites
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
Carolina Jubran <[email protected]>
net/mlx5e: Keep HW timestamp stats monotonic across reconfiguration
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%
Akiva Goldberger <[email protected]>
net/mlx5: LAG, use local tracker to update active ports
Shahar Shitrit <[email protected]>
net/mlx5e: Fix setting RS FEC after remapping
Shahar Shitrit <[email protected]>
net/mlx5e: Fix missing FEC mode mapping for RS_544_514_INTERLEAVED_QUAD
Weiming Shi <[email protected]>
net/sched: defer qdisc freeing after failed creation
XingWang Xiang <[email protected]>
net: mctp: i3c: serialize probe with bus removal
Thorsten Blum <[email protected]>
powerpc/kexec_file: Use inclusive range checks for excluded memory
Thorsten Blum <[email protected]>
powerpc/kexec_file: Use inclusive range checks in add_usable_mem()
Nikhil P. Rao <[email protected]>
pds_core: don't release PCI regions for VFs on reset
Nikhil P. Rao <[email protected]>
pds_core: fix cmd_regs access racing BAR unmap on reset
Jamal Hadi Salim <[email protected]>
net: reject oversized tx_queue_len at netlink parse time
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
Alexandra Winter <[email protected]>
dibs: Unregister dibs_class after error
Jori Koolstra <[email protected]>
dibs: change dibs_class to a const struct
Alexandra Winter <[email protected]>
dibs: Remove reset of static vars in dibs_init()
Jason Winter <[email protected]>
net: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow
Nikhil P. Rao <[email protected]>
ionic: use netif_txq_maybe_stop() in ionic_tx()
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]>
eth: nfp: drop the replaced rule from the list when reprogramming fails
Jakub Kicinski <[email protected]>
eth: nfp: bound the ntuple 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
Masami Hiramatsu (Google) <[email protected]>
tracing: Fix to avoid creating trace instances with duplicate names
Masami Hiramatsu (Google) <[email protected]>
tracing: Add boot-time backup of persistent ring buffer
Ning Ding <[email protected]>
bpf: Reject untrusted allocated-object pointers
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Require MEM_PERCPU for percpu kptr stores
Andy Shevchenko <[email protected]>
thermal: sysfs: switch to use scnprintf() to suppress truncation warning
Eduard Zingerman <[email protected]>
bpf: Don't predict JMP32 pointer vs zero comparisons
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Reject legacy packet loads from callbacks
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark faultable stack helpers as sleepable
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark bpf_btf_find_by_name_kind() as sleepable
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Check ancestor frames for rbtree callbacks
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Track verifier instruction stats for each subprogram
Paul Chaignon <[email protected]>
bpf: Report maximum combined stack depth
Paul Chaignon <[email protected]>
bpf: Print breakdown of insns processed by subprogs
Eduard Zingerman <[email protected]>
bpf: share several utility functions as internal API
Emil Tsalapatis <[email protected]>
bpf: Only enforce 8 frame call stack limit for all-static stacks
Taylor Bates <[email protected]>
mlxsw: spectrum_ptp: Fix napi_gro_receive() call from GC workqueue context
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: Refactor and fix init_config access
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Honor NHLT override when setting up a path
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Allow the topology to carry NHLT data
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Fix unbalanced module reference count
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Do not ignore -ENOENT when loading a topology
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Clean up streams if their initialization fails
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: Clean up the bus when fetching ML caps fails
Xixin Liu <[email protected]>
nvme-tcp: defer TLS inline send to io_work
Mohamed Khalfella <[email protected]>
nvme: remove stale namespaces by NSID range during scan
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark sched_process_wait argument as nullable
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Reject resilient lock operations in rbtree callbacks
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Reject tail calls directly from callback frames
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark signal tracepoint siginfo arguments as scalar
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
Igor Paunovic <[email protected]>
drm/rockchip: rk3066_hdmi: Add missing Kconfig selects
Igor Paunovic <[email protected]>
drm/rockchip: dw_dp: Select DRM_BRIDGE_CONNECTOR
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
Gao Xiang <[email protected]>
erofs: disable LZ4 rolling decompression for now
Breno Leitao <[email protected]>
arm64: trans_pgd: clone only the linear map that exists at runtime
HW He <[email protected]>
net: gro: Fix nesting of TCP GSO SKBs in skb_gro_receive_list()
Lorenzo Bianconi <[email protected]>
net: stmmac: reconfigure RX packet parser table in stmmac_hw_setup() after reset
Lorenzo Bianconi <[email protected]>
net: airoha: enable RX_DONE interrupt for RX queue 31
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()
Kuniyuki Iwashima <[email protected]>
net: Remove conflicting altnames for dying netns in __dev_change_net_namespace().
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
Yogesh Mohan Marimuthu <[email protected]>
drm/amdgpu/userq: fix struct drm_amdgpu_info_device padding for 32bit compile
FAN YE <[email protected]>
btrfs: zstd: fix lost wakeup when waiting for a workspace
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()
Johannes Thumshirn <[email protected]>
btrfs: zoned: finish active block group cleanup if call_zone_finish() fails
Qu Wenruo <[email protected]>
btrfs: return proper negative error code for update_raid_extent_item()
Qu Wenruo <[email protected]>
btrfs: fix the possible bioc_list memory leak during error
Shuangpeng Bai <[email protected]>
btrfs: fix transaction use-after-free in raid stripe insertion
James C. Owens <[email protected]>
btrfs: scrub: report the failing sector's address, not the stripe base
Linus Walleij <[email protected]>
ASoC: ux500: Program the MSP FIFO watermarks
Linus Walleij <[email protected]>
ASoC: ux500: Allow repeated MSP prepare calls
Linus Walleij <[email protected]>
ASoC: ux500: Remove obsolete PRCMU QoS calls
Linus Walleij <[email protected]>
ASoC: ux500: Request the MSP MMIO resource
Linus Walleij <[email protected]>
ASoC: ux500: Deassert the MSP reset during probe
Linus Walleij <[email protected]>
mfd: db8500-prcmu: Fold dbx500 header into db8500
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
John Ogness <[email protected]>
printk/nbcon: Change nbcon_irq_work to IRQ_WORK_LAZY
Qingyu Zhang <[email protected]>
ALSA: ump: do not touch legacy_rmidi before it exists
Sunil Goutham <[email protected]>
octeontx2-af: Fix limiting SRIOV VF count logic
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
Mario Limonciello <[email protected]>
x86/itmt: Don't make ITMT enablement depend on debugfs
Seiji Nishikawa <[email protected]>
sched/rt,dl: Skip migrate-disabled tasks when picking a push candidate
John Stultz <[email protected]>
sched: Make class_schedulers avoid pushing current, and get rid of proxy_tag_curr()
Ivy Lopez <[email protected]>
scsi: mpt3sas: Avoid out-of-bounds cpumask_of_node() call in _base_assign_reply_queues()
Xixin Liu <[email protected]>
perf: RISC-V: check cpu_hw_evt before dereference in overflow IRQ
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
HyeongJun An <[email protected]>
ALSA: dummy: Report a change when one capture switch channel moves
Lu Yao <[email protected]>
drm/xe/oa: Remove sysfs entry on idr_alloc failure in xe_oa_add_config_ioctl()
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
Ștefan Ghețu <[email protected]>
ASoC: fsl_micfil: balance mclk enable/disable
Vasily Gorbik <[email protected]>
s390/boot: Avoid IPL parameter append past command line
Vasily Gorbik <[email protected]>
s390/boot: Fix physical memory search range
Xu Rao <[email protected]>
ALSA: hda: restore MFG widget enumeration after core split
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
David Laight <[email protected]>
tipc: Dont send random pad bytes in RESET/ACTIVATE messages
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
Eric Dumazet <[email protected]>
ipv6: mcast: use copy-on-write RCU updates in ip6_mc_source()
Eric Dumazet <[email protected]>
ipv6: mcast: fix RCU list diversion in ip6_mc_del1_src()
Qingfang Deng <[email protected]>
ppp: ppp_synctty: simplify tty disc_data access
Qingfang Deng <[email protected]>
ppp: ppp_async: simplify tty disc_data access
Eric Dumazet <[email protected]>
igmp: convert struct ip_sf_list to RCU
Jamal Hadi Salim <[email protected]>
net/sched: cls_u32: fix duplicate handle when node ID pool is exhausted
Selvamani Rajagopal <[email protected]>
net: ethernet: oa_tc6: Fix for the wrong data type
Selvamani Rajagopal <[email protected]>
net: ethernet: oa_tc6: Disable tx queues on fatal error
Selvamani Rajagopal <[email protected]>
net: ethernet: oa_tc6: Improve the error recovery
Selvamani Rajagopal <[email protected]>
net: ethernet: oa_tc6: Protect skb pointer used by two different kernel instances
Ciprian Regus <[email protected]>
net: ethernet: oa_tc6: Add the OA_TC6_ prefix to standard registers
Ciprian Regus <[email protected]>
net: ethernet: oa_tc6: Export standard defined registers
Ciprian Regus <[email protected]>
net: ethernet: oa_tc6: Handle the OA TC6 SPI protected mode
Selvamani Rajagopal <[email protected]>
net: ethernet: oa_tc6: Interrupt is active low, level triggered.
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 out-of-bounds write in l2cap_ecred_connect
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: bound firmware ID by TLV length
Laxman Acharya Padhya <[email protected]>
Bluetooth: btintel: validate version TLV value lengths
Jiacheng Xu <[email protected]>
workqueue: reject watchdog thresholds that overflow jiffies
Kiran K <[email protected]>
Bluetooth: btintel_pcie: Clear automask on spurious interrupts
Wanwu Li <[email protected]>
sched_ext: Fix vtime delta loss in scx_flatcg cgroup migration
Cheng-Yang Chou <[email protected]>
sched_ext: Update demo schedulers and selftests to use scx_bpf_task_set_dsq_vtime()
Wanwu Li <[email protected]>
sched_ext: Fix timer pinning and return value in scx_central
Sumanth Korikkar <[email protected]>
s390/diag324: Preserve -EBUSY return code
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
Heiko Carstens <[email protected]>
s390/time: Use jiffies instead of jiffies_64
Heiko Carstens <[email protected]>
s390/vtime: Use __this_cpu_read() / get rid of READ_ONCE()
Namjae Jeon <[email protected]>
ksmbd: rate limit unmapped SID errors
Namjae Jeon <[email protected]>
ksmbd: propagate DACL parsing errors
Yilin Zhang <[email protected]>
ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF
David Howells <[email protected]>
cachefiles: Fix potential UAF/KASAN warning
Edward Adam Davis <[email protected]>
netfs: break unbuffered write when netfs_alloc_subrequest() fails
David Howells <[email protected]>
netfs: Fix subreq ref leak
David Howells <[email protected]>
netfs: Fix i_size update for partial transfer
David Howells <[email protected]>
netfs: Fix error vs transferred passed to ->ki_complete()
David Howells <[email protected]>
netfs: Fix unbuffered/DIO write partial transfer error return
Wang Yan <[email protected]>
perf powerpc-vpadtl: Fix raw_size of DTL samples
Colin Ian King <[email protected]>
OPP: of: Fix potential multiplication overflow when calculating freq
Adrian Hunter <[email protected]>
perf symbol: Do not use debug file as the binary type
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: fix integer truncation in collapse range
Huiwen He <[email protected]>
smb/client: fix data corruption in emulated insert range
ZhangGuoDong <[email protected]>
smb: move copychunk definitions to common/smb2pdu.h
Huiwen He <[email protected]>
smb/client: mark file sparse before emulating insert range
Huiwen He <[email protected]>
smb/client: validate new EOF for zero range
Huiwen He <[email protected]>
smb/client: validate new EOF for 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
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
Dong Chenchen <[email protected]>
net: iptunnel: fix stale transport header during tunnel decapsulation
Eric Dumazet <[email protected]>
tcp: use GFP_ATOMIC in tcp_send_active_reset()
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
Ali Ahmet Memis <[email protected]>
ufs: do not treat unreadable directory blocks as empty
Lizhi Hou <[email protected]>
accel/amdxdna: Remove __counted_by from struct amdxdna_cmd_chain
Sajal Gupta <[email protected]>
drm/gud: validate GUD_ROTATION_0 is present in supported rotations
Jiayuan Chen <[email protected]>
bpf: Fix REG INVARIANTS VIOLATION on speculative pointer arithmetic
Hongfu Li <[email protected]>
selftests/cgroup: Fix cg_run_in_subcgroups ignoring arg parameter
Liang Luo <[email protected]>
sched_ext: Fix nonexistent field in sched-ext.rst example
Xixin Liu <[email protected]>
nvmet-rdma: fix queue leak when connect backlog is exceeded
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()
Benjamin Leggett <[email protected]>
drm/virtio: use the DMA API for resource backing on Xen
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
Yazen Ghannam <[email protected]>
RAS/AMD/ATL, EDAC/amd64: Only load ATL when needed
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
Rafael J. Wysocki <[email protected]>
rtc: cmos: Use platform_get_irq_optional() in cmos_platform_probe()
Kuniyuki Iwashima <[email protected]>
af_unix: Unlink scc_entry in unix_del_edge().
Eric Dumazet <[email protected]>
l2tp: fix tunnel and session refcount leak on seq_file release
Namjae Jeon <[email protected]>
ksmbd: use memcmp() to compare ClientGUIDs
Wei Zhang <[email protected]>
wifi: ath11k: cancel SSR work items during PCI shutdown
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().
Joe Damato <[email protected]>
bnxt: fix head underflow on XDP head-grow
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
Jacob Moroni <[email protected]>
RDMA/irdma: Replace waitqueue and flag with completion
Jie Gan <[email protected]>
coresight: platform: defer connection counter increment until alloc succeeds
Abd-Alrhman Masalkhi <[email protected]>
md/raid10: fix writes_pending and barrier reference leaks on discard failures
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
David Howells <[email protected]>
netfs: Fix barriering when walking subrequest list
Pauli Virtanen <[email protected]>
Bluetooth: ISO: fix malformed ISO_END/CONT handling
Daniel Borkmann <[email protected]>
bpf: Reject redirect helpers without a bpf_net_context
Gregor Herburger <[email protected]>
drm/vc4: hvs/v3d: Fix null dereference in unbind
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
Max Chou <[email protected]>
Bluetooth: btrtl: Add the support for RTL8761CUV
Manuel Fombuena <[email protected]>
leds: st1202: Validate pattern input before stopping the sequence
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
Wentao Guan <[email protected]>
iommu/arm-smmu-v3: Disable implementations during devm teardown
Gil Portnoy <[email protected]>
ksmbd: remove stale channels from all sessions on teardown
Andrii Nakryiko <[email protected]>
bpftool: Strip all -Wformat* flags from bootstrap libbpf build
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
Niklas Cassel <[email protected]>
ata: libata-core: Disable LPM on WDC WD141KFGX-68FH9N0
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
Niklas Cassel <[email protected]>
ata: libata-core: Disable LPM on WD Green 2.5 480GB
André Pragosa <[email protected]>
ALSA: hda/realtek: Add mute LED quirk for HP Victus 16-e0xxx (MB 88ED)
Niklas Cassel <[email protected]>
ata: libata-core: Disable LPM on some WD drives
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
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: validate TX_CMD response layout
Charles Keepax <[email protected]>
ASoC: Intel: sof_sdw: Add quirks for new Dell laptops
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: pcie: null RX pointers after free
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix sched scan IE sizing
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: parse beacon notif per layout
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix an off-by-1 boundary check
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: validate mac_link_id in session protect notif
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()
Pali Rohár <[email protected]>
cifs: Fix support for creating SFU fifo
Richard Fitzgerald <[email protected]>
ALSA: hda: cs35l56: Fail if wmfw file is missing
Rohit Sinha <[email protected]>
ALSA: hda/realtek - Add quirk for HP Victus 15-fa0xxx (MB 8A50)
Chen Bowen <[email protected]>
ALSA: hda/realtek: Fix speakers on MECHREVO WUJIE Series
ChenXiaoSong <[email protected]>
smb/client: zero-initialize stack-allocated cifs_open_info_data
Pali Rohár <[email protected]>
cifs: Fix support for creating SFU socket
Tianze Shao <[email protected]>
ASoC: rt712-sdca: reset codec at io_init to fix silent headphone
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
Pagadala Yesu Anjaneyulu <[email protected]>
wifi: mac80211: ibss: wait for in-flight TX on disconnect
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]>
netfs: Fix decision whether to disallow write-streaming due to fscache use
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
Shubham Nayak <[email protected]>
ALSA: hda/realtek: Add quirk for HP Victus 16-e0xxx (88EE) to enable mute LED
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
Baojun Xu <[email protected]>
ASoC: tas2781: Update default register address to TAS2563
Haoxiang Li <[email protected]>
fbdev: pm2fb: unwind WC setup on probe failure
Kamlesh Chhetty <[email protected]>
ALSA: hda: Add Lenovo Legion 7i 16IAX7 17AA3874 quirk
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
Xue Lei <[email protected]>
rtc: mv: add suspend/resume support for wakeup
Samuel Moelius <[email protected]>
f2fs: validate inline dentry name lengths before conversion
Chris Aherin <[email protected]>
ALSA: hda/realtek: Add quirk for Lenovo Yoga 7 16IAP7
Chen Cheng <[email protected]>
md/raid5: let stripe batch bm_seq comparison wrap-safe
Sebastian Andrzej Siewior <[email protected]>
mailbox: imx: use devm_of_platform_populate()
Sebastian Andrzej Siewior <[email protected]>
mailbox: imx: Add a channel shutdown field
Yu Kuai <[email protected]>
md/raid5: account discard IO
Sebastian Andrzej Siewior <[email protected]>
mailbox: imx: Use devm_pm_runtime_enable()
Peter Zijlstra <[email protected]>
perf: Fix addr_filter_ranges lifetime
Hans Zhang <[email protected]>
PCI: plda: Protect root bus removal with rescan lock
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
David Francis <[email protected]>
drm/amdkfd: Properly acquire queue buffers in CRIU restore
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
Piotr Kubik <[email protected]>
leds: trigger: gpio: Use GPIOD_FLAGS_BIT_NONEXCLUSIVE
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()
Yung-Tse Cheng <[email protected]>
virtio-fs: avoid double-free on failed queue setup
Viktor Menshin <[email protected]>
ALSA: hda/realtek: Add quirk for Lenovo Xiaoxin 14 GT
David Timber <[email protected]>
exfat: fix handling of damaged volume in exfat_create_upcase_table()
Rosen Penev <[email protected]>
sparc: Disable compat support with LLD
Leo Yan <[email protected]>
bpftool: Pass host flags to bootstrap libbpf
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
Maxime Bélair <[email protected]>
apparmor: propagate -ENOMEM correctly in unpack_table
Jijie Shao <[email protected]>
net: hns3: improve the unused_tuple parameter setting
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
Ido Schimmel <[email protected]>
ipv6: Honor oif when choosing nexthop for locally generated traffic
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
Chen Zhang <[email protected]>
Bluetooth: btusb: Add Realtek RTL8922AE VID/PID 0bda/d923
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
Kiran K <[email protected]>
Bluetooth: btintel_pcie: Add 50 ms delay before MAC init on BlazarIW
Samuel Moelius <[email protected]>
Bluetooth: L2CAP: validate connectionless PSM length
Cris <[email protected]>
Bluetooth: btusb: Add support for TP-Link TL-UB250
Chris Lu <[email protected]>
Bluetooth: btusb: MT7925: Add VID/PID 0e8d/8c38
Rong Zhang <[email protected]>
Bluetooth: btmtk: Disable remote wakeup for MT7922/MT7925
Hrvoje Nuic <[email protected]>
Bluetooth: btusb: Add Mercusys MA530 for Realtek RTL8761BUV
Chen Zhang <[email protected]>
Bluetooth: btusb: Add Realtek RTL8922AE VID/PID 0bda/d922
Ravindra <[email protected]>
Bluetooth: btusb: Add support for Intel Lizard Peak 2 (0x8087:0x0040)
Chris Lu <[email protected]>
Bluetooth: btusb: MT7922: Add VID/PID 0e8d/223c
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
Adrian Ng Ho Yin <[email protected]>
dmaengine: altera-msgdma: Use memcpy_toio for descriptor FIFO writes
Jose Ignacio Tornos Martinez <[email protected]>
PCI: Avoid SBR for Qualcomm WCN6855/WCN7850 WiFi, SDX62/SDX65 modems
Armin Wolf <[email protected]>
hwmon: (dell-smm) Add Dell Latitude 7530 to fan control whitelist
Dave Carey <[email protected]>
HID: multitouch: Honor ContactCount for Yoga Book 9 to suppress ghost contacts
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
Vamsi Attunuru <[email protected]>
vdpa/octeon_ep: Use 4 bytes for mailbox signature
Evgenii Burenchev <[email protected]>
vdpa/ifcvf: handle dev_set_name() failure in ifcvf_vdpa_dev_add()
Guangshuo Li <[email protected]>
net: lan966x: restore RX state on reload failure
George Moussalem <[email protected]>
net: dsa: qca8k: Add support for force mode for fixed link topology
Ben Maurer <[email protected]>
btrfs: use lockless read in nr_cached_objects shrinker callback
Anand Jain <[email protected]>
btrfs: use on-disk uuid for s_uuid in temp_fsid mounts
Kory Maincent <[email protected]>
hwmon: (adt7462) Add of_match_table to support devicetree
Shubham Chakraborty <[email protected]>
hwmon: (raspberrypi) Fix delayed-work teardown race
Jose Ignacio Tornos Martinez <[email protected]>
PCI: Avoid FLR for MediaTek MT7925 WiFi
Lu Yao <[email protected]>
fbcon: don't suspend/resume when vc is graphics mode
KangNing Liao <[email protected]>
btrfs: protect sb_write_pointer() with invalidate lock
Breno Leitao <[email protected]>
netconsole: take target_cleanup_list_lock in drop_netconsole_target()
Jiajia Liu <[email protected]>
wifi: mt76: transform aspm_conf for pci_disable_link_state
Javier Tia <[email protected]>
wifi: mt76: mt7925: add 320MHz bandwidth to bss_rlm_tlv
Javier Tia <[email protected]>
wifi: mt76: mt7925: populate EHT 320MHz MCS map in sta_rec
Devin Wittmayer <[email protected]>
wifi: mt76: mt7925: add Netgear A8500 USB device ID
Luis de Carlos <[email protected]>
platform/x86: msi-ec: Add support for MSI Pulse GL66 12th Gen
Javier Tia <[email protected]>
wifi: mt76: mt7925: handle 320MHz bandwidth in RXV and TXS
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()
Nikhil P. Rao <[email protected]>
pds_core: quiesce DMA before freeing resources
Al Viro <[email protected]>
configfs_depend_prep(): pass configfs_dirent instead of dentry
Jason Gunthorpe <[email protected]>
RDMA/mlx5: Create ODP EQ for non-pinned dmabuf MRs
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
Tuo Li <[email protected]>
ASoC: mediatek: mt8365-afe-pcm: fix possible NULL-pointer dereferences in mt8365_afe_suspend()
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()
Osama Abdelkader <[email protected]>
riscv: panic if IRQ handler stacks cannot be allocated
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
Genevieve Chan <[email protected]>
firmware: stratix10-svc: fix FCS SMC call kernel-doc
Jason Gunthorpe <[email protected]>
RDMA/umem: Make ib_umem_is_contiguous() safe on 32 bit
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
Runyu Xiao <[email protected]>
ipv6: use READ_ONCE() for bindv6only default in inet6_create()
Yongqiang Sun <[email protected]>
drm/amdkfd: Unwind debug trap enable on copy_to_user failure
Yongqiang Sun <[email protected]>
drm/amdkfd: fix SMI event cross-process information leak
Jakub Kicinski <[email protected]>
net: ethtool: cmis_cdb: hold instance lock for ops locked devices
Borislav Petkov (AMD) <[email protected]>
x86/microcode/AMD: Move the no-revision fixup to get_patch_level()
Koba Ko <[email protected]>
cxl/region: Validate partition index before array access
Rosen Penev <[email protected]>
ipmi: si: Use platform_get_irq_optional() to retrieve interrupt
Zide Chen <[email protected]>
perf/x86/intel/uncore: Guard against invalid box control address
Andrei Faleichyk <[email protected]>
ALSA: hda/realtek: Add quirk for ASUS VivoBook X509DAP
Evelyn Ali <[email protected]>
ALSA: hda/realtek: ALC882: Fixup for Clevo P775TM1
Michael Walle <[email protected]>
clk: keystone: don't cache clock rate
Rosen Penev <[email protected]>
net: ibm: emac: fix unchecked platform_get_irq return value
Shay Drory <[email protected]>
net/mlx5: E-Switch, align disable sequence with switchdev-to-legacy transition
Yunxiang Li <[email protected]>
drm/amdgpu/ras: add ras_suspend callback and use it for cp_ecc_error_irq
Cyrill Gorcunov <[email protected]>
RDMA/irdma: Fix typo in SQ completions generation
Shay Drory <[email protected]>
net/mlx5e: Verify unique vhca_id count instead of range
Candice Li <[email protected]>
drm/amdgpu: validate RAS EEPROM tbl_size before record count
Shiwu Zhang <[email protected]>
drm/amdgpu: fix buffer overflow during vBIOS update
Candice Li <[email protected]>
drm/amdgpu/pm: fix SmartShift bias sysfs store PM refcount on parse error
Asad Kamal <[email protected]>
drm/amd/pm: bound pp_dpm_set_pp_table() memcpy
Stanley.Yang <[email protected]>
drm/amdgpu: harden FRU PIA parsing with bounded helpers
Alysa Liu <[email protected]>
drm/amdkfd: fix UAF race in destroy_queue_cpsch
Samson Tam <[email protected]>
drm/amd/display: Check for sharpening case when calculating max vtaps for scaler
Mathias Nyman <[email protected]>
xhci: Prevent queuing new commands if xhci is inaccessible
Ilya Bakoulin <[email protected]>
drm/amd/display: Avoid DPMS-on for phantom stream
Niklas Neronin <[email protected]>
usb: xhci: remove legacy 'num_trbs_free' tracking
Michal Pecio <[email protected]>
usb: xhci: Improve Soft Retries after short transfers
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: add support for AX231
Johannes Berg <[email protected]>
wifi: iwlwifi: mvm: fix P2P-Device binding handling
Johannes Berg <[email protected]>
wifi: iwlwifi: mld: don't WARN on WoWLAN suspend w/o netdetect
Johannes Berg <[email protected]>
wifi: cfg80211: harden cfg80211_defragment_element()
Johannes Berg <[email protected]>
wifi: mac80211: unify link STA removal in vif link removal
Johannes Berg <[email protected]>
wifi: mac80211: clarify beacon parsing with MBSSID/EMA
liuxixin <[email protected]>
nvme: validate FDP configuration descriptor sizes
Priyansh Jain <[email protected]>
thermal/drivers/qcom/tsens: Atomic temperature read with hardware-guided retries
Ping-Ke Shih <[email protected]>
wifi: rtw89: 8851bu: add Mercusys MA60XNB (2c4e:0128)
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
Yao Sang <[email protected]>
nvme: refresh multipath head zoned limits from path limits
ZhengYuan Huang <[email protected]>
fs/ntfs3: preserve non-DOS attribute bits in system.dos_attrib
Adriano Vero <[email protected]>
powerpc/fadump: Add timeout to RTAS busy-wait loops
Simon Xue <[email protected]>
iommu/rockchip: disable fetch dte time limit
Chenguang Zhao <[email protected]>
net: txgbe: fix phylink leak on AML init failure
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
Shivang Upadhyay <[email protected]>
ppc/fadump: invoke kmsg_dump in fadump panic path
Chen Pei <[email protected]>
ACPI: PCI: Clear _DEP dependencies after PCI root bridge attach
Chen Pei <[email protected]>
ACPI: scan: Honor _DEP for ACPI0016 PCI/CXL host bridge
liyouhong <[email protected]>
ata: ahci: fail probe if BAR too small for claimed ports
Aditya Kumar Singh <[email protected]>
wifi: ath12k: Prevent incorrect vif chanctx switch when handling multi-radio contexts
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
Cezary Rojewski <[email protected]>
ASoC: codecs: pcm3168a: Prevent regulator double-disable in S4
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
Aaron Kling <[email protected]>
spi: tegra210-quad: Allocate DMA memory for DMA engine
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
Loic Poulain <[email protected]>
media: qcom: camss: vfe-340: Proper client handling
Denzeel Oliva <[email protected]>
clk: samsung: exynos990: Fix PERIC0/1 USI clock types
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
Ion Agorria <[email protected]>
ARM: tegra: p880: Lower CPU thermal limit
Lad Prabhakar <[email protected]>
mmc: renesas_sdhi: Add OF entry for RZ/G2N SoC
Svyatoslav Ryhel <[email protected]>
ARM: tegra: tf600t: Invert accelerometer calibration matrix
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
Kartik Rajput <[email protected]>
soc/tegra: fuse: Register nvmem lookups at probe
Tiezhu Yang <[email protected]>
libbpf: Add __NR_bpf definition for LoongArch
Timur Tabi <[email protected]>
drm/nouveau/bios: skip the IFR header if present
Cezary Rojewski <[email protected]>
ASoC: Intel: catpt: Complete coredump handling
Ricardo Neri <[email protected]>
x86/topology: Add missing struct declaration and attribute dependency
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
Wei Qisen <[email protected]>
net: sfp: add quirk for OEM 2.5G optical modules
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()
Ivan Lipski <[email protected]>
drm/amd/display: Initialize dsc_caps to 0
Jeremy Klarenbeek <[email protected]>
drm/amd/pm/si: Fix updating clock limits from power states
Imre Deak <[email protected]>
drm/dp: Add DSC virtual DPCD quirk for Realtek MST branch device
Johny Lin <[email protected]>
ALSA: hda: cs35l41: imply SERIAL_MULTI_INSTANTIATE
Haoxiang Li <[email protected]>
net: thunderx: fix PTP device ref leak in nicvf_probe()
Martin Karsten <[email protected]>
net: napi: Skip last poll when arming gro timer in busy poll
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
Thomas Gleixner <[email protected]>
genirq/manage: Make NMI cleanup RT safe
Sumeet Pawnikar <[email protected]>
powercap: intel_rapl: Fix memory leak in rapl_add_package_cpuslocked()
Avinash Bhatt <[email protected]>
wifi: iwlwifi: mld: keep healthy link on EMLSR missed beacon exit
Miri Korenblit <[email protected]>
wifi: iwlwifi: mld: purge async notifications upon nic error
Pagadala Yesu Anjaneyulu <[email protected]>
wifi: iwlwifi: mld: disallow puncturing in US/CA for WH
Johannes Berg <[email protected]>
wifi: iwlwifi: pcie: add two LNL PCI IDs
Avinash Bhatt <[email protected]>
wifi: iwlwifi: Transition to basic uAPSD with MAC_PM_POWER_TABLE API VER_3
Avraham Stern <[email protected]>
wifi: iwlwifi: mld: call iwl_mld_free_ap_early_key() for AP only
Johannes Berg <[email protected]>
wifi: iwlwifi: pcie: fix ACPI DSM check
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mld: honor BSS_CHANGED_BEACON_ENABLED
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: fix the access to CNVR TOP registers
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
Cássio Gabriel <[email protected]>
ALSA: seq: Remove arbitrary prioq insertion limit
Tao Cui <[email protected]>
RDMA/counter: Fix num_counters leak on bind_qp failure in alloc_and_bind()
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
Sicong Huang <[email protected]>
virt: acrn: Fix irqfd use-after-free during eventfd shutdown
Zqiang <[email protected]>
rcu-tasks: Fix possible boot-time tests failed for the call_rcu_tasks()
Shiji Yang <[email protected]>
pwm: mediatek: set mt7628 pwm45_fixup flag to false
Sascha Bischoff <[email protected]>
irqchip/gic-v5: Immediately exec priority drop following activate
Dave Penkler <[email protected]>
gpib: Suppress setting END on error from NI_USB dongle
Venkat Rao Bagalkote <[email protected]>
char/nvram: Remove redundant nvram_mutex
Thorsten Blum <[email protected]>
crypto: atmel-sha204a - remove sysfs group before hwrng
Herve Codina <[email protected]>
driver core: Avoid warning when removing a device while its supplier is unbinding
Stepan Ionichev <[email protected]>
tty: serial: 8250: protect against NULL uart->port.dev in register
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
Jérôme de Bretagne <[email protected]>
drm/panel-edp: Add LG LP129WT232166 panel
Nikhil Chatterjee <[email protected]>
HID: bpf: Add Huion Inspiroy Frego M button quirk
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
Thomas Lin <[email protected]>
spi: dw-mmio: Add ACPI ID LECA0002 for LECARC SoCs
Moshe Shemesh <[email protected]>
net/mlx5: Switch vport HCA cap helpers to kvzalloc
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
Matthew Leach <[email protected]>
PM: hibernate: call preallocate_image() after freeze prepare
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
Miri Korenblit <[email protected]>
wifi: mac80211: don't call ieee80211_handle_reconfig_failure when not needed
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
Gil Fine <[email protected]>
thunderbolt: Verify PCIe adapter in detect state before tunnel setup
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
YiPeng Chai <[email protected]>
drm/amdgpu: check and drop invalid bad page records
Ce Sun <[email protected]>
drm/amdgpu: avoid integer overflow in VA range check
Candice Li <[email protected]>
drm/amdgpu: Bound GPIO I2C table entry count from VBIOS
Gangliang Xie <[email protected]>
drm/amdgpu: add first record offset check
Candice Li <[email protected]>
drm/amdgpu: validate and share PSP fw_pri_buf copies via psp_copy_fw
Candice Li <[email protected]>
drm/amdgpu: cap ATOM command table nesting depth
Xiang Liu <[email protected]>
drm/amd/ras: reset CPER ring on corrupt entry size
Pierre Barre <[email protected]>
9p: use kvzalloc for readdir buffer
Brajesh Gupta <[email protected]>
drm/imagination: Populate FW common context ID before passing to the FW
Leonardo Bras <[email protected]>
arm64/daifflags: Make local_daif_*() helpers __always_inline
Osama Abdelkader <[email protected]>
arm64: panic from init_IRQ if IRQ handler stacks cannot be allocated
Pierre Barre <[email protected]>
9p: invalidate readdir buffer on seek
Brajesh Gupta <[email protected]>
drm/imagination: Don't timeout job if its fence has been signaled
Anna Maniscalco <[email protected]>
iommu: arm-smmu-qcom: Ensure smmu is powered up in set_ttbr0_cfg
Andrea Righi <[email protected]>
sched/fair: Reject misfit pulls onto busy SMT siblings on asym-capacity
Sunil Khatri <[email protected]>
drm/amdgpu: use atomic operation to achieve lockless serialization
Cássio Gabriel <[email protected]>
ALSA: usx2y: Drain pending US-428 pipe-4 output commands
Cássio Gabriel <[email protected]>
ALSA: ice1724: Fix blocking open for independent surround PCMs
Ezio Galeazzi <[email protected]>
ALSA: hda/ca0132: add QUIRK_GENERIC path for Gigabyte GA-Z170X-Gaming G1
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
Sunil Khatri <[email protected]>
drm/amdgpu/userq: pin mqd and fw object bo to avoid eviction
Joonwon Kang <[email protected]>
mailbox: Make mbox_send_message() return error code when tx fails
Christoph Hellwig <[email protected]>
iomap: don't make REQ_POLLED imply REQ_NOWAIT
Luca Leonardo Scorcia <[email protected]>
drm/mediatek: dsi: Add compatible for mt8167-dsi
Leo Yan <[email protected]>
coresight: Disable source helpers in coresight_disable_path()
Leo Yan <[email protected]>
coresight: perf: Retrieve path and source from event data
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
Alexander Koskovich <[email protected]>
clk: qcom: clk-rpmh: Make all VRMs optional
Lorenzo Bianconi <[email protected]>
net: airoha: Reserve RX headroom to avoid skb reallocation
Thorsten Blum <[email protected]>
crypto: atmel-ecc - add support for atecc608b
Bard Liao <[email protected]>
ASoC: Intel: sof_sdw: append dai type to dai link name unconditionally
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
Pengpeng Hou <[email protected]>
drivers/of: validate live-tree string properties before string use
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
Dave Carey <[email protected]>
HID: multitouch: Fix Yoga Book 9 14IAH10 touchscreen misclassification
Chen-Yu Tsai <[email protected]>
drm/panel-edp: Add AUO B133HAN06.6 and BOE NV133FHM-N4F V8.0
Javier Achirica <[email protected]>
bus: mhi: host: pci_generic: Round up nr_irqs to power of two
Arash Golgol <[email protected]>
media: video-i2c: use vb2_video_unregister_device on driver removal
Ricardo Ribalda <[email protected]>
media: chips-media: wave5: Add range checks for dec_output_info
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
Xiang Liu <[email protected]>
drm/amd/ras: Fix CPER ring debugfs read overflow
Chen-Yu Tsai <[email protected]>
pinctrl: mediatek: common-v1: bypass pinctrl GPIO layer in set GPIO direction
Chen-Yu Tsai <[email protected]>
pinctrl: mediatek: paris: bypass pinctrl GPIO layer in set GPIO direction
Tom Chung <[email protected]>
drm/amd/display: Fix CRC open failure during active rendering
Brodie Abrew <[email protected]>
platform/x86: sel3350-platform: Retain LED state on load and unload
Stepan Ionichev <[email protected]>
mmc: davinci: avoid NULL deref of host->data in IRQ handler
Manuel Lauss <[email protected]>
serial: 8250_port: recognize UPIO_AU
Pengpeng Hou <[email protected]>
genirq/proc: Size interrupt directory names for 10-digit interrupt numbers
Shawn Lin <[email protected]>
mmc: core: Add validation for host-provided max_segs
Albert Esteve <[email protected]>
drm/panel/tdo-tl070wsh30: Use refcounted allocation in place of devm_kzalloc()
Tzung-Bi Shih <[email protected]>
platform/chrome: Resolve kb_wake_angle visibility race
Yevgeny Kliteynik <[email protected]>
net/mlx5: HWS, Handle destroying table that has a miss table
Yevgeny Kliteynik <[email protected]>
net/mlx5: HWS, Check if device is down while polling for completion
Mark Pearson <[email protected]>
watchdog: lenovo_se10_wdt: Fix use-after-free and resource leak risk
Ranjani Vaidyanathan <[email protected]>
watchdog: imx7ulp_wdt: Keep WDOG running until A55 enters WFI on i.MX94
Mark Pearson <[email protected]>
watchdog: lenovo_se10_wdt: Add support for SE10 Gen 2 platform
Ethan Nelson-Moore <[email protected]>
ASoC: ti: omap3pandora: update board check to use DT compatible
Wesley Cheng <[email protected]>
phy: qcom: m31-eusb2: Make USB repeater optional
Terry Hsiao <[email protected]>
drm/panel-edp: Add BOE NT140WHM-N4T, BOE NT140WHM-T05, BOE NV140FHM-N40
Terry Hsiao <[email protected]>
drm/panel-edp: Add AUO B140XTN07.5, AUO B140HAK03.5, AUO B116XTN02.3, AUO B140XTK02.4, AUO B140HAN07.7
Moshe Shemesh <[email protected]>
net/mlx5: Relax capability check for eswitch query paths
Arnd Bergmann <[email protected]>
media: qcom: camss: avoid format string warning
Krzysztof Wilczyński <[email protected]>
PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store()
Ziyi Guo <[email protected]>
dlm: add usercopy whitelist to dlm_cb cache
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
Justin Lai <[email protected]>
rtase: Fix flow control configuration
Johannes Berg <[email protected]>
wifi: mac80211: explicitly disable FTM responder on AP stop
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
Paul Cercueil <[email protected]>
media: v4l2-common: Always register clock with device-specific name
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
David Heidelberg <[email protected]>
drm/panel: Enable GPIOLIB for panels which uses functions from it
Lijo Lazar <[email protected]>
drm/amdgpu: Prefer ROM BAR for default VGA device
Ovidiu Bunea <[email protected]>
drm/amd/display: Find link encoder for flexible DIG mapping cases
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()
Mika Westerberg <[email protected]>
thunderbolt: Don't disable lane adapter if XDomain lane bonding isn't possible
Gil Fine <[email protected]>
thunderbolt: Avoid reserved fields in path config space for USB4 routers
Miri Korenblit <[email protected]>
wifi: mac80211: avoid out-of-bounds access in monitor
Ken Lin <[email protected]>
media: platform: cros-ec: Add Kulnex and Moxoe to the match table
Vineeth Vijayan <[email protected]>
s390/cio: Purge based on the cdev's online status
Erni Sri Satya Vennela <[email protected]>
net: mana: hardening: Reject zero max_num_queues from MANA_QUERY_VPORT_CONFIG
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
Benjamin Marzinski <[email protected]>
dm-raid: only requeue bios when dm is suspending
Brandon Brnich <[email protected]>
media: chips-media: wave5: Release m2m_ctx after Instance Removed from List
Brandon Brnich <[email protected]>
media: chips-media: wave5: Fix Reports from Kernel Lock Validator
Pengpeng Hou <[email protected]>
soundwire: validate DT compatible before parsing it
Charles Keepax <[email protected]>
soundwire: intel_auxdevice: Add cs42l43b to wake_capable_list
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()
Shengjiu Wang <[email protected]>
ASoC: fsl-asoc-card: reduce WM8904 PLL ratio to meet frequency limit
Stanley Chu <[email protected]>
i3c: master: svc: Prevent IRQ storm from false SLVSTART on NPCM845
Jakub Kicinski <[email protected]>
psp: validate IPv4 header fields in psp_dev_rcv()
Dian-Syuan Yang <[email protected]>
wifi: rtw89: disable CSI STBC for VHT 160MHz
Dian-Syuan Yang <[email protected]>
wifi: rtw89: disable HTC field in AP mode
Chih-Kang Chang <[email protected]>
wifi: rtw89: suspend DIG when remain-on-channel
Panagiotis Petrakopoulos <[email protected]>
wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
Nuno Sá <[email protected]>
clk: clk-axi-clkgen: Add support versal timings
Johannes Berg <[email protected]>
wifi: mac80211: use chandef in ieee80211_get_sta_bw()
Johannes Berg <[email protected]>
wifi: mac80211: always allow transmitting null-data on TXQs
Johannes Berg <[email protected]>
wifi: nl80211: check link is beaconing for color change
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
Yuqi Xu <[email protected]>
wifi: cfg80211: reject duplicate wiphy cipher suite entries
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
Lad Prabhakar <[email protected]>
pinctrl: renesas: rzg2l: Add SR register cache for PM suspend/resume
Cássio Gabriel <[email protected]>
ALSA: usb-audio: Propagate write errors in generic mixer put callbacks
Lad Prabhakar <[email protected]>
pinctrl: renesas: rzg2l: Handle RZ/V2H(P) IOLH configuration in PM cache
Kevin Tung <[email protected]>
iio: adc: rtq6056: add i2c_device_id support
Douglas Anderson <[email protected]>
driver core: Replace dev->can_match with dev_can_match()
Zhanjun Dong <[email protected]>
drm/xe: Fix null pointer dereference in devcoredump cleanup
Jie Wang <[email protected]>
gfs2: move quota_init qc iterator increment
Arun T <[email protected]>
gpio: usbio: Add ACPI device-id for NVL platforms
Jie Wang <[email protected]>
gfs2: fix quota init duplicate scan
Linus Walleij <[email protected]>
wifi: ath9k: Obtain system GPIOS from descriptors
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
Biju Das <[email protected]>
drm: renesas: rzg2l_mipi_dsi: Fix deassert/assert of CMN_RSTB signal
Tommaso Merciai <[email protected]>
drm: rz-du: Ensure correct suspend/resume ordering with VSP
Michal Wajdeczko <[email protected]>
drm/xe/guc: Add support for NO_RESPONSE_BUSY in CTB
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
Terry Hsiao <[email protected]>
drm/panel-edp: Add CSW PNB601LS1-2 and LGD LP116WHA-SPB1
SJ Park <[email protected]>
mm/damon/core: avoid infinite kdamond_merge_regions() internal loop
Roman Li <[email protected]>
drm/amd/display: Set gpuvm min page size to 4K on dcn35/36
-------------
Diffstat:
Documentation/ABI/testing/sysfs-fs-erofs | 6 +- Documentation/hwmon/gpd-fan.rst | 2 +- Documentation/hwmon/hwmon-kernel-api.rst | 15 + Documentation/netlink/specs/rt-link.yaml | 2 + .../net_cachelines/inet_connection_sock.rst | 2 +- Documentation/scheduler/sched-ext.rst | 2 +- MAINTAINERS | 1 + Makefile | 4 +- arch/arm/boot/dts/nvidia/tegra30-asus-tf600t.dts | 6 +- arch/arm/boot/dts/nvidia/tegra30-lg-p880.dts | 13 + arch/arm/mach-ux500/cpu-db8500.c | 6 +- arch/arm/mm/fault.c | 12 +- arch/arm64/boot/dts/qcom/lemans.dtsi | 8 +- arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 18 +- arch/arm64/boot/dts/qcom/sar2130p.dtsi | 8 +- arch/arm64/boot/dts/qcom/sc7280.dtsi | 8 +- arch/arm64/boot/dts/qcom/sc8180x.dtsi | 16 +- arch/arm64/boot/dts/qcom/sdm845.dtsi | 64 +-- arch/arm64/boot/dts/qcom/sm6150.dtsi | 4 +- 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/qcom/sm8650.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8750.dtsi | 4 +- arch/arm64/include/asm/daifflags.h | 10 +- arch/arm64/include/asm/fixmap.h | 6 +- arch/arm64/include/asm/kprobes.h | 6 + arch/arm64/kernel/irq.c | 29 +- arch/arm64/kernel/machine_kexec.c | 3 +- arch/arm64/kernel/probes/kprobes.c | 23 +- arch/arm64/tools/sysreg | 4 +- arch/mips/kernel/cps-vec.S | 6 + arch/powerpc/kernel/eeh_driver.c | 2 - arch/powerpc/kernel/setup-common.c | 8 + arch/powerpc/kexec/file_load_64.c | 4 +- arch/powerpc/kvm/book3s_hv.c | 4 +- arch/powerpc/platforms/powernv/pci-ioda.c | 6 +- arch/powerpc/platforms/ps3/repository.c | 5 +- arch/powerpc/platforms/pseries/kexec.c | 13 +- arch/powerpc/platforms/pseries/rtas-fadump.c | 80 +-- arch/powerpc/platforms/pseries/rtas-fadump.h | 6 + arch/riscv/kernel/irq.c | 22 +- arch/riscv/kernel/process.c | 4 +- arch/s390/boot/ipl_parm.c | 26 +- arch/s390/boot/physmem_info.c | 2 +- arch/s390/crypto/aes_s390.c | 87 ++-- arch/s390/crypto/paes_s390.c | 19 +- arch/s390/crypto/phmac_s390.c | 36 +- arch/s390/kernel/diag/diag324.c | 3 +- arch/s390/kernel/ipl.c | 12 +- arch/s390/kernel/vtime.c | 25 +- 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/intel/core.c | 33 +- arch/x86/events/intel/ds.c | 184 ++++--- arch/x86/events/intel/uncore_discovery.c | 33 +- arch/x86/events/perf_event.h | 3 + arch/x86/include/asm/pgtable.h | 2 +- arch/x86/include/asm/topology.h | 3 + arch/x86/kernel/alternative.c | 111 ++-- arch/x86/kernel/amd_node.c | 25 +- arch/x86/kernel/cpu/microcode/amd.c | 12 +- arch/x86/kernel/itmt.c | 8 +- arch/x86/mm/pat/set_memory.c | 147 ++++-- block/blk-cgroup.c | 13 +- crypto/Makefile | 5 + drivers/accel/amdxdna/amdxdna_ctx.h | 2 +- drivers/accel/ivpu/ivpu_fw_log.c | 87 ++-- drivers/accel/ivpu/ivpu_gem.h | 14 +- drivers/accel/ivpu/ivpu_ipc.c | 7 +- drivers/accel/qaic/qaic_control.c | 46 +- drivers/acpi/acpi_apd.c | 7 + 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/acpi/scan.c | 1 + drivers/ata/ahci.c | 22 + drivers/ata/libata-core.c | 10 + drivers/ata/libata-pmp.c | 7 +- drivers/base/core.c | 13 +- drivers/base/dd.c | 10 +- drivers/block/sunvdc.c | 17 + drivers/bluetooth/btintel.c | 39 +- drivers/bluetooth/btintel_pcie.c | 22 +- drivers/bluetooth/btmtk.c | 11 + drivers/bluetooth/btmtk.h | 1 + drivers/bluetooth/btqcomsmd.c | 6 +- drivers/bluetooth/btrtl.c | 21 +- drivers/bluetooth/btusb.c | 45 +- drivers/bluetooth/hci_mrvl.c | 3 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 46 ++ drivers/bus/mhi/host/pci_generic.c | 3 +- drivers/char/ipmi/ipmi_si_platform.c | 5 +- drivers/char/nvram.c | 16 +- drivers/char/virtio_console.c | 21 +- drivers/clk/clk-axi-clkgen.c | 5 +- drivers/clk/keystone/sci-clk.c | 8 + drivers/clk/qcom/clk-rpmh.c | 8 +- drivers/clk/renesas/renesas-cpg-mssr.c | 3 + drivers/clk/samsung/clk-exynos850.c | 5 +- drivers/clk/samsung/clk-exynos990.c | 307 +++++------ drivers/clk/socfpga/clk-agilex.c | 2 + drivers/clk/ux500/clk-prcmu.c | 20 +- drivers/clk/ux500/u8500_of_clk.c | 2 +- drivers/cpufreq/cpufreq.c | 6 +- drivers/cpuidle/cpuidle-ux500.c | 6 +- drivers/crypto/atmel-ecc.c | 3 + drivers/crypto/atmel-sha204a.c | 3 +- drivers/crypto/ccp/sev-dev.c | 2 +- drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c | 25 +- drivers/crypto/omap-des.c | 26 +- drivers/cxl/core/region.c | 3 + drivers/dibs/dibs_main.c | 25 +- drivers/dma/altera-msgdma.c | 24 +- drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 11 +- drivers/edac/altera_edac.c | 115 +++-- drivers/edac/altera_edac.h | 1 + drivers/edac/amd64_edac.c | 2 + 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/stratix10-svc.c | 4 +- drivers/gpio/gpio-ath79.c | 57 +- drivers/gpio/gpio-dwapb.c | 17 + drivers/gpio/gpio-pisosr.c | 4 +- drivers/gpio/gpio-usbio.c | 1 + drivers/gpu/drm/adp/Kconfig | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 23 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 24 +- drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c | 18 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 + drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 26 +- drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 97 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 26 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 22 +- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 34 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 59 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 34 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 29 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 21 +- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c | 13 +- drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 13 +- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 21 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 11 + drivers/gpu/drm/amd/amdgpu/atom.c | 11 + drivers/gpu/drm/amd/amdgpu/atom.h | 3 + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 - drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 8 +- drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 8 +- drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 14 +- drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c | 14 +- drivers/gpu/drm/amd/amdgpu/psp_v14_0.c | 14 +- drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | 8 +- 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 +- .../gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 12 +- drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c | 8 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 7 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 3 + drivers/gpu/drm/amd/display/dc/core/dc.c | 22 +- .../amd/display/dc/dml2/dml2_translation_helper.c | 1 + .../gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c | 8 +- .../drm/amd/display/dc/hwss/dce110/dce110_hwseq.c | 12 +- .../amd/display/dc/link/accessories/link_dp_cts.c | 2 + drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 6 +- drivers/gpu/drm/amd/pm/amdgpu_pm.c | 8 +- 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/bridge/tc358768.c | 17 +- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 3 +- drivers/gpu/drm/display/drm_dp_helper.c | 2 + drivers/gpu/drm/drm_exec.c | 13 + drivers/gpu/drm/drm_gem.c | 10 + drivers/gpu/drm/drm_pagemap.c | 10 +- drivers/gpu/drm/drm_panic_qr.rs | 4 +- drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c | 21 +- drivers/gpu/drm/gud/gud_drv.c | 3 + drivers/gpu/drm/i915/i915_query.c | 4 +- drivers/gpu/drm/imagination/pvr_context.c | 32 +- drivers/gpu/drm/imagination/pvr_queue.c | 7 +- drivers/gpu/drm/logicvc/Kconfig | 1 - drivers/gpu/drm/mediatek/mtk_dsi.c | 1 + drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 1 + .../gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.c | 110 +++- drivers/gpu/drm/panel/Kconfig | 11 +- drivers/gpu/drm/panel/panel-edp.c | 13 + drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c | 2 + drivers/gpu/drm/panel/panel-simple.c | 28 + drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c | 14 +- drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c | 16 + drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h | 2 + drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 18 +- drivers/gpu/drm/rockchip/Kconfig | 3 + drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 7 +- drivers/gpu/drm/scheduler/tests/mock_scheduler.c | 11 + drivers/gpu/drm/tiny/cirrus-qemu.c | 3 + drivers/gpu/drm/ttm/ttm_bo.c | 53 +- drivers/gpu/drm/ttm/ttm_bo_util.c | 47 +- drivers/gpu/drm/ttm/ttm_bo_vm.c | 12 +- drivers/gpu/drm/ttm/ttm_pool.c | 37 +- drivers/gpu/drm/ttm/ttm_resource.c | 6 +- drivers/gpu/drm/vc4/vc4_hvs.c | 2 +- drivers/gpu/drm/vc4/vc4_v3d.c | 2 +- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +- drivers/gpu/drm/virtio/virtgpu_drv.h | 20 + drivers/gpu/drm/virtio/virtgpu_object.c | 2 +- drivers/gpu/drm/virtio/virtgpu_vq.c | 6 +- drivers/gpu/drm/xe/instructions/xe_gpu_commands.h | 1 + drivers/gpu/drm/xe/regs/xe_i2c_regs.h | 2 + drivers/gpu/drm/xe/xe_devcoredump.c | 6 +- drivers/gpu/drm/xe/xe_guc_ct.c | 38 +- drivers/gpu/drm/xe/xe_i2c.c | 61 ++- drivers/gpu/drm/xe/xe_i2c.h | 1 + drivers/gpu/drm/xe/xe_oa.c | 6 +- drivers/gpu/drm/xe/xe_ring_ops.c | 16 +- drivers/gpu/host1x/bus.c | 4 +- .../hid/bpf/progs/Huion__Inspiroy-Frego-M.bpf.c | 87 ++++ drivers/hid/hid-logitech-hidpp.c | 1 + drivers/hid/hid-multitouch.c | 147 +++++- 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/chipcap2.c | 9 +- drivers/hwmon/corsair-cpro.c | 24 +- drivers/hwmon/corsair-psu.c | 23 +- drivers/hwmon/dell-smm-hwmon.c | 8 + drivers/hwmon/gpio-fan.c | 13 +- drivers/hwmon/hwmon.c | 21 +- drivers/hwmon/ina2xx.c | 183 +++++-- drivers/hwmon/ltc4282.c | 2 +- drivers/hwmon/nct6694-hwmon.c | 35 +- drivers/hwmon/pmbus/lm25066.c | 60 +-- drivers/hwmon/pmbus/pmbus_core.c | 4 +- drivers/hwmon/raspberrypi-hwmon.c | 12 +- drivers/hwmon/sht4x.c | 44 +- drivers/hwtracing/coresight/coresight-core.c | 29 +- drivers/hwtracing/coresight/coresight-etm-perf.c | 116 +++-- drivers/hwtracing/coresight/coresight-platform.c | 12 +- drivers/hwtracing/coresight/coresight-priv.h | 1 + drivers/i2c/busses/i2c-designware-common.c | 2 + drivers/i2c/busses/i2c-designware-core.h | 85 +-- drivers/i2c/busses/i2c-designware-master.c | 2 + drivers/i2c/busses/i2c-designware-slave.c | 2 + 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/i3c/master/svc-i3c-master.c | 9 + drivers/iio/accel/mma8452.c | 19 +- drivers/iio/adc/qcom-spmi-iadc.c | 18 +- drivers/iio/adc/rtq6056.c | 10 +- drivers/iio/light/stk3310.c | 76 ++- drivers/infiniband/core/counters.c | 10 +- drivers/infiniband/core/umem.c | 18 +- drivers/infiniband/hw/bnxt_re/debugfs.c | 2 +- drivers/infiniband/hw/bnxt_re/main.c | 2 +- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 2 +- drivers/infiniband/hw/bnxt_re/qplib_res.c | 11 + drivers/infiniband/hw/bnxt_re/qplib_res.h | 2 +- drivers/infiniband/hw/irdma/hw.c | 7 +- drivers/infiniband/hw/irdma/main.h | 3 +- drivers/infiniband/hw/irdma/utils.c | 14 +- drivers/infiniband/hw/mlx5/cq.c | 3 +- drivers/infiniband/hw/mlx5/main.c | 11 + drivers/infiniband/hw/mlx5/mr.c | 4 + drivers/infiniband/hw/mlx5/odp.c | 3 + drivers/infiniband/ulp/rtrs/rtrs-srv.c | 12 +- drivers/iommu/amd/init.c | 31 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 4 +- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 9 + drivers/iommu/riscv/iommu.c | 7 +- drivers/iommu/riscv/iommu.h | 2 + drivers/iommu/rockchip-iommu.c | 8 + drivers/iommu/s390-iommu.c | 2 + drivers/irqchip/irq-gic-v3-its.c | 1 + drivers/irqchip/irq-gic-v5.c | 19 +- drivers/leds/leds-pca9532.c | 8 +- drivers/leds/leds-st1202.c | 10 +- drivers/leds/trigger/ledtrig-gpio.c | 3 +- drivers/leds/uleds.c | 11 +- drivers/mailbox/imx-mailbox.c | 64 ++- drivers/mailbox/mailbox.c | 6 +- drivers/md/dm-raid.c | 6 + drivers/md/md.h | 2 + drivers/md/raid10.c | 5 + drivers/md/raid5.c | 42 +- drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 4 + drivers/media/i2c/mt9p031.c | 6 +- drivers/media/i2c/video-i2c.c | 2 +- drivers/media/pci/dm1105/dm1105.c | 7 +- .../platform/chips-media/wave5/wave5-helper.c | 4 +- .../platform/chips-media/wave5/wave5-vpu-dec.c | 59 ++- .../platform/chips-media/wave5/wave5-vpuapi.c | 11 +- .../platform/chips-media/wave5/wave5-vpuconfig.h | 1 + .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 5 +- .../platform/microchip/microchip-sama7g5-isc.c | 7 +- drivers/media/platform/qcom/camss/camss-csiphy.c | 10 +- drivers/media/platform/qcom/camss/camss-vfe-340.c | 84 +-- .../platform/qcom/iris/iris_platform_common.h | 10 +- .../media/platform/qcom/iris/iris_platform_gen2.c | 8 +- .../platform/qcom/iris/iris_platform_sm8250.c | 2 +- drivers/media/platform/qcom/iris/iris_resources.c | 15 +- drivers/media/platform/qcom/venus/pm_helpers.c | 7 +- drivers/media/platform/renesas/rcar-csi2.c | 6 +- .../media/platform/samsung/s3c-camif/camif-core.c | 7 +- .../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/dvb-usb-v2/mxl111sf.c | 12 +- drivers/media/usb/em28xx/em28xx-video.c | 4 +- drivers/media/usb/gspca/jl2005bcd.c | 7 +- drivers/media/v4l2-core/v4l2-common.c | 13 +- drivers/media/v4l2-core/v4l2-ctrls-core.c | 32 ++ drivers/media/v4l2-core/v4l2-h264.c | 3 +- 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/misc/amd-sbi/rmi-core.c | 4 + drivers/mmc/core/queue.c | 8 +- drivers/mmc/host/davinci_mmc.c | 16 +- drivers/mmc/host/renesas_sdhi_internal_dmac.c | 2 + drivers/net/bonding/bond_alb.c | 32 +- drivers/net/bonding/bond_main.c | 4 +- drivers/net/dsa/bcm_sf2_cfp.c | 2 + drivers/net/dsa/lantiq/lantiq_gswip.h | 2 +- drivers/net/dsa/mt7530-mmio.c | 1 + drivers/net/dsa/mt7530.c | 70 ++- drivers/net/dsa/mt7530.h | 1 + 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/airoha/airoha_eth.c | 14 +- drivers/net/ethernet/airoha/airoha_eth.h | 4 +- drivers/net/ethernet/allwinner/sun4i-emac.c | 2 + drivers/net/ethernet/amd/au1000_eth.c | 3 +- drivers/net/ethernet/amd/pds_core/core.c | 4 + drivers/net/ethernet/amd/pds_core/fw.c | 10 +- drivers/net/ethernet/amd/pds_core/main.c | 10 +- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 3 +- drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c | 4 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 86 ++- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 2 +- drivers/net/ethernet/cadence/macb.h | 2 +- drivers/net/ethernet/cadence/macb_main.c | 54 +- drivers/net/ethernet/cadence/macb_ptp.c | 11 +- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 8 +- drivers/net/ethernet/cortina/gemini.c | 77 +-- .../net/ethernet/freescale/dpaa2/dpaa2-switch.c | 69 ++- .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 12 + drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c | 4 +- drivers/net/ethernet/ibm/emac/core.c | 8 +- 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_trace.h | 64 ++- drivers/net/ethernet/intel/ice/ice_txrx.c | 20 +- drivers/net/ethernet/intel/ice/ice_type.h | 2 +- drivers/net/ethernet/intel/idpf/idpf.h | 70 ++- drivers/net/ethernet/intel/idpf/idpf_dev.c | 16 +- drivers/net/ethernet/intel/idpf/idpf_lib.c | 78 +-- drivers/net/ethernet/intel/idpf/idpf_txrx.c | 327 +++++++----- drivers/net/ethernet/intel/idpf/idpf_txrx.h | 14 +- drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 16 +- drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 204 ++++---- drivers/net/ethernet/intel/idpf/idpf_virtchnl.h | 26 +- drivers/net/ethernet/marvell/octeontx2/af/mcs.c | 10 + drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 33 +- .../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 | 62 ++- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 +- drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 2 +- drivers/net/ethernet/mellanox/mlx5/core/devlink.h | 4 + drivers/net/ethernet/mellanox/mlx5/core/en/port.c | 15 +- drivers/net/ethernet/mellanox/mlx5/core/en/rqt.c | 27 +- .../net/ethernet/mellanox/mlx5/core/en/tc/sample.c | 7 +- drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 2 +- .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 1 + drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 52 +- drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 1 - drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 51 +- .../ethernet/mellanox/mlx5/core/esw/devlink_port.c | 74 +++ .../net/ethernet/mellanox/mlx5/core/esw/ipsec.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 14 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 1 + .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 14 +- .../mellanox/mlx5/core/eswitch_offloads_termtbl.c | 7 +- drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 19 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 3 +- .../ethernet/mellanox/mlx5/core/steering/hws/bwc.c | 12 + .../mellanox/mlx5/core/steering/hws/table.c | 3 + drivers/net/ethernet/mellanox/mlx5/core/vport.c | 8 +- drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 34 +- 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 +- .../net/ethernet/microchip/lan966x/lan966x_fdma.c | 20 + .../net/ethernet/microchip/sparx5/sparx5_psfp.c | 5 +- .../ethernet/microchip/sparx5/sparx5_tc_flower.c | 18 +- drivers/net/ethernet/microsoft/mana/mana_bpf.c | 1 + drivers/net/ethernet/microsoft/mana/mana_en.c | 30 +- .../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 19 +- drivers/net/ethernet/oa_tc6.c | 514 +++++++++++------- drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 13 +- drivers/net/ethernet/realtek/rtase/rtase.h | 4 + drivers/net/ethernet/realtek/rtase/rtase_main.c | 3 + drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 4 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 111 +++- drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c | 1 - drivers/net/ethernet/ti/cpsw_new.c | 4 +- drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c | 1 + drivers/net/gtp.c | 5 + drivers/net/ieee802154/cc2520.c | 5 +- drivers/net/ieee802154/mac802154_hwsim.c | 10 +- drivers/net/mctp/mctp-i3c.c | 9 +- drivers/net/net_failover.c | 2 +- drivers/net/netconsole.c | 2 + drivers/net/phy/dp83867.c | 3 + drivers/net/phy/dp83td510.c | 3 + drivers/net/phy/mediatek/mtk-ge.c | 29 ++ drivers/net/phy/motorcomm.c | 41 +- drivers/net/phy/sfp.c | 2 + drivers/net/ppp/ppp_async.c | 89 +--- drivers/net/ppp/ppp_synctty.c | 97 +--- drivers/net/usb/cx82310_eth.c | 1 + drivers/net/usb/hso.c | 2 +- drivers/net/usb/pegasus.c | 54 +- drivers/net/usb/pegasus.h | 3 - drivers/net/usb/qmi_wwan.c | 2 + drivers/net/vxlan/vxlan_core.c | 13 +- drivers/net/vxlan/vxlan_mdb.c | 8 + drivers/net/wireless/ath/ath11k/dp_rx.c | 50 +- drivers/net/wireless/ath/ath11k/mhi.c | 4 +- drivers/net/wireless/ath/ath11k/pci.c | 8 + drivers/net/wireless/ath/ath12k/mac.c | 87 +++- drivers/net/wireless/ath/ath9k/hif_usb.c | 12 +- drivers/net/wireless/ath/ath9k/hif_usb.h | 2 +- drivers/net/wireless/ath/ath9k/hw.c | 33 +- drivers/net/wireless/ath/ath9k/hw.h | 3 +- drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 4 +- drivers/net/wireless/intel/iwlwifi/cfg/rf-gf.c | 3 +- drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 5 + drivers/net/wireless/intel/iwlwifi/fw/api/power.h | 48 +- drivers/net/wireless/intel/iwlwifi/iwl-config.h | 4 +- drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 13 +- drivers/net/wireless/intel/iwlwifi/iwl-io.c | 18 +- drivers/net/wireless/intel/iwlwifi/iwl-io.h | 4 +- drivers/net/wireless/intel/iwlwifi/iwl-prph.h | 7 +- drivers/net/wireless/intel/iwlwifi/mld/ap.c | 25 +- drivers/net/wireless/intel/iwlwifi/mld/ap.h | 6 +- drivers/net/wireless/intel/iwlwifi/mld/d3.c | 7 +- drivers/net/wireless/intel/iwlwifi/mld/iface.c | 18 - drivers/net/wireless/intel/iwlwifi/mld/iface.h | 3 - drivers/net/wireless/intel/iwlwifi/mld/link.c | 17 +- drivers/net/wireless/intel/iwlwifi/mld/mac80211.c | 12 +- drivers/net/wireless/intel/iwlwifi/mld/mcc.c | 13 +- drivers/net/wireless/intel/iwlwifi/mld/mld.c | 10 +- drivers/net/wireless/intel/iwlwifi/mld/notif.c | 6 - drivers/net/wireless/intel/iwlwifi/mld/power.c | 177 ++++++- drivers/net/wireless/intel/iwlwifi/mvm/binding.c | 5 +- drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 19 +- drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 25 +- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 19 +- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 10 +- drivers/net/wireless/intel/iwlwifi/mvm/power.c | 14 +- drivers/net/wireless/intel/iwlwifi/mvm/rx.c | 5 + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 4 +- .../net/wireless/intel/iwlwifi/mvm/time-event.c | 8 +- drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 45 +- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 5 +- .../net/wireless/intel/iwlwifi/pcie/gen1_2/rx.c | 9 +- .../net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c | 28 +- drivers/net/wireless/marvell/libertas/tx.c | 7 + drivers/net/wireless/marvell/mwifiex/fw.h | 18 +- drivers/net/wireless/marvell/mwifiex/join.c | 8 +- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 33 +- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 9 + drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 5 + drivers/net/wireless/mediatek/mt76/mt7925/usb.c | 3 + drivers/net/wireless/mediatek/mt76/pci.c | 8 +- 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 | 3 + drivers/net/wireless/realtek/rtw89/core.c | 10 +- drivers/net/wireless/realtek/rtw89/mac_be.c | 4 + drivers/net/wireless/realtek/rtw89/pci.c | 16 +- drivers/net/wireless/realtek/rtw89/rtw8851bu.c | 3 + drivers/net/wireless/rsi/rsi_91x_hal.c | 8 + drivers/net/wireless/rsi/rsi_91x_mgmt.c | 6 +- drivers/net/wireless/virtual/mac80211_hwsim.c | 6 +- drivers/net/wwan/t7xx/t7xx_pci.c | 3 + drivers/nvme/host/core.c | 44 +- drivers/nvme/host/fc.c | 7 +- drivers/nvme/host/rdma.c | 18 +- drivers/nvme/host/tcp.c | 5 + drivers/nvme/target/rdma.c | 15 +- drivers/of/base.c | 43 +- drivers/of/dynamic.c | 20 +- drivers/of/property.c | 27 +- drivers/of/unittest.c | 32 ++ 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/controller/plda/pcie-plda-host.c | 2 + drivers/pci/pci-driver.c | 10 +- drivers/pci/pci-sysfs.c | 14 +- drivers/pci/pci.c | 24 +- drivers/pci/proc.c | 79 ++- drivers/pci/quirks.c | 5 + drivers/pci/switch/switchtec.c | 16 + drivers/perf/riscv_pmu_legacy.c | 5 +- drivers/perf/riscv_pmu_sbi.c | 98 ++-- drivers/phy/qualcomm/phy-qcom-m31-eusb2.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 +- drivers/pinctrl/mediatek/pinctrl-paris.c | 8 +- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 41 +- drivers/pinctrl/renesas/pinctrl-rzv2m.c | 4 +- drivers/platform/chrome/cros_ec_sensorhub.c | 6 +- drivers/platform/chrome/cros_ec_sysfs.c | 5 +- drivers/platform/x86/dell/dell-laptop.c | 9 + drivers/platform/x86/intel/hid.c | 7 + drivers/platform/x86/msi-ec.c | 1 + drivers/platform/x86/sel3350-platform.c | 136 +++-- drivers/powercap/intel_rapl_common.c | 3 +- drivers/ptp/ptp_ocp.c | 1 + drivers/pwm/pwm-mediatek.c | 2 +- drivers/ras/amd/atl/core.c | 1 - drivers/regulator/core.c | 163 +++--- drivers/regulator/da9121-regulator.c | 18 +- drivers/regulator/db8500-prcmu.c | 12 +- drivers/rtc/rtc-aspeed.c | 1 + drivers/rtc/rtc-bq32k.c | 9 + drivers/rtc/rtc-cmos.c | 13 +- drivers/rtc/rtc-mv.c | 23 + drivers/s390/char/zcore.c | 8 +- drivers/s390/cio/device.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/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_bsg.c | 47 +- drivers/scsi/qla2xxx/qla_def.h | 2 + drivers/scsi/qla2xxx/qla_fw.h | 4 + drivers/scsi/qla2xxx/qla_init.c | 14 + drivers/scsi/qla2xxx/qla_iocb.c | 23 +- drivers/scsi/qla2xxx/qla_isr.c | 33 +- drivers/scsi/qla2xxx/qla_mbx.c | 6 +- drivers/scsi/qla2xxx/qla_mid.c | 49 +- drivers/scsi/qla2xxx/qla_nvme.c | 10 + drivers/scsi/qla2xxx/qla_os.c | 15 + drivers/scsi/scsi_error.c | 2 +- drivers/soc/tegra/fuse/fuse-tegra.c | 14 +- drivers/soundwire/bus.c | 4 + drivers/soundwire/dmi-quirks.c | 35 ++ drivers/soundwire/intel.c | 31 +- drivers/soundwire/intel_ace2x.c | 39 +- drivers/soundwire/intel_auxdevice.c | 2 + drivers/soundwire/slave.c | 4 +- drivers/spi/spi-dw-dma.c | 3 +- drivers/spi/spi-dw-mmio.c | 7 +- drivers/spi/spi-dw.h | 1 + drivers/spi/spi-qcom-qspi.c | 44 +- drivers/spi/spi-tegra210-quad.c | 29 +- drivers/spi/spi-xilinx.c | 6 +- drivers/spi/spi.c | 9 +- drivers/staging/fbtft/fbtft-core.c | 9 +- drivers/staging/gpib/ni_usb/ni_usb_gpib.c | 2 +- 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/thermal/thermal_sysfs.c | 12 +- drivers/thunderbolt/icm.c | 10 + drivers/thunderbolt/path.c | 31 +- drivers/thunderbolt/switch.c | 6 + drivers/thunderbolt/tb.c | 9 +- drivers/thunderbolt/tb.h | 1 + drivers/thunderbolt/tb_regs.h | 16 + drivers/thunderbolt/tunnel.c | 35 ++ drivers/thunderbolt/usb4.c | 35 +- drivers/thunderbolt/xdomain.c | 49 +- drivers/tty/serial/8250/8250_core.c | 2 +- drivers/tty/serial/8250/8250_port.c | 9 + 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-dbgcap.c | 5 +- drivers/usb/host/xhci-mem.c | 6 - drivers/usb/host/xhci-ring.c | 9 +- drivers/usb/host/xhci.c | 4 + drivers/usb/host/xhci.h | 2 +- drivers/usb/serial/spcp8x5.c | 6 +- drivers/usb/usbip/vhci_sysfs.c | 52 +- drivers/vdpa/ifcvf/ifcvf_main.c | 14 +- drivers/vdpa/octeon_ep/octep_vdpa_main.c | 6 +- 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 | 88 +++- drivers/video/fbdev/core/fbcon.c | 9 +- drivers/video/fbdev/pm2fb.c | 1 + drivers/video/fbdev/vfb.c | 11 +- drivers/virt/acrn/irqfd.c | 75 +-- drivers/virtio/virtio.c | 2 +- drivers/virtio/virtio_input.c | 9 +- drivers/virtio/virtio_mmio.c | 16 +- drivers/virtio/virtio_pci_common.c | 4 +- drivers/watchdog/db8500_wdt.c | 22 +- drivers/watchdog/imx7ulp_wdt.c | 10 +- drivers/watchdog/lenovo_se10_wdt.c | 82 ++- drivers/watchdog/msc313e_wdt.c | 74 ++- 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/afs/addr_list.c | 5 +- fs/afs/dir_edit.c | 9 +- fs/afs/dir_search.c | 11 +- fs/afs/fs_probe.c | 1 + fs/afs/internal.h | 8 + fs/afs/server.c | 1 - fs/autofs/inode.c | 4 +- fs/befs/linuxvfs.c | 3 +- fs/bfs/inode.c | 3 +- fs/btrfs/disk-io.c | 11 +- fs/btrfs/inode.c | 6 +- fs/btrfs/ioctl.c | 11 +- fs/btrfs/raid-stripe-tree.c | 25 +- fs/btrfs/raid-stripe-tree.h | 1 + fs/btrfs/relocation.c | 47 +- fs/btrfs/scrub.c | 24 +- fs/btrfs/send.c | 2 +- fs/btrfs/super.c | 2 +- fs/btrfs/transaction.c | 13 +- fs/btrfs/tree-checker.c | 41 ++ fs/btrfs/volumes.c | 10 +- fs/btrfs/zoned.c | 13 +- fs/btrfs/zstd.c | 11 +- fs/cachefiles/namei.c | 1 - fs/cachefiles/xattr.c | 16 +- fs/configfs/dir.c | 25 +- fs/configfs/symlink.c | 24 +- fs/dlm/memory.c | 4 +- fs/erofs/data.c | 2 +- fs/erofs/decompressor.c | 55 +- fs/erofs/decompressor_lzma.c | 18 +- fs/erofs/internal.h | 6 +- fs/erofs/sysfs.c | 4 +- fs/erofs/zdata.c | 18 +- fs/exec.c | 22 +- fs/exfat/nls.c | 19 +- fs/f2fs/debug.c | 4 - fs/f2fs/f2fs.h | 29 +- fs/f2fs/file.c | 18 +- fs/f2fs/gc.c | 51 +- fs/f2fs/gc.h | 27 +- fs/f2fs/inline.c | 7 + fs/f2fs/recovery.c | 33 +- fs/f2fs/segment.c | 56 +- fs/f2fs/segment.h | 6 - fs/f2fs/super.c | 4 +- fs/f2fs/sysfs.c | 18 +- fs/freevxfs/vxfs_bmap.c | 3 +- fs/fuse/file.c | 3 +- fs/fuse/virtio_fs.c | 2 + fs/gfs2/bmap.c | 19 + fs/gfs2/bmap.h | 1 + fs/gfs2/file.c | 10 + fs/gfs2/quota.c | 36 +- 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/iomap/direct-io.c | 2 +- fs/isofs/inode.c | 3 +- fs/jfs/super.c | 3 +- fs/minix/inode.c | 3 +- fs/netfs/buffered_read.c | 2 +- fs/netfs/buffered_write.c | 2 +- fs/netfs/direct_write.c | 31 +- fs/netfs/internal.h | 12 + fs/netfs/read_retry.c | 7 +- fs/netfs/write_issue.c | 2 + fs/netfs/write_retry.c | 7 +- 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/omfs/inode.c | 6 +- fs/qnx4/inode.c | 3 +- fs/smb/client/cached_dir.c | 2 +- fs/smb/client/cifs_fs_sb.h | 8 +- fs/smb/client/cifs_ioctl.h | 2 +- fs/smb/client/cifs_unicode.c | 4 +- fs/smb/client/cifsacl.c | 105 ++-- fs/smb/client/cifsfs.c | 66 +-- fs/smb/client/cifsglob.h | 10 +- fs/smb/client/cifspdu.h | 8 - fs/smb/client/cifssmb.c | 8 + fs/smb/client/connect.c | 70 +-- fs/smb/client/dfs_cache.c | 2 +- fs/smb/client/dir.c | 16 +- fs/smb/client/file.c | 37 +- fs/smb/client/fs_context.c | 110 ++-- fs/smb/client/inode.c | 80 +-- fs/smb/client/ioctl.c | 2 +- fs/smb/client/link.c | 6 +- fs/smb/client/misc.c | 36 +- fs/smb/client/readdir.c | 25 +- fs/smb/client/reparse.c | 27 +- fs/smb/client/reparse.h | 4 +- fs/smb/client/smb1ops.c | 6 +- fs/smb/client/smb2file.c | 2 +- fs/smb/client/smb2misc.c | 4 +- fs/smb/client/smb2ops.c | 198 +++++-- fs/smb/client/smb2pdu.c | 4 +- fs/smb/client/smb2pdu.h | 24 - fs/smb/client/transport.c | 11 +- fs/smb/client/xattr.c | 6 +- fs/smb/common/smb2pdu.h | 29 ++ 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 | 166 ++++-- fs/smb/server/oplock.h | 2 +- fs/smb/server/server.c | 6 + fs/smb/server/smb2misc.c | 9 +- fs/smb/server/smb2pdu.c | 281 +++++----- fs/smb/server/smb2pdu.h | 20 - fs/smb/server/smbacl.c | 88 ++-- 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/super.c | 9 +- fs/ufs/cylinder.c | 10 + fs/ufs/dir.c | 2 +- fs/ufs/super.c | 17 +- fs/xfs/libxfs/xfs_btree_mem.c | 2 + fs/xfs/libxfs/xfs_btree_staging.c | 4 +- fs/xfs/libxfs/xfs_defer.c | 2 +- fs/xfs/libxfs/xfs_exchmaps.c | 10 + fs/xfs/libxfs/xfs_parent.c | 13 +- fs/xfs/libxfs/xfs_rtrefcount_btree.c | 7 +- fs/xfs/libxfs/xfs_rtrmap_btree.c | 6 +- fs/xfs/scrub/agheader.c | 7 + fs/xfs/scrub/agheader_repair.c | 39 +- fs/xfs/scrub/alloc_repair.c | 18 +- fs/xfs/scrub/bmap.c | 2 +- fs/xfs/scrub/dir_repair.c | 10 +- fs/xfs/scrub/dirtree.c | 31 +- fs/xfs/scrub/dirtree_repair.c | 2 + fs/xfs/scrub/findparent.c | 56 +- fs/xfs/scrub/ialloc.c | 4 + fs/xfs/scrub/metapath.c | 4 +- fs/xfs/scrub/quota_repair.c | 14 +- fs/xfs/scrub/quotacheck.c | 4 +- fs/xfs/scrub/reap.c | 6 +- fs/xfs/scrub/refcount.c | 8 +- fs/xfs/scrub/rgsuper.c | 6 +- fs/xfs/scrub/rtrefcount.c | 82 ++- fs/xfs/scrub/rtsummary_repair.c | 3 +- fs/xfs/scrub/scrub.c | 3 +- fs/xfs/scrub/stats.c | 61 ++- fs/xfs/scrub/stats.h | 4 +- fs/xfs/scrub/symlink_repair.c | 2 +- fs/xfs/scrub/trace.h | 35 +- fs/xfs/xfs_buf.c | 2 +- fs/xfs/xfs_exchmaps_item.c | 19 +- fs/xfs/xfs_exchrange.c | 12 +- include/linux/adi-axi-common.h | 2 + include/linux/bio.h | 14 - include/linux/bitfield.h | 2 +- .../bnxt/bnxt_ulp.h => include/linux/bnxt/ulp.h | 0 include/linux/bpf.h | 1 + include/linux/bpf_verifier.h | 12 +- include/linux/designware_i2c.h | 107 ++++ include/linux/device.h | 9 +- include/linux/firmware/intel/stratix10-smc.h | 18 +- include/linux/igmp.h | 7 +- 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/mmap_lock.h | 2 + include/linux/ns_common.h | 7 +- include/linux/nsproxy.h | 2 +- include/linux/oa_tc6.h | 50 ++ include/linux/perf/riscv_pmu.h | 2 +- include/linux/platform_data/cros_ec_proto.h | 2 + include/linux/rbtree_augmented.h | 35 +- include/linux/sched.h | 2 +- include/linux/sched/signal.h | 5 +- include/linux/skbuff.h | 5 + include/linux/switchtec.h | 1 + include/linux/thunderbolt.h | 2 + include/media/v4l2-hevc.h | 41 ++ include/net/cfg80211.h | 2 +- include/net/cfg802154.h | 1 + include/net/devlink.h | 10 +- include/net/if_inet6.h | 2 - include/net/inet_connection_sock.h | 20 +- include/net/ip.h | 3 +- include/net/ip6_route.h | 2 + include/net/ip_fib.h | 5 + include/net/netdev_lock.h | 6 + include/net/netfilter/nf_conntrack_timeout.h | 27 +- include/net/sch_generic.h | 2 +- include/net/sock.h | 9 +- include/net/tcp.h | 3 +- include/rdma/ib_umem.h | 15 +- include/sound/tas2781.h | 4 +- include/trace/events/cachefiles.h | 19 +- include/trace/events/icmp.h | 13 +- include/uapi/drm/amdgpu_drm.h | 2 +- include/uapi/linux/landlock.h | 37 +- include/uapi/sound/intel/avs/tokens.h | 6 + init/main.c | 36 +- io_uring/net.c | 51 +- io_uring/rw.c | 25 +- kernel/bpf/bpf_iter.c | 2 +- kernel/bpf/btf.c | 27 +- kernel/bpf/cgroup.c | 1 + kernel/bpf/disasm.c | 5 +- kernel/bpf/log.c | 4 +- kernel/bpf/stackmap.c | 2 + kernel/bpf/verifier.c | 245 +++++++-- kernel/cgroup/cgroup.c | 6 +- kernel/events/core.c | 7 +- kernel/events/ring_buffer.c | 9 +- kernel/exit.c | 11 +- kernel/fork.c | 2 +- kernel/irq/manage.c | 37 +- kernel/irq/proc.c | 7 +- kernel/locking/lockdep.c | 50 +- kernel/nsproxy.c | 2 +- kernel/power/hibernate.c | 46 +- kernel/printk/nbcon.c | 2 +- kernel/rcu/tasks.h | 3 +- kernel/reboot.c | 19 +- kernel/sched/core.c | 33 +- kernel/sched/deadline.c | 18 +- kernel/sched/fair.c | 29 +- kernel/sched/rt.c | 15 +- kernel/signal.c | 12 + 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 | 21 +- kernel/trace/trace.c | 68 ++- kernel/trace/trace.h | 125 ++--- kernel/trace/trace_eprobe.c | 19 +- kernel/trace/trace_event_perf.c | 12 +- kernel/trace/trace_events.c | 2 + kernel/trace/trace_events_hist.c | 209 +++----- kernel/trace/trace_events_trigger.c | 344 +++++------- kernel/trace/trace_events_user.c | 26 +- kernel/trace/trace_functions_graph.c | 3 + kernel/trace/trace_probe.c | 48 +- kernel/trace/trace_probe.h | 2 + kernel/workqueue.c | 3 + mm/damon/core.c | 13 +- net/9p/client.c | 2 +- net/appletalk/aarp.c | 5 + net/bluetooth/hci_core.c | 4 +- net/bluetooth/hci_sysfs.c | 17 +- net/bluetooth/iso.c | 31 +- net/bluetooth/l2cap_core.c | 38 +- net/bluetooth/msft.c | 2 +- net/bluetooth/rfcomm/core.c | 5 + net/bridge/br_arp_nd_proxy.c | 16 +- net/bridge/br_cfm.c | 11 +- net/bridge/br_device.c | 3 +- net/bridge/br_fdb.c | 7 +- net/bridge/br_input.c | 37 +- net/bridge/br_mrp.c | 13 +- net/bridge/br_multicast.c | 11 +- net/bridge/br_private.h | 26 +- net/core/dev.c | 89 ++-- net/core/drop_monitor.c | 18 +- net/core/filter.c | 17 +- net/core/gro_cells.c | 2 + net/core/rtnetlink.c | 7 +- net/core/skbuff.c | 7 + net/devlink/port.c | 2 + net/devlink/resource.c | 161 ++++-- net/dsa/tag_brcm.c | 1 + net/ethtool/cmis_cdb.c | 3 + net/ethtool/cmis_fw_update.c | 8 +- net/ethtool/module.c | 2 + net/hsr/hsr_forward.c | 2 +- net/hsr/hsr_netlink.c | 9 +- net/hsr/hsr_slave.c | 11 +- net/ieee802154/6lowpan/core.c | 2 +- net/ipv4/fib_rules.c | 4 +- net/ipv4/fib_trie.c | 4 + net/ipv4/fou_core.c | 2 +- net/ipv4/igmp.c | 210 +++++--- net/ipv4/inet_connection_sock.c | 12 +- net/ipv4/inet_diag.c | 8 +- net/ipv4/inet_fragment.c | 6 + net/ipv4/ip_output.c | 1 + net/ipv4/ip_tunnel_core.c | 6 + net/ipv4/ipmr.c | 3 +- net/ipv4/ipmr_base.c | 2 +- net/ipv4/nexthop.c | 2 +- net/ipv4/tcp.c | 14 +- net/ipv4/tcp_ipv4.c | 8 +- net/ipv4/tcp_offload.c | 22 +- net/ipv4/tcp_output.c | 4 +- net/ipv4/tcp_timer.c | 29 +- net/ipv4/udp.c | 4 +- net/ipv6/addrconf.c | 10 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/exthdrs.c | 4 +- net/ipv6/ip6_fib.c | 4 +- net/ipv6/ip6_flowlabel.c | 19 + net/ipv6/ip6_gre.c | 6 +- net/ipv6/ip6_output.c | 2 + net/ipv6/ip6mr.c | 2 +- net/ipv6/mcast.c | 116 +++-- net/ipv6/netfilter/ip6_tables.c | 5 + net/ipv6/route.c | 14 +- net/ipv6/tcp_ipv6.c | 8 +- net/ipv6/tcpv6_offload.c | 15 +- net/l2tp/l2tp_debugfs.c | 4 + net/l2tp/l2tp_ppp.c | 56 +- net/mac80211/cfg.c | 9 +- net/mac80211/chan.c | 10 +- net/mac80211/ibss.c | 9 +- net/mac80211/ieee80211_i.h | 9 + net/mac80211/link.c | 30 ++ net/mac80211/mlme.c | 97 ++-- net/mac80211/parse.c | 4 + net/mac80211/status.c | 9 +- net/mac80211/tx.c | 2 +- net/mac80211/util.c | 6 +- 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 | 7 +- net/mptcp/pm.c | 2 +- net/mptcp/pm_kernel.c | 8 + net/mptcp/pm_userspace.c | 18 +- net/mptcp/protocol.c | 55 +- net/mptcp/protocol.h | 5 +- net/mptcp/subflow.c | 1 - net/mptcp/syncookies.c | 5 +- net/netfilter/ipset/ip_set_hash_gen.h | 13 +- net/netfilter/ipvs/ip_vs_sync.c | 20 +- net/netfilter/nf_conntrack_core.c | 6 +- net/netfilter/nf_conntrack_expect.c | 3 +- net/netfilter/nf_conntrack_netlink.c | 13 +- net/netfilter/nf_conntrack_proto_tcp.c | 10 +- net/netfilter/nf_conntrack_sip.c | 2 +- net/netfilter/nf_conntrack_timeout.c | 27 +- net/netfilter/nf_log_syslog.c | 6 +- net/netfilter/nfnetlink_cttimeout.c | 114 ++-- net/netfilter/nfnetlink_log.c | 28 +- net/netfilter/nft_ct.c | 7 +- net/netfilter/xt_CT.c | 2 +- net/netlabel/netlabel_unlabeled.c | 2 +- net/netlink/genetlink.c | 21 +- net/openvswitch/flow.c | 4 +- net/openvswitch/flow_table.c | 4 +- net/packet/af_packet.c | 5 +- net/phonet/pn_dev.c | 30 +- net/psp/psp_main.c | 9 + net/qrtr/af_qrtr.c | 4 +- net/rds/af_rds.c | 63 ++- net/rds/connection.c | 102 +++- net/rds/ib_cm.c | 25 +- 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 | 46 +- net/sched/act_csum.c | 8 +- net/sched/cls_api.c | 8 +- net/sched/cls_route.c | 76 +-- net/sched/cls_u32.c | 32 +- net/sched/sch_api.c | 2 +- net/sched/sch_drr.c | 13 +- net/sched/sch_dualpi2.c | 10 +- net/sched/sch_ets.c | 12 +- net/sched/sch_fq_pie.c | 3 +- net/sched/sch_generic.c | 24 +- net/sched/sch_hhf.c | 8 +- net/sched/sch_pie.c | 2 +- net/sched/sch_sfq.c | 7 +- net/sctp/ipv6.c | 12 +- net/sctp/protocol.c | 10 +- net/sctp/sm_make_chunk.c | 14 +- net/sctp/sm_sideeffect.c | 11 +- net/sctp/sm_statefuns.c | 5 + net/sunrpc/xprtrdma/verbs.c | 21 +- net/tipc/link.c | 6 +- net/tipc/name_table.c | 32 +- net/tipc/socket.c | 4 +- net/tls/tls_main.c | 11 + net/tls/tls_sw.c | 12 + net/unix/af_unix.c | 12 +- net/unix/garbage.c | 1 + net/vmw_vsock/hyperv_transport.c | 2 +- net/vmw_vsock/vmci_transport.c | 2 +- net/wireless/core.c | 21 + net/wireless/mlme.c | 105 ++-- net/wireless/nl80211.c | 13 +- net/wireless/scan.c | 6 +- net/wireless/wext-sme.c | 9 + rust/bindings/lib.rs | 4 +- rust/uapi/lib.rs | 4 +- scripts/mksysmap | 4 +- scripts/mod/modpost.c | 11 +- scripts/sorttable.c | 2 +- security/apparmor/match.c | 22 +- security/integrity/digsig_asymmetric.c | 4 + security/integrity/ima/ima_appraise.c | 5 + security/landlock/access.h | 35 +- security/landlock/audit.c | 81 +-- security/landlock/audit.h | 3 +- security/landlock/domain.c | 44 +- security/landlock/domain.h | 3 +- security/landlock/fs.c | 353 ++++++------- security/landlock/net.c | 9 +- security/landlock/ruleset.c | 89 ++-- security/landlock/ruleset.h | 6 +- sound/core/pcm_native.c | 35 +- sound/core/seq/oss/seq_oss_rw.c | 3 +- sound/core/seq/seq_prioq.c | 14 +- sound/core/ump.c | 4 + sound/drivers/dummy.c | 2 +- sound/hda/codecs/Kconfig | 1 + sound/hda/codecs/ca0132.c | 111 +++- sound/hda/codecs/conexant.c | 12 + sound/hda/codecs/realtek/alc269.c | 40 ++ sound/hda/codecs/realtek/alc882.c | 22 + sound/hda/codecs/side-codecs/Kconfig | 2 + .../hda/codecs/side-codecs/cs35l41_hda_property.c | 2 + sound/hda/codecs/side-codecs/cs35l56_hda.c | 30 +- sound/hda/common/codec.c | 4 +- sound/hda/core/device.c | 5 +- sound/isa/es18xx.c | 4 + sound/pci/ctxfi/cthw20k2.c | 1 + sound/pci/ice1712/ice1724.c | 19 +- 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/mt6351.c | 1 + sound/soc/codecs/pcm3168a.c | 21 +- sound/soc/codecs/rk3328_codec.c | 54 +- sound/soc/codecs/rt5645.c | 4 + sound/soc/codecs/rt712-sdca.c | 11 + sound/soc/fsl/fsl-asoc-card.c | 8 +- sound/soc/fsl/fsl_micfil.c | 21 +- sound/soc/intel/atom/sst/sst_pci.c | 1 + sound/soc/intel/avs/core.c | 29 +- sound/soc/intel/avs/debugfs.c | 12 +- sound/soc/intel/avs/path.c | 24 +- sound/soc/intel/avs/pcm.c | 34 +- sound/soc/intel/avs/topology.c | 162 +++++- sound/soc/intel/avs/topology.h | 13 +- sound/soc/intel/boards/sof_sdw.c | 25 +- sound/soc/intel/catpt/ipc.c | 8 + sound/soc/intel/catpt/loader.c | 3 + sound/soc/intel/catpt/registers.h | 12 + sound/soc/mediatek/mt8365/mt8365-afe-pcm.c | 13 +- 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 | 189 +++---- sound/soc/ux500/ux500_msp_dai.h | 14 +- sound/soc/ux500/ux500_msp_i2s.c | 260 +++++++--- sound/soc/ux500/ux500_msp_i2s.h | 12 +- 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 | 7 +- sound/usb/usx2y/usbusx2y.c | 49 +- sound/usb/usx2y/usbusx2y.h | 4 +- tools/bootconfig/main.c | 13 +- tools/bpf/bpftool/Makefile | 6 +- 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 + .../xdrgen/templates/C/union/declaration/close.j2 | 4 + tools/perf/util/powerpc-vpadtl.c | 2 +- tools/perf/util/symbol.c | 11 +- tools/sched_ext/scx_central.bpf.c | 6 +- tools/sched_ext/scx_flatcg.bpf.c | 14 +- tools/sched_ext/scx_simple.bpf.c | 6 +- tools/testing/selftests/alsa/mixer-test.c | 4 +- tools/testing/selftests/bpf/progs/bpf_iter_tcp4.c | 8 +- tools/testing/selftests/bpf/progs/bpf_iter_tcp6.c | 8 +- tools/testing/selftests/bpf/progs/test_bpf_nf.c | 8 +- .../selftests/bpf/progs/test_global_func3.c | 18 +- tools/testing/selftests/cgroup/test_kmem.c | 2 +- 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 +- .../selftests/sched_ext/select_cpu_vtime.bpf.c | 6 +- 1202 files changed, 16489 insertions(+), 8703 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/1250 drm/amd/display: Set gpuvm min page size to 4K on dcn35/36
6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Roman Li <[email protected]>
commit 9ce3169430f1db035d491481086e2fae2552569c upstream.
[WHY]
Splash screen corruption on some 8K monitors.
[HOW]
Set GPUVM min page size to 4K for DCN35/36 to use the correct DML2 calculations, avoiding the corruption path observed during splash.
--- drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c +1 -0
@@ -299,6 +299,7 @@ void dml2_init_socbb_params(struct dml2_context *dml2, const struct dc *in_dc, s out->smn_latency_us =2 ; out->dispclk_dppclk_vco_speed_mhz =3600 ; out->pct_ideal_dram_bw_after_urgent_pixel_only =65.0 ; + out->gpuvm_min_page_size_kbytes =4 ;break ;case dml_project_dcn401:
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 2/1250 mm/damon/core: avoid infinite kdamond_merge_regions() internal loop
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: SJ Park <[email protected]>
commit 123e4619ab6c8ab1c4cb1d7a58311a2af13929cd upstream.
Patch series "mm/damon: unurgent fixes for infinite loop, NULL de-ref and races", v1.1.
Sashiko found a few issues in DAMON that could cause infinite loop, NULL dereference and monitoring results degradation. The first two sounds scary but the infinite loop happens only under unreasonable user setup. The NULL dereference is only in a unit test. Monitoring results degradation is trivial since it is only best-effort, and those happens from only unlikely races. Still those are bugs that better to fix if possible. Fix those.
This patch (of 6):
Due to online parameter update like events, the number of DAMON regions could be higher than the user-set upper limit. kdamond_merge_regions() repeats merge regions until the number meets the limit, while doubling the merge threshold up to the theoretical maximum threshold. It is tried only up to the theoretical maximum threshold because even the aggressive merging can fail from reducing the number of regions under the user-defined upper limit. For example, there could be many user-defined non-contiguous regions that cannot be merged.
The threshold based loop break condition is evaluated by comparing the threshold for the next merging try against the theoretical maximum threshold. If max_thres is larger than UINT_MAX / 2, doubling the threshold could make it overflow, and bypass the loop break condition. In the case, if the number of regions cannot be reduced under the upper limit like explained above, the loop will run infinitely.
Prevent the case by doing the break condition check before doubling the threshold. Also, prevent the threshold exceeding the maximum threshold, as it could overflow and apply the wrong merge threshold.
This issue is unlikely to occur in real world, since having the max_thres higher than UINT_MAX / 2 require unrealistically large aggregation intervals compared to the sampling interval. Also, it requires an unrealistically large number of uncontiguous regions setup. Nonetheless, the consequence is bad and the fix is simple.
The issue was discovered [1] by Sashiko.
--- mm/damon/core.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
mm/damon/core.c +9 -4
@@ -2415,7 +2415,7 @@ static void kdamond_merge_regions(struct damon_ctx *c, unsigned int threshold, max_thres = c->attrs.aggr_interval / (c->attrs.sample_interval ? c->attrs.sample_interval :1 ); - do { +while (true) { nr_regions =0 ;damon_for_each_target (t, c) { damon_merge_regions_of(t, threshold, sz_limit,
@@ -2423,9 +2423,14 @@ static void kdamond_merge_regions(struct damon_ctx *c, unsigned int threshold, nr_regions +=damon_nr_regions (t); } count_age = false; - threshold =max (1 , threshold *2 ); - }while (nr_regions > c->attrs.max_nr_regions && - threshold /2 < max_thres); +if (nr_regions <= c->attrs.max_nr_regions || + max_thres <= threshold) +break ; +if (threshold < max_thres /2 ) + threshold =max (1 , threshold *2 ); +else + threshold = max_thres; + } }/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 3/1250 drm/panel-edp: Add CSW PNB601LS1-2 and LGD LP116WHA-SPB1
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Terry Hsiao <[email protected]>
[ Upstream commit e88b5cc6d6e5b1ba257f00e5c186ba137e6e8bc3 ]
The raw EDIDs for each panel:
CSW
- PNB601LS1-2
00 ff ff ff ff ff ff 00 0e 77 0a 11 00 00 00 00 30 23 01 04 a5 1a 0e 78 03 a1 35 9b 5e 58 91 25 1c 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 09 1e 56 dc 50 00 28 30 30 20 36 00 00 90 10 00 00 1a 06 14 56 dc 50 00 28 30 30 20 36 00 00 90 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0c 3d ff 0c 3c 7d 0e 0b 17 7d 00 00 00 00 e8
LGD
- LP116WHA-SPB1
00 ff ff ff ff ff ff 00 30 e4 fe 07 01 01 00 00 00 24 01 04 a5 1a 0e 78 03 72 e5 9c 5e 5b 94 27 19 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 d5 21 56 a0 50 00 b2 30 30 20 f8 0c 00 90 10 00 00 1a 8e 16 56 a0 50 00 b2 30 30 20 f8 0c 00 90 10 00 00 1a 00 00 00 fd 00 28 3c 39 39 09 01 0a 20 20 20 20 20 20 00 00 00 02 00 0f 3d ff 0f 3c 7d 0d 0a 15 7d 00 00 00 01 da
70 20 79 02 00 25 00 09 57 52 01 57 52 01 28 3c 80 81 00 15 74 1a 00 00 03 01 28 3c 00 00 4a 5a 4a 5a 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ef 90
--- drivers/gpu/drm/panel/panel-edp.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/panel/panel-edp.c +2 -0
@@ -2036,6 +2036,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x1100 , &delay_200_500_e80_d50,"MNB601LS1-1" ),EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x1103 , &delay_200_500_e80_d50,"MNB601LS1-3" ),EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x1104 , &delay_200_500_e50_d100,"MNB601LS1-4" ), +EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x110a , &delay_200_500_e50,"PNB601LS1-2" ),EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x143f , &delay_200_500_e50,"MNE007QS3-6" ),EDP_PANEL_ENTRY ('C' ,'S' ,'W' ,0x1448 , &delay_200_500_e50,"MNE007QS3-7" ), EDP_PANEL_ENTRY('C', 'S', 'W', 0x1457, &delay_80_500_e80_p2e200, "MNE007QS3-8"),
@@ -2077,6 +2078,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('L' ,'G' ,'D' ,0x05af , &delay_200_500_e200_d200,"Unknown" ),EDP_PANEL_ENTRY ('L' ,'G' ,'D' ,0x05f1 , &delay_200_500_e200_d200,"Unknown" ),EDP_PANEL_ENTRY ('L' ,'G' ,'D' ,0x0778 , &delay_200_500_e200_d200,"134WT1" ), +EDP_PANEL_ENTRY ('L' ,'G' ,'D' ,0x07fe , &delay_200_500_e200_d200,"LP116WHA-SPB1" ),EDP_PANEL_ENTRY ('S' ,'H' ,'P' ,0x1511 , &delay_200_500_e50,"LQ140M1JW48" ), EDP_PANEL_ENTRY('S', 'H', 'P', 0x1523, &delay_80_500_e50, "LQ140M1JW46"),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 4/1250 drm/gem: Consider GEM object reclaimable if shrinking fails
In reply to Greg Kroah-Hartman6.18-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
@@ -1601,6 +1601,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 5/1250 bus: fsl-mc: wait for the MC firmware to complete its boot
In reply to Greg Kroah-Hartman6.18-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)
@@ -1007,6 +1014,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
@@ -1071,6 +1113,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 6/1250 drm/xe/guc: Add support for NO_RESPONSE_BUSY in CTB
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Wajdeczko <[email protected]>
[ Upstream commit 4d33314decfeac8b82d771a1bd083a59f4ac6fae ]
We only have support for G2H NO_RESPONSE_BUSY messages over MMIO, but it turned out that GuC also uses that type of messages in CTB.
The following error was recently observed on BMG after adding VGT policy updates to the GT restart sequence:
[] xe 0000:03:00.0: [drm] *ERROR* Tile0: GT1: G2H channel broken on read, type=3, reset required [] xe 0000:03:00.0: [drm] *ERROR* Tile0: GT1: CT dequeue failed: -95
...
[] xe 0000:03:00.0: [drm] *ERROR* Tile0: GT1: Timed out wait for G2H, fence 21965, action 5502, done no [] xe 0000:03:00.0: [drm] PF: Tile0: GT1: Failed to push 1 policy KLV (-ETIME)
[] xe 0000:03:00.0: [drm] Tile0: GT1: { key 0x8004 : no value } # engine_group_config
where type=3 was this unrecognized NO_RESPONSE_BUSY message.
Note that GuC might send the real RESPONSE message right after the BUSY message, so we must be prepared to update our g2h_fence data twice before sender actually wakes up and clears the flags.
--- drivers/gpu/drm/xe/xe_guc_ct.c | 38 ++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-)
drivers/gpu/drm/xe/xe_guc_ct.c +36 -2
@@ -82,13 +82,16 @@ static void ct_dead_capture(struct xe_guc_ct *ct, struct guc_ctb *ctb, u32 reasostruct g2h_fence {u32 *response_buffer;u32 seqno; +/* fields below this point are setup based on the response */ u32 response_data;u16 response_len;u16 error;u16 hint;u16 reason; +u32 counter;bool cancel;bool retry; +bool wait;bool fail;bool done; };
@@ -102,6 +105,11 @@ static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer) g2h_fence->seqno = ~0x0 ; } +static void g2h_fence_reinit (struct g2h_fence *g2h_fence) +{ +memset_after (g2h_fence,0 , seqno); +} +static void g2h_fence_cancel (struct g2h_fence *g2h_fence) { g2h_fence->cancel = true;
@@ -1134,6 +1142,7 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,/* READ_ONCEs pairs with WRITE_ONCEs in parse_g2h_response * and g2h_fence_cancel. */ +wait_again: ret =wait_event_timeout (ct->g2h_fence_wq,READ_ONCE (g2h_fence.done),HZ );if (!ret) {LNL_FLUSH_WORK (&ct->g2h_worker);
@@ -1159,6 +1168,14 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,return -ETIME ; } +if (g2h_fence.wait) { +xe_gt_dbg (gt,"H2G action %#x busy: counter %u\n" , + action[0 ], g2h_fence.counter); +/* we can't leave any response data if we want to wait again */ +g2h_fence_reinit (&g2h_fence); +mutex_unlock (&ct->lock); + goto wait_again; + }if (g2h_fence.retry) {xe_gt_dbg (gt,"H2G action %#x retrying: reason %#x\n" , action[0 ], g2h_fence.reason);
@@ -1354,7 +1371,12 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)return -EPROTO ; } - g2h_fence =xa_erase (&ct->fence_lookup, fence); +/* don't erase as we still expect a final response with the same fence */ +if (type ==GUC_HXG_TYPE_NO_RESPONSE_BUSY ) + g2h_fence =xa_load (&ct->fence_lookup, fence); +else + g2h_fence =xa_erase (&ct->fence_lookup, fence); +if (unlikely (!g2h_fence)) {/* Don't tear down channel, as send could've timed out */ /* CT_DEAD(ct, NULL, PARSE_G2H_UNKNOWN); */
@@ -1365,6 +1387,12 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)xe_gt_assert (gt, fence == g2h_fence->seqno); +/* +* reinit as we might have already process this g2h_fence before +* if we received a NO_RESPONSE_BUSY reply +*/ +g2h_fence_reinit (g2h_fence); +if (type ==GUC_HXG_TYPE_RESPONSE_FAILURE ) { g2h_fence->fail = true; g2h_fence->error =FIELD_GET (GUC_HXG_FAILURE_MSG_0_ERROR , hxg[0 ]);
@@ -1372,6 +1400,9 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len) }else if (type ==GUC_HXG_TYPE_NO_RESPONSE_RETRY ) { g2h_fence->retry = true; g2h_fence->reason =FIELD_GET (GUC_HXG_RETRY_MSG_0_REASON , hxg[0 ]); + }else if (type ==GUC_HXG_TYPE_NO_RESPONSE_BUSY ) { + g2h_fence->wait = true; + g2h_fence->counter =FIELD_GET (GUC_HXG_BUSY_MSG_0_COUNTER , hxg[0 ]); }else if (g2h_fence->response_buffer) { g2h_fence->response_len = hxg_len;memcpy (g2h_fence->response_buffer, hxg, hxg_len *sizeof (u32));
@@ -1379,7 +1410,9 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len) g2h_fence->response_data =FIELD_GET (GUC_HXG_RESPONSE_MSG_0_DATA0 , hxg[0 ]); } -g2h_release_space (ct,GUC_CTB_HXG_MSG_MAX_LEN ); +/* don't release any space if it was an intermediate message */ +if (!g2h_fence->wait) +g2h_release_space (ct,GUC_CTB_HXG_MSG_MAX_LEN );/* WRITE_ONCE pairs with READ_ONCEs in guc_ct_send_recv. */ WRITE_ONCE (g2h_fence->done, true);
@@ -1416,6 +1449,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)case GUC_HXG_TYPE_RESPONSE_SUCCESS :case GUC_HXG_TYPE_RESPONSE_FAILURE :case GUC_HXG_TYPE_NO_RESPONSE_RETRY : +case GUC_HXG_TYPE_NO_RESPONSE_BUSY : ret =parse_g2h_response (ct, msg, len);break ;default :
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 7/1250 drm: rz-du: Ensure correct suspend/resume ordering with VSP
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tommaso Merciai <[email protected]>
[ Upstream commit c94e765abb051df62b9f7c27116ef9307216c868 ]
The VSP serves as an interface to memory and a compositor to the DU. It therefore needs to be suspended after and resumed before the DU, to be properly stopped and restarted in a controlled fashion driven by the DU driver. This currently works by chance. Avoid relying on luck by enforcing the correct suspend/resume ordering with device links.
Based on similar work done by Laurent Pinchart for R-Car DU. commit db5be3a7d6bd ("drm: rcar-du: Ensure correct suspend/resume ordering with VSP")
--- drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c | 16 ++++++++++++++++ drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h | 2 ++ 2 files changed, 18 insertions(+)
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c +16 -0
@@ -20,6 +20,7 @@#include <drm/drm_vblank.h> #include <linux/bitops.h> +#include <linux/device.h> #include <linux/dma-mapping.h> #include <linux/of_platform.h> #include <linux/platform_device.h>
@@ -293,6 +294,9 @@ static void rzg2l_du_vsp_cleanup(struct drm_device *dev, void *res) {struct rzg2l_du_vsp *vsp = res; +if (vsp->link) +device_link_del (vsp->link); +put_device (vsp->vsp); }
@@ -317,6 +321,18 @@ int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,if (ret <0 )return ret; +/* +* Enforce suspend/resume ordering between the DU (consumer) and the +* VSP (supplier). The DU will be suspended before and resume after the +* VSP. +*/ + vsp->link =device_link_add (rcdu->dev, vsp->vsp,DL_FLAG_STATELESS ); +if (!vsp->link) { +dev_err (rcdu->dev,"Failed to create device link to VSP %s\n" , +dev_name (vsp->vsp)); +return -EINVAL ; + } + ret =vsp1_du_init (vsp->vsp);if (ret <0 )return ret;
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h +2 -0
@@ -15,6 +15,7 @@#include <linux/scatterlist.h> struct device ; +struct device_link ;struct drm_framebuffer ;struct rzg2l_du_device ;struct rzg2l_du_format_info ;
@@ -29,6 +30,7 @@ struct rzg2l_du_vsp_plane {struct rzg2l_du_vsp {unsigned int index;struct device *vsp; +struct device_link *link;struct rzg2l_du_device *dev; };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 8/1250 drm: renesas: rzg2l_mipi_dsi: Fix deassert/assert of CMN_RSTB signal
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Biju Das <[email protected]>
[ Upstream commit 8065890f5cda3f8a503f3b9d326aab0e9cca39e7 ]
The RZ/G2L hardware manual (Rev. 1.50, May 2025), Section 34.4.2.1, requires deasserting the CMN_RSTB signal after setting the Link registers. Move the reset_control_deassert() call from rzg2l_mipi_dsi_dphy_init() to rzg2l_mipi_dsi_startup(), placing it after the Link register writes. This reset signal is optional for RZ/V2H SoCs, so add a NULL check. Drop the unused ret variable from rzg2l_mipi_dsi_dphy_init().
The CMN_RSTB signal is not required for reading PHY registers in the probe. Move reset_control_assert() from rzg2l_mipi_dsi_dphy_exit() to rzg2l_mipi_dsi_stop(), placing it before the dphy_exit() call. Since this reset signal is optional for RZ/V2H, the call is a no-op on that SoC.
--- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +9 -9
@@ -228,7 +228,6 @@ static int rzg2l_mipi_dsi_dphy_init(struct rzg2l_mipi_dsi *dsi,u32 dphytim1;u32 dphytim2;u32 dphytim3; -int ret;/* All DSI global operation timings are set with recommended setting */ for (i =0 ; i <ARRAY_SIZE (rzg2l_mipi_dsi_global_timings); ++i) {
@@ -268,12 +267,6 @@ static int rzg2l_mipi_dsi_dphy_init(struct rzg2l_mipi_dsi *dsi,rzg2l_mipi_dsi_phy_write (dsi,DSIDPHYTIM2 , dphytim2);rzg2l_mipi_dsi_phy_write (dsi,DSIDPHYTIM3 , dphytim3); - ret =reset_control_deassert (dsi->rstc); -if (ret <0 ) -return ret; - -fsleep (1000 ); -return 0 ; }
@@ -285,8 +278,6 @@ static void rzg2l_mipi_dsi_dphy_exit(struct rzg2l_mipi_dsi *dsi) dphyctrl0 &= ~(DSIDPHYCTRL0_EN_LDO1200 |DSIDPHYCTRL0_EN_BGR );rzg2l_mipi_dsi_phy_write (dsi,DSIDPHYCTRL0 , dphyctrl0); - -reset_control_assert (dsi->rstc); } static int rzg2l_dphy_conf_clks(struct rzg2l_mipi_dsi *dsi, unsigned long mode_freq,
@@ -393,6 +384,14 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, dsisetr |=FIELD_PREP (DSISETR_MRPSZ ,RZG2L_DCS_BUF_SIZE );rzg2l_mipi_dsi_link_write (dsi,DSISETR , dsisetr); +if (dsi->rstc) { + ret =reset_control_deassert (dsi->rstc); +if (ret <0 ) + goto err_phy; + +fsleep (1000 ); + } +return 0 ; err_phy:
@@ -404,6 +403,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi,static void rzg2l_mipi_dsi_stop (struct rzg2l_mipi_dsi *dsi) { +reset_control_assert (dsi->rstc); dsi->info->dphy_exit (dsi);pm_runtime_put (dsi->dev); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 9/1250 drm/amd/display: Fix DPMS using partially updated pipe context
In reply to Greg Kroah-Hartman6.18-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
@@ -3690,27 +3690,34 @@ static void commit_planes_do_stream_update(struct dc *dc,resource_build_test_pattern_params (&context->res_ctx, pipe_ctx); } +// 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 10/1250 drm/panel: jadard-jd9365da-h3: set prepare_prev_first
In reply to Greg Kroah-Hartman6.18-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
@@ -1157,6 +1157,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 11/1250 drm/amd/pm: Check SMUv13.0.6/12 metrics integrity
In reply to Greg Kroah-Hartman6.18-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
@@ -768,6 +768,10 @@ int smu_v13_0_6_get_metrics_table(struct smu_context *smu, void *metrics_table,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 12/1250 wifi: ath9k: Obtain system GPIOS from descriptors
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Walleij <[email protected]>
[ Upstream commit 34a5329beee86a22a446e27eb37f06caa63479ca ]
The ath9k has an odd use of system-wide GPIOs: if the chip does not have internal GPIO capability, it will try to obtain a GPIO line from the system GPIO controller:
if (BIT(gpio) & ah->caps.gpio_mask)
ath9k_hw_gpio_cfg_wmac(...);
else if (AR_SREV_SOC(ah))
ath9k_hw_gpio_cfg_soc(ah, gpio, out, label);Where ath9k_hw_gpio_cfg_soc() will attempt to issue gpio_request_one() passing the local GPIO number of the controller (0..31) to gpio_request_one().
This is somewhat peculiar and possibly even dangerous: there is nowadays no guarantee of the numbering of these system-wide GPIOs, and assuming that GPIO 0..31 as used by ath9k would correspond to GPIOs 0..31 on the system as a whole seems a bit wild.
Register all 32 GPIOs at index 0..31 directly in the ATH79K GPIO driver and associate with the NULL device (making them widely available) if and only if we are probing ATH79K wifi from the AHB bus (used for SoCs). We obtain these offsets from the NULL device if necessary.
These GPIOs should ideally be defined in the device tree instead, but we have no control over that for the legacy code path.
Testcompiled with the ath79 defconfig.
--- drivers/gpio/gpio-ath79.c | 57 ++++++++++++++++++++++++++++- drivers/net/wireless/ath/ath9k/hw.c | 33 +++++++++++------ drivers/net/wireless/ath/ath9k/hw.h | 3 +- 3 files changed, 80 insertions(+), 13 deletions(-)
drivers/gpio/gpio-ath79.c +56 -1
@@ -11,6 +11,7 @@#include <linux/device.h> #include <linux/gpio/driver.h> #include <linux/gpio/generic.h> +#include <linux/gpio/machine.h> /* For WLAN GPIOs */ #include <linux/interrupt.h> #include <linux/irq.h> #include <linux/mod_devicetable.h>
@@ -214,6 +215,56 @@ static const struct of_device_id ath79_gpio_of_match[] = { };MODULE_DEVICE_TABLE (of, ath79_gpio_of_match); +#if IS_ENABLED (CONFIG_ATH9K_AHB ) +/* +* This registers all of the ath79k GPIOs as descriptors to be picked +* directly from the ATH79K wifi driver if the two are jitted together +* in the same SoC. +*/ +#define ATH79K_WIFI_DESCS 32 +static int ath79_gpio_register_wifi_descriptors (struct device *dev, +const char *label) +{ +struct gpiod_lookup_table *lookup; +int i; + +/* Create a gpiod lookup using gpiochip-local offsets + 1 for NULL */ + lookup =devm_kzalloc (dev, +struct_size (lookup, table,ATH79K_WIFI_DESCS +1 ), +GFP_KERNEL ); +if (!lookup) +return -ENOMEM ; + +/* +* Ugly system-wide lookup for the NULL device: we know this +* is already NULL but explicitly assign it here for people to +* know what is going on. (Yes this is an ugly legacy hack, live +* with it.) +*/ + lookup->dev_id =NULL ; + +for (i =0 ; i <ATH79K_WIFI_DESCS ; i++) { + lookup->table[i] = +/* +* Set the HW offset on the chip and the lookup +* index to the same value, so looking up index 0 +* will get HW offset 0, index 1 HW offset 1 etc. +*/ +GPIO_LOOKUP_IDX (label, i,"ath9k" , i,GPIO_ACTIVE_HIGH ); + } + +gpiod_add_lookup_table (lookup); + +return 0 ; +} +#else +static int ath79_gpio_register_wifi_descriptors (struct device *dev, +const char *label) +{ +return 0 ; +} +#endif +static int ath79_gpio_probe (struct platform_device *pdev) {struct gpio_generic_chip_config config;
@@ -276,7 +327,11 @@ static int ath79_gpio_probe(struct platform_device *pdev) girq->handler = handle_simple_irq; } -return devm_gpiochip_add_data (dev, &ctrl->chip.gc, ctrl); + err =devm_gpiochip_add_data (dev, &ctrl->chip.gc, ctrl); +if (err) +return err; + +return ath79_gpio_register_wifi_descriptors (dev, ctrl->chip.gc.label); }static struct platform_driver ath79_gpio_driver = {
drivers/net/wireless/ath/ath9k/hw.c +22 -11
@@ -21,7 +21,7 @@#include <linux/time.h> #include <linux/bitops.h> #include <linux/etherdevice.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/unaligned.h> #include "hw.h"
@@ -2719,19 +2719,28 @@ static void ath9k_hw_gpio_cfg_output_mux(struct ath_hw *ah, u32 gpio, u32 type)static void ath9k_hw_gpio_cfg_soc (struct ath_hw *ah,u32 gpio,bool out,const char *label) { +enum gpiod_flags flags = out ?GPIOD_OUT_LOW :GPIOD_IN ; +struct gpio_desc *gpiod;int err; -if (ah->caps.gpio_requested &BIT (gpio)) +if (ah->gpiods[gpio])return ; - err =devm_gpio_request_one (ah->dev, gpio, out ?GPIOF_OUT_INIT_LOW :GPIOF_IN , label); +/* +* Obtains a system specific GPIO descriptor from another GPIO controller. +* Ideally this should come from the device tree, this is a legacy code +* path. +*/ + gpiod =gpiod_get_index (NULL ,"ath9k" , gpio, flags); + err =PTR_ERR_OR_ZERO (gpiod);if (err) {ath_err (ath9k_hw_common (ah),"request GPIO%d failed:%d\n" , gpio, err);return ; } - ah->caps.gpio_requested |=BIT (gpio); +gpiod_set_consumer_name (gpiod, label); + ah->gpiods[gpio] = gpiod; } static void ath9k_hw_gpio_cfg_wmac(struct ath_hw *ah, u32 gpio, bool out,
@@ -2791,10 +2800,12 @@ void ath9k_hw_gpio_free(struct ath_hw *ah, u32 gpio)if (!AR_SREV_SOC (ah))return ; -WARN_ON (gpio >= ah->caps.num_gpio_pins); +if (ah->gpiods[gpio]) { +gpiod_put (ah->gpiods[gpio]); + ah->gpiods[gpio] =NULL ; + } -if (ah->caps.gpio_requested &BIT (gpio)) - ah->caps.gpio_requested &= ~BIT (gpio); +WARN_ON (gpio >= ah->caps.num_gpio_pins); }EXPORT_SYMBOL (ath9k_hw_gpio_free);
@@ -2822,8 +2833,8 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio) val =REG_READ (ah,AR_GPIO_IN (ah)) &BIT (gpio); else val =MS_REG_READ (AR , gpio); - }else if (BIT (gpio) & ah->caps.gpio_requested) { - val =gpio_get_value (gpio) &BIT (gpio); + }else if (ah->gpiods[gpio]) { + val =gpiod_get_value (ah->gpiods[gpio]); }else {WARN_ON (1 ); }
@@ -2846,8 +2857,8 @@ void ath9k_hw_set_gpio(struct ath_hw *ah, u32 gpio, u32 val) AR7010_GPIO_OUT :AR_GPIO_IN_OUT (ah);REG_RMW (ah, out_addr, val << gpio,BIT (gpio)); - }else if (BIT (gpio) & ah->caps.gpio_requested) { -gpio_set_value (gpio, val); + }else if (ah->gpiods[gpio]) { +gpiod_set_value (ah->gpiods[gpio], val); }else {WARN_ON (1 ); }
drivers/net/wireless/ath/ath9k/hw.h +2 -1
@@ -19,6 +19,7 @@#include <linux/if_ether.h> #include <linux/delay.h> +#include <linux/gpio/consumer.h> #include <linux/io.h> #include <linux/firmware.h>
@@ -302,7 +303,6 @@ struct ath9k_hw_capabilities {u8 max_rxchains;u8 num_gpio_pins;u32 gpio_mask; -u32 gpio_requested;u8 rx_hp_qdepth;u8 rx_lp_qdepth;u8 rx_status_len;
@@ -783,6 +783,7 @@ struct ath_hw {struct ath9k_hw_capabilities caps;struct ath9k_channel channels[ATH9K_NUM_CHANNELS ];struct ath9k_channel *curchan; +struct gpio_desc *gpiods[32 ];union {struct ar5416_eeprom_def def;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 13/1250 gfs2: fix quota init duplicate scan
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jie Wang <[email protected]>
[ Upstream commit b99a1f0f18ee50445907f55069e88bcfd8947383 ]
gfs2_quota_init() checks for duplicate quota_change IDs while holding qd_lock and the quota hash bucket bitlock. That path used gfs2_qd_search_bucket(), which takes a lockref reference via lockref_get_not_dead().
On PREEMPT_RT this may sleep, which is not allowed under the bucket bitlock, triggering "sleeping function called from invalid context".
Use a no-ref bucket lookup in this path, then continue duplicate handling without taking a lockref there.
Refactor gfs2_qd_search_bucket() to build on top of the no-ref helper so lookup traversal stays in one place.
This patch fixes a bug reported by syzbot.
--- fs/gfs2/quota.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-)
fs/gfs2/quota.c +23 -10
@@ -254,9 +254,13 @@ static struct gfs2_quota_data *qd_alloc(unsigned hash, struct gfs2_sbd *sdp, strreturn NULL ; } -static struct gfs2_quota_data *gfs2_qd_search_bucket (unsigned int hash, -const struct gfs2_sbd *sdp, -struct kqid qid) +/* +* Lookup variant for callers which already hold qd_lock + bucket lock. +*/ +static struct gfs2_quota_data * +gfs2_qd_search_bucket_noref (unsigned int hash, +const struct gfs2_sbd *sdp, +struct kqid qid) {struct gfs2_quota_data *qd;struct hlist_bl_node *h;
@@ -264,12 +268,22 @@ static struct gfs2_quota_data *gfs2_qd_search_bucket(unsigned int hash,hlist_bl_for_each_entry_rcu (qd, h, &qd_hash_table[hash], qd_hlist) {if (!qid_eq (qd->qd_id, qid))continue ; -if (qd->qd_sbd != sdp) -continue ; -if (lockref_get_not_dead (&qd->qd_lockref)) { -list_lru_del_obj (&gfs2_qd_lru, &qd->qd_lru); +if (qd->qd_sbd == sdp)return qd; - } + } + +return NULL ; +} + +static struct gfs2_quota_data * +gfs2_qd_search_bucket (unsigned int hash,const struct gfs2_sbd *sdp,struct kqid qid) +{ +struct gfs2_quota_data *qd; + + qd =gfs2_qd_search_bucket_noref (hash, sdp, qid); +if (qd &&lockref_get_not_dead (&qd->qd_lockref)) { +list_lru_del_obj (&gfs2_qd_lru, &qd->qd_lru); +return qd; }return NULL ;
@@ -1458,7 +1472,7 @@ int gfs2_quota_init(struct gfs2_sbd *sdp)spin_lock (&qd_lock);spin_lock_bucket (hash); - old_qd =gfs2_qd_search_bucket (hash, sdp, qc_id); + old_qd =gfs2_qd_search_bucket_noref (hash, sdp, qc_id);if (old_qd) {fs_err (sdp,"Corruption found in quota_change%u" "file: duplicate identifier in "
@@ -1467,7 +1481,6 @@ int gfs2_quota_init(struct gfs2_sbd *sdp)spin_unlock_bucket (hash);spin_unlock (&qd_lock); -qd_put (old_qd);gfs2_glock_put (qd->qd_gl);kmem_cache_free (gfs2_quotad_cachep, qd);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 14/1250 gpio: usbio: Add ACPI device-id for NVL platforms
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arun T <[email protected]>
[ Upstream commit 5ccb19ae1cb3620a76254db5c60121d092d9a0f6 ]
Add device IDs of Nova Lake into gpio-usbio support list.
--- drivers/gpio/gpio-usbio.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpio/gpio-usbio.c +1 -0
@@ -31,6 +31,7 @@ static const struct acpi_device_id usbio_gpio_acpi_hids[] = { { "INTC10B5" }, /* LNL */ { "INTC10D1" }, /* MTL-CVF */ { "INTC10E2" }, /* PTL */ + { "INTC1116" }, /* NVL */ { } };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 15/1250 gfs2: move quota_init qc iterator increment
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jie Wang <[email protected]>
[ Upstream commit 942202677f8f2ee448a6a2feb06aeeaf520342e3 ]
Move qc++ from the loop body into the for-loop increment expression in gfs2_quota_init().
This keeps iterator progression explicit and avoids mixing pointer advance with duplicate-slot handling in the loop body.
--- fs/gfs2/quota.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/gfs2/quota.c +1 -2
@@ -1447,7 +1447,7 @@ int gfs2_quota_init(struct gfs2_sbd *sdp) qc = (struct gfs2_quota_change *)(bh->b_data +sizeof (struct gfs2_meta_header ));for (y =0 ; y < sdp->sd_qc_per_block && slot < sdp->sd_quota_slots; - y++, slot++) { + y++, slot++, qc++) {struct gfs2_quota_data *old_qd, *qd;s64 qc_change =be64_to_cpu (qc->qc_change);u32 qc_flags =be32_to_cpu (qc->qc_flags);
@@ -1455,7 +1455,6 @@ int gfs2_quota_init(struct gfs2_sbd *sdp) USRQUOTA :GRPQUOTA ;struct kqid qc_id =make_kqid (&init_user_ns, qtype,be32_to_cpu (qc->qc_id)); - qc++;if (!qc_change)continue ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 16/1250 drm/xe: Fix null pointer dereference in devcoredump cleanup
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhanjun Dong <[email protected]>
[ Upstream commit 12ef528d78adc8ea4e7e3db594f3bcac327e79fa ]
In xe_devcoredump_snapshot_free(), ss->gt may be NULL when the snapshot was never fully populated (e.g., when cleanup is triggered without a prior capture). Guard the xe_guc_capture_put_matched_nodes() call with IS_ERR_OR_NULL() to prevent a null dereference.
In xe_devcoredump_free(), the deferred work is only queued when a coredump is captured, so guard cancel_work_sync() with a check on coredump->captured.
--- drivers/gpu/drm/xe/xe_devcoredump.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/gpu/drm/xe/xe_devcoredump.c +4 -2
@@ -150,7 +150,8 @@ static void xe_devcoredump_snapshot_free(struct xe_devcoredump_snapshot *ss)xe_guc_ct_snapshot_free (ss->guc.ct); ss->guc.ct =NULL ; -xe_guc_capture_put_matched_nodes (&ss->gt->uc.guc); +if (!IS_ERR_OR_NULL (ss->gt)) +xe_guc_capture_put_matched_nodes (&ss->gt->uc.guc); ss->matched_node =NULL ;xe_guc_exec_queue_snapshot_free (ss->ge);
@@ -255,7 +256,8 @@ static void xe_devcoredump_free(void *data)if (!data || !coredump_to_xe (coredump))return ; -cancel_work_sync (&coredump->snapshot.work); +if (coredump->captured) +cancel_work_sync (&coredump->snapshot.work);mutex_lock (&coredump->lock);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 17/1250 driver core: Replace dev->can_match with dev_can_match()
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Douglas Anderson <[email protected]>
[ Upstream commit f2648bb3150a71241a2254aa4ac10680d7f9fb16 ]
In C, bitfields are not necessarily safe to modify from multiple threads without locking. Switch "can_match" over to the "flags" field so modifications are safe.
--- drivers/base/core.c | 10 +++++----- drivers/base/dd.c | 10 +++++----- include/linux/device.h | 9 +++++---- 3 files changed, 15 insertions(+), 14 deletions(-)
drivers/base/core.c +5 -5
@@ -1084,7 +1084,7 @@ static void device_links_missing_supplier(struct device *dev)static bool dev_is_best_effort (struct device *dev) { -return (fw_devlink_best_effort && dev->can_match) || +return (fw_devlink_best_effort &&dev_can_match (dev)) || (dev->fwnode &&fwnode_test_flag (dev->fwnode,FWNODE_FLAG_BEST_EFFORT )); }
@@ -1152,7 +1152,7 @@ int device_links_check_suppliers(struct device *dev)if (dev_is_best_effort (dev) &&device_link_test (link,DL_FLAG_INFERRED ) && - !link->supplier->can_match) { + !dev_can_match (link->supplier)) { ret = -EAGAIN ;continue ; }
@@ -1435,7 +1435,7 @@ void device_links_driver_bound(struct device *dev) }else if (dev_is_best_effort (dev) &&device_link_test (link,DL_FLAG_INFERRED ) && link->status !=DL_STATE_CONSUMER_PROBE && - !link->supplier->can_match) { + !dev_can_match (link->supplier)) {/* * When dev_is_best_effort() is true, we ignore device * links to suppliers that don't have a driver. If the
@@ -1823,7 +1823,7 @@ static int fw_devlink_no_driver(struct device *dev, void *data) {struct device_link *link =to_devlink (dev); -if (!link->supplier->can_match) +if (!dev_can_match (link->supplier))fw_devlink_relax_link (link);return 0 ;
@@ -3775,7 +3775,7 @@ int device_add(struct device *dev)* match with any driver, don't block its consumers from probing in * case the consumer device is able to operate without this supplier. */ -if (dev->fwnode && fw_devlink_drv_reg_done && !dev->can_match) +if (dev->fwnode && fw_devlink_drv_reg_done && !dev_can_match (dev))fw_devlink_unblock_consumers (dev);if (parent)
drivers/base/dd.c +5 -5
@@ -132,7 +132,7 @@ static DECLARE_WORK(deferred_probe_work, deferred_probe_work_func);void driver_deferred_probe_add (struct device *dev) { -if (!dev->can_match) +if (!dev_can_match (dev))return ;mutex_lock (&deferred_probe_mutex);
@@ -858,14 +858,14 @@ static int __driver_probe_device(const struct device_driver *drv, struct devicereturn dev_err_probe (dev, -EPROBE_DEFER ,"Device not ready to probe\n" );/* -* Set can_match = true after calling dev_ready_to_probe(), so +* Call dev_set_can_match() after calling dev_ready_to_probe(), so * driver_deferred_probe_add() won't actually add the device to the * deferred probe list when dev_ready_to_probe() returns false. * * When dev_ready_to_probe() returns false, it means that device_add() * will do another probe() attempt for us. */ - dev->can_match = true; +dev_set_can_match (dev);dev_dbg (dev,"bus: '%s': %s: matched device with driver %s\n" , drv->bus->name, __func__, drv->name);
@@ -1011,7 +1011,7 @@ static int __device_attach_driver(struct device_driver *drv, void *_data)return 0 ; }else if (ret == -EPROBE_DEFER ) {dev_dbg (dev,"Device match requests probe deferral\n" ); - dev->can_match = true; +dev_set_can_match (dev);driver_deferred_probe_add (dev);/* * Device can't match with a driver right now, so don't attempt
@@ -1255,7 +1255,7 @@ static int __driver_attach(struct device *dev, void *data)return 0 ; }else if (ret == -EPROBE_DEFER ) {dev_dbg (dev,"Device match requests probe deferral\n" ); - dev->can_match = true; +dev_set_can_match (dev);driver_deferred_probe_add (dev);/* * Driver could not match with device, but may match with
include/linux/device.h +5 -4
@@ -485,10 +485,14 @@ struct device_physical_location {* * @DEV_FLAG_READY_TO_PROBE: If set then device_add() has finished enough * initialization that probe could be called. +* @DEV_FLAG_CAN_MATCH: The device has matched with a driver at least once or it +* is in a bus (like AMBA) which can't check for matching drivers +* until other devices probe successfully. * @DEV_FLAG_COUNT: Number of defined struct_device_flags. */ enum struct_device_flags {DEV_FLAG_READY_TO_PROBE =0 , +DEV_FLAG_CAN_MATCH =1 ,DEV_FLAG_COUNT };
@@ -575,9 +579,6 @@ enum struct_device_flags {* @state_synced: The hardware state of this device has been synced to match * the software state of this device by calling the driver/bus * sync_state() callback. -* @can_match: The device has matched with a driver at least once or it is in -* a bus (like AMBA) which can't check for matching drivers until -* other devices probe successfully. * @dma_coherent: this particular device is dma coherent, even if the * architecture supports non-coherent devices. * @dma_ops_bypass: If set to %true then the dma_ops are bypassed for the
@@ -696,7 +697,6 @@ struct device { bool offline:1; bool of_node_reused:1; bool state_synced:1; - bool can_match:1;#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE ) || \ defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU ) || \ defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL )
@@ -738,6 +738,7 @@ static inline bool dev_test_and_set_##accessor_name(struct device *dev) \ }__create_dev_flag_accessors (ready_to_probe,DEV_FLAG_READY_TO_PROBE ); +__create_dev_flag_accessors (can_match,DEV_FLAG_CAN_MATCH );#undef __create_dev_flag_accessors
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 18/1250 iio: adc: rtq6056: add i2c_device_id support
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kevin Tung <[email protected]>
[ Upstream commit ce80292ead5bb42b50a6b63e44fd95c0edf9d334 ]
Add i2c_device_id table to support legacy I2C instantiation. Update probe to use i2c_get_match_data() so device data can be retrieved consistently for both OF and legacy I2C instantiation.
--- drivers/iio/adc/rtq6056.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/iio/adc/rtq6056.c +9 -1
@@ -728,7 +728,7 @@ static int rtq6056_probe(struct i2c_client *i2c)if (!i2c_check_functionality (i2c->adapter,I2C_FUNC_SMBUS_WORD_DATA ))return -EOPNOTSUPP ; - devdata =device_get_match_data (dev); + devdata =i2c_get_match_data (i2c);if (!devdata)return dev_err_probe (dev, -EINVAL ,"Invalid dev data\n" );
@@ -871,6 +871,13 @@ static const struct richtek_dev_data rtq6059_devdata = { .set_average = rtq6059_adc_set_average, }; +static const struct i2c_device_id rtq6056_id[] = { + {"rtq6056" , (kernel_ulong_t)&rtq6056_devdata }, + {"rtq6059" , (kernel_ulong_t)&rtq6059_devdata }, + { } +}; +MODULE_DEVICE_TABLE (i2c, rtq6056_id); +static const struct of_device_id rtq6056_device_match[] = { { .compatible ="richtek,rtq6056" , .data = &rtq6056_devdata }, { .compatible ="richtek,rtq6059" , .data = &rtq6059_devdata },
@@ -885,6 +892,7 @@ static struct i2c_driver rtq6056_driver = { .pm = pm_ptr(&rtq6056_pm_ops), }, .probe = rtq6056_probe, + .id_table = rtq6056_id, };module_i2c_driver (rtq6056_driver);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 19/1250 pinctrl: renesas: rzg2l: Handle RZ/V2H(P) IOLH configuration in PM cache
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lad Prabhakar <[email protected]>
[ Upstream commit d0fc9f8eb2ce55eb00dbfdc0f19c844df5aee5b8 ]
Include PIN_CFG_IOLH_RZV2H in the IOLH capability checks when saving and restoring pin configuration registers.
On RZ/V2H(P), RZ/V2N, and RZ/G3E, the IOLH configuration is defined by the PIN_CFG_IOLH_RZV2H capability. The previous implementation did not account for this, causing the IOLH registers to be skipped during PM save/restore.
--- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/pinctrl/renesas/pinctrl-rzg2l.c +2 -1
@@ -3094,7 +3094,8 @@ static void rzg2l_pinctrl_pm_setup_dedicated_regs(struct rzg2l_pinctrl *pctrl, b }/* And apply them in a single shot. */ - has_iolh = !!(caps & (PIN_CFG_IOLH_A |PIN_CFG_IOLH_B |PIN_CFG_IOLH_C )); + has_iolh = !!(caps & (PIN_CFG_IOLH_A |PIN_CFG_IOLH_B | +PIN_CFG_IOLH_C |PIN_CFG_IOLH_RZV2H )); has_ien = !!(caps &PIN_CFG_IEN ); pincnt =hweight8 (FIELD_GET (RZG2L_SINGLE_PIN_BITS_MASK , cfg));
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 20/1250 ALSA: usb-audio: Propagate write errors in generic mixer put callbacks
In reply to Greg Kroah-Hartman6.18-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
@@ -1469,7 +1469,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++;
@@ -1484,7 +1487,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 ; } }
@@ -2350,7 +2355,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 ;
@@ -2714,7 +2721,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 21/1250 pinctrl: renesas: rzg2l: Add SR register cache for PM suspend/resume
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lad Prabhakar <[email protected]>
[ Upstream commit 29df31ae3e8a0152dd8e8c2376816aad2f233473 ]
Include the SR (Slew Rate) register in the PM suspend/resume register cache.
--- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 38 +++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-)
drivers/pinctrl/renesas/pinctrl-rzg2l.c +35 -3
@@ -322,6 +322,7 @@ struct rzg2l_pinctrl_pin_settings {* @pupd: PUPD registers cache * @ien: IEN registers cache * @smt: SMT registers cache +* @sr: SR registers cache * @sd_ch: SD_CH registers cache * @eth_poc: ET_POC registers cache * @oen: Output Enable register cache
@@ -336,6 +337,7 @@ struct rzg2l_pinctrl_reg_cache {u32 *ien[2 ];u32 *pupd[2 ];u32 *smt[2 ]; +u32 *sr[2 ];u8 sd_ch[2 ];u8 eth_poc[2 ];u8 oen;
@@ -2746,6 +2748,11 @@ static int rzg2l_pinctrl_reg_cache_alloc(struct rzg2l_pinctrl *pctrl)if (!cache->smt[i])return -ENOMEM ; + cache->sr[i] =devm_kcalloc (pctrl->dev, nports,sizeof (*cache->sr[i]), +GFP_KERNEL ); +if (!cache->sr[i]) +return -ENOMEM ; +/* Allocate dedicated cache. */ dedicated_cache->iolh[i] = devm_kcalloc(pctrl->dev, n_dedicated_pins, sizeof(*dedicated_cache->iolh[i]),
@@ -2758,6 +2765,12 @@ static int rzg2l_pinctrl_reg_cache_alloc(struct rzg2l_pinctrl *pctrl) GFP_KERNEL);if (!dedicated_cache->ien[i])return -ENOMEM ; + + dedicated_cache->sr[i] =devm_kcalloc (pctrl->dev, n_dedicated_pins, +sizeof (*dedicated_cache->sr[i]), +GFP_KERNEL ); +if (!dedicated_cache->sr[i]) +return -ENOMEM ; } pctrl->cache = cache;
@@ -2989,7 +3002,7 @@ static void rzg2l_pinctrl_pm_setup_regs(struct rzg2l_pinctrl *pctrl, bool suspenstruct rzg2l_pinctrl_reg_cache *cache = pctrl->cache;for (u32 port =0 ; port < nports; port++) { -bool has_iolh, has_ien, has_pupd, has_smt; +bool has_iolh, has_ien, has_pupd, has_smt, has_sr;u32 off, caps;u8 pincnt;u64 cfg;
@@ -3010,6 +3023,7 @@ static void rzg2l_pinctrl_pm_setup_regs(struct rzg2l_pinctrl *pctrl, bool suspen has_ien = !!(caps &PIN_CFG_IEN ); has_pupd = !!(caps &PIN_CFG_PUPD ); has_smt = !!(caps &PIN_CFG_SMT ); + has_sr = !!(caps &PIN_CFG_SR );if (suspend)RZG2L_PCTRL_REG_ACCESS32 (suspend, pctrl->base +PFC (off), cache->pfc[port]);
@@ -3061,6 +3075,15 @@ static void rzg2l_pinctrl_pm_setup_regs(struct rzg2l_pinctrl *pctrl, bool suspen cache->smt[1][port]); } } + +if (has_sr) { +RZG2L_PCTRL_REG_ACCESS32 (suspend, pctrl->base +SR (off), + cache->sr[0 ][port]); +if (pincnt >=4 ) { +RZG2L_PCTRL_REG_ACCESS32 (suspend, pctrl->base +SR (off) +4 , + cache->sr[1 ][port]); + } + } } }
@@ -3075,7 +3098,7 @@ static void rzg2l_pinctrl_pm_setup_dedicated_regs(struct rzg2l_pinctrl *pctrl, b* port offset are close together. */ for (i =0 , caps =0 ; i < pctrl->data->n_dedicated_pins; i++) { -bool has_iolh, has_ien; +bool has_iolh, has_ien, has_sr;u32 off, next_off =0 ;u64 cfg, next_cfg;u8 pincnt;
@@ -3097,6 +3120,7 @@ static void rzg2l_pinctrl_pm_setup_dedicated_regs(struct rzg2l_pinctrl *pctrl, b has_iolh = !!(caps & (PIN_CFG_IOLH_A |PIN_CFG_IOLH_B |PIN_CFG_IOLH_C |PIN_CFG_IOLH_RZV2H )); has_ien = !!(caps &PIN_CFG_IEN ); + has_sr = !!(caps &PIN_CFG_SR ); pincnt =hweight8 (FIELD_GET (RZG2L_SINGLE_PIN_BITS_MASK , cfg));if (has_iolh) {
@@ -3107,7 +3131,10 @@ static void rzg2l_pinctrl_pm_setup_dedicated_regs(struct rzg2l_pinctrl *pctrl, bRZG2L_PCTRL_REG_ACCESS32 (suspend, pctrl->base +IEN (off), cache->ien[0 ][i]); } - +if (has_sr) { +RZG2L_PCTRL_REG_ACCESS32 (suspend, pctrl->base +SR (off), + cache->sr[0 ][i]); + }if (pincnt >=4 ) {if (has_iolh) { RZG2L_PCTRL_REG_ACCESS32(suspend,
@@ -3119,6 +3146,11 @@ static void rzg2l_pinctrl_pm_setup_dedicated_regs(struct rzg2l_pinctrl *pctrl, b pctrl->base +IEN (off) +4 , cache->ien[1][i]); } +if (has_sr) { +RZG2L_PCTRL_REG_ACCESS32 (suspend, + pctrl->base +SR (off) +4 , + cache->sr[1 ][i]); + } } caps =0 ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 22/1250 ima: return error early if file xattr cannot be changed
In reply to Greg Kroah-Hartman6.18-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, struct ima_iint_cache *iint)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 23/1250 usb: gadget: udc: skip pullup() if already connected
In reply to Greg Kroah-Hartman6.18-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 24/1250 tee: optee: Allow MT_NORMAL_TAGGED shared memory
In reply to Greg Kroah-Hartman6.18-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
@@ -602,7 +602,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 25/1250 tools/nolibc: avoid call to wcslen() in _start_c() inserted by clang
In reply to Greg Kroah-Hartman6.18-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
@@ -71,7 +71,7 @@ void _start_c(long *sp)/* find _auxv */ for (auxv = (void *)envp; *auxv++;) - ; + __asm__("" ); _auxv = auxv;for (ctor_func = __preinit_array_start; ctor_func < __preinit_array_end; ctor_func++)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 26/1250 PCI: Stop setting cached power state to unknown on unbind
In reply to Greg Kroah-Hartman6.18-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
@@ -871,7 +864,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) {
@@ -923,6 +916,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 27/1250 wifi: cfg80211: reject duplicate wiphy cipher suite entries
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuqi Xu <[email protected]>
[ Upstream commit 7187d145d9042b037e4f10538f70cf95e380219f ]
Duplicate entries in wiphy->cipher_suites do not describe any additional capability, but cfg80211 currently accepts them and leaves individual consumers to deal with them.
One such consumer is the WEXT compatibility code, which appends a WEP key length for each WEP cipher entry it sees. Repeated WEP entries can therefore overflow the fixed iw_range::encoding_size array returned by SIOCGIWRANGE.
Reject duplicate cipher suite entries in wiphy_register() instead. This keeps the cipher suite invariant in one place and makes malformed wiphy descriptions fail early with -EINVAL, rather than relying on a single cfg80211 user to handle duplicates correctly.
--- net/wireless/core.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
net/wireless/core.c +21 -0
@@ -781,6 +781,24 @@ static int wiphy_verify_combinations(struct wiphy *wiphy)return ret; } +static bool wiphy_cipher_suites_valid (const struct wiphy *wiphy) +{ +int i, j; + +if (wiphy->n_cipher_suites && !wiphy->cipher_suites) +return false; + +for (i =0 ; i < wiphy->n_cipher_suites; i++) { +for (j =0 ; j < i; j++) { +if (wiphy->cipher_suites[i] == + wiphy->cipher_suites[j]) +return false; + } + } + +return true; +} +int wiphy_register (struct wiphy *wiphy) {struct cfg80211_registered_device *rdev =wiphy_to_rdev (wiphy);
@@ -913,6 +931,9 @@ int wiphy_register(struct wiphy *wiphy)if (res)return res; +if (!wiphy_cipher_suites_valid (wiphy)) +return -EINVAL ; +/* sanity check supported bands/channels */ for (band =0 ; band <NUM_NL80211_BANDS ; band++) {const struct ieee80211_sband_iftype_data *iftd;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 28/1250 hfsplus: fix issue of direct writes beyond end-of-file
In reply to Greg Kroah-Hartman6.18-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
@@ -125,9 +125,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);/*
@@ -135,8 +170,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 29/1250 wifi: nl80211: reject beacons with bad HE operation
In reply to Greg Kroah-Hartman6.18-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
@@ -6505,8 +6505,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 30/1250 wifi: nl80211: check link is beaconing for color change
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
[ Upstream commit 55308cee9c2196f39cd1ce8ee6c1fed9e12a00d4 ]
When trying to do a color change, validate that the link is beaconing first, to avoid calling the driver with an invalid link.
--- net/wireless/nl80211.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
net/wireless/nl80211.c +4 -1
@@ -17783,6 +17783,10 @@ static int nl80211_color_change(struct sk_buff *skb, struct genl_info *info) params.count =nla_get_u8 (info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT ]); params.color =nla_get_u8 (info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR ]); + params.link_id =nl80211_link_id (info->attrs); +if (!wdev->links[params.link_id].ap.beacon_interval) +return -EINVAL ; + err =nl80211_parse_beacon (rdev, info->attrs, ¶ms.beacon_next, info->extack);if (err)
@@ -17856,7 +17860,6 @@ static int nl80211_color_change(struct sk_buff *skb, struct genl_info *info) goto out; } - params.link_id =nl80211_link_id (info->attrs); err =rdev_color_change (rdev, dev, ¶ms); out:
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 31/1250 wifi: mac80211: always allow transmitting null-data on TXQs
In reply to Greg Kroah-Hartman6.18-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
@@ -3895,7 +3895,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 32/1250 wifi: mac80211: use chandef in ieee80211_get_sta_bw()
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
[ Upstream commit e36b3322a41b7de0168ad6a37bdd1219cfe35077 ]
When getting the bandwidth the station uses in order to calculate the channel context's min_def, pass the channel for the link to _ieee80211_sta_cap_rx_bw() instead of using ieee80211_sta_cap_rx_bw(), which looks it up.
--- net/mac80211/chan.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
net/mac80211/chan.c +5 -5
@@ -235,11 +235,12 @@ ieee80211_find_reservation_chanctx(struct ieee80211_local *local,return NULL ; } -static enum nl80211_chan_width ieee80211_get_sta_bw (struct sta_info *sta, -unsigned int link_id) +static enum nl80211_chan_width +ieee80211_get_sta_bw (struct sta_info *sta,struct ieee80211_link_data *link) {enum ieee80211_sta_rx_bandwidth width;struct link_sta_info *link_sta; +int link_id = link->link_id; link_sta =wiphy_dereference (sta->local->hw.wiphy, sta->link[link_id]);
@@ -254,7 +255,7 @@ static enum nl80211_chan_width ieee80211_get_sta_bw(struct sta_info *sta,* capabilities here. Calling it RX bandwidth capability is a bit * wrong though, since capabilities are in fact symmetric. */ - width =ieee80211_sta_cap_rx_bw (link_sta); + width =_ieee80211_sta_cap_rx_bw (link_sta, &link->conf->chanreq.oper);switch (width) {case IEEE80211_STA_RX_BW_20 :
@@ -289,7 +290,6 @@ static enum nl80211_chan_width ieee80211_get_max_required_bw(struct ieee80211_link_data *link) {struct ieee80211_sub_if_data *sdata = link->sdata; -unsigned int link_id = link->link_id;enum nl80211_chan_width max_bw =NL80211_CHAN_WIDTH_20_NOHT ;struct sta_info *sta;
@@ -300,7 +300,7 @@ ieee80211_get_max_required_bw(struct ieee80211_link_data *link) !(sta->sdata->bss && sta->sdata->bss == sdata->bss)) continue; - max_bw =max (max_bw,ieee80211_get_sta_bw (sta, link_id)); + max_bw =max (max_bw,ieee80211_get_sta_bw (sta, link)); }return max_bw;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 33/1250 clk: clk-axi-clkgen: Add support versal timings
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nuno Sá <[email protected]>
[ Upstream commit 0aef2f0db6db22c2a441e067d8e8458106fb0483 ]
Add proper VCO and PFD limits for versal based platforms. For that we need to add new Technology and Speed grade defines.
--- drivers/clk/clk-axi-clkgen.c | 5 ++++- include/linux/adi-axi-common.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-)
drivers/clk/clk-axi-clkgen.c +4 -1
@@ -521,7 +521,7 @@ static int axi_clkgen_setup_limits(struct axi_clkgen *axi_clkgen, axi_clkgen->limits.fvco_max =1200000 ; axi_clkgen->limits.fpfd_max =450000 ;break ; - case ADI_AXI_FPGA_SPEED_2 ... ADI_AXI_FPGA_SPEED_2LV: + case ADI_AXI_FPGA_SPEED_2 ... ADI_AXI_FPGA_SPEED_2MP: axi_clkgen->limits.fvco_max =1440000 ; axi_clkgen->limits.fpfd_max =500000 ;if (family ==ADI_AXI_FPGA_FAMILY_KINTEX || family ==ADI_AXI_FPGA_FAMILY_ARTIX ) {
@@ -546,6 +546,9 @@ static int axi_clkgen_setup_limits(struct axi_clkgen *axi_clkgen,if (tech ==ADI_AXI_FPGA_TECH_ULTRASCALE_PLUS ) { axi_clkgen->limits.fvco_max =1600000 ; axi_clkgen->limits.fvco_min =800000 ; + }else if (tech ==ADI_AXI_FPGA_TECH_VERSAL ) { + axi_clkgen->limits.fvco_max =4320000 ; + axi_clkgen->limits.fvco_min =2160000 ; }return 0 ;
include/linux/adi-axi-common.h +2 -0
@@ -51,6 +51,7 @@ enum adi_axi_fpga_technology {ADI_AXI_FPGA_TECH_SERIES7 ,ADI_AXI_FPGA_TECH_ULTRASCALE ,ADI_AXI_FPGA_TECH_ULTRASCALE_PLUS , + ADI_AXI_FPGA_TECH_VERSAL, }; enum adi_axi_fpga_family {
@@ -71,6 +72,7 @@ enum adi_axi_fpga_speed_grade {ADI_AXI_FPGA_SPEED_2 =20 ,ADI_AXI_FPGA_SPEED_2L =21 ,ADI_AXI_FPGA_SPEED_2LV =22 , +ADI_AXI_FPGA_SPEED_2MP =23 , ADI_AXI_FPGA_SPEED_3 = 30, };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 34/1250 wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
In reply to Greg Kroah-Hartman6.18-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
@@ -279,6 +279,9 @@ static void rtw_fw_adaptivity_result(struct rtw_dev *rtwdev, u8 *payload,const 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 35/1250 wifi: rtw89: suspend DIG when remain-on-channel
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chih-Kang Chang <[email protected]>
[ Upstream commit 602b58bb45b2f2bf848215560406ff87dc9a0ab6 ]
The PD (Packet Detection) lower bound is set after the STA interface connects. When the P2P interface attempts to find peers, it enters the remain-on-channel flow to listen for probe requests. However, if the RSSI of the connected AP is too high, the P2P interface fails to receive it. To resolve this, suspend the DIG during the remain-on-channel period.
--- drivers/net/wireless/realtek/rtw89/core.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/wireless/realtek/rtw89/core.c +2 -0
@@ -4047,6 +4047,7 @@ void rtw89_roc_start(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif) reg =rtw89_mac_reg_by_idx (rtwdev, mac->rx_fltr, rtwvif_link->mac_idx);rtw89_write32_clr (rtwdev, reg,B_AX_A_UC_CAM_MATCH |B_AX_A_BC_CAM_MATCH ); +rtw89_phy_dig_suspend (rtwdev);ieee80211_ready_on_channel (hw);wiphy_delayed_work_cancel (hw->wiphy, &rtwvif->roc.roc_work); wiphy_delayed_work_queue(hw->wiphy, &rtwvif->roc.roc_work,
@@ -4094,6 +4095,7 @@ void rtw89_roc_end(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)rtw89_core_handle_sta_pending_tx (rtwdev, rtwvif_link);queue_work (rtwdev->txq_wq, &rtwdev->txq_work); +rtw89_phy_dig_resume (rtwdev, true);if (hw->conf.flags &IEEE80211_CONF_IDLE ) wiphy_delayed_work_queue(hw->wiphy, &roc->roc_work,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 36/1250 wifi: rtw89: disable HTC field in AP mode
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dian-Syuan Yang <[email protected]>
[ Upstream commit 1e53b826d5f8a3ca6d88fa6ed263acf54503214b ]
Disable HE QoS HTC field when operating in AP mode to resolve interoperability issues with some stations.
--- drivers/net/wireless/realtek/rtw89/core.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/net/wireless/realtek/rtw89/core.c +4 -0
@@ -847,6 +847,7 @@ __rtw89_core_tx_check_he_qos_htc(struct rtw89_dev *rtwdev, enum btc_pkt_type pkt_type) {struct rtw89_sta_link *rtwsta_link = tx_req->rtwsta_link; +struct ieee80211_vif *vif = tx_req->vif;struct sk_buff *skb = tx_req->skb;struct ieee80211_hdr *hdr = (void *)skb->data;struct ieee80211_link_sta *link_sta;
@@ -878,6 +879,9 @@ __rtw89_core_tx_check_he_qos_htc(struct rtw89_dev *rtwdev,if (rtwsta_link && rtwsta_link->ra_report.might_fallback_legacy)return false; +if (vif->type ==NL80211_IFTYPE_AP ) +return false; +return true; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 37/1250 wifi: rtw89: disable CSI STBC for VHT 160MHz
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dian-Syuan Yang <[email protected]>
[ Upstream commit d1fba55228685a7a237681be739683eaf698b9bc ]
Fix interoperability problem where CSI feedback with STBC enabled at VHT 160MHz BW cannot be properly decoded by certain APs, causing CSI reports to be rejected. This problem is specific to Wi-Fi 7 chips, as Wi-Fi 6 defaults to 20MHz CSI BW. Therefore, disable STBC encoding for CSI transmission in VHT 160MHz mode to ensure CSI feedback is accepted by these APs and maintain smooth throughput.
--- drivers/net/wireless/realtek/rtw89/mac_be.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/net/wireless/realtek/rtw89/mac_be.c +4 -0
@@ -2147,6 +2147,10 @@ static int rtw89_mac_set_csi_para_reg_be(struct rtw89_dev *rtwdev, sound_dim =min (sound_dim, t); } +/* Disable stbc_en in VHT 160MHz to avoid IOT issues with certain APs */ +if (link_sta->vht_cap.cap &IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ ) + stbc_en =0 ; + nc =min (nc, sound_dim); nr =min (nr, sound_dim);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 38/1250 psp: validate IPv4 header fields in psp_dev_rcv()
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jakub Kicinski <[email protected]>
[ Upstream commit c2b22277ad897d21341f502f87fccd905ff4e207 ]
psp_dev_rcv() is called from the NIC driver's RX completion path before the frame reaches ip_rcv_core(), so the IP header has not been validated in SW, yet. We expect that the device has done all this validation, but let's also add the SW checks, to avoid surprises.
--- net/psp/psp_main.c | 9 +++++++++ 1 file changed, 9 insertions(+)
net/psp/psp_main.c +9 -0
@@ -294,6 +294,9 @@ int psp_dev_rcv(struct sk_buff *skb, u16 dev_id, u8 generation, bool strip_icv)if (proto ==htons (ETH_P_IP )) {struct iphdr *iph = (struct iphdr *)(skb->data + l2_hlen); +if (unlikely (iph->ihl <5 )) +return -EINVAL ; + is_udp = iph->protocol ==IPPROTO_UDP ; l3_hlen = iph->ihl *4 ; if (l3_hlen != sizeof(struct iphdr) &&
@@ -347,6 +350,9 @@ int psp_dev_rcv(struct sk_buff *skb, u16 dev_id, u8 generation, bool strip_icv)if (proto ==htons (ETH_P_IP )) {struct iphdr *iph = (struct iphdr *)(skb->data + l2_hlen); +if (unlikely (ntohs (iph->tot_len) < l3_hlen + encap)) +return -EINVAL ; + iph->protocol = psph->nexthdr; iph->tot_len =htons (ntohs (iph->tot_len) - encap); iph->check =0 ;
@@ -354,6 +360,9 @@ int psp_dev_rcv(struct sk_buff *skb, u16 dev_id, u8 generation, bool strip_icv) }else {struct ipv6hdr *ipv6h = (struct ipv6hdr *)(skb->data + l2_hlen); +if (unlikely (ntohs (ipv6h->payload_len) < encap)) +return -EINVAL ; + ipv6h->nexthdr = psph->nexthdr; ipv6h->payload_len =htons (ntohs (ipv6h->payload_len) - encap); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 39/1250 i3c: master: svc: Prevent IRQ storm from false SLVSTART on NPCM845
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stanley Chu <[email protected]>
[ Upstream commit 1effa3adfe53cb2bb28bf5640a676b791d5ab405 ]
On NPCM845, when a target on the I3C bus gets stuck holding SDA low, the controller reports a false Master Request (MR) in-band interrupt event. The driver handles this by emitting a STOP condition to restore the bus.
However, the hardware quirk SVC_I3C_QUIRK_FALSE_SLVSTART indicates that emitting a STOP condition may spuriously set the SLVSTART interrupt status bit. In the Master Request case, this creates a feedback loop:
the STOP triggers a new SLVSTART event, the IRQ handler fires again, the controller still reports an MR type, another STOP is emitted, and the cycle repeats indefinitely, resulting in an IRQ storm that can lock up the CPU.
Clear the SLVSTART status bit explicitly after emitting the STOP in the Master Request IBI handler when the SVC_I3C_QUIRK_FALSE_SLVSTART quirk is set. This breaks the feedback loop without affecting normal SLVSTART processing, which is already guarded in the top-level IRQ handler by checking that MSTATUS is in SLVREQ state.
--- drivers/i3c/master/svc-i3c-master.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/i3c/master/svc-i3c-master.c +9 -0
@@ -616,6 +616,15 @@ static void svc_i3c_master_ibi_isr(struct svc_i3c_master *master)break ;case SVC_I3C_MSTATUS_IBITYPE_MASTER_REQUEST :svc_i3c_master_emit_stop (master); + +/* +* If a target gets stuck holding SDA low, the controller reports a MR. +* On NPCM845, emitting STOP may spuriously set SLVSTART, retriggering +* the interrupt and re-entering MR handling, leading to an IRQ storm. +* Clear SLVSTART after STOP to break the loop. +*/ +if (svc_has_quirk (master,SVC_I3C_QUIRK_FALSE_SLVSTART )) +writel (SVC_I3C_MINT_SLVSTART , master->regs +SVC_I3C_MSTATUS );break ;default :break ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 40/1250 ASoC: fsl-asoc-card: reduce WM8904 PLL ratio to meet frequency limit
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shengjiu Wang <[email protected]>
[ Upstream commit 99b5316f08f390a5e1ea2239ecca8e2b4ef70ac6 ]
WM8904 has a 27 MHz PLL frequency limit. The current S24_LE PLL ratio of 384 exceeds this at high sample rates (96 kHz × 384 = 36.864 MHz).
Reduce the ratio to 192 for WM8904, keeping PLL within limits at all supported rates (96 kHz × 192 = 18.432 MHz).
Add codec-specific pll_ratio_s24 field, default 384, override to 192 for WM8904.
--- sound/soc/fsl/fsl-asoc-card.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
sound/soc/fsl/fsl-asoc-card.c +7 -1
@@ -48,6 +48,9 @@* @mclk_id: MCLK (or main clock) id for set_sysclk() * @fll_id: FLL (or secordary clock) id for set_sysclk() * @pll_id: PLL id for set_pll() +* @pll_ratio_s24: PLL output ratio for S24_LE format (PLL_freq = sample_rate × ratio) +* Default is 384, but some codecs (e.g., WM8904) require lower values +* to stay within PLL frequency limits */ struct codec_priv {struct clk *mclk;
@@ -56,6 +59,7 @@ struct codec_priv {u32 mclk_id;int fll_id;int pll_id; +int pll_ratio_s24; };/**
@@ -222,7 +226,7 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,if (codec_priv->pll_id >=0 && codec_priv->fll_id >=0 ) {if (priv->sample_format ==SNDRV_PCM_FORMAT_S24_LE ) - pll_out = priv->sample_rate *384 ; + pll_out = priv->sample_rate * codec_priv->pll_ratio_s24;else pll_out = priv->sample_rate *256 ;
@@ -742,6 +746,7 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)for (codec_idx =0 ; codec_idx <2 ; codec_idx++) { priv->codec_priv[codec_idx].fll_id =-1 ; priv->codec_priv[codec_idx].pll_id =-1 ; + priv->codec_priv[codec_idx].pll_ratio_s24 =384 ; }/* Diversify the card configurations */
@@ -835,6 +840,7 @@ static int fsl_asoc_card_probe(struct platform_device *pdev) priv->codec_priv[0 ].mclk_id =WM8904_FLL_MCLK ; priv->codec_priv[0 ].fll_id =WM8904_CLK_FLL ; priv->codec_priv[0 ].pll_id =WM8904_FLL_MCLK ; + priv->codec_priv[0 ].pll_ratio_s24 =192 ; priv->dai_fmt |=SND_SOC_DAIFMT_CBP_CFP ; }else if (of_device_is_compatible (np,"fsl,imx-audio-spdif" )) { ret =fsl_asoc_card_spdif_init (codec_np, cpu_np, codec_dai_name, priv);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 41/1250 kcsan: Silence -Wmaybe-uninitialized when calling __kcsan_check_access()
In reply to Greg Kroah-Hartman6.18-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 42/1250 firmware: stratix10-svc: change get provision data to async SMC call
In reply to Greg Kroah-Hartman6.18-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 43/1250 bridge: Do not suppress ARP probes and DAD NS unconditionally
In reply to Greg Kroah-Hartman6.18-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
@@ -165,7 +165,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 ;
@@ -263,6 +263,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))
@@ -301,8 +302,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 );
@@ -318,7 +324,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 ));
@@ -331,7 +337,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 ;
@@ -436,7 +442,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 44/1250 soundwire: intel_auxdevice: Add cs42l43b to wake_capable_list
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Keepax <[email protected]>
[ Upstream commit be6d8daaab654e9b0a8508757534d556d399d0cd ]
Add cs42l43b (both packaging options) to the wake_capable_list because it can generate jack events whilst the bus is stopped.
--- drivers/soundwire/intel_auxdevice.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/soundwire/intel_auxdevice.c +2 -0
@@ -51,6 +51,8 @@ struct wake_capable_part { };static struct wake_capable_part wake_capable_list[] = { + {0x01fa ,0x2A30 }, + {0x01fa ,0x2A3B }, {0x01fa ,0x4243 }, {0x01fa ,0x4245 }, {0x025d ,0x5682 },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 45/1250 soundwire: validate DT compatible before parsing it
In reply to Greg Kroah-Hartman6.18-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
@@ -240,8 +240,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 46/1250 media: chips-media: wave5: Fix Reports from Kernel Lock Validator
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brandon Brnich <[email protected]>
[ Upstream commit 7d5d364f8b2dcc9b6b92456fb55632fde4a4d96f ]
handle_dynamic_resolution change requires that the state_lock be acquired based on the lockdep_assert_held. However, the handle_dynamic_resolution_change call in initialize_sequence does not properly obtain the lock before calling.
Since the v4l2_ctrl_find and s_ctrl can sleep, they should not be called while a lock is already held. Store off the fbc_buf_count then properly update control once lock has been freed.
--- .../chips-media/wave5/wave5-vpu-dec.c | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-)
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +33 -14
@@ -270,10 +270,23 @@ static void send_eos_event(struct vpu_instance *inst) inst->eos = false; } +static void wave5_update_min_bufs_ctrl (struct vpu_instance *inst,u32 fbc_buf_count) +{ +struct v4l2_m2m_ctx *m2m_ctx = inst->v4l2_fh.m2m_ctx; +struct v4l2_ctrl *ctrl; + +if (!fbc_buf_count || fbc_buf_count ==v4l2_m2m_num_dst_bufs_ready (m2m_ctx)) +return ; + + ctrl =v4l2_ctrl_find (&inst->v4l2_ctrl_hdl, +V4L2_CID_MIN_BUFFERS_FOR_CAPTURE ); +if (ctrl) +v4l2_ctrl_s_ctrl (ctrl, fbc_buf_count); +} +static int handle_dynamic_resolution_change (struct vpu_instance *inst) {struct v4l2_fh *fh = &inst->v4l2_fh; -struct v4l2_m2m_ctx *m2m_ctx = inst->v4l2_fh.m2m_ctx;static const struct v4l2_event vpu_event_src_ch = { .type =V4L2_EVENT_SOURCE_CHANGE ,
@@ -292,14 +305,6 @@ static int handle_dynamic_resolution_change(struct vpu_instance *inst) inst->needs_reallocation = true; inst->fbc_buf_count = initial_info->min_frame_buffer_count +1 ; -if (inst->fbc_buf_count !=v4l2_m2m_num_dst_bufs_ready (m2m_ctx)) { -struct v4l2_ctrl *ctrl; - - ctrl =v4l2_ctrl_find (&inst->v4l2_ctrl_hdl, -V4L2_CID_MIN_BUFFERS_FOR_CAPTURE ); -if (ctrl) -v4l2_ctrl_s_ctrl (ctrl, inst->fbc_buf_count); - }if (p_dec_info->initial_info_obtained) {const struct vpu_format *vpu_fmt;
@@ -427,19 +432,24 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst)if ((dec_info.index_frame_display ==DISPLAY_IDX_FLAG_SEQ_END || dec_info.sequence_changed)) {unsigned long flags; +u32 fbc_buf_count =0 ;spin_lock_irqsave (&inst->state_spinlock, flags);if (!v4l2_m2m_has_stopped (m2m_ctx)) {switch_state (inst,VPU_INST_STATE_STOP ); -if (dec_info.sequence_changed) +if (dec_info.sequence_changed) {handle_dynamic_resolution_change (inst); -else + fbc_buf_count = inst->fbc_buf_count; + }else {send_eos_event (inst); + }flag_last_buffer_done (inst); }spin_unlock_irqrestore (&inst->state_spinlock, flags); + +wave5_update_min_bufs_ctrl (inst, fbc_buf_count); }/*
@@ -1544,8 +1554,9 @@ static const struct vpu_instance_ops wave5_vpu_dec_inst_ops = {static int initialize_sequence (struct vpu_instance *inst) {struct dec_initial_info initial_info; -int ret =0 ;unsigned long flags; +u32 fbc_buf_count; +int ret =0 ;memset (&initial_info,0 ,sizeof (struct dec_initial_info ));
@@ -1569,8 +1580,11 @@ static int initialize_sequence(struct vpu_instance *inst)spin_lock_irqsave (&inst->state_spinlock, flags);handle_dynamic_resolution_change (inst); + fbc_buf_count = inst->fbc_buf_count;spin_unlock_irqrestore (&inst->state_spinlock, flags); +wave5_update_min_bufs_ctrl (inst, fbc_buf_count); +return 0 ; }
@@ -1603,6 +1617,7 @@ static void wave5_vpu_dec_device_run(void *priv) ret =initialize_sequence (inst);if (ret) {unsigned long flags; +u32 fbc_buf_count =0 ;spin_lock_irqsave (&inst->state_spinlock, flags); if (wave5_is_draining_or_eos(inst) &&
@@ -1611,14 +1626,18 @@ static void wave5_vpu_dec_device_run(void *priv)switch_state (inst,VPU_INST_STATE_STOP ); -if (vb2_is_streaming (dst_vq)) +if (vb2_is_streaming (dst_vq)) {send_eos_event (inst); -else + }else {handle_dynamic_resolution_change (inst); + fbc_buf_count = inst->fbc_buf_count; + }flag_last_buffer_done (inst); }spin_unlock_irqrestore (&inst->state_spinlock, flags); + +wave5_update_min_bufs_ctrl (inst, fbc_buf_count); }else {switch_state (inst,VPU_INST_STATE_INIT_SEQ ); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 47/1250 media: chips-media: wave5: Release m2m_ctx after Instance Removed from List
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brandon Brnich <[email protected]>
[ Upstream commit 7cdbd7bb21949a8fda10c7104a2b12ee363cbf5c ]
Possible use after free if IRQ thread manages to obtain spinlock between m2m_ctx release and wave5_release function removing stream instance from list of active instances. The IRQ thread looks for the m2m_ctx which is freed so null pointer dereference occurs.
--- drivers/media/platform/chips-media/wave5/wave5-helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/media/platform/chips-media/wave5/wave5-helper.c +3 -1
@@ -68,7 +68,6 @@ int wave5_vpu_release_device(struct file *filp,int ret =0 ;unsigned long flags; -v4l2_m2m_ctx_release (inst->v4l2_fh.m2m_ctx);/* * To prevent Null reference exception, the existing irq handler were * separated to two modules.
@@ -89,6 +88,9 @@ int wave5_vpu_release_device(struct file *filp,list_del_init (&inst->list);spin_unlock_irqrestore (&inst->dev->irq_spinlock, flags);mutex_unlock (&inst->dev->irq_lock); + +v4l2_m2m_ctx_release (inst->v4l2_fh.m2m_ctx); +if (inst->state !=VPU_INST_STATE_NONE ) {u32 fail_res;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 48/1250 dm-raid: only requeue bios when dm is suspending
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Marzinski <[email protected]>
[ Upstream commit 97cb8be0fd4c50d310988e0822f7e91d1711e6f8 ]
returning DM_MAPIO_REQUEUE from the target map() function only requeues the bio during noflush suspends. During regular operations or during flushing suspends, it fails the bio. Failing the bio during flushing suspends is the correct behavior here. We cannot handle the bio, and we cannot suspends while it is outstanding. But during normal operations, we should not push the bio back to dm. Instead, wait for the reshape to be resumed.
--- drivers/md/dm-raid.c | 6 ++++++ drivers/md/md.h | 2 ++ drivers/md/raid5.c | 7 +++++-- 3 files changed, 13 insertions(+), 2 deletions(-)
drivers/md/dm-raid.c +6 -0
@@ -3831,6 +3831,7 @@ static void raid_presuspend(struct dm_target *ti)* resume, raid_postsuspend() is too late. */ set_bit (RT_FLAG_RS_FROZEN , &rs->runtime_flags); +set_bit (MD_DM_SUSPENDING , &mddev->flags);if (!reshape_interrupted (mddev))return ;
@@ -3847,13 +3848,16 @@ static void raid_presuspend(struct dm_target *ti)static void raid_presuspend_undo (struct dm_target *ti) {struct raid_set *rs = ti->private; +struct mddev *mddev = &rs->md; +clear_bit (MD_DM_SUSPENDING , &mddev->flags);clear_bit (RT_FLAG_RS_FROZEN , &rs->runtime_flags); }static void raid_postsuspend (struct dm_target *ti) {struct raid_set *rs = ti->private; +struct mddev *mddev = &rs->md;if (!test_and_set_bit (RT_FLAG_RS_SUSPENDED , &rs->runtime_flags)) {/*
@@ -3864,6 +3868,8 @@ static void raid_postsuspend(struct dm_target *ti)mddev_suspend (&rs->md, false); rs->md.ro =MD_RDONLY ; } +clear_bit (MD_DM_SUSPENDING , &mddev->flags); + }static void attempt_restore_of_faulty_devices (struct raid_set *rs)
drivers/md/md.h +2 -0
@@ -343,6 +343,7 @@ struct md_cluster_operations;* @MD_HAS_SUPERBLOCK: There is persistence sb in member disks. * @MD_FAILLAST_DEV: Allow last rdev to be removed. * @MD_SERIALIZE_POLICY: Enforce write IO is not reordered, just used by raid1. +* @MD_DM_SUSPENDING: This DM raid device is suspending. * * change UNSUPPORTED_MDDEV_FLAGS for each array type if new flag is added */
@@ -362,6 +363,7 @@ enum mddev_flags {MD_HAS_SUPERBLOCK ,MD_FAILLAST_DEV ,MD_SERIALIZE_POLICY , + MD_DM_SUSPENDING, }; enum mddev_sb_flags {
drivers/md/raid5.c +5 -2
@@ -6057,8 +6057,11 @@ static enum stripe_result make_stripe_request(struct mddev *mddev,raid5_release_stripe (sh); out:if (ret ==STRIPE_SCHEDULE_AND_RETRY &&reshape_interrupted (mddev)) { - bi->bi_status =BLK_STS_RESOURCE ; - ret =STRIPE_WAIT_RESHAPE ; +if (!mddev_is_dm (mddev) || +test_bit (MD_DM_SUSPENDING , &mddev->flags)) { + bi->bi_status =BLK_STS_RESOURCE ; + ret =STRIPE_WAIT_RESHAPE ; + }pr_err_ratelimited ("dm-raid456: io across reshape position while reshape can't make progress" ); }return ret;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 49/1250 spi: spi-qcom-qspi: Fix incomplete error handling in runtime PM
In reply to Greg Kroah-Hartman6.18-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 50/1250 media: rc: mceusb: Add support for 04eb:e033
In reply to Greg Kroah-Hartman6.18-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
@@ -397,6 +397,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 51/1250 net: mana: hardening: Reject zero max_num_queues from MANA_QUERY_VPORT_CONFIG
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Erni Sri Satya Vennela <[email protected]>
[ Upstream commit 93ca1575dd1f43e24ad85663305e13114f9acdf1 ]
As a part of MANA hardening for CVM, validate that max_num_sq and max_num_rq returned by MANA_QUERY_VPORT_CONFIG are not zero. These values flow into apc->num_queues, which is used as an allocation count and loop bound. A zero value would result in zero-size allocations and incorrect driver behavior.
Return -EPROTO if either value is zero.
--- drivers/net/ethernet/microsoft/mana/mana_en.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/net/ethernet/microsoft/mana/mana_en.c +6 -0
@@ -1262,6 +1262,12 @@ static int mana_query_vport_cfg(struct mana_port_context *apc, u32 vport_index, *max_sq = resp.max_num_sq; *max_rq = resp.max_num_rq; + +if (*max_sq ==0 || *max_rq ==0 ) { +netdev_err (apc->ndev,"Invalid max queues from vPort config\n" ); +return -EPROTO ; + } +if (resp.num_indirection_ent >0 && resp.num_indirection_ent <=MANA_INDIRECT_TABLE_MAX_SIZE &&is_power_of_2 (resp.num_indirection_ent)) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 52/1250 s390/cio: Purge based on the cdevs online status
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vineeth Vijayan <[email protected]>
[ Upstream commit 58d50cad63e85daae032924ecc3d457fb1ec02fb ]
Ensure that all devices currently offline are purged correctly.
Previously, purging logic relied on the internal FSM state to determine whether a device was offline. However, devices with a target state of offline could be skipped if CIO internal processing was still ongoing during the purge operation.
Update the purge decision logic to rely on the online variable in the cdev structure instead of the internal FSM state, providing a more reliable indication of actual device availability.
--- drivers/s390/cio/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/s390/cio/device.c +1 -1
@@ -1329,7 +1329,7 @@ static int purge_fn(struct subchannel *sch, void *data) cdev =sch_get_cdev (sch);if (cdev) { -if (cdev->private->state !=DEV_STATE_OFFLINE ) +if (cdev->online) goto unlock;if (atomic_cmpxchg (&cdev->private->onoff,0 ,1 ) !=0 )
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 53/1250 media: platform: cros-ec: Add Kulnex and Moxoe to the match table
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ken Lin <[email protected]>
[ Upstream commit e024767f90f9f50bfcce4b20bb74237ad72450f3 ]
The Google Kulnex and Moxoe device uses the same approach as Google Brask which enables the HDMI CEC via the cros-ec-cec driver.
--- drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/media/cec/platform/cros-ec/cros-ec-cec.c +4 -0
@@ -334,6 +334,10 @@ static const struct cec_dmi_match cec_dmi_match_table[] = { { "Google", "Dirks", "0000:00:02.0", port_ab_conns },/* Google Moxie */ { "Google", "Moxie", "0000:00:02.0", port_b_conns }, +/* Google Kulnex */ + { "Google", "Kulnex", "0000:00:02.0", port_b_conns }, +/* Google Moxoe */ + { "Google", "Moxoe", "0000:00:02.0", port_b_conns }, }; static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 54/1250 wifi: mac80211: avoid out-of-bounds access in monitor
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miri Korenblit <[email protected]>
[ Upstream commit 03c41203ee5a833a9d7a7630be190830cede29d8 ]
In NAN, we don't know on what band the frame will be sent. Therefore we set info->band to NUM_NL80211_BANDS. However, this leads to out-of-bound access in ieee80211_add_tx_radiotap_header when we try to access the sbands array.
Fix it by not accessing the array if the band is NUM_NL80211_BANDS. This means that we will not report rate info for legacy rate in NAN. But nobody really cares about it.
--- net/mac80211/status.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
net/mac80211/status.c +5 -4
@@ -5,7 +5,7 @@* Copyright 2006-2007 Jiri Benc <[email protected]> * Copyright 2008-2010 Johannes Berg <[email protected]> * Copyright 2013-2014 Intel Mobile Communications GmbH -* Copyright 2021-2025 Intel Corporation +* Copyright 2021-2026 Intel Corporation */ #include <linux/export.h>
@@ -295,9 +295,10 @@ ieee80211_add_tx_radiotap_header(struct ieee80211_local *local, RATE_INFO_FLAGS_VHT_MCS | RATE_INFO_FLAGS_HE_MCS))) legacy_rate = status_rate->rate_idx.legacy; - }else if (info->status.rates[0 ].idx >=0 && - !(info->status.rates[0 ].flags & (IEEE80211_TX_RC_MCS | -IEEE80211_TX_RC_VHT_MCS ))) { + }else if (info->band <NUM_NL80211_BANDS && + info->status.rates[0 ].idx >=0 && + !(info->status.rates[0 ].flags & (IEEE80211_TX_RC_MCS | +IEEE80211_TX_RC_VHT_MCS ))) {struct ieee80211_supported_band *sband; sband = local->hw.wiphy->bands[info->band];
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 55/1250 thunderbolt: Avoid reserved fields in path config space for USB4 routers
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gil Fine <[email protected]>
[ Upstream commit 7e49bb89df860bb7352974100cd5dd48752bb646 ]
According to USB4 spec, USB4 Connection Manager shall not change value of any fields that are defined as "RsvdZ" or "VD". Specifically fields:
Path Credits Allocated, IFC, ISE fields in path config space shall not be written by CM. To handle this, CM shall first read current path config space from the hardware, change only the fields that can be changed, and then write back the path config space.
--- drivers/thunderbolt/path.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-)
drivers/thunderbolt/path.c +22 -9
@@ -426,7 +426,8 @@ static int __tb_path_deactivate_hop(struct tb_port *port, int hop_index,* in the USB4 spec so we clear them * only for pre-USB4 adapters. */ -if (!tb_switch_is_usb4 (port->sw)) { +if (tb_port_is_null (port) || + !tb_switch_is_usb4 (port->sw)) { hop.ingress_fc =0 ; hop.ingress_shared_buffer =0 ; }
@@ -546,15 +547,18 @@ int tb_path_activate(struct tb_path *path)__tb_path_deactivate_hop (path->hops[i].in_port, path->hops[i].in_hop_index, path->clear_fc); -/* dword 0 */ +/* Needed for USB4 routers, read path config space before write */ + res =tb_port_read (path->hops[i].in_port, &hop,TB_CFG_HOPS , +2 * path->hops[i].in_hop_index,2 ); +if (res) + goto err; + hop.next_hop = path->hops[i].next_hop_index; hop.out_port = path->hops[i].out_port->port; - hop.initial_credits = path->hops[i].initial_credits; hop.pmps = path->hops[i].pm_support; hop.unknown1 =0 ; hop.enable =1 ; -/* dword 1 */ out_mask = (i == path->path_length -1 ) ?TB_PATH_DESTINATION :TB_PATH_INTERNAL ; in_mask = (i ==0 ) ?TB_PATH_SOURCE :TB_PATH_INTERNAL ;
@@ -564,12 +568,21 @@ int tb_path_activate(struct tb_path *path) hop.drop_packages = path->drop_packages; hop.counter = path->hops[i].in_counter_index; hop.counter_enable = path->hops[i].in_counter_index !=-1 ; - hop.ingress_fc = path->ingress_fc_enable & in_mask; hop.egress_fc = path->egress_fc_enable & out_mask; - hop.ingress_shared_buffer = path->ingress_shared_buffer - & in_mask; - hop.egress_shared_buffer = path->egress_shared_buffer - & out_mask; + hop.egress_shared_buffer = path->egress_shared_buffer & out_mask; +/* +* Protocol adapters IFC and ISE bits, and Path Credits +* Allocated are vendor defined in the USB4 spec so we +* program them only for pre-USB4 and lane adapters. +*/ +if (tb_port_is_null (path->hops[i].in_port) || + !tb_switch_is_usb4 (path->hops[i].in_port->sw)) { + hop.initial_credits = path->hops[i].initial_credits; + hop.ingress_fc = path->ingress_fc_enable & in_mask; + hop.ingress_shared_buffer = + path->ingress_shared_buffer & in_mask; + } + hop.unknown3 =0 ;tb_port_dbg (path->hops[i].in_port,"Writing hop %d\n" , i);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 56/1250 thunderbolt: Dont disable lane adapter if XDomain lane bonding isnt possible
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit 7c7345bcde6c611fa8fa13e624207c6005798aa8 ]
This happens when firmware connection manager is being used. It will deal with disabling the lane 1 adapter after the tunnel has been established and re-enabling it afterwards. For this reason only do this when we know that lane bonding is possible (e.g running software connection manager).
--- drivers/thunderbolt/xdomain.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/thunderbolt/xdomain.c +7 -1
@@ -1951,7 +1951,13 @@ static void tb_xdomain_link_exit(struct tb_xdomain *xd)if (tb_port_get_link_generation (down) >=4 ) { down->bonded = false; down->dual_link_port->bonded = false; - }else if (xd->link_width >TB_LINK_WIDTH_SINGLE ) { +return ; + } + +if (!xd->bonding_possible) +return ; + +if (xd->link_width >TB_LINK_WIDTH_SINGLE ) {/* * Just return port structures back to way they were and * update credits. No need to update userspace because
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 57/1250 thunderbolt: Release request if tb_cfg_request() fails in __tb_xdomain_response()
In reply to Greg Kroah-Hartman6.18-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 58/1250 thunderbolt: Keep XDomain reference during the lifetime of a service
In reply to Greg Kroah-Hartman6.18-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
@@ -1029,6 +1029,7 @@ static void tb_service_release(struct device *dev)ida_free (&xd->service_ids, svc->id);kfree (svc->key);kfree (svc); +tb_xdomain_put (xd); }const struct device_type tb_service_type = {
@@ -1137,7 +1138,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 59/1250 thunderbolt: Keep the domain reference while processing hotplug
In reply to Greg Kroah-Hartman6.18-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
@@ -98,7 +98,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;
@@ -2527,6 +2527,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 60/1250 thunderbolt: Set tb->root_switch to NULL when domain is stopped
In reply to Greg Kroah-Hartman6.18-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
@@ -2952,6 +2952,7 @@ static void tb_stop(struct tb *tb)tb_tunnel_put (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
@@ -756,7 +756,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);
@@ -870,6 +870,7 @@ static void tb_xdp_handle_request(struct work_struct *work) } out: +kfree (uuid);kfree (xw->pkg);kfree (xw);
@@ -2344,6 +2345,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 61/1250 thunderbolt: Dont create multiple DMA tunnels on firmware connection manager
In reply to Greg Kroah-Hartman6.18-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
@@ -587,6 +587,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;
@@ -1157,6 +1162,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
@@ -2021,6 +2021,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)
@@ -2302,9 +2303,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);
@@ -2327,9 +2334,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
@@ -230,6 +230,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) *
@@ -276,6 +277,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 62/1250 drm/amd/display: Find link encoder for flexible DIG mapping cases
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ovidiu Bunea <[email protected]>
[ Upstream commit 74ef54e656e7006cfc215e960b0cf2720a7a3d48 ]
[why & how]link->link_enc can only be used to identify the link's link encoder when the link is not permitted to use flexible link encoder assignments.
Use the correct function for identifying link encoder and add function pointer guards before calling them.
--- .../drm/amd/display/dc/hwss/dce110/dce110_hwseq.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c +7 -5
@@ -1753,20 +1753,22 @@ static void power_down_encoders(struct dc *dc)for (i =0 ; i < dc->link_count; i++) {struct dc_link *link = dc->links[i]; -struct link_encoder *link_enc = link->link_enc; +struct link_encoder *link_enc =link_enc_cfg_get_link_enc (link);enum signal_type signal = link->connector_signal; dc->link_srv->blank_dp_stream (link, false);if (signal !=SIGNAL_TYPE_EDP ) signal =SIGNAL_TYPE_NONE ; -if (link->ep_type ==DISPLAY_ENDPOINT_PHY ) +if (link->ep_type ==DISPLAY_ENDPOINT_PHY && link_enc) link_enc->funcs->disable_output (link_enc, signal);if (link->fec_state == dc_link_fec_enabled) { - link_enc->funcs->fec_set_enable (link_enc, false); - link_enc->funcs->fec_set_ready (link_enc, false); - link->fec_state = dc_link_fec_not_ready; +if (link_enc && link_enc->funcs->fec_set_enable && link_enc->funcs->fec_set_ready) { + link_enc->funcs->fec_set_enable (link_enc, false); + link_enc->funcs->fec_set_ready (link_enc, false); + link->fec_state = dc_link_fec_not_ready; + } } link->link_status.link_active = false;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 63/1250 drm/amdgpu: Prefer ROM BAR for default VGA device
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lijo Lazar <[email protected]>
[ Upstream commit 9e32d17592950478baffaecdbda8e2e60935fd3d ]
Fetching from platform ROM doesn't work with hybrid ROM images. For default VGA devices also prefer ROM BAR.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +3 -1
@@ -33,6 +33,7 @@#include <linux/pci.h> #include <linux/slab.h> #include <linux/acpi.h> +#include <linux/vgaarb.h> /* * BIOS. */
@@ -491,7 +492,8 @@ static bool amdgpu_prefer_rom_resource(struct amdgpu_device *adev) {struct resource *res = &adev->pdev->resource[PCI_ROM_RESOURCE ]; -return (res->flags &IORESOURCE_ROM_SHADOW ); +return (res->flags &IORESOURCE_ROM_SHADOW ) || + adev->pdev ==vga_default_device (); }static bool amdgpu_get_bios_dgpu (struct amdgpu_device *adev)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 64/1250 drm/panel: Enable GPIOLIB for panels which uses functions from it
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Heidelberg <[email protected]>
[ Upstream commit ae3aa8cf5fd5ccb428a814e7eb38ae33ad1cfa34 ]
These panels used on sdm845 devices are using GPIOLIB functions, ensure it's enabled.
--- drivers/gpu/drm/panel/Kconfig | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/gpu/drm/panel/Kconfig +9 -2
@@ -107,6 +107,7 @@ config DRM_PANEL_BOE_TV101WUM_LL2 config DRM_PANEL_EBBG_FT8719 tristate "EBBG FT8719 panel driver" + depends on GPIOLIB depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE
@@ -316,7 +317,8 @@ config DRM_PANEL_JADARD_JD9365DA_H3 config DRM_PANEL_JDI_LPM102A188A tristate "JDI LPM102A188A DSI panel" - depends on OF && GPIOLIB + depends on GPIOLIB + depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE help
@@ -418,6 +420,7 @@ config DRM_PANEL_LG_LG4573 config DRM_PANEL_LG_SW43408 tristate "LG SW43408 panel" + depends on GPIOLIB depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE
@@ -522,6 +525,7 @@ config DRM_PANEL_NOVATEK_NT36523 config DRM_PANEL_NOVATEK_NT36672A tristate "Novatek NT36672A DSI panel" + depends on GPIOLIB depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE
@@ -532,6 +536,7 @@ config DRM_PANEL_NOVATEK_NT36672A config DRM_PANEL_NOVATEK_NT36672E tristate "Novatek NT36672E DSI panel" + depends on GPIOLIB depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE
@@ -660,7 +665,8 @@ config DRM_PANEL_RAYDIUM_RM692E5 config DRM_PANEL_RAYDIUM_RM69380 tristate "Raydium RM69380-based DSI panel" - depends on OF && GPIOLIB + depends on GPIOLIB + depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE help
@@ -1118,6 +1124,7 @@ config DRM_PANEL_VISIONOX_R66451 config DRM_PANEL_VISIONOX_RM69299 tristate "Visionox RM69299" + depends on GPIOLIB depends on OF depends on DRM_MIPI_DSI help
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 65/1250 media: dm1105: fix missing error check for dma_alloc_coherent
In reply to Greg Kroah-Hartman6.18-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 66/1250 net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
In reply to Greg Kroah-Hartman6.18-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
@@ -6261,7 +6261,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, .stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1, .atu_move_port_mask = 0xf,
@@ -6289,7 +6289,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, .stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1, .atu_move_port_mask = 0xf,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 67/1250 PCI: switchtec: Add Gen6 Device IDs
In reply to Greg Kroah-Hartman6.18-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
@@ -1852,6 +1852,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 68/1250 net: dsa: mv88e6xxx: define .pot_clear() for 6321
In reply to Greg Kroah-Hartman6.18-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
@@ -5228,6 +5228,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 69/1250 media: v4l2-common: Always register clock with device-specific name
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Cercueil <[email protected]>
[ Upstream commit 0b42657bea6ba635226e8ef551076d024ceacdc9 ]
If we need to register a dummy fixed-frequency clock, always register it using a device-specific name.
This supports the use case where a system has two of the same sensor, meaning two instances of the same driver, which previously both tried (and failed) to create a clock with the same name.
--- drivers/media/v4l2-core/v4l2-common.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
drivers/media/v4l2-core/v4l2-common.c +7 -6
@@ -764,14 +764,15 @@ struct clk *__devm_v4l2_sensor_clk_get(struct device *dev, const char *id,if (ret)return ERR_PTR (ret == -EINVAL ? -EPROBE_DEFER : ret); -if (!id) { +if (id) + clk_id =kasprintf (GFP_KERNEL ,"clk-%s-%s" ,dev_name (dev), id); +else clk_id =kasprintf (GFP_KERNEL ,"clk-%s" ,dev_name (dev)); -if (!clk_id) -return ERR_PTR (-ENOMEM ); - id = clk_id; - } - clk_hw =devm_clk_hw_register_fixed_rate (dev, id,NULL ,0 , rate); +if (!clk_id) +return ERR_PTR (-ENOMEM ); + + clk_hw =devm_clk_hw_register_fixed_rate (dev, clk_id,NULL ,0 , rate);if (IS_ERR (clk_hw))return ERR_CAST (clk_hw);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 70/1250 net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
In reply to Greg Kroah-Hartman6.18-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
@@ -5179,6 +5179,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,
@@ -5232,6 +5233,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 71/1250 media: em28xx-video: fix missing res_free() on init_usb_xfer failure
In reply to Greg Kroah-Hartman6.18-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 72/1250 wifi: mac80211: explicitly disable FTM responder on AP stop
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
[ Upstream commit 89e367a90c1a877ca9c5d75d3848582d80fd0e60 ]
When stopping the AP, explicitly disable FTM responder while disabling beaconing.
--- net/mac80211/cfg.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
net/mac80211/cfg.c +7 -2
@@ -1811,6 +1811,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,struct ieee80211_link_data *link =sdata_dereference (sdata->link[link_id], sdata);struct ieee80211_bss_conf *link_conf = link->conf; +u64 changes =BSS_CHANGED_BEACON_ENABLED ;LIST_HEAD (keys);lockdep_assert_wiphy (local->hw.wiphy);
@@ -1860,6 +1861,11 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,if (old_s1g_short_beacon)kfree_rcu (old_s1g_short_beacon, rcu_head); +if (link_conf->ftm_responder) { + link_conf->ftm_responder = false; + changes |=BSS_CHANGED_FTM_RESPONDER ; + } +kfree (link_conf->ftmr_params); link_conf->ftmr_params =NULL ;
@@ -1881,8 +1887,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev, sdata->vif.cfg.ssid_len =0 ; sdata->vif.cfg.s1g = false;clear_bit (SDATA_STATE_OFFCHANNEL_BEACON_STOPPED , &sdata->state); -ieee80211_link_info_change_notify (sdata, link, -BSS_CHANGED_BEACON_ENABLED ); +ieee80211_link_info_change_notify (sdata, link, changes);ieee80211_remove_link_keys (link, &keys);if (!list_empty (&keys)) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 73/1250 rtase: Fix flow control configuration
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Justin Lai <[email protected]>
[ Upstream commit fea3521e043fa1388ec909205687db7d4b0c57ec ]
The hardware has two sets of registers controlling TX/RX flow control. The effective flow control state is determined by the logical OR of these two sets of bits.
RTASE_FORCE_TXFLOW_EN and RTASE_FORCE_RXFLOW_EN in RTASE_CPLUS_CMD are the bits used by the driver to control TX/RX flow control according to the ethtool pause configuration.
RTASE_TXFLOW_EN and RTASE_RXFLOW_EN in RTASE_GPHY_STD_00 are another set of TX/RX flow control enable bits. Clear them by default so they do not keep flow control enabled independently of the driver setting.
With the RTASE_GPHY_STD_00 bits cleared, the effective flow control state is controlled through RTASE_CPLUS_CMD, so the ethtool setting can take effect correctly.
--- drivers/net/ethernet/realtek/rtase/rtase.h | 4 ++++ drivers/net/ethernet/realtek/rtase/rtase_main.c | 3 +++ 2 files changed, 7 insertions(+)
drivers/net/ethernet/realtek/rtase/rtase.h +4 -0
@@ -153,6 +153,10 @@ enum rtase_registers {#define RTASE_FORCE_TXFLOW_EN BIT(10)#define RTASE_RX_CHKSUM BIT(5) + RTASE_GPHY_STD_00 = 0x6024, +#define RTASE_RXFLOW_EN BIT(7) +#define RTASE_TXFLOW_EN BIT(6) +RTASE_Q0_RX_DESC_ADDR0 =0x00E4 ,RTASE_Q0_RX_DESC_ADDR4 =0x00E8 , RTASE_Q1_RX_DESC_ADDR0 = 0x4000,
drivers/net/ethernet/realtek/rtase/rtase_main.c +3 -0
@@ -977,6 +977,9 @@ static void rtase_hw_config(struct net_device *dev)rtase_hw_set_features (dev, dev->features);/* enable flow control */ + reg_data16 =rtase_r16 (tp,RTASE_GPHY_STD_00 ); + reg_data16 &= ~(RTASE_TXFLOW_EN |RTASE_RXFLOW_EN ); +rtase_w16 (tp,RTASE_GPHY_STD_00 , reg_data16); reg_data16 =rtase_r16 (tp,RTASE_CPLUS_CMD ); reg_data16 |= (RTASE_FORCE_TXFLOW_EN |RTASE_FORCE_RXFLOW_EN );rtase_w16 (tp,RTASE_CPLUS_CMD , reg_data16);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 74/1250 crypto: ixp4xx - fix buffer chain unwind on allocation failure
In reply to Greg Kroah-Hartman6.18-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 75/1250 crypto: omap - add omap_des_unregister_algs helper
In reply to Greg Kroah-Hartman6.18-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
@@ -938,6 +938,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;
@@ -1043,11 +1057,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);
@@ -1067,16 +1077,12 @@ static int omap_des_probe(struct platform_device *pdev)static void 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);cancel_work_sync (&dd->done_task);omap_des_dma_cleanup (dd);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 76/1250 clk: renesas: cpg-mssr: Add number of clock cells check
In reply to Greg Kroah-Hartman6.18-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
@@ -349,6 +349,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 77/1250 drm/bridge: tc358768: Set pre_enable_prev_first for reverse order
In reply to Greg Kroah-Hartman6.18-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 78/1250 dlm: add usercopy whitelist to dlm_cb cache
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ziyi Guo <[email protected]>
[ Upstream commit b5314f2c6654a3616fd72777deb1ca766cc50618 ]
The dlm_cb slab cache is created with kmem_cache_create(), which provides no usercopy whitelist. When a callback carries LVB data, dlm_user_add_ast() copies the LVB into the inline lvbptr[] array within the slab-allocated struct dlm_callback and redirects ua->lksb.sb_lvbptr to point to it. copy_result_to_user() then calls copy_to_user() with this pointer. With CONFIG_HARDENED_USERCOPY enabled, this triggers usercopy_abort().
Switch to kmem_cache_create_usercopy() with a whitelist covering the lvbptr field.
--- fs/dlm/memory.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/dlm/memory.c +3 -1
@@ -48,8 +48,10 @@ int __init dlm_memory_init(void)if (!rsb_cache) goto rsb; - cb_cache =kmem_cache_create ("dlm_cb" ,sizeof (struct dlm_callback ), + cb_cache =kmem_cache_create_usercopy ("dlm_cb" ,sizeof (struct dlm_callback ), __alignof__(struct dlm_callback ),0 , + offsetof(struct dlm_callback , lvbptr), + sizeof_field(struct dlm_callback, lvbptr),NULL );if (!cb_cache) goto cb;
Signature · 1 line
2.53.0
# Librecast Test Results
020/020 [ OK ] liblcrq
010/010 [ OK ] libmld
120/120 [ OK ] liblibrecast
CPU/kernel: Linux auntie 6.18.53-rc1-g644a9858f3fc #1 SMP PREEMPT_DYNAMIC Thu Sep 17 15:39:43 -00 2026 x86_64 AMD Ryzen 9 9950X 16-Core Processor AuthenticAMD GNU/Linux
Greg Kroah-Hartman
maintainerPATCH 79/1250 PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store()
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Wilczyński <[email protected]>
[ Upstream commit 25ec7f57deceec633f27bc93b615f951e2ade814 ]
Currently, the __resource_resize_store() allows writing to the resourceN_resize sysfs attribute to change a BAR's size without checking for capabilities, currently relying only on the file access check.
Resizing a BAR modifies PCI device configuration and can disrupt active drivers. After the upcoming conversion to static attributes, it will also trigger resource file updates via sysfs_update_groups().
Add a CAP_SYS_ADMIN check to prevent unprivileged users from performing BAR resize operations.
--- drivers/pci/pci-sysfs.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/pci/pci-sysfs.c +3 -0
@@ -1605,6 +1605,9 @@ static ssize_t __resource_resize_store(struct device *dev, int n,int ret;u16 cmd; +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; +if (kstrtoul (buf,0 , &size) <0 )return -EINVAL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 80/1250 media: qcom: camss: avoid format string warning
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
[ Upstream commit 797c1cbf672f372d6a464df0dcedf476fc715969 ]
clang-22 warns about csiphy_match_clock_name() taking a variable format string that is not checked against the 'int index' argument:
drivers/media/platform/qcom/camss/camss-csiphy.c:566:44: error: diagnostic behavior may be improved by
adding the 'format(printf, 2, 3)' attribute to the declaration of 'csiphy_match_clock_name' [-Werror,-Wmissing-format-attribute]
561 | static bool csiphy_match_clock_name(const char *clock_name, const char *format,
| __attribute__((format(printf, 2, 3)))
562 | int index)
563 | {
564 | char name[16]; /* csiphyXXX_timer\0 */
565 |
566 | snprintf(name, sizeof(name), format, index);
| ^drivers/media/platform/qcom/camss/camss-csiphy.c:561:13: note: 'csiphy_match_clock_name' declared here
561 | static bool csiphy_match_clock_name(const char *clock_name, const char *format,
| ^
Change the function to use a snprintf() style format string that allows this to be checked at the call site.
--- drivers/media/platform/qcom/camss/camss-csiphy.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/media/platform/qcom/camss/camss-csiphy.c +7 -3
@@ -558,12 +558,16 @@ static int csiphy_init_formats(struct v4l2_subdev *sd,return csiphy_set_format (sd, fh ? fh->state :NULL , &format); } -static bool csiphy_match_clock_name (const char *clock_name,const char *format, -int index) +static bool __printf(2, 3) +csiphy_match_clock_name(const char *clock_name, const char *format, ...) {char name[16 ];/* csiphyXXX_timer\0 */ +va_list args; + +va_start (args, format); +vsnprintf (name,sizeof (name), format, args); +va_end (args); -snprintf (name,sizeof (name), format, index);return !strcmp (clock_name, name); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 81/1250 net/mlx5: Relax capability check for eswitch query paths
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Moshe Shemesh <[email protected]>
[ Upstream commit 8ca32460815f6876095be8798adcf5ab982e94de ]
Several eswitch functions that only query other functions' HCA capabilities or read cached vport state are guarded by the vhca_resource_manager capability. This capability is required for set_hca_cap operations but query_hca_cap of other functions only requires the vport_group_manager capability.
Relax the capability check from vhca_resource_manager to vport_group_manager in the following query-only paths:
- mlx5_esw_vport_caps_get() - queries other function general caps
- esw_ipsec_vf_query_generic() - queries other function ipsec cap
- mlx5_devlink_port_fn_migratable_get() - reads cached vport state
- mlx5_devlink_port_fn_roce_get() - reads cached vport state
- mlx5_devlink_port_fn_max_io_eqs_get() - queries other function caps
- mlx5_esw_vport_enable/disable() - vhca_id map/unmap
Functions that perform also set_hca_cap (migratable_set, roce_set, max_io_eqs_set, esw_ipsec_vf_set_generic, esw_ipsec_vf_set_bytype) retain the vhca_resource_manager requirement.
--- .../net/ethernet/mellanox/mlx5/core/esw/ipsec.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 6 +++--- .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 14 ++++++++------ 3 files changed, 12 insertions(+), 10 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec.c +1 -1
@@ -12,7 +12,7 @@ static int esw_ipsec_vf_query_generic(struct mlx5_core_dev *dev, u16 vport_num,void *hca_cap, *query_cap;int err; -if (!MLX5_CAP_GEN (dev, vhca_resource_manager)) +if (!MLX5_CAP_GEN (dev, vport_group_manager))return -EOPNOTSUPP ;if (!mlx5_esw_ipsec_vf_offload_supported (dev)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +3 -3
@@ -799,7 +799,7 @@ static int mlx5_esw_vport_caps_get(struct mlx5_eswitch *esw, struct mlx5_vport *void *hca_caps;int err; -if (!MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) +if (!MLX5_CAP_GEN (esw->dev, vport_group_manager))return 0 ; query_ctx =kzalloc (query_out_sz,GFP_KERNEL );
@@ -952,7 +952,7 @@ int mlx5_esw_vport_enable(struct mlx5_eswitch *esw, struct mlx5_vport *vport, vport->info.trusted = true;if (!mlx5_esw_is_manager_vport (esw, vport_num) && -MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) { +MLX5_CAP_GEN (esw->dev, vport_group_manager)) { ret =mlx5_esw_vport_vhca_id_map (esw, vport);if (ret) goto err_vhca_mapping;
@@ -999,7 +999,7 @@ void mlx5_esw_vport_disable(struct mlx5_eswitch *esw, struct mlx5_vport *vport)arm_vport_context_events_cmd (esw->dev, vport_num,0 );if (!mlx5_esw_is_manager_vport (esw, vport_num) && -MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) +MLX5_CAP_GEN (esw->dev, vport_group_manager))mlx5_esw_vport_vhca_id_unmap (esw, vport); if (vport->vport != MLX5_VPORT_PF &&
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +8 -6
@@ -4535,8 +4535,9 @@ int mlx5_devlink_port_fn_migratable_get(struct devlink_port *port, bool *is_enabreturn -EOPNOTSUPP ; } -if (!MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) { -NL_SET_ERR_MSG_MOD (extack,"Device doesn't support VHCA management" ); +if (!MLX5_CAP_GEN (esw->dev, vport_group_manager)) { +NL_SET_ERR_MSG_MOD (extack, +"Device doesn't support vport group management" );return -EOPNOTSUPP ; }
@@ -4611,8 +4612,9 @@ int mlx5_devlink_port_fn_roce_get(struct devlink_port *port, bool *is_enabled,struct mlx5_eswitch *esw =mlx5_devlink_eswitch_nocheck_get (port->devlink);struct mlx5_vport *vport =mlx5_devlink_port_vport_get (port); -if (!MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) { -NL_SET_ERR_MSG_MOD (extack,"Device doesn't support VHCA management" ); +if (!MLX5_CAP_GEN (esw->dev, vport_group_manager)) { +NL_SET_ERR_MSG_MOD (extack, +"Device doesn't support vport group management" );return -EOPNOTSUPP ; }
@@ -4876,9 +4878,9 @@ mlx5_devlink_port_fn_max_io_eqs_get(struct devlink_port *port, u32 *max_io_eqs,int err; esw =mlx5_devlink_eswitch_nocheck_get (port->devlink); -if (!MLX5_CAP_GEN (esw->dev, vhca_resource_manager)) { +if (!MLX5_CAP_GEN (esw->dev, vport_group_manager)) {NL_SET_ERR_MSG_MOD (extack, -"Device doesn't support VHCA management" ); +"Device doesn't support vport group management" );return -EOPNOTSUPP ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 82/1250 drm/panel-edp: Add AUO B140XTN07.5, AUO B140HAK03.5, AUO B116XTN02.3, AUO B140XTK02.4, AUO B140HAN07.7
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Terry Hsiao <[email protected]>
[ Upstream commit 4c34cdb93ea187b46d287a77a8946268a7d24286 ]
The raw EDIDs for each panel:
AUO B140XTN07.5
00 ff ff ff ff ff ff 00 06 af 90 02 00 00 00 00 00 1e 01 04 95 1f 11 78 03 c0 d5 8f 56 58 93 29 20 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ce 1d 56 e2 50 00 1e 30 26 16 36 00 35 ad 10 00 00 18 df 13 56 e2 50 00 1e 30 26 16 36 00 35 ad 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 48 ff 0f 3c 7d 48 0f 1b 7d 20 20 20 00 09
AUO B140HAK03.5
00 ff ff ff ff ff ff 00 06 af 9f 3c 00 00 00 00 00 1f 01 04 95 1f 11 78 03 f5 65 8f 55 5a 93 2a 1f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 b0 36 80 a0 70 38 24 40 10 10 3e 00 35 ae 10 00 00 18 75 24 80 a0 70 38 24 40 10 10 3e 00 35 ae 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 48 ff 0f 3c 7d 14 0e 1e 7d 20 20 20 01 02
70 20 79 02 00 22 00 14 df 22 02 84 7f 07 9f 00 0f 80 0f 00 37 04 23 00 02 00 0d 00 25 00 09 df 22 02 df 22 02 28 3c 80 81 00 10 72 1a 00 00 03 01 28 3c 00 00 60 50 60 50 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3f 90
AUO B116XTN02.3
00 ff ff ff ff ff ff 00 06 af ba 49 00 00 00 00 00 23 01 04 95 1a 0e 78 02 6b f5 91 55 54 91 27 22 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ce 1d 56 e2 50 00 1e 30 26 16 36 00 00 90 10 00 00 18 df 13 56 e2 50 00 1e 30 26 16 36 00 00 90 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 48 ff 0f 3c 7d 50 05 18 7d 20 20 20 00 7f
AUO B140XTK02.4
00 ff ff ff ff ff ff 00 06 af a8 67 00 00 00 00 28 20 01 04 95 1f 11 78 03 c0 d5 8f 56 58 93 29 20 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ce 1d 56 e2 50 00 1e 30 26 16 36 00 35 ad 10 00 00 18 df 13 56 e2 50 00 1e 30 26 16 36 00 35 ad 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 48 ff 0f 3c 7d 11 23 21 6e 20 20 20 00 8e
AUO B140HAN07.7
00 ff ff ff ff ff ff 00 06 af ad c7 00 00 00 00 21 21 01 04 a5 1f 11 78 03 fa 95 92 56 5a 92 2a 20 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 56 37 80 bc 70 38 28 40 10 10 3e 00 35 ae 10 00 00 18 e4 24 80 bc 70 38 28 40 10 10 3e 00 35 ae 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 3c ff 0f 3c 96 23 10 28 96 20 20 20 01 66
70 20 79 02 00 22 00 14 5b 29 02 84 7f 07 bb 00 0f 80 0f 00 37 04 27 00 02 00 0d 00 25 01 09 5b 29 02 5b 29 02 28 3c 80 81 00 10 6f 1a 00 00 03 01 28 3c 00 00 8b 11 8b 11 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0 90
--- drivers/gpu/drm/panel/panel-edp.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/gpu/drm/panel/panel-edp.c +5 -0
@@ -1892,6 +1892,7 @@ static const struct panel_delay delay_80_500_e50_d50 = {* Sort first by vendor, then by product ID. */ static const struct edp_panel_entry edp_panels[] = { +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x0290 , &delay_200_500_e50,"B140XTN07.5" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x04a4 , &delay_200_500_e50,"B122UAN01.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x0ba4 , &delay_200_500_e50,"B140QAX01.H" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x105c , &delay_200_500_e50,"B116XTN01.0" ),
@@ -1907,17 +1908,20 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x239b , &delay_200_500_e50,"B116XAN06.1" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x255c , &delay_200_500_e50,"B116XTN02.5" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x30ed , &delay_200_500_e50,"G156HAN03.0" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x3c9f , &delay_200_500_e50,"B140HAK03.5" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x403d , &delay_200_500_e50,"B140HAN04.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x405c , &auo_b116xak01.delay,"B116XAN04.0" ),EDP_PANEL_ENTRY2 ('A' ,'U' ,'O' ,0x405c , &auo_b116xak01.delay,"B116XAK01.0" , &auo_b116xa3_mode),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x435c , &delay_200_500_e50,"Unknown" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x49ba , &delay_200_500_e50,"B116XTN02.3" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x52b0 , &delay_200_500_e50,"B116XAK02.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x582d , &delay_200_500_e50,"B133UAN01.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x615c , &delay_200_500_e50,"B116XAN06.1" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x635c , &delay_200_500_e50,"B116XAN06.3" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x639c , &delay_200_500_e50,"B140HAK02.7" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x643d , &delay_200_500_e50,"B140HAN06.4" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x67a8 , &delay_200_500_e50,"B140XTK02.4" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x723c , &delay_200_500_e50,"B140XTN07.2" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x73aa , &delay_200_500_e50,"B116XTN02.3" ), EDP_PANEL_ENTRY('A', 'U', 'O', 0x8594, &delay_200_500_e50, "B133UAN01.0"),
@@ -1925,6 +1929,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xa199 , &delay_200_500_e50,"B116XAN06.1" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xa7b3 , &delay_200_500_e50,"B140UAN04.4" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc4b4 , &delay_200_500_e50,"B116XAT04.1" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc7ad , &delay_200_500_e50,"B140HAN07.7" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc9a8 , &delay_200_500_e50,"B140QAN08.H" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xcdba , &delay_200_500_e50,"B140UAX01.2" ), EDP_PANEL_ENTRY('A', 'U', 'O', 0xd497, &delay_200_500_e50, "B120XAN01.0"),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 83/1250 drm/panel-edp: Add BOE NT140WHM-N4T, BOE NT140WHM-T05, BOE NV140FHM-N40
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Terry Hsiao <[email protected]>
[ Upstream commit a58ff7da4835e76a5ffc078ecfd2773de90e5d8c ]
The raw EDIDs for each panel:
BOE NT140WHM-N4T
00 ff ff ff ff ff ff 00 09 e5 0d 09 00 00 00 00 01 1e 01 04 95 1f 11 78 03 f8 45 96 57 54 92 28 23 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 a9 1d 56 d0 50 00 24 30 30 20 36 00 35 ae 10 00 00 1a c6 13 56 d0 50 00 24 30 30 20 36 00 35 ae 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0d 40 ff 0a 3c 7d 11 11 21 7d 00 00 00 00 65
BOE NT140WHM-T05
00 ff ff ff ff ff ff 00 09 e5 85 0b 00 00 00 00 01 21 01 04 95 1f 11 78 03 ea a5 93 5c 58 8f 29 1d 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 c7 1d 56 e2 50 00 1e 30 30 20 36 00 35 ae 10 00 00 1a da 13 56 e2 50 00 1e 30 30 20 36 00 35 ae 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0d 40 ff 0a 3c 7d 11 11 21 7d 00 00 00 00 4e
BOE NV140FHM-N40
00 ff ff ff ff ff ff 00 09 e5 6f 0c 00 00 00 00 19 21 01 04 a5 1f 11 78 03 21 35 97 59 57 8f 29 23 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 c2 37 80 cc 70 38 28 40 6c 30 aa 00 35 ae 10 00 00 1a 2c 25 80 cc 70 38 28 40 6c 30 aa 00 35 ae 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0d 36 ff 0a 3c 96 09 0a 19 96 00 00 00 01 57
70 20 79 02 00 25 01 09 8c 2d 02 8c 2d 02 28 3c 80 81 00 10 6f 1a 00 00 03 01 28 3c 00 00 53 4a 53 4a 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e4 90
--- drivers/gpu/drm/panel/panel-edp.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/panel/panel-edp.c +3 -0
@@ -1966,6 +1966,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x08b2 , &delay_200_500_e200,"NT140WHM-N49" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0848 , &delay_200_500_e200,"Unknown" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0849 , &delay_200_500_e200,"Unknown" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x090d , &delay_200_500_e50,"NT140WHM-N4T" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x09c3 , &delay_200_500_e50,"NT116WHM-N21,836X2" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x094b , &delay_200_500_e50,"NT116WHM-N21" ), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0951, &delay_200_500_e80, "NV116WHM-N47"),
@@ -1991,8 +1992,10 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0b43 , &delay_200_500_e200,"NV140FHM-T09" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0b56 , &delay_200_500_e80,"NT140FHM-N47" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0b66 , &delay_200_500_e80,"NE140WUM-N6G" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0b85 , &delay_200_500_e50,"NT140WHM-T05" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0c20 , &delay_200_500_e80,"NT140FHM-N47" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0c26 , &delay_200_500_p2e200,"NV140WUM-T08" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0c6f , &delay_200_500_e50,"NV140FHM-N40" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0c93 , &delay_200_500_e200,"Unknown" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0cb6 , &delay_200_500_e200,"NT116WHM-N44" ), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf6, &delay_200_500_e200, "NV140WUM-N64"),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 84/1250 phy: qcom: m31-eusb2: Make USB repeater optional
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wesley Cheng <[email protected]>
[ Upstream commit a62bfbcf2db4ae6eb7a544a40b1075a81784ea41 ]
A repeater is not required for the PHY to function. On systems with multiple PHY instances connected to a multi-port controller, some PHYs may be unconnected. All PHYs must still probe successfully even without attached repeaters, otherwise the controller probe fails.
So make it optional.
--- drivers/phy/qualcomm/phy-qcom-m31-eusb2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/phy/qualcomm/phy-qcom-m31-eusb2.c +1 -1
@@ -285,7 +285,7 @@ static int m31eusb2_phy_probe(struct platform_device *pdev)phy_set_drvdata (phy->phy, phy); - phy->repeater =devm_of_phy_get_by_index (dev, dev->of_node,0 ); + phy->repeater =devm_phy_optional_get (dev,NULL );if (IS_ERR (phy->repeater))return dev_err_probe (dev,PTR_ERR (phy->repeater),"failed to get repeater\n" );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 85/1250 ASoC: ti: omap3pandora: update board check to use DT compatible
In reply to Greg Kroah-Hartman6.18-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 86/1250 watchdog: lenovo_se10_wdt: Add support for SE10 Gen 2 platform
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Pearson <[email protected]>
[ Upstream commit 7b25feb19ce8073193fff6a05a43b5a5c2854b4b ]
The Lenovo SE10 Gen 2 platform uses a watchdog chip from the same family. Watchdog functionality is the same, so update the driver with the new chip ID.
Add the Gen 2 MTM's to enable support on the platform.
Tested on SE10 G2.
--- drivers/watchdog/lenovo_se10_wdt.c | 66 +++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-)
drivers/watchdog/lenovo_se10_wdt.c +65 -1
@@ -178,7 +178,7 @@ static int se10_wdt_probe(struct platform_device *pdev)return -EBUSY ; chip_id =get_chipID (); -if (chip_id !=0x5632 ) { +if (chip_id !=0x5632 && chip_id !=0x5652 ) {release_region (CFG_PORT ,CFG_SIZE );return -ENODEV ; }
@@ -280,6 +280,70 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = { }, .callback = se10_create_platform_device, }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13LJ"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13LK"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S1"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S2"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S3"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S4"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S5"), + }, + .callback = se10_create_platform_device, + }, + { + .ident = "LENOVO-SE10-G2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "13S6"), + }, + .callback = se10_create_platform_device, + }, {} }; MODULE_DEVICE_TABLE(dmi, se10_dmi_table);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 87/1250 watchdog: imx7ulp_wdt: Keep WDOG running until A55 enters WFI on i.MX94
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ranjani Vaidyanathan <[email protected]>
[ Upstream commit 1f5b29add64e7c1500530079bbbe359cad28cb63 ]
On i.MX94, watchdog sources clock from bus clock that will be always on during the lifecycle of Linux. There is a Low Power Clock Gating(LPCG) between the bus clock and watchdog, but the LPCG is not exported for software to control, it is hardware automatically controlled. When Cortex-A55 executes WFI during suspend flow, the LPCG will automatically gate off the clock to stop watchdog and resume clock when Cortex-A55 is woke up.
So watchdog could always be alive to protect Linux, except Cortex-A platform WFI is executed in Linux suspend flow.
Introduce a new hardware feature flag to indicate CPU low-power-mode auto clock gating support, and use it to avoid stopping the watchdog during suspend when LPCG can safely keep it running.
Add i.MX94-specific watchdog hardware data and DT compatible entry to enable this behavior.
--- drivers/watchdog/imx7ulp_wdt.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/watchdog/imx7ulp_wdt.c +9 -1
@@ -56,6 +56,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="struct imx_wdt_hw_feature {bool prescaler_enable;bool post_rcs_wait; +bool cpu_lpm_auto_cg;u32 wdog_clock_rate; };
@@ -360,7 +361,7 @@ static int __maybe_unused imx7ulp_wdt_suspend_noirq(struct device *dev) {struct imx7ulp_wdt_device *imx7ulp_wdt =dev_get_drvdata (dev); -if (watchdog_active (&imx7ulp_wdt->wdd)) +if (watchdog_active (&imx7ulp_wdt->wdd) && !imx7ulp_wdt->hw->cpu_lpm_auto_cg)imx7ulp_wdt_stop (&imx7ulp_wdt->wdd);clk_disable_unprepare (imx7ulp_wdt->clk);
@@ -408,10 +409,17 @@ static const struct imx_wdt_hw_feature imx93_wdt_hw = { .wdog_clock_rate = 125, }; +static const struct imx_wdt_hw_feature imx94_wdt_hw = { + .prescaler_enable = true, + .wdog_clock_rate =125 , + .cpu_lpm_auto_cg = true, +}; +static const struct of_device_id imx7ulp_wdt_dt_ids[] = { { .compatible ="fsl,imx7ulp-wdt" , .data = &imx7ulp_wdt_hw, }, { .compatible ="fsl,imx8ulp-wdt" , .data = &imx8ulp_wdt_hw, }, { .compatible ="fsl,imx93-wdt" , .data = &imx93_wdt_hw, }, + { .compatible ="fsl,imx94-wdt" , .data = &imx94_wdt_hw, }, {/* sentinel */ } };MODULE_DEVICE_TABLE (of, imx7ulp_wdt_dt_ids);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 88/1250 watchdog: lenovo_se10_wdt: Fix use-after-free and resource leak risk
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Pearson <[email protected]>
[ Upstream commit 3394e894880a60338a2981dd688fd25e88d79667 ]
Review by sashiko.dev highlighted potential use after free and resource leak instances.
Set se10_pdev to null to prevent use after free
Remove DMI call back and instead directly call se10_create_platform_device. Handle error cases appropriately
--- drivers/watchdog/lenovo_se10_wdt.c | 32 ++++++++++++++---------------- 1 file changed, 15 insertions(+), 17 deletions(-)
drivers/watchdog/lenovo_se10_wdt.c +15 -17
@@ -224,7 +224,7 @@ static struct platform_driver se10_wdt_driver = { .probe = se10_wdt_probe, }; -static int se10_create_platform_device (const struct dmi_system_id *id) +static int se10_create_platform_device (void ) {int err;
@@ -233,9 +233,10 @@ static int se10_create_platform_device(const struct dmi_system_id *id)return -ENOMEM ; err =platform_device_add (se10_pdev); -if (err) +if (err) {platform_device_put (se10_pdev); - + se10_pdev =NULL ; + }return err; }
@@ -246,7 +247,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "12NH"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10",
@@ -254,7 +254,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "12NJ"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10",
@@ -262,7 +261,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "12NK"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10",
@@ -270,7 +268,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "12NL"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10",
@@ -278,7 +275,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "12NM"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -286,7 +282,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13LJ"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -294,7 +289,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13LK"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -302,7 +296,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13S1"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -310,7 +303,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13S2"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -318,7 +310,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13S3"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -326,7 +317,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13S4"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -334,7 +324,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = {DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), DMI_MATCH(DMI_PRODUCT_NAME, "13S5"), }, - .callback = se10_create_platform_device, }, { .ident = "LENOVO-SE10-G2",
@@ -342,7 +331,6 @@ static const struct dmi_system_id se10_dmi_table[] __initconst = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), DMI_MATCH(DMI_PRODUCT_NAME, "13S6"), }, - .callback = se10_create_platform_device, }, {} };
@@ -350,10 +338,20 @@ MODULE_DEVICE_TABLE(dmi, se10_dmi_table);static int __init se10_wdt_init (void ) { +int err; +if (!dmi_check_system (se10_dmi_table))return -ENODEV ; -return platform_driver_register (&se10_wdt_driver); + err =platform_driver_register (&se10_wdt_driver); +if (err) +return err; + + err =se10_create_platform_device (); +if (err) +platform_driver_unregister (&se10_wdt_driver); + +return err; } static void __exit se10_wdt_exit(void)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 89/1250 net/mlx5: HWS, Check if device is down while polling for completion
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yevgeny Kliteynik <[email protected]>
[ Upstream commit e3ec1570895bcf81f443e8ac60059edc61dbfca3 ]
In case the device is down for any reason (e.g. FLR), the HW will no longer generate completions - no point polling and waiting for timeout.
--- .../ethernet/mellanox/mlx5/core/steering/hws/bwc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c +12 -0
@@ -423,6 +423,18 @@ int mlx5hws_bwc_queue_poll(struct mlx5hws_context *ctx,if (!got_comp && !drain)return 0 ; +if (unlikely (ctx->mdev->state ==MLX5_DEVICE_STATE_INTERNAL_ERROR )) { +/* If the device is down for any reason (e.g. FLR), the HW will +* no longer generate completions. +* Note that ETIMEDOUT is returned here because the BWC layer +* already has a special handling for timeouts - it breaks the +* rehash / resize / shrink loops to avoid chain of timeouts. +*/ +mlx5_core_warn_once (ctx->mdev, +"BWC poll: device is down, polling for completion aborted\n" ); +return -ETIMEDOUT ; + } + queue_full =mlx5hws_send_engine_full (&ctx->send_queue[queue_id]);while (queue_full || ((got_comp || drain) && *pending_rules)) { ret =mlx5hws_send_queue_poll (ctx, queue_id, comp, burst_th);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 90/1250 net/mlx5: HWS, Handle destroying table that has a miss table
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yevgeny Kliteynik <[email protected]>
[ Upstream commit 60e9e82f162ab7399373ff2185119289e4f6dc06 ]
If a table has a miss table that was created by 'mlx5hws_table_set_default_miss' API function, its miss_tbl keeps the table that points to it in a list.
If such table is deleted, we need to also remove it from the miss_tbl list, otherwise the node in miss_tbl list will contain garbage.
--- drivers/net/ethernet/mellanox/mlx5/core/steering/hws/table.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/table.c +3 -0
@@ -282,6 +282,9 @@ int mlx5hws_table_destroy(struct mlx5hws_table *tbl) goto unlock_err; } +if (tbl->default_miss.miss_tbl) +list_del_init (&tbl->default_miss.next); +list_del_init (&tbl->tbl_list_node);mutex_unlock (&ctx->ctrl_lock);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 91/1250 platform/chrome: Resolve kb_wake_angle visibility race
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tzung-Bi Shih <[email protected]>
[ Upstream commit c40f5f9927b5bf6062daa1e293ae32d83afc963e ]
A race condition exists between the probe of cros-ec-sysfs and cros-ec-sensorhub.
The kb_wake_angle attribute should only be visible if the sensor hub detects two or more accelerometers. If cros_ec_sysfs_probe() runs before cros_ec_sensorhub_register() completes sensor enumeration, the sysfs attributes are created while has_kb_wake_angle is still false, hiding kb_wake_angle incorrectly.
Store the created attribute group pointer in ec_dev->group. When the sensor hub completes sensor enumeration, it checks for this group and calls sysfs_update_group() to notify the sysfs core to re-evaluate attribute visibility. This ensures the kb_wake_angle attribute visibility is correctly updated regardless of the driver probe order.
--- drivers/platform/chrome/cros_ec_sensorhub.c | 6 +++++- drivers/platform/chrome/cros_ec_sysfs.c | 5 +++-- include/linux/platform_data/cros_ec_proto.h | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-)
drivers/platform/chrome/cros_ec_sensorhub.c +5 -1
@@ -122,8 +122,12 @@ static int cros_ec_sensorhub_register(struct device *dev, sensor_type[sensorhub->resp->info.type]++; } -if (sensor_type[MOTIONSENSE_TYPE_ACCEL ] >=2 ) +if (sensor_type[MOTIONSENSE_TYPE_ACCEL ] >=2 ) { ec->has_kb_wake_angle = true; +if (ec->group &&sysfs_update_group (&ec->class_dev.kobj, + ec->group)) +dev_warn (dev,"Unable to update sysfs" ); + }if (cros_ec_check_features (ec,EC_FEATURE_REFINED_TABLET_MODE_HYSTERESIS )) {
drivers/platform/chrome/cros_ec_sysfs.c +3 -2
@@ -405,7 +405,8 @@ static int cros_ec_sysfs_probe(struct platform_device *pd)struct device *dev = &pd->dev;int ret; - ret =sysfs_create_group (&ec_dev->class_dev.kobj, &cros_ec_attr_group); + ec_dev->group = &cros_ec_attr_group; + ret =sysfs_create_group (&ec_dev->class_dev.kobj, ec_dev->group);if (ret <0 )dev_err (dev,"failed to create attributes. err=%d\n" , ret);
@@ -416,7 +417,7 @@ static void cros_ec_sysfs_remove(struct platform_device *pd) {struct cros_ec_dev *ec_dev =dev_get_drvdata (pd->dev.parent); -sysfs_remove_group (&ec_dev->class_dev.kobj, &cros_ec_attr_group); +sysfs_remove_group (&ec_dev->class_dev.kobj, ec_dev->group); }static const struct platform_device_id cros_ec_sysfs_id[] = {
include/linux/platform_data/cros_ec_proto.h +2 -0
@@ -228,6 +228,7 @@ struct cros_ec_platform {/** * struct cros_ec_dev - ChromeOS EC device entry point. * @class_dev: Device structure used in sysfs. +* @group: sysfs attributes groups for this EC. * @ec_dev: cros_ec_device structure to talk to the physical device. * @dev: Pointer to the platform device. * @debug_info: cros_ec_debugfs structure for debugging information.
@@ -237,6 +238,7 @@ struct cros_ec_platform {*/ struct cros_ec_dev {struct device class_dev; +const struct attribute_group *group;struct cros_ec_device *ec_dev;struct device *dev;struct cros_ec_debugfs *debug_info;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 92/1250 drm/panel/tdo-tl070wsh30: Use refcounted allocation in place of devm_kzalloc()
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Albert Esteve <[email protected]>
[ Upstream commit 928decbed75bf215a8d0eecc88aa2edc77023db2 ]
Move to using the new API devm_drm_panel_alloc() to allocate the panel. In the call to the new API, avoid using explicit type and use __typeof() for more type safety.
--- drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c +7 -7
@@ -162,9 +162,6 @@ static int tdo_tl070wsh30_panel_add(struct tdo_tl070wsh30_panel *tdo_tl070wsh30)return err; } -drm_panel_init (&tdo_tl070wsh30->base, &tdo_tl070wsh30->link->dev, - &tdo_tl070wsh30_panel_funcs,DRM_MODE_CONNECTOR_DSI ); - err =drm_panel_of_backlight (&tdo_tl070wsh30->base);if (err)return err;
@@ -183,10 +180,13 @@ static int tdo_tl070wsh30_panel_probe(struct mipi_dsi_device *dsi) dsi->format =MIPI_DSI_FMT_RGB888 ; dsi->mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_BURST |MIPI_DSI_MODE_LPM ; - tdo_tl070wsh30 =devm_kzalloc (&dsi->dev,sizeof (*tdo_tl070wsh30), -GFP_KERNEL ); -if (!tdo_tl070wsh30) -return -ENOMEM ; + tdo_tl070wsh30 =devm_drm_panel_alloc (&dsi->dev, +__typeof (*tdo_tl070wsh30), base, + &tdo_tl070wsh30_panel_funcs, +DRM_MODE_CONNECTOR_DSI ); + +if (IS_ERR (tdo_tl070wsh30)) +return PTR_ERR (tdo_tl070wsh30);mipi_dsi_set_drvdata (dsi, tdo_tl070wsh30); tdo_tl070wsh30->link = dsi;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 93/1250 mmc: core: Add validation for host-provided max_segs
In reply to Greg Kroah-Hartman6.18-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
@@ -214,8 +214,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 94/1250 genirq/proc: Size interrupt directory names for 10-digit interrupt numbers
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pengpeng Hou <[email protected]>
[ Upstream commit c2c7983c93f5d86962318be7e7298f1bc3feb1a6 ]
/proc/irq/<n>/ directory names are built in char name[10] buffers with sprintf(name, "%u", irq).
Ten-digit IRQ numbers already need 11 bytes including the trailing NUL, and current sparse-IRQ configurations allow interrupt numbers in that range.
Size the temporary name buffer for the current decimal form and switch to bounded formatting when creating or removing the proc entry.
--- kernel/irq/proc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
kernel/irq/proc.c +4 -3
@@ -10,6 +10,7 @@#include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/interrupt.h> +#include <linux/kernel.h> #include <linux/kernel_stat.h> #include <linux/mutex.h>
@@ -323,7 +324,7 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)#undef MAX_NAMELEN -#define MAX_NAMELEN 10 +#define MAX_NAMELEN 11void register_irq_proc (unsigned int irq,struct irq_desc *desc) {
@@ -345,7 +346,7 @@ void register_irq_proc(unsigned int irq, struct irq_desc *desc)return ;/* create /proc/irq/1234 */ -sprintf (name,"%u" , irq); +snprintf (name,MAX_NAMELEN ,"%u" , irq); desc->dir =proc_mkdir (name, root_irq_dir);if (!desc->dir)return ;
@@ -398,7 +399,7 @@ void unregister_irq_proc(unsigned int irq, struct irq_desc *desc)#endif remove_proc_entry ("spurious" , desc->dir); -sprintf (name,"%u" , irq); +snprintf (name,MAX_NAMELEN ,"%u" , irq);remove_proc_entry (name, root_irq_dir); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 95/1250 serial: 8250_port: recognize UPIO_AU
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manuel Lauss <[email protected]>
[ Upstream commit 49fa670efdfdd27e29145cbd2beef065c08717ef ]
My MIPS Alchemy systems generate the following warning during probe of the 8250 driver:
WARNING: drivers/tty/serial/8250/8250_port.c:462 at set_io_from_upio+0xfc/0x124, CPU#0: swapper/0/1 Unsupported UART type 4 [...] [<80521d40>] set_io_from_upio+0xfc/0x124 [<80521dfc>] serial8250_set_defaults+0x94/0xe0 [<80520fb4>] serial8250_register_8250_port+0x288/0x51c [<805214ec>] serial8250_probe+0x160/0x1e8 [<8053b5f0>] platform_probe+0x64/0x90
The least invasive fix is to recognize UPIO_AU (type 4) in set_io_from_upio() and do nothing, since all parameters have already been set up in 8250_rt288x.c::au_platform_setup().
Run-tested on Alchemy Au1300 platform.
--- drivers/tty/serial/8250/8250_port.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/tty/serial/8250/8250_port.c +2 -0
@@ -458,6 +458,8 @@ static void set_io_from_upio(struct uart_port *p) p->serial_out = io_serial_out;break ;#endif +case UPIO_AU : +break ;default :WARN (p->iotype !=UPIO_PORT || p->iobase,"Unsupported UART type %x\n" , p->iotype);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 96/1250 mmc: davinci: avoid NULL deref of host->data in IRQ handler
In reply to Greg Kroah-Hartman6.18-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
@@ -928,7 +928,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 ;
@@ -940,7 +940,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 97/1250 platform/x86: sel3350-platform: Retain LED state on load and unload
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brodie Abrew <[email protected]>
[ Upstream commit 18bc6ce6bb618e1dff4473d7dd528d22519abbd7 ]
When the platform driver is loaded or unloaded, it overwrites the existing LED states. This can cause a loss of early boot state when the driver loads, and it can cause the ALARM contact to change state or flicker.
Explicitly retain the existing LED state to prevent overwriting on driver load and unload.
--- drivers/platform/x86/sel3350-platform.c | 136 ++++++++++++++++++------ 1 file changed, 103 insertions(+), 33 deletions(-)
drivers/platform/x86/sel3350-platform.c +103 -33
@@ -9,6 +9,8 @@*/ #include <linux/acpi.h> +#include <linux/array_size.h> +#include <linux/err.h> #include <linux/gpio/consumer.h> #include <linux/gpio/machine.h> #include <linux/leds.h>
@@ -30,19 +32,82 @@#define SEL_PS_B_DETECT "sel_ps_b_detect"#define SEL_PS_B_GOOD "sel_ps_b_good" +#define AUX_LED_GRN1 "sel_aux_led_grn1" +#define AUX_LED_GRN2 "sel_aux_led_grn2" +#define AUX_LED_GRN3 "sel_aux_led_grn3" +#define AUX_LED_GRN4 "sel_aux_led_grn4" +#define ALARM_STATE_USER "sel_alarm_state_user" +#define ENABLE_STATE_USER "sel_enable_state_user" +#define AUX_LED_RED1 "sel_aux_led_red1" +#define AUX_LED_RED2 "sel_aux_led_red2" +#define AUX_LED_RED3 "sel_aux_led_red3" +#define AUX_LED_RED4 "sel_aux_led_red4" + +static const char *const sel3350_leds_gpio_names[] = { +AUX_LED_GRN1 , +AUX_LED_GRN2 , +AUX_LED_GRN3 , +AUX_LED_GRN4 , +ALARM_STATE_USER , +ENABLE_STATE_USER , +AUX_LED_RED1 , +AUX_LED_RED2 , +AUX_LED_RED3 , +AUX_LED_RED4 , +}; +/* LEDs */ -static const struct gpio_led sel3350_leds[] = { - { .name ="sel:green:aux1" }, - { .name ="sel:green:aux2" }, - { .name ="sel:green:aux3" }, - { .name ="sel:green:aux4" }, - { .name ="sel:red:alarm" }, +static struct gpio_led sel3350_leds[] = { + { .name ="sel:green:aux1" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:green:aux2" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:green:aux3" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:green:aux4" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:red:alarm" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, { .name ="sel:green:enabled" , - .default_state =LEDS_GPIO_DEFSTATE_ON }, - { .name ="sel:red:aux1" }, - { .name ="sel:red:aux2" }, - { .name ="sel:red:aux3" }, - { .name ="sel:red:aux4" }, + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:red:aux1" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:red:aux2" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:red:aux3" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, + { .name ="sel:red:aux4" , + .default_state =LEDS_GPIO_DEFSTATE_KEEP , + .retain_state_suspended =1 , + .retain_state_shutdown =1 , + }, };static const struct gpio_led_platform_data sel3350_leds_pdata = {
@@ -50,25 +115,6 @@ static const struct gpio_led_platform_data sel3350_leds_pdata = { .leds = sel3350_leds, }; -/* Map GPIOs to LEDs */ -static struct gpiod_lookup_table sel3350_leds_table = { - .dev_id ="leds-gpio" , - .table = { -GPIO_LOOKUP_IDX (BXT_NW ,49 ,NULL ,0 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_NW ,50 ,NULL ,1 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_NW ,51 ,NULL ,2 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_NW ,52 ,NULL ,3 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_W ,20 ,NULL ,4 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_W ,21 ,NULL ,5 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_SW ,37 ,NULL ,6 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_SW ,38 ,NULL ,7 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_SW ,39 ,NULL ,8 ,GPIO_ACTIVE_HIGH ), -GPIO_LOOKUP_IDX (BXT_SW ,40 ,NULL ,9 ,GPIO_ACTIVE_HIGH ), - {}, - } -}; - -/* Map GPIOs to power supplies */ static struct gpiod_lookup_table sel3350_gpios_table = { .dev_id =B2093_GPIO_ACPI_ID ":00" , .table = {
@@ -76,6 +122,16 @@ static struct gpiod_lookup_table sel3350_gpios_table = { GPIO_LOOKUP(BXT_NW, 45, SEL_PS_A_GOOD, GPIO_ACTIVE_LOW), GPIO_LOOKUP(BXT_NW, 46, SEL_PS_B_DETECT, GPIO_ACTIVE_LOW), GPIO_LOOKUP(BXT_NW, 47, SEL_PS_B_GOOD, GPIO_ACTIVE_LOW), + GPIO_LOOKUP(BXT_NW, 49, AUX_LED_GRN1, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_NW, 50, AUX_LED_GRN2, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_NW, 51, AUX_LED_GRN3, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_NW, 52, AUX_LED_GRN4, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_W, 20, ALARM_STATE_USER, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_W, 21, ENABLE_STATE_USER, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_SW, 37, AUX_LED_RED1, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_SW, 38, AUX_LED_RED2, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_SW, 39, AUX_LED_RED3, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP(BXT_SW, 40, AUX_LED_RED4, GPIO_ACTIVE_HIGH), {}, } };
@@ -149,6 +205,7 @@ struct sel3350_data {static int sel3350_probe (struct platform_device *pdev) {int rs; +int i;struct sel3350_data *sel3350;struct power_supply_config ps_cfg = {};
@@ -158,9 +215,19 @@ static int sel3350_probe(struct platform_device *pdev)platform_set_drvdata (pdev, sel3350); -gpiod_add_lookup_table (&sel3350_leds_table);gpiod_add_lookup_table (&sel3350_gpios_table); +for (i =0 ; i <ARRAY_SIZE (sel3350_leds); ++i) { + sel3350_leds[i].gpiod =devm_gpiod_get (&pdev->dev, + sel3350_leds_gpio_names[i], +GPIOD_ASIS ); +if (IS_ERR_OR_NULL (sel3350_leds[i].gpiod)) { + rs = -EPROBE_DEFER ; + goto err_gpio_loop; + } +gpiod_set_consumer_name (sel3350_leds[i].gpiod, sel3350_leds[i].name); + } + sel3350->leds_pdev = platform_device_register_data( NULL, "leds-gpio",
@@ -209,11 +276,15 @@ static int sel3350_probe(struct platform_device *pdev)return 0 ; +err_gpio_loop: +while (i--) +devm_gpiod_put (&pdev->dev, sel3350_leds[i].gpiod); + goto err_platform; + err_ps:platform_device_unregister (sel3350->leds_pdev); err_platform:gpiod_remove_lookup_table (&sel3350_gpios_table); -gpiod_remove_lookup_table (&sel3350_leds_table);return rs; }
@@ -224,7 +295,6 @@ static void sel3350_remove(struct platform_device *pdev)platform_device_unregister (sel3350->leds_pdev);gpiod_remove_lookup_table (&sel3350_gpios_table); -gpiod_remove_lookup_table (&sel3350_leds_table); }static const struct acpi_device_id sel3350_device_ids[] = {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 98/1250 drm/amd/display: Fix CRC open failure during active rendering
In reply to Greg Kroah-Hartman6.18-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
@@ -584,8 +584,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 99/1250 pinctrl: mediatek: paris: bypass pinctrl GPIO layer in set GPIO direction
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit c87c9046c4e00d599454e033a477176c4d73ac2a ]
pinctrl_gpio_direction_input() / pinctrl_gpio_direction_output() take the pinctrl mutex. This causes a gpiochip operations to need to sleep. Worse yet, the .can_sleep field in the gpiochip is not set. This causes the shared GPIO proxy to trip over, as it uses gpiod_cansleep() to check whether it can use a spinlock or needs a mutex. In this case, it ends up taking a spinlock, then calls pinctrl_gpio_direction_output(), which takes a mutex. This causes a huge warning.
While this class of Mediatek hardware does not have separate clear/set registers, the pinctrl context has a spinlock that is taken whenever a register read-modify-write is done. Also, once the GPIO function is selected / muxed in, further GPIO operations do not involve pinctrl operations or state. The GPIO direction and level values do not require toggling the pinmux or any other pin config options.
Switch to directly calling mtk_pinmux_gpio_set_direction() in the GPIO set direction callbacks to avoid taking the pinctrl mutex. Drop the .gpio_set_direction field in mtk_pmxops to signal we are no longer using the pinctrl GPIO layer for setting the direction.
--- drivers/pinctrl/mediatek/pinctrl-paris.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/pinctrl/mediatek/pinctrl-paris.c +5 -3
@@ -771,7 +771,6 @@ static const struct pinmux_ops mtk_pmxops = { .get_function_name = mtk_pmx_get_func_name, .get_function_groups = mtk_pmx_get_func_groups, .set_mux = mtk_pmx_set_mux, - .gpio_set_direction = mtk_pinmux_gpio_set_direction, .gpio_request_enable = mtk_pinmux_gpio_request_enable, };
@@ -886,19 +885,22 @@ static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)static int mtk_gpio_direction_input (struct gpio_chip *chip,unsigned int gpio) { -return pinctrl_gpio_direction_input (chip, gpio); +struct mtk_pinctrl *hw =gpiochip_get_data (chip); + +return mtk_pinmux_gpio_set_direction (hw->pctrl,NULL , gpio, true); }static int mtk_gpio_direction_output (struct gpio_chip *chip,unsigned int gpio,int value) { +struct mtk_pinctrl *hw =gpiochip_get_data (chip);int ret; ret =mtk_gpio_set (chip, gpio, value);if (ret)return ret; -return pinctrl_gpio_direction_output (chip, gpio); +return mtk_pinmux_gpio_set_direction (hw->pctrl,NULL , gpio, false); }static int mtk_gpio_to_irq (struct gpio_chip *chip,unsigned int offset)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 100/1250 pinctrl: mediatek: common-v1: bypass pinctrl GPIO layer in set GPIO direction
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit 3982db2df3ed4c195e5f0a9a4513545a15901107 ]
pinctrl_gpio_direction_input() / pinctrl_gpio_direction_output() take the pinctrl mutex. This causes a gpiochip operations to need to sleep. Worse yet, the .can_sleep field in the gpiochip is not set. This causes the shared GPIO proxy to trip over, as it uses gpiod_cansleep() to check whether it can use a spinlock or needs a mutex. In this case, it ends up taking a spinlock, then calls pinctrl_gpio_direction_output(), which takes a mutex. This causes a huge warning.
Since the Mediatek hardware has separate clear/set registers, there is no risk of clobbering other bits like with a read-modify-write pattern. Also, once the GPIO function is selected / muxed in, further GPIO operations do not involve pinctrl operations or state. The GPIO direction and level values do not require toggling the pinmux or any other pin config options.
Switch to directly calling mtk_pmx_gpio_set_direction() in the GPIO set direction callbacks to avoid taking the pinctrl mutex. Drop the .gpio_set_direction field in mtk_pmx_ops to signal we are no longer using the pinctrl GPIO layer for setting the direction.
--- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
drivers/pinctrl/mediatek/pinctrl-mtk-common.c +10 -3
@@ -802,20 +802,27 @@ static const struct pinmux_ops mtk_pmx_ops = { .get_function_name = mtk_pmx_get_func_name, .get_function_groups = mtk_pmx_get_func_groups, .set_mux = mtk_pmx_set_mux, - .gpio_set_direction = mtk_pmx_gpio_set_direction, .gpio_request_enable = mtk_pmx_gpio_request_enable, }; +static int mtk_gpio_direction_input (struct gpio_chip *chip,unsigned offset) +{ +struct mtk_pinctrl *pctl =gpiochip_get_data (chip); + +return mtk_pmx_gpio_set_direction (pctl->pctl_dev,NULL , offset, true); +} +static int mtk_gpio_direction_output (struct gpio_chip *chip,unsigned offset,int value) { +struct mtk_pinctrl *pctl =gpiochip_get_data (chip);int ret; ret =mtk_gpio_set (chip, offset, value);if (ret)return ret; -return pinctrl_gpio_direction_output (chip, offset); +return mtk_pmx_gpio_set_direction (pctl->pctl_dev,NULL , offset, false); }static int mtk_gpio_get_direction (struct gpio_chip *chip,unsigned offset)
@@ -895,7 +902,7 @@ static const struct gpio_chip mtk_gpio_chip = { .request = gpiochip_generic_request, .free = gpiochip_generic_free, .get_direction = mtk_gpio_get_direction, - .direction_input = pinctrl_gpio_direction_input, + .direction_input = mtk_gpio_direction_input, .direction_output = mtk_gpio_direction_output, .get = mtk_gpio_get, .set = mtk_gpio_set,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 101/1250 drm/amd/ras: Fix CPER ring debugfs read overflow
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiang Liu <[email protected]>
[ Upstream commit 1e40ef87ffdc291e05ccdade8b9170cc9c1c4249 ]
The legacy CPER debugfs reader can reach the payload path without a valid pointer snapshot. The remaining user byte count is also treated as the ring occupancy in dwords, so reads past the header can copy more than requested.
Take the CPER lock before sampling pointers. Resample rptr/wptr for payload reads, bound the payload copy by available dwords and the remaining user size, and advance the file position for each dword copied.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 29 +++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +21 -8
@@ -498,8 +498,9 @@ static ssize_t amdgpu_debugfs_ring_read(struct file *f, char __user *buf, size_t size, loff_t *pos) { struct amdgpu_ring *ring = file_inode(f)->i_private; -uint32_t value, result, early[3 ]; +u32 value, result, early[3 ] = {0 };uint64_t p; +u32 avail_dw, start_dw, read_dw;loff_t i;int r;
@@ -508,10 +509,10 @@ static ssize_t amdgpu_debugfs_ring_read(struct file *f, char __user *buf, result =0 ; -if (*pos <12 ) { -if (ring->funcs->type ==AMDGPU_RING_TYPE_CPER ) -mutex_lock (&ring->adev->cper.ring_lock); +if (ring->funcs->type ==AMDGPU_RING_TYPE_CPER ) +mutex_lock (&ring->adev->cper.ring_lock); +if (*pos <12 ) { early[0 ] =amdgpu_ring_get_rptr (ring) & ring->buf_mask; early[1 ] =amdgpu_ring_get_wptr (ring) & ring->buf_mask; early[2 ] = ring->wptr & ring->buf_mask;
@@ -543,13 +544,24 @@ static ssize_t amdgpu_debugfs_ring_read(struct file *f, char __user *buf, *pos +=4 ; } }else { + early[0 ] =amdgpu_ring_get_rptr (ring) & ring->buf_mask; + early[1 ] =amdgpu_ring_get_wptr (ring) & ring->buf_mask; + p = early[0 ];if (early[0 ] <= early[1 ]) - size = (early[1 ] - early[0 ]); + avail_dw = early[1 ] - early[0 ];else - size = ring->ring_size - (early[0 ] - early[1 ]); + avail_dw = ring->buf_mask +1 - (early[0 ] - early[1 ]); -while (size) { + start_dw = (*pos >12 ) ? ((*pos -12 ) >>2 ) :0 ; +if (start_dw >= avail_dw) + goto out; + + p = (p + start_dw) & ring->ptr_mask; + avail_dw -= start_dw; + read_dw =min_t (u32, avail_dw, size >>2 ); + +while (read_dw) {if (p == early[1 ]) goto out;
@@ -562,9 +574,10 @@ static ssize_t amdgpu_debugfs_ring_read(struct file *f, char __user *buf, buf +=4 ; result +=4 ; - size--; + read_dw--; p++; p &= ring->ptr_mask; + *pos +=4 ; } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 102/1250 PCI: intel-gw: Enable clock before PHY init
In reply to Greg Kroah-Hartman6.18-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
@@ -285,13 +285,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);
@@ -300,13 +296,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);
@@ -315,7 +315,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,
@@ -323,11 +323,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 103/1250 hfsplus: rework hfsplus_readdir() logic
In reply to Greg Kroah-Hartman6.18-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
@@ -215,8 +215,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;
@@ -266,8 +264,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
@@ -459,8 +459,6 @@ struct inode *hfsplus_new_inode(struct super_block *sb, struct inode *dir,simple_inode_init_ts (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
@@ -91,8 +91,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 104/1250 net: phy: motorcomm: use device properties for firmware tuning
In reply to Greg Kroah-Hartman6.18-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
@@ -843,12 +843,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
@@ -992,12 +992,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,
@@ -1014,7 +1014,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,
@@ -1047,7 +1047,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;
@@ -1097,7 +1096,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 ) {
@@ -1165,11 +1164,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) {
@@ -1661,7 +1660,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 ;
@@ -1676,7 +1675,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 );
@@ -1684,7 +1683,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 );
@@ -1797,14 +1796,14 @@ static int yt8521_led_hw_control_get(struct phy_device *phydev, u8 index,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,
@@ -1813,7 +1812,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,
@@ -1840,7 +1839,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;
@@ -1848,17 +1847,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 105/1250 drm/gud: Add RCade Display Adapter VID/PID pair
In reply to Greg Kroah-Hartman6.18-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
@@ -684,6 +684,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 106/1250 media: chips-media: wave5: Add range checks for dec_output_info
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ricardo Ribalda <[email protected]>
[ Upstream commit 79aef69bb0903616f4867f0168aea717a11c439c ]
If the driver's dec_output_info contains invalid data the driver can write in invalid memory. Add a range check for that.
This fixes this smatch error:drivers/media/platform/chips-media/wave5/wave5-vpuapi.c:588 wave5_vpu_dec_get_output_info() error: buffer overflow 'inst->frame_buf' 64 <= 127
--- .../media/platform/chips-media/wave5/wave5-vpuapi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/media/platform/chips-media/wave5/wave5-vpuapi.c +9 -2
@@ -559,8 +559,15 @@ int wave5_vpu_dec_get_output_info(struct vpu_instance *inst, struct dec_output_i p_dec_info->num_of_decoding_fbs : p_dec_info->num_of_display_fbs;if (info->index_frame_display >=0 && - info->index_frame_display < (int )max_dec_index) - info->disp_frame = inst->frame_buf[val + info->index_frame_display]; + info->index_frame_display < (int )max_dec_index) { +u32 idx = val + info->index_frame_display; + +if (WARN_ON (idx >=MAX_REG_FRAME )) { + ret = -EINVAL ; + goto err_out; + } + info->disp_frame = inst->frame_buf[idx]; + } info->rd_ptr = p_dec_info->stream_rd_ptr; info->wr_ptr = p_dec_info->stream_wr_ptr;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 107/1250 media: video-i2c: use vb2_video_unregister_device on driver removal
In reply to Greg Kroah-Hartman6.18-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
@@ -892,7 +892,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 108/1250 bus: mhi: host: pci_generic: Round up nr_irqs to power of two
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Achirica <[email protected]>
[ Upstream commit 86f6dc05ea051fa03ebc03174bc00f734593465d ]
When an MHI device uses standard MSI, the PCI core requires the allocated number of vectors to be a strict power of two. But devices will only ask for the irqs they need, so they might not be properly aligned.
Make sure a power-of-2 number of vectors is requested.
--- drivers/bus/mhi/host/pci_generic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/bus/mhi/host/pci_generic.c +2 -1
@@ -1139,7 +1139,8 @@ static int mhi_pci_get_irqs(struct mhi_controller *mhi_cntrl,*/ mhi_cntrl->nr_irqs =1 + mhi_cntrl_config->num_events; - nr_vectors =pci_alloc_irq_vectors (pdev,1 , mhi_cntrl->nr_irqs,PCI_IRQ_MSIX |PCI_IRQ_MSI ); + nr_vectors =pci_alloc_irq_vectors (pdev,1 ,roundup_pow_of_two (mhi_cntrl->nr_irqs), +PCI_IRQ_MSIX |PCI_IRQ_MSI );if (nr_vectors <0 ) {dev_err (&pdev->dev,"Error allocating MSI vectors %d\n" , nr_vectors);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 109/1250 drm/panel-edp: Add AUO B133HAN06.6 and BOE NV133FHM-N4F V8.0
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <[email protected]>
[ Upstream commit 5dd1ff95c623b8118ccaae3242119b8552f7b98f ]
These two panels are found in MT8195 Dojo, a.k.a. the HP Chromebook x360 13b-ca0xxx laptop.
Only the BOE entry was tested on an actual device. The AUO entry is solely based on the provided datasheet.
raw EDIDs:
AUO B133HAN06.6 (from the datasheet)
00 ff ff ff ff ff ff 00 06 af 8f cb 00 00 00 00 2f 1d 01 04 95 1d 11 78 03 93 05 92 58 59 90 29 1d 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 14 37 80 b8 70 38 24 40 10 10 3e 00 25 a5 10 00 00 18 b8 24 80 b8 70 38 24 40 10 10 3e 00 25 a5 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 10 48 ff 0f 3c 7d 14 0e 1d 7d 20 20 20 00 77
BOE NV133FHM-N4F V8.0 (from an actual panel)
00 ff ff ff ff ff ff 00 09 e5 25 0a 00 00 00 00 2c 1f 01 04 95 1d 11 78 03 28 65 97 59 54 8e 27 1e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 a4 39 80 c8 70 38 50 40 30 20 36 00 26 a5 10 00 00 1a 6d 26 80 c8 70 38 50 40 30 20 36 00 26 a5 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0d 40 ff 0a 3c 7d 0f 0f 1f 7d 00 00 00 00 d2
--- drivers/gpu/drm/panel/panel-edp.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/panel/panel-edp.c +2 -0
@@ -1931,6 +1931,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc4b4 , &delay_200_500_e50,"B116XAT04.1" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc7ad , &delay_200_500_e50,"B140HAN07.7" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xc9a8 , &delay_200_500_e50,"B140QAN08.H" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xcb8f , &delay_200_500_e50,"B133HAN06.6" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xcdba , &delay_200_500_e50,"B140UAX01.2" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0xd497 , &delay_200_500_e50,"B120XAN01.0" ), EDP_PANEL_ENTRY('A', 'U', 'O', 0xf390, &delay_200_500_e50, "B140XTN07.7"),
@@ -1980,6 +1981,7 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x09ae , &delay_200_500_e200,"NT140FHM-N45" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x09dd , &delay_200_500_e50,"NT116WHM-N21" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0a1b , &delay_200_500_e50,"NV133WUM-N63" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0a25 , &delay_200_500_e50_po2e200,"NV133FHM-N4F V8.0" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0a36 , &delay_200_500_e200,"Unknown" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0a3e , &delay_200_500_e80_d50,"NV116WHM-N49" ), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a5d, &delay_200_500_e50, "NV116WHM-N45"),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 110/1250 HID: multitouch: Fix Yoga Book 9 14IAH10 touchscreen misclassification
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Carey <[email protected]>
[ Upstream commit f1bd44b9b62c6fbdaacdd5d115ebe3fe543fcfa1 ]
The Lenovo Yoga Book 9 14IAH10 (83KJ) (17EF:6161) firmware includes a HID_DG_TOUCHPAD application collection designed for the Windows inbox HID driver's Win8 PTP touchpad mode. On Linux the HID_DG_TOUCHSCREEN collections provide the correct direct-touch interface. The presence of the touchpad collection causes hid-multitouch to misclassify the touchscreen nodes as indirect buttonpads, leaving them non-functional.
Within the touchpad collection:
- HID_UP_BUTTON usages trigger the touchscreen-with-buttons heuristic that sets INPUT_MT_POINTER on the touchscreen applications.
- The HID_DG_TOUCHPAD application itself sets INPUT_MT_POINTER via mt_allocate_application(), propagating to all touchscreen nodes.
- A HID_DG_BUTTONTYPE feature (report 0x51) returns MT_BUTTONTYPE_CLICKPAD, setting td->is_buttonpad = true for the entire device.
Additionally, the firmware resets if any USB control request arrives while the CDC-ACM interface is initialising (~1.18 s after enumeration). The Win8 compliance blob (0xff00:0xc5) and Contact Count Max feature reports in the touchscreen collections trigger GET_REPORT calls at probe that hit this window. Surface Switch (0x57) and Button Switch (0x58) feature reports are sent by mt_set_modes() on every input-device open and close, repeatedly hitting this window throughout device lifetime.
The firmware also leaves a persistent ghost contact in its contact buffer (contact ID 2, fixed coordinates, tip always asserted) on every enumeration. This ghost occupies a multitouch slot and prevents KWin from seeing a clean finger-lift, causing stuck touch state. The ghost is cleared when Input Mode is set via HID_REQ_SET_REPORT at probe.
Fix using a report descriptor fixup in mt_report_fixup() and a class definition update:
1. Remove the entire HID_DG_TOUCHPAD application collection. Parsing HID short items from its header to the matching End Collection and closing the gap with memmove eliminates all three BUTTONPAD heuristics and the feature reports within the collection.
2. Neutralize the Win8 compliance blob feature reports remaining in the touchscreen collections by changing Usage Page 0xff00 to 0x0f00, preventing the case 0xff0000c5 branch in mt_feature_mapping() from issuing GET_REPORT.
3. Neutralize the Contact Count Max feature reports by changing usage 0x55 to 0x00; set maxcontacts = 10 in the class definition so the driver uses the correct contact limit without querying the device.
4. Neutralize Surface Switch (0x57) and Button Switch (0x58) feature report usages in the Device Configuration collection so mt_set_modes() does not issue HID_REQ_SET_REPORT for these on every input-device open/close. Input Mode (0x52) is intentionally left intact: the single HID_REQ_SET_REPORT at probe flushes the firmware's contact buffer and clears the persistent ghost contact. By probe time the cdc-acm driver has already satisfied the CDC-ACM init watchdog (~130 ms), so this request arrives safely after the reset window has closed.
5. Add MT_QUIRK_NOT_SEEN_MEANS_UP to the MT_CLS_YOGABOOK9I class so that contacts not present in a frame are released via INPUT_MT_DROP_UNUSED, preventing stale multitouch slots from lingering if the firmware omits a contact from a report.
--- drivers/hid/hid-multitouch.c | 146 ++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-)
drivers/hid/hid-multitouch.c +145 -1
@@ -440,11 +440,13 @@ static const struct mt_class mt_classes[] = {MT_QUIRK_CONTACT_CNT_ACCURATE , }, { .name = MT_CLS_YOGABOOK9I, - .quirks = MT_QUIRK_ALWAYS_VALID | + .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP | +MT_QUIRK_ALWAYS_VALID |MT_QUIRK_FORCE_MULTI_INPUT |MT_QUIRK_SEPARATE_APP_REPORT |MT_QUIRK_HOVERING |MT_QUIRK_YOGABOOK9I , + .maxcontacts = 10, .export_all_inputs = true }, { .name = MT_CLS_EGALAX_P80H84,
@@ -1564,6 +1566,144 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,return 0 ; } +/* +* Yoga Book 9 14IAH10 descriptor fixup. +* +* The device includes a HID_DG_TOUCHPAD application collection designed for +* the Windows inbox HID driver's Win8 PTP touchpad mode. On Linux we want +* only the HID_DG_TOUCHSCREEN collections. The touchpad collection (and the +* HID_DG_BUTTONTYPE and Win8 compliance blob features it contains) must be +* removed so hid-multitouch does not misclassify the touchscreen nodes as +* indirect buttonpads. +* +* The firmware also resets if any USB control request is received while the +* CDC-ACM interface is initialising (~1.18 s after enumeration). Dropping +* the Win8 blob and Contact Count Max feature reports prevents the +* GET_REPORT calls that hid-multitouch issues at probe. +*/ +static void mt_yogabook9_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int *size) +{ +/* Usage Page (Digitizer), Usage (Touch Pad), Collection (Application) */ +static const __u8 tp_app_hdr[] = {0x05 ,0x0d ,0x09 ,0x05 ,0xa1 ,0x01 }; +/* Vendor Usage Page 0xff00 (Win8 compliance blob header) */ +static const __u8 win8_page[] = {0x06 ,0x00 ,0xff }; +/* Usage (Contact Count Max = 0x55) */ +static const __u8 ccmax_usage[] = {0x09 ,0x55 }; +unsigned int i; + +/* +* Step 1: find and remove the Touch Pad application collection. +* Walk HID short items from the collection header to its matching +* End Collection, then close the gap with memmove. +*/ +for (i =0 ; i +sizeof (tp_app_hdr) <= *size; i++) { +if (memcmp (rdesc + i, tp_app_hdr,sizeof (tp_app_hdr)) ==0 ) { +__u8 *start = rdesc + i; +__u8 *coll_end =NULL ; +__u8 *p = start; +unsigned int drop; +int depth =0 ; + +while (p < rdesc + *size) { +__u8 b = *p; +int ds = b &3 ; +int item_len; + +if (b ==0xfe ) {/* long item */ +if (p +2 >= rdesc + *size) +break ; + item_len = p[1 ] +3 ; + }else { + item_len = (ds ==3 ) ?5 : ds +1 ; + } +if (p + item_len > rdesc + *size) +break ; + +if ((b &0xfc ) ==0xa0 ) + depth++;/* Collection */ +else if (b ==0xc0 ) { + depth--;/* End Collection */ +if (depth ==0 ) { + coll_end = p; +break ; + } + } + p += item_len; + } + +if (!coll_end) { +hid_err (hdev, +"Yoga Book 9: Touch Pad End Collection not found\n" ); +break ; + } + + drop = coll_end - start +1 ; +memmove (start, coll_end +1 , rdesc + *size - coll_end -1 ); + *size -= drop; +hid_dbg (hdev, +"Yoga Book 9: dropped Touch Pad collection (%u bytes)\n" , + drop); +break ; + } + } + +/* +* Step 2: neutralize Win8 compliance blob feature reports remaining +* in the touchscreen collections. Change Usage Page 0xff00 to 0x0f00 +* so the case 0xff0000c5 branch in mt_feature_mapping() is not reached +* and no GET_REPORT is issued. +*/ +for (i =0 ; i +sizeof (win8_page) <= *size; i++) { +if (memcmp (rdesc + i, win8_page,sizeof (win8_page)) ==0 ) { + rdesc[i +2 ] =0x0f ;/* 0xff00 -> 0x0f00 */ +hid_dbg (hdev, +"Yoga Book 9: neutralized Win8 blob at offset %u\n" , + i); + } + } + +/* +* Step 3: neutralize Contact Count Max feature reports. Change usage +* 0x55 (HID_DG_CONTACTMAX) to 0x00 so mt_feature_mapping() does not +* issue GET_REPORT. The class maxcontacts field provides the value. +*/ +for (i =0 ; i +sizeof (ccmax_usage) <= *size; i++) { +if (memcmp (rdesc + i, ccmax_usage,sizeof (ccmax_usage)) ==0 ) { + rdesc[i +1 ] =0x00 ; +hid_dbg (hdev, +"Yoga Book 9: neutralized ContactMax at offset %u\n" , + i); + } + } + +/* +* Step 4: neutralize Surface Switch (0x57) and Button Switch (0x58) +* feature report usages in the Device Configuration collection. +* mt_set_modes() issues HID_REQ_SET_REPORT for these on every +* input-device open/close; those repeated control requests hit the +* firmware's CDC-ACM init window and trigger resets. +* +* Input Mode (0x52) is intentionally left intact. mt_set_modes() +* sends it once at probe to set the device into touchscreen mode, +* which flushes the firmware's contact buffer and clears a persistent +* ghost contact (cid 2, fixed coordinates) that otherwise appears on +* every enumeration. By probe time cdc_acm has already satisfied the +* CDC-ACM init watchdog (~130 ms), so the single SET_REPORT for Input +* Mode arrives safely after the reset window has closed. +*/ +for (i =0 ; i +2 <= *size; i++) { +if (rdesc[i] ==0x09 && + (rdesc[i +1 ] ==0x57 || + rdesc[i +1 ] ==0x58 )) { +hid_dbg (hdev, +"Yoga Book 9: neutralized set-modes usage 0x%02x at offset %u\n" , + rdesc[i +1 ], i); + rdesc[i +1 ] =0x00 ; + } + } +} +static const __u8 *mt_report_fixup (struct hid_device *hdev,__u8 *rdesc,unsigned int *size) {
@@ -1593,6 +1733,10 @@ got: %x\n", } } +if (hdev->vendor ==USB_VENDOR_ID_LENOVO && + hdev->product ==USB_DEVICE_ID_LENOVO_YOGABOOK9I ) +mt_yogabook9_fixup (hdev, rdesc, size); +return rdesc; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 111/1250 wifi: rtw89: phy: check length before parsing PHY status IE
In reply to Greg Kroah-Hartman6.18-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
@@ -2026,13 +2026,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_chip_convert_rpl_to_rssi (rtwdev, phy_ppdu);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 112/1250 net: dsa: realtek: rtl8365mb: add support for RTL8367SB
In reply to Greg Kroah-Hartman6.18-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
@@ -544,6 +544,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 113/1250 integrity: Check for NULL returned by asymmetric_key_public_key
In reply to Greg Kroah-Hartman6.18-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 114/1250 drivers/of: validate live-tree string properties before string use
In reply to Greg Kroah-Hartman6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pengpeng Hou <[email protected]>
[ Upstream commit 1e54c31b9cbbb42162e2e4317c18c8a8b350a79d ]
populate_properties() stores live-tree property values as raw byte sequences plus a separate length. They are not globally guaranteed to be NUL-terminated.
of_prop_next_string() iterates string-list properties by walking raw bytes, __of_node_is_type() checks device_type, __of_device_is_status() checks status, and of_alias_from_compatible() reads the first compatible entry. These paths must validate that the relevant string fits within the property bounds before they hand it to C string helpers.
Validate these live-tree string properties within their declared bounds. In particular, make of_prop_next_string() reject malformed entries before returning them, keep the device_type check inside the existing no-lock helper path, and add unit coverage for malformed first and trailing string-list entries.
--- drivers/of/base.c | 43 ++++++++++++++++++++++++++----------------- drivers/of/property.c | 27 +++++++++++++++++++++------ drivers/of/unittest.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 23 deletions(-)
drivers/of/base.c +26 -17
@@ -82,9 +82,17 @@ EXPORT_SYMBOL(of_node_name_prefix);static bool __of_node_is_type (const struct device_node *np,const char *type) { -const char *match =__of_get_property (np,"device_type" ,NULL ); +const char *match; +int len; + +if (!np || !type) +return false; + + match =__of_get_property (np,"device_type" , &len); +if (!match || len <=0 ||strnlen (match, len) >= len) +return false; -return np && match && type && !strcmp (match, type); +return !strcmp (match, type); }#define EXCLUDED_DEFAULT_CELLS_PLATFORMS ( \
@@ -444,22 +452,22 @@ static bool __of_device_is_status(const struct device_node *device,return false; status =__of_get_property (device,"status" , &statlen); -if (status ==NULL ) +if (!status || statlen <=0 ) +return false; +if (strnlen (status, statlen) >= statlen)return false; -if (statlen >0 ) { -while (*strings) { -unsigned int len =strlen (*strings); +while (*strings) { +unsigned int len =strlen (*strings); -if ((*strings)[len -1 ] =='-' ) { -if (!strncmp (status, *strings, len)) -return true; - }else { -if (!strcmp (status, *strings)) -return true; - } - strings++; +if ((*strings)[len -1 ] =='-' ) { +if (!strncmp (status, *strings, len)) +return true; + }else { +if (!strcmp (status, *strings)) +return true; } + strings++; }return false;
@@ -1170,10 +1178,11 @@ EXPORT_SYMBOL(of_find_matching_node_and_match);int of_alias_from_compatible (const struct device_node *node,char *alias,int len) {const char *compatible, *p; -int cplen; +int ret; - compatible =of_get_property (node,"compatible" , &cplen); -if (!compatible ||strlen (compatible) > cplen) + ret =of_property_read_string_index (node,"compatible" ,0 , + &compatible); +if (ret)return -ENODEV ; p =strchr (compatible,',' );strscpy (alias, p ? p +1 : compatible, len);
drivers/of/property.c +21 -6
@@ -614,16 +614,31 @@ EXPORT_SYMBOL_GPL(of_prop_next_u32);const char *of_prop_next_string (const struct property *prop,const char *cur) { -const void *curv = cur; +const char *curv; +const char *end; +size_t len; -if (!prop) +if (!prop || !prop->value || !prop->length)return NULL ; -if (!cur) -return prop->value; + curv = cur ? cur : prop->value; + end = prop->value + prop->length; - curv +=strlen (cur) +1 ; -if (curv >= prop->value + prop->length) +if (curv < (const char *)prop->value || curv >= end) +return NULL ; + +if (cur) { + len =strnlen (curv, end - curv); +if (len >= end - curv) +return NULL ; + + curv += len +1 ; +if (curv >= end) +return NULL ; + } + + len =strnlen (curv, end - curv); +if (len >= end - curv)return NULL ;return curv;
drivers/of/unittest.c +32 -0
@@ -713,6 +713,7 @@ static void __init of_unittest_parse_phandle_with_args_map(void)static void __init of_unittest_property_string (void ) {const char *strings[4 ]; +const struct property *prop;struct device_node *np;int rc;
@@ -789,6 +790,37 @@ static void __init of_unittest_property_string(void) strings[1 ] =NULL ; rc =of_property_read_string_array (np,"phandle-list-names" , strings,1 );unittest (rc ==1 && strings[1 ] ==NULL ,"Overwrote end of string array; rc=%i, str='%s'\n" , rc, strings[1 ]); + +/* of_prop_next_string() tests */ + prop =of_find_property (np,"phandle-list-names" ,NULL ); + strings[0 ] =of_prop_next_string (prop,NULL ); +unittest (strings[0 ] && !strcmp (strings[0 ],"first" ), +"of_prop_next_string() failure; got '%s'\n" , strings[0 ]); + strings[0 ] =of_prop_next_string (prop, strings[0 ]); +unittest (strings[0 ] && !strcmp (strings[0 ],"second" ), +"of_prop_next_string() failure; got '%s'\n" , strings[0 ]); + strings[0 ] =of_prop_next_string (prop, strings[0 ]); +unittest (strings[0 ] && !strcmp (strings[0 ],"third" ), +"of_prop_next_string() failure; got '%s'\n" , strings[0 ]); + strings[0 ] =of_prop_next_string (prop, strings[0 ]); +unittest (!strings[0 ], +"of_prop_next_string() should return NULL at end of list\n" ); + + prop =of_find_property (np,"unterminated-string" ,NULL ); + strings[0 ] =of_prop_next_string (prop,NULL ); +unittest (!strings[0 ], +"of_prop_next_string() should reject unterminated first string\n" ); + + prop =of_find_property (np,"unterminated-string-list" ,NULL ); + strings[0 ] =of_prop_next_string (prop,NULL ); +unittest (strings[0 ] && !strcmp (strings[0 ],"first" ), +"of_prop_next_string() failure; got '%s'\n" , strings[0 ]); + strings[0 ] =of_prop_next_string (prop, strings[0 ]); +unittest (strings[0 ] && !strcmp (strings[0 ],"second" ), +"of_prop_next_string() failure; got '%s'\n" , strings[0 ]); + strings[0 ] =of_prop_next_string (prop, strings[0 ]); +unittest (!strings[0 ], +"of_prop_next_string() should reject unterminated trailing string\n" ); }#define propcmp (p1, p2) (((p1)->length == (p2)->length) && \
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 115/1250 drivers/of: validate status properties in reconfig state changes
In reply to Greg Kroah-Hartman6.18-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
@@ -74,6 +74,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, \
@@ -135,11 +149,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