6.12.111-rc1 review
Subsystems (3)
Greg Kroah-Hartman
maintainercover 6.12.111-rc1 review
This is the start of the stable review cycle for the 6.12.111 release. There are 1102 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:49 +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.12.111-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.12.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.12.111-rc1
Vincent Guittot <[email protected]>
sched/eevdf: Fix augmented max_slice
Ameer Hamza <[email protected]>
SUNRPC: Restore NUMA_NO_NODE for svc thread allocations in global mode
Mallesh Koujalagi <[email protected]>
workqueue: Update documentation as per system_percpu_wq naming
Kevin Hao <[email protected]>
net: cpsw: Execute ndo_set_rx_mode callback in a work queue
Oscar Salvador <[email protected]>
mm, hugetlb: increment the number of pages to be reset on HVO
Doruk Tan Ozturk <[email protected]>
ocfs2: validate directory-index entry counts when reading metadata
Joseph Qi <[email protected]>
ocfs2: validate dx_root extent list fields during block read
Tejun Heo <[email protected]>
sched_ext: Fix inverted ops.core_sched_before() invocation
Chris Mason <[email protected]>
svcrdma: Reject Write/Reply chunks with segcount 0
Chuck Lever <[email protected]>
svcrdma: Adjust the number of entries in svc_rdma_recv_ctxt::rc_pages
Chuck Lever <[email protected]>
sunrpc: Add a helper to derive maxpages from sv_max_mesg
Chuck Lever <[email protected]>
svcrdma: Reorder rpcrdma_rn_unregister before rdma_destroy_id
Chuck Lever <[email protected]>
svcrdma: Release transport resources synchronously
Chuck Lever <[email protected]>
rpcrdma: arm rn_done before publishing the notification
Luxiao Xu <[email protected]>
sunrpc: fix use-after-free in __rpc_clnt_handle_event and __rpc_clnt_remove_pipedir
Al Viro <[email protected]>
rpc_pipe: don't overdo directory locking
Al Viro <[email protected]>
rpc_mkpipe_dentry(): saner calling conventions
Al Viro <[email protected]>
rpc_populate(): lift cleanup into callers
Chris Mason <[email protected]>
SUNRPC: fix gssx_dec_option_array error path bugs
Jeff Layton <[email protected]>
sunrpc: defer rq_argp and rq_resp free until after RCU grace period
Anna Schumaker <[email protected]>
SUNRPC: Update svcxdr_init_decode() to call xdr_set_scratch_folio()
Anna Schumaker <[email protected]>
SUNRPC: Introduce xdr_set_scratch_folio()
Zhiling Zou <[email protected]>
ip: orphan prefetched skbs before multicast forwarding
Eric Dumazet <[email protected]>
ipv6: ip6_mc_input() and ip6_mr_input() cleanups
Eric Dumazet <[email protected]>
ipv6: adopt skb_dst_dev() and skb_dst_dev_net[_rcu]() helpers
Andrea Mayer <[email protected]>
ipv6: rpl: fix NULL dereference of idev in ipv6_rpl_srh_rcv()
Yue Haibing <[email protected]>
ipv6: annotate data-races around devconf->rpl_seg_enabled
Terry Bowman <[email protected]>
cxl/ras: Fix cxl_rch_get_aer_severity() wrong severity register
Rafael J. Wysocki <[email protected]>
ACPI: TAD: Add locking around AML evaluations
Rafael J. Wysocki <[email protected]>
ACPI: TAD: Split three functions to untangle runtime PM handling
Rafael J. Wysocki <[email protected]>
ACPI: TAD: Rearrange RT data validation checking
Jiri Olsa <[email protected]>
bpf: Disable preemption in bpf_get_stackid
Jiri Olsa <[email protected]>
bpf: Use stack id functions instead of __bpf_get_stackid
Jiri Olsa <[email protected]>
bpf: Factor stackid_new_bucket from __bpf_get_stackid
Jiri Olsa <[email protected]>
bpf: Factor stackid_fastpath function from __bpf_get_stackid
Jiri Olsa <[email protected]>
bpf: Factor stackid_init function from __bpf_get_stackid
Haoxiang Li <[email protected]>
cpufreq: apple-soc: Fix OPP table cleanup
Terry Bowman <[email protected]>
acpi/apei/ghes: Use raw_spinlock_t for CXL CPER work locks
Smita Koralahalli <[email protected]>
efi/cper, cxl: Make definitions and structures global
Smita Koralahalli <[email protected]>
efi/cper, cxl: Prefix protocol error struct and function names with cxl_
Nikhil Gurudasani <[email protected]>
erofs: skip sufficiently large global buffers when resizing
Chuck Lever <[email protected]>
NFSD: Prevent client use-after-free during close_lru reaping
Chuck Lever <[email protected]>
NFSD: Prevent client use-after-free during blocked-lock reaping
Chuck Lever <[email protected]>
NFSD: Consolidate the revocation-path client unpin
Jiangshan Yi <[email protected]>
HID: mcp2221: clear rxbuf after I2C/SMBus transfer completes
Florian Pradines <[email protected]>
HID: mcp2221: fix OOB write in mcp2221_raw_event()
Doruk Tan Ozturk <[email protected]>
HID: sony: clean up device list on probe failure
Rosalie Wanders <[email protected]>
HID: sony: use guard() and scoped_guard()
Baul Lee <[email protected]>
HID: universal-pidff: stop the device when force-feedback init fails
Doruk Tan Ozturk <[email protected]>
HID: sony: fix UAF of ghl_poke_timer / ghl_urb at driver unbind
Qu Wenruo <[email protected]>
btrfs: do not overwrite NODATASUM flag when removing NODATACOW flag
Shuangpeng Bai <[email protected]>
btrfs: fix extent map leak in NOCOW direct I/O write
Filipe Manana <[email protected]>
btrfs: rename extent map functions to get block start, end and check if in tree
Filipe Manana <[email protected]>
btrfs: add btrfs prefix to main lock, try lock and unlock extent functions
David Sterba <[email protected]>
btrfs: use BTRFS_PATH_AUTO_FREE in can_nocow_extent()
Qu Wenruo <[email protected]>
btrfs: prepare btrfs_punch_hole_lock_range() for large data folios
David Sterba <[email protected]>
btrfs: pass struct btrfs_inode to btrfs_sync_inode_flags_to_i_flags()
David Sterba <[email protected]>
btrfs: parameter constification in ioctl.c
David Sterba <[email protected]>
btrfs: update include and forward declarations in headers
Qu Wenruo <[email protected]>
btrfs: expose per-inode stable writes flag
Filipe Manana <[email protected]>
btrfs: move btrfs_alloc_write_mask() into fs.h
Filipe Manana <[email protected]>
btrfs: move BTRFS_BYTES_TO_BLKS() into fs.h
Filipe Manana <[email protected]>
btrfs: move btrfs_is_empty_uuid() from ioctl.c into fs.c
Andre Eikmeyer <[email protected]>
HID: apple: preserve keyboard backlight across T2 resume
Sam Edwards <[email protected]>
ceph: properly decrypt filenames in vmalloc() buffers
Chuck Lever <[email protected]>
NFSD: Guard admin state-revocation walks with NFSD_NET_UP
Max Kellermann <[email protected]>
ceph: force a cap message when a deferred revoke can't be acked immediately
Dr. David Alan Gilbert <[email protected]>
ceph: Remove fs/ceph deadcode
Chuck Lever <[email protected]>
NFSD: Prevent client use-after-free during delegation revoke
Mike Snitzer <[email protected]>
nfsd: disallow file locking and delegations for NFSv4 reexport
Chuck Lever <[email protected]>
NFSD: Prevent client use-after-free during admin state revocation
Jeff Layton <[email protected]>
nfsd: close shrinker/GC/fsnotify vs per-net shutdown race in filecache
Jeff Layton <[email protected]>
nfsd: fix stale s2s_cp_stateids IDR entry for async COPY
Olga Kornievskaia <[email protected]>
nfsd: update mtime/ctime on COPY in presence of delegated attributes
Jeff Layton <[email protected]>
nfsd: fix netlink dumpit error handling for rpc_status_get
Jeff Layton <[email protected]>
nfsd: fix clock domain mismatch in clients_still_reclaiming()
Jeff Layton <[email protected]>
nfsd: RCU-protect cl_cb_session to fix use-after-free on session teardown
Jeff Layton <[email protected]>
nfsd: dedup nfs4_client_to_reclaim inserts
Jeff Layton <[email protected]>
nfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage
Chuck Lever <[email protected]>
Revert "NFSD: Remove the cap on number of operations per NFSv4 COMPOUND"
Chuck Lever <[email protected]>
NFSD: Make nfsd_genl_rqstp::rq_ops array best-effort
Chuck Lever <[email protected]>
NFSD: Rename a function parameter
Jeff Layton <[email protected]>
nfsd: check nfsd4_acl_to_attr() return value in nfsd4_create()
Jeff Layton <[email protected]>
nfsd: validate sockaddr length per family in listener_set
Carolina Jubran <[email protected]>
netlink: introduce type-checking attribute iteration for nlmsg
Sergey Senozhatsky <[email protected]>
zram: set default primary compressor in zram_destroy_comps()
Sergey Senozhatsky <[email protected]>
zram: switch to guard() for init_lock
Longlong Xia <[email protected]>
zram: fix out-of-bounds access in writeback_store()
Sergey Senozhatsky <[email protected]>
zram: use zram_read_from_zspool() in writeback
Sergey Senozhatsky <[email protected]>
zram: remove entry element member
Longlong Xia <[email protected]>
zram: fix out-of-bounds access in read_block_state()
Sergey Senozhatsky <[email protected]>
zram: fixup read_block_state()
Neill Kapron <[email protected]>
usb: gadget: f_fs: Fix Use-After-Free in AIO error path
Gabriel Prostitis <[email protected]>
USB: gadget: ffs: fix mm lifetime handling
Terry Bowman <[email protected]>
cxl/ras: Fix cxl_rch_get_aer_info() out-of-bounds AER register read
Dave Jiang <[email protected]>
cxl/pci: Remove CXL VH handling in CONFIG_PCIEAER_CXL conditional blocks from core/pci.c
Terry Bowman <[email protected]>
cxl/pci: Remove unnecessary CXL RCH handling helper functions
Terry Bowman <[email protected]>
cxl/pci: Remove unnecessary CXL Endpoint handling helper functions
Roger Pau Monne <[email protected]>
x86/xen: fix init of balloon stats again
Roger Pau Monne <[email protected]>
xen/balloon: improve accuracy of initial balloon target for dom0
Yao Zi <[email protected]>
x86/locking: Use sfence for wmb() if SSE is available
Uros Bizjak <[email protected]>
x86/locking: Remove semicolon from "lock" prefix
Li Xiasong <[email protected]>
mm/slub: fix missing debugfs entries for caches created before sysfs init
Vlastimil Babka <[email protected]>
mm/slab: move and refactor __kmem_cache_alias()
Arvind Yadav <[email protected]>
mm/migrate_device: clear stale mapping after freeing swapcache
Kairui Song <[email protected]>
mm/mglru: fix and remove redundant unevictable folio handling
Kairui Song <[email protected]>
mm/mglru: use the common routine for dirty/writeback reactivation
Yu Zhao <[email protected]>
mm/mglru: optimize deactivation
Wei Xu <[email protected]>
mm/mglru: reset page lru tier bits when activating
Muchun Song <[email protected]>
mm/hugetlb: initialize gigantic bootmem hugepage struct pages earlier
Chen Linxuan <[email protected]>
pidfd: hold exec_update_lock around namespace ioctl
Christian Brauner <[email protected]>
nscommon: simplify initialization
David Hildenbrand (Arm) <[email protected]>
mm/gup: fix always draining LRU caches in collect_longterm_unpinnable_folios()
David Hildenbrand <[email protected]>
mm: move _pincount in folio to page[2] on 32bit
David Hildenbrand <[email protected]>
mm: move hugetlb specific things in folio to page[3]
Chengfeng Ye <[email protected]>
KEYS: trusted: Fix TPM teardown ordering
Breno Leitao <[email protected]>
mm, swap: ratelimit bad swap entry reports
gao xu <[email protected]>
mm: fix possible NULL pointer dereference in __swap_duplicate
Vinicius Costa Gomes <[email protected]>
crypto: iaa - unmap dst before software fallback on decompress
Thorsten Blum <[email protected]>
crypto: atmel-ecc - avoid stale fallback key after set_secret failure
Sean Christopherson <[email protected]>
KVM: SEV: Track the GPA of the guest-controlled VMSA used for SNP guests
Sean Christopherson <[email protected]>
KVM: SVM: Move SEV-ES VMSA allocation to a dedicated sev_vcpu_create() helper
Ashish Kalra <[email protected]>
KVM: SEV: Disable SEV-SNP support on initialization failure
Sean Christopherson <[email protected]>
KVM: SVM: Invalidate "next" SNP VMSA GPA even on failure
Sean Christopherson <[email protected]>
KVM: SVM: Use guard(mutex) to simplify SNP vCPU state updates
Sean Christopherson <[email protected]>
KVM: SVM: Mark VMCB dirty before processing incoming snp_vmsa_gpa
Jiayuan Chen <[email protected]>
net: advertise TCP MSS from the configured MTU, not the learned PMTU
Bryam Vargas <[email protected]>
crypto: virtio - bound the akcipher result length
Lukas Wunner <[email protected]>
crypto: virtio - Drop superfluous [as]kcipher_req pointer
Lukas Wunner <[email protected]>
crypto: virtio - Drop superfluous [as]kcipher_ctx pointer
Lukas Wunner <[email protected]>
crypto: virtio - Drop sign/verify operations
Eric Dumazet <[email protected]>
vlan: fix skb_under_panic and races when toggling HW VLAN offload
Kyle Zeng <[email protected]>
net/packet: defer vmalloc TX_RING free until skbs finish
Yong Wang <[email protected]>
tcp: clamp route advmss to TCP_MIN_MSS
Eric Dumazet <[email protected]>
ipv4: use dst4_mtu() instead of dst_mtu()
Eric Dumazet <[email protected]>
ipv6: use dst6_mtu() instead of dst_mtu()
Eric Dumazet <[email protected]>
inet: add dst4_mtu() and dst6_mtu() helpers
Eric Dumazet <[email protected]>
ipv6: add some unlikely()/likely() clauses in ip6_output.c
Eric Dumazet <[email protected]>
ipv6: pass proto by value to ipv6_push_nfrag_opts() and ipv6_push_frag_opts()
Sean Christopherson <[email protected]>
KVM: SEV: Add an anonymous "psc" struct to track current PSC metadata
Sean Christopherson <[email protected]>
KVM: SEV: Make it more obvious when KVM is writing back the current PSC index
Sean Christopherson <[email protected]>
KVM: SEV: Wire up kvm_x86_ops.gmem_xxx() if and only if CONFIG_KVM_AMD_SEV=y
Miklos Szeredi <[email protected]>
fuse: fix race between interrupt and resend
Breno Leitao <[email protected]>
usb: xhci: bail out of setup if the controller is inaccessible
Niklas Neronin <[email protected]>
usb: xhci: simplify handling of Structural Parameters 1 values
Niklas Neronin <[email protected]>
usb: xhci: use cached HCSPARAMS1 value
Niklas Neronin <[email protected]>
usb: xhci: add USB Port Register Set struct
Eric Biggers <[email protected]>
netfilter: nft_set_pipapo_avx2: add missing vzeroupper
Anton Protopopov <[email protected]>
bpf: fix the return value of push_stack
Javier Tia <[email protected]>
xfs: initialise args->total for parent pointer updates
Xuanqiang Luo <[email protected]>
fou: Fix use-after-free in fou_create()
Weiming Shi <[email protected]>
net: appletalk: fix NULL pointer dereference in aarp_send_ddp()
Weiming Shi <[email protected]>
i2c: smbus: reject oversized block transfers in the common path
Kazuki Hanai <[email protected]>
ALSA: us122l: Prevent write upgrades for read mappings
Gary Guo <[email protected]>
net: usb: pegasus: don't rely on id table pointer arithmetic
Gary Guo <[email protected]>
media: as102: do not rely on id table address comparison
Gary Guo <[email protected]>
usb: serial: spcp8x5: don't store usb_device_id
Gary Guo <[email protected]>
usb: usbtmc: don't store usb_device_id
Gary Guo <[email protected]>
wifi: ath9k_htc: don't store usb_device_id
Gary Guo <[email protected]>
usb: xusbatm: don't rely on id table pointer arithmetic
Chuck Lever <[email protected]>
xdrgen: Fix union declarations
Ian Rogers <[email protected]>
perf evsel: Add per-thread warning for EOPNOTSUPP open failues
Sasha Levin <[email protected]>
Revert "perf tests: Fix flakiness in BPF counters test on hybrid systems"
Sasha Levin <[email protected]>
Revert "slab: reset slab->obj_ext when freeing and it is OBJEXTS_ALLOC_FAIL"
Sasha Levin <[email protected]>
Revert "selftests/mm: report unique test names for each cow test"
Sasha Levin <[email protected]>
Revert "selftests/mm: skip COW tmpfile cases when fallocate() is unsupported"
Sasha Levin <[email protected]>
Revert "selftests: harness: Mark test fixture objects __maybe_unused"
Sasha Levin <[email protected]>
Revert "nvme: apple: Add Apple A11 support"
Sasha Levin <[email protected]>
Revert "nvme-apple: Drop the PRP null check chicken bit"
Sasha Levin <[email protected]>
Revert "nvme-apple: Prevent shared tags across queues on Apple A11"
Sasha Levin <[email protected]>
Revert "nvme-apple: Reset q->sq_tail during queue init"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sc8180x: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sdm845: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8150: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8250: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8350: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8450: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8550: Fix the PCIe iommu-map entries"
Sasha Levin <[email protected]>
Revert "arm64: dts: qcom: sm8650: Fix the PCIe iommu-map entries"
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Publish an LVCMDQ only after it is fully initialized
Atish Patra <[email protected]>
crypto: ccp - Fix possible deadlock in SEV init failure path
Henrique Carvalho <[email protected]>
smb: client: fix UBSAN array-index-out-of-bounds in smb2_copychunk_range
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: 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 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 replaying dirent removals into the temporary directory
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: preserve owner on in-memory btree creation
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: truncate quota file correctly when repairing quota file
Bjoern Doebel <[email protected]>
smb: client: fix heap overflow in DACL owner/group rewrite
Bjoern Doebel <[email protected]>
smb: client: avoid leaking refcount when cifs_sb_tlink() fails
Bjoern Doebel <[email protected]>
smb: client: avoid leaking refcount in cifs_queue_oplock_break()
Paulo Alcantara <[email protected]>
smb: client: fix file type corruption in wsl_to_fattr()
Paulo Alcantara <[email protected]>
smb: client: fix file type corruption in cifs_reparse_point_to_fattr()
Paulo Alcantara <[email protected]>
smb: client: fix one-byte OOB read in smb2_parse_native_symlink()
Karl Mehltretter <[email protected]>
smb: client: pin DFS superblock in iterator callback
Aohan Mei <[email protected]>
smb: client: reject userspace cifs.idmap descriptions
Gang Yan <[email protected]>
selftests: mptcp: fix an UAF in mptcp_connect.c
Matthieu Baerts (NGI0) <[email protected]>
mptcp: syncookies: remember the request backup flag
Matthieu Baerts (NGI0) <[email protected]>
mptcp: subflow: no need to copy thmac during ulp_clone
Matthieu Baerts (NGI0) <[email protected]>
mptcp: options: handle MPC data + csum reqd + no csum
Joe Damato <[email protected]>
bnxt_en: Propagate RX ring init failures in bnxt_init_nic()
Joe Damato <[email protected]>
bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()
Joe Damato <[email protected]>
bnxt_en: Only restore LRO if the device supports TPA
Michael Bommarito <[email protected]>
media: v4l2-ctrls: validate AV1 tile counts
Michael Bommarito <[email protected]>
media: v4l2-ctrls: validate HEVC tile counts
Michael Bommarito <[email protected]>
media: verisilicon: rockchip: reject AV1 frames exceeding the tile capacity
Michael Bommarito <[email protected]>
media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer
Haotian Zhang <[email protected]>
media: v4l2-h264: Fix memcmp() size in B1 reference list comparison
Michael Bommarito <[email protected]>
media: mediatek: vcodec: bound AV1 tile-start copy to the array capacity
Michael Bommarito <[email protected]>
media: verisilicon: hantro: bound G2 HEVC tile loop to the buffer capacity
Michael Bommarito <[email protected]>
media: hevc: add bounded tile-count helpers
Vishnu Razdan <[email protected]>
hwmon: (pmbus) Clear generic status alarms with CLEAR_FAULTS
Fan Wu <[email protected]>
hwmon: (gpio-fan) Fix use-after-free in alarm work
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()
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: 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
leixiang <[email protected]>
KVM: PPC: Book3S HV: Set irqfd->producer only on success
Ibrahim Hashimov <[email protected]>
mac802154: fix use-after-free of sdata via queued RX frames
Kyle Zeng <[email protected]>
ipvs: reject invalid states in connection template sync records
Zihan Xi <[email protected]>
ipv4: fib: bound automatic table ID allocation
David Carlier <[email protected]>
ieee802154: hwsim: serialize pib updates to fix double-free
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
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
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: let io_recv_buf_select return the length of the buffer region
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
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
Thomas Gleixner <[email protected]>
tick/broadcast: Plug clockevents replacement race
Ido Schimmel <[email protected]>
tunnels: Drop stale dst when building an ICMP error for PMTUD
Ali Ahmet Memis <[email protected]>
ufs: validate cylinder group metadata before caching it
Ali Ahmet Memis <[email protected]>
ufs: create the root dentry after loading cylinder metadata
James Hilliard <[email protected]>
watchdog: sunxi_wdt: preserve boot-enabled watchdog
Harry Wentland <[email protected]>
dm/amdgpu: fix malformed link_settings debugfs output
Tristan Madani <[email protected]>
ALSA: usbusx2y: validate URB actual_length in interrupt callback
Tristan Madani <[email protected]>
ALSA: usbusx2y: fix in04_last array size mismatch with in04_buf
Roman Prucha <[email protected]>
ALSA: ctxfi: Fix CA20K2 S/PDIF passthrough
Miguel Ojeda <[email protected]>
rust: allow unknown_lints in generated bindings for Rust < 1.88
Donggeun Yoo <[email protected]>
tracing: Fix memory corruption from the histogram stacktrace modifier
Zihan Xi <[email protected]>
ipv6: fix fib6 walker UAF on seq stop
Vernon Yang <[email protected]>
x86/mm: Fix user-space data loss with MADV_FREE and THP
Eric Biggers <[email protected]>
crypto: x86/aria - add missing vzeroupper in AVX-512 code
Eric Biggers <[email protected]>
crypto: x86/aria - add missing vzeroupper in AVX2 code
Shivaprasad G Bhat <[email protected]>
powerpc/eeh: Fix recursive locking on devices without EEH sensitive driver
Thorsten Blum <[email protected]>
powerpc/ps3: Fix repository.c build failure
Namjae Jeon <[email protected]>
ksmbd: prevent out-of-bounds reads in share config responses
Maurizio Lombardi <[email protected]>
scsi: target: iscsi: Fix hang for aborted WRITE_PENDING commands
Lorenzo Stoakes (ARM) <[email protected]>
scripts/mksysmap: fix escape of '$' in the __pi_ pattern
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
Furong Xu <[email protected]>
net: stmmac: TSO: Simplify the code flow of DMA descriptor allocations
Greg Marsden <[email protected]>
net/rds: fix tcp stream corruption with large pages
Ratheesh Kannoth <[email protected]>
octeontx2-af: fix PF/CGX debugfs PCI bus lookup
Vladislav Karmanov <[email protected]>
net: phy: mediatek-ge: disable EEE on the MT7530 PHY
Heiner Kallweit <[email protected]>
net: phy: add phy_disable_eee
SkyLake.Huang <[email protected]>
net: phy: mediatek: Re-organize MediaTek ethernet phy drivers
Colin Ian King <[email protected]>
cxgb4: clip_tbl: Fix spelling mistake "wont" -> "won't"
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
Vincent Guittot <[email protected]>
sched/eevdf: Fix rb augmented with multi fields
Peter Zijlstra <[email protected]>
sched/fair: Fix lag clamp
Peter Zijlstra <[email protected]>
sched/fair: Fix EEVDF entity placement bug causing scheduling lag
Dapeng Mi <[email protected]>
perf/x86/intel: Correct pt_regs->flags update for PEBS path
Dapeng Mi <[email protected]>
perf/x86/intel/ds: Factor out PEBS group processing code to functions
Changbin Du <[email protected]>
perf/x86/intel/ds: Remove redundant assignments to sample.period
Kan Liang <[email protected]>
perf/x86/intel/ds: Clarify adaptive PEBS processing
Yabin Cui <[email protected]>
perf/core: Check sample_type in perf_sample_save_callchain
Thomas Richter <[email protected]>
perf/core: Allow list_del during perf_event_overflow()
Kan Liang <[email protected]>
perf: Supply task information to sched_task()
Thibault Ferrante <[email protected]>
selftests/powerpc/tm: Fix tcheck() reading uninitialised CR value
Lorenzo Bianconi <[email protected]>
net: stmmac: initialize ptp_lock at probe time
Qingfang Deng <[email protected]>
ppp_synctty: ensure a writeable skb header
Eric Dumazet <[email protected]>
vxlan: initialize _md in vxlan_xmit_one()
Ratheesh Kannoth <[email protected]>
octeontx2-pf: reset HTB scheduler topology before freeing queues
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
Daniel Golle <[email protected]>
net: dsa: lantiq_gswip: move definitions to header
Daniel Golle <[email protected]>
net: dsa: lantiq_gswip: prepare for more CPU port options
Daniel Golle <[email protected]>
net: dsa: lantiq_gswip: deduplicate dsa_switch_ops
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: destroy the phylink instance on the probe error path
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
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
Takashi Iwai <[email protected]>
ALSA: hda/common: Use guard() for mutex locks
Takashi Iwai <[email protected]>
ALSA: hda/common: Use cleanup macros for PM controls
Takashi Iwai <[email protected]>
ALSA: hda: Introduce auto cleanup macros for PM
Karl Mehltretter <[email protected]>
drm/logicvc: Drop the select of the nonexistent CONFIG_DRM_KMS_DMA_HELPER
Linus Walleij <[email protected]>
net: ethernet: cortina: Count RX descriptors for freeq refill
Linus Walleij <[email protected]>
net: ethernet: cortina: Count RX drops once per frame
Linus Walleij <[email protected]>
net: ethernet: cortina: No mapping is a dropped rx
Linus Walleij <[email protected]>
net: ethernet: cortina: Count dropped frames as NAPI work
Linus Walleij <[email protected]>
net: ethernet: cortina: Finish RX updates before NAPI completion
Linus Walleij <[email protected]>
net: ethernet: cortina: Fix budget accounting
Alice Mikityanska <[email protected]>
net: ipv6: Clamp to IP6_MAX_MTU in ip6_dst_mtu_maybe_forward
Alice Mikityanska <[email protected]>
net: ipv6: Fix UDP length overflow with PMTU discover and big MTU
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()
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
Jared Kangas <[email protected]>
hwmon: (ina2xx) Parameterize ina2xx_data in ina226_alert_read()
Guenter Roeck <[email protected]>
hwmon: Introduce 64-bit energy attribute support
Zijun Hu <[email protected]>
libnvdimm: Replace namespace_match() with device_find_child_by_name()
Geert Uytterhoeven <[email protected]>
hwmon: (ltc4282) Make sure clk_init_data is fully initialized
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: 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
Lama Kayal <[email protected]>
net/mlx5: E-Switch, prevent mc_list repopulation during vport disable
Yael Chemla <[email protected]>
net/mlx5: E-Switch: fix use-after-free in mlx5_eswitch_termtbl_put
Carolina Jubran <[email protected]>
net/mlx5e: Fix use-after-free race in sample_restore_put()
Carolina Jubran <[email protected]>
net/mlx5e: Fix ETS zero BW reporting when one TC holds 100%
Shahar Shitrit <[email protected]>
net/mlx5e: Fix setting RS FEC after remapping
Weiming Shi <[email protected]>
net/sched: defer qdisc freeing after failed creation
XingWang Xiang <[email protected]>
net: mctp: i3c: serialize probe with bus removal
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
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]>
eth: nfp: migrate to new RXFH callbacks
Jakub Kicinski <[email protected]>
net: ethtool: add dedicated callbacks for getting and setting rxfh fields
Jakub Kicinski <[email protected]>
net: ethtool: require drivers to opt into the per-RSS ctx RXFH
Jakub Kicinski <[email protected]>
net: ethtool: remove the duplicated handling from rxfh and rxnfc
Jakub Kicinski <[email protected]>
net: ethtool: copy the rxfh flow handling
Gal Pressman <[email protected]>
ethtool: Block setting of symmetric RSS when non-symmetric rx-flow-hash is requested
Gal Pressman <[email protected]>
ethtool: Symmetric OR-XOR RSS hash
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
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: Mark faultable stack helpers as sleepable
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark bpf_btf_find_by_name_kind() as sleepable
Justin Chen <[email protected]>
net: bcmasp: fix tx_spb_ring_full() checking same slot cnt times
Justin Chen <[email protected]>
net: bcmasp: clear txcb->last before writing each descriptor
Cezary Rojewski <[email protected]>
ASoC: Intel: avs: 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
Hannes Reinecke <[email protected]>
nvme-tcp: open-code nvme_tcp_queue_request() for R2T
Mohamed Khalfella <[email protected]>
nvme: remove stale namespaces by NSID range during scan
Steven Rostedt <[email protected]>
ring-buffer: Add checking nr_subbufs to persistent ring buffer validation
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark sched_process_wait argument as nullable
Jiayuan Chen <[email protected]>
bpf: Fix NULL-ptr-deref in btf_var_show()
Jiayuan Chen <[email protected]>
bpf: Fix NULL-ptr-deref when showing a void BTF type
Takashi Iwai <[email protected]>
ALSA: caiaq: Fix potential double-free at error path
HyeongJun An <[email protected]>
selftests/alsa: Fix the step check for INTEGER controls
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
Allison Henderson <[email protected]>
net/rds: don't let rds_conn_shutdown() consume a concurrent drop
Håkon Bugge <[email protected]>
net/rds: acquire the fastpath locks in rds_conn_shutdown()
Allison Henderson <[email protected]>
net/rds: acquire RDS_IN_XMIT in rds_tcp_reset_callbacks()
Gerd Rausch <[email protected]>
net/rds: tcp: don't force RDS_CONN_RESETTING over a concurrent shutdown
Allison Henderson <[email protected]>
net/rds: clear cp_flags bits individually in rds_conn_path_reset()
Allison Henderson <[email protected]>
net/rds: use clear_bit_unlock() in release_refill()
Allison Henderson <[email protected]>
net/rds: use wq_has_sleeper() in release_in_xmit()
Eric Dumazet <[email protected]>
bonding: do not clear curr_active_slave prematurely when releasing all slaves
Eduard Zingerman <[email protected]>
bpf: reject BPF_PSEUDO_FUNC reference to the main program
Henry Martin <[email protected]>
tracing/probes: Fix use-after-free on field name/type of events with multiple probes
Joas Antonio dos Santos <[email protected]>
netfilter: nf_conntrack_sip: fix OOB read in sip_skip_whitespace()
Kyle Zeng <[email protected]>
ipvs: fix reversed sequence option serialization
Qu Wenruo <[email protected]>
btrfs: do not force reloc root creation during qgroup_account_snapshot()
Avi Weiss <[email protected]>
btrfs: send: fix lost error return value in will_overwrite_ref()
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
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
Kees Cook <[email protected]>
arm: Handle KCOV __init vs inline mismatches
Zijun Hu <[email protected]>
mfd: db8500-prcmu: Remove needless return in three void APIs
Linus Walleij <[email protected]>
ASoC: ux500: Validate MSP DAI configuration
Linus Walleij <[email protected]>
ASoC: ux500: Correct MSP frame and bit clock setup
Linus Walleij <[email protected]>
ASoC: ux500: Propagate MSP setup errors
Linus Walleij <[email protected]>
ASoC: ux500: Fix MSP stream lifecycle handling
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
Takashi Iwai <[email protected]>
ALSA: ump: Update rawmidi name per EP name update
Takashi Iwai <[email protected]>
ALSA: ump: Copy safe string name to rawmidi
Takashi Iwai <[email protected]>
ALSA: ump: Copy FB name string more safely
Takashi Iwai <[email protected]>
ALSA: rawmidi: Show substream activity in info ioctl
Takashi Iwai <[email protected]>
ALSA: rawmidi: Expose the tied device number in info ioctl
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
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
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
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
Takashi Iwai <[email protected]>
ALSA: hda/core: Use guard() for mutex locks
Hui Su <[email protected]>
staging: fbtft: make dirty_lock IRQ-safe
Kuniyuki Iwashima <[email protected]>
af_packet: Don't cast tpacket_hdr.tp_len to int in tpacket_parse_header().
Eric Dumazet <[email protected]>
ipv6: sr: restore network header before routing and forwarding
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()
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for MCAST_ socket options.
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for IPV6_DROP_MEMBERSHIP and MCAST_LEAVE_GROUP.
Kuniyuki Iwashima <[email protected]>
ipv6: mcast: Don't hold RTNL for IPV6_ADD_MEMBERSHIP and MCAST_JOIN_GROUP.
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
Marco Crivellari <[email protected]>
workqueue: replace use of system_wq with system_percpu_wq
Kiran K <[email protected]>
Bluetooth: btintel_pcie: Clear automask on spurious interrupts
Wanwu Li <[email protected]>
sched_ext: Fix timer pinning and return value in scx_central
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
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
Henrique Carvalho <[email protected]>
smb: client: batch SRV_COPYCHUNK entries to cut round trips
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
Thomas Zimmermann <[email protected]>
drm/cirrus: Use video aperture helpers
Ali Ahmet Memis <[email protected]>
ufs: do not treat unreadable directory blocks as empty
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()
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
SJ Park <[email protected]>
mm/damon/core: avoid infinite kdamond_merge_regions() internal loop
Max Chou <[email protected]>
Bluetooth: btrtl: Add the support for RTL8761CUV
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
HyeongJun An <[email protected]>
ASoC: meson: aiu: Validate written enum values
Cássio Gabriel <[email protected]>
ASoC: topology: Check PCM and DAI name strings before use
Kuniyuki Iwashima <[email protected]>
ipv4: fib: Don't dump dying fib_info in fib_leaf_notify().
Jiri Olsa <[email protected]>
bpf: Guard __get_user acesss with access_ok for uprobe_multi data
Selvin Xavier <[email protected]>
RDMA/bnxt_re: Proper rollback if the ioremap fails
Jie Gan <[email protected]>
coresight: platform: defer connection counter increment until alloc succeeds
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
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
Saravana Kannan <[email protected]>
of: dynamic: Fix overlayed devices not probing because of fw_devlink
Ulf Hansson <[email protected]>
driver core: Export get_dev_from_fwnode()
Brahmajit Das <[email protected]>
drm/amd/display: clean-up dead code in dml2_mall_phantom
Zi Yan <[email protected]>
mm/huge_memory: use folio's memcg inside __folio_split()
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
Sasha Levin <[email protected]>
Revert "ARM: 9481/2: breakpoint: CFI breakpoints only on demand"
Sasha Levin <[email protected]>
Revert "bpf, s390: Clear fetch destination on faulting arena atomic"
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
Genevieve Chan <[email protected]>
firmware: stratix10-svc: fix FCS SMC call kernel-doc
Rafael J. Wysocki <[email protected]>
Revert "ACPI: processor: Update cpuidle driver check in __acpi_processor_start()"
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
Huiwen He <[email protected]>
smb/client: reduce fallocate zero buffer allocation
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
Alex Markuze <[email protected]>
ceph: harden send_mds_reconnect and handle active-MDS peer reset
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
Nils Helmig <[email protected]>
Bluetooth: btusb: Add TP-Link UB600 for Realtek 8761BUV
bui duc phuc <[email protected]>
ASoC: rockchip: spdif: Restore regcache cache-only mode on sync failure
bui duc phuc <[email protected]>
ASoC: rockchip: rockchip_pdm: Reorder clock enable sequence
bui duc phuc <[email protected]>
ASoC: rockchip: rockchip_pdm: Handle runtime PM resume failures in set_fmt
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
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
Rosen Penev <[email protected]>
ipmi: si: Use platform_get_irq_optional() to retrieve interrupt
Andrei Faleichyk <[email protected]>
ALSA: hda/realtek: Add quirk for ASUS VivoBook X509DAP
Michael Walle <[email protected]>
clk: keystone: don't cache clock rate
Shay Drory <[email protected]>
net/mlx5: E-Switch, align disable sequence with switchdev-to-legacy transition
Cyrill Gorcunov <[email protected]>
RDMA/irdma: Fix typo in SQ completions generation
Shay Drory <[email protected]>
net/mlx5e: Verify unique vhca_id count instead of range
Shiwu Zhang <[email protected]>
drm/amdgpu: fix buffer overflow during vBIOS update
Asad Kamal <[email protected]>
drm/amd/pm: bound pp_dpm_set_pp_table() memcpy
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
Michal Pecio <[email protected]>
usb: xhci: Improve Soft Retries after short transfers
Priyansh Jain <[email protected]>
thermal/drivers/qcom/tsens: Atomic temperature read with hardware-guided retries
Ioana Ciornei <[email protected]>
dpaa2-switch: fix handling of NAPI on the remove path
David Yang <[email protected]>
net: dsa: sja1105: flower: reject cross-chip redirect
Ioana Ciornei <[email protected]>
dpaa2-switch: fix the error path in dpaa2_switch_rx()
Ioana Ciornei <[email protected]>
dpaa2-switch: rework FDB management on the bridge leave path
Cássio Gabriel <[email protected]>
ALSA: seq: oss: Reject reads that cannot fit the next event
Cássio Gabriel <[email protected]>
ASoC: codecs: rk3328: Use managed GPIO and clock helpers
Alessandro Schino <[email protected]>
ntfs3: fix out-of-bounds read in ntfs_dir_emit() and hdr_find_e()
ZhengYuan Huang <[email protected]>
fs/ntfs3: validate index entry key bounds
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
Jose Ignacio Tornos Martinez <[email protected]>
net: wwan: t7xx: Add delay between MD and SAP suspend
Wentao Liang <[email protected]>
net: qrtr: fix node refcount leak on ctrl packet alloc failure
Chen Pei <[email protected]>
ACPI: PCI: Clear _DEP dependencies after PCI root bridge attach
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
Cezary Rojewski <[email protected]>
ASoC: codecs: pcm3168a: Drop CONFIG_PM-conditional preproc directive
Srinivas Kandagatla <[email protected]>
ASoC: qcom: q6apm: return error code to consumers on failures
Miaoqing Pan <[email protected]>
wifi: ath11k: fix invalid data access in ath11k_dp_rx_h_undecap_nwifi
Rosen Penev <[email protected]>
net: ibm: emac: Reserve VLAN header in MJS limit
Daniel Borkmann <[email protected]>
libbpf: Also reset {insn,data}_cur on realloc failure
Sanjay Chitroda <[email protected]>
iio: accel: mma8452: switch to non-devm request_threaded_irq()
Rik van Riel <[email protected]>
perf/ftrace: Fix WARNING in __unregister_ftrace_function
Miao Li <[email protected]>
iio: light: stk3310: Deal with the ps interrupt issue in PM
Lad Prabhakar <[email protected]>
mmc: renesas_sdhi: Add OF entry for RZ/G2E SoC
Karl Mehltretter <[email protected]>
tracing: Disable KCOV instrumentation for trace_irqsoff.o
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
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
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
Haoxiang Li <[email protected]>
net: thunderx: fix PTP device ref leak in nicvf_probe()
Fernando Fernandez Mancera <[email protected]>
ipv6: addrconf: fix temp address generation after prefix deprecation
Luka Gejak <[email protected]>
net: hsr: require valid EOT supervision TLV
Uwe Küchler <[email protected]>
ALSA: usb-audio: Add quirk for Novation Mininova
Mostafa Saleh <[email protected]>
irqchip/gic-v4: Don't advertise VLPIs if no ITS is probed
Stepan Ionichev <[email protected]>
iio: adc: qcom-spmi-iadc: balance enable_irq_wake() on driver unbind
Rosen Penev <[email protected]>
mips: cps: Assemble jr.hb with an R2 ISA level
Dario Binacchi <[email protected]>
drm/panel: simple: Add AM-1280800W8TZQW-T00H
Sumeet Pawnikar <[email protected]>
powercap: intel_rapl: Fix memory leak in rapl_add_package_cpuslocked()
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
Chenguang Zhao <[email protected]>
netlabel: fix IPv6 unlabeled address add error handling
Dian-Syuan Yang <[email protected]>
wifi: rtw89: pci: enable LTR based on pcie control register
Zqiang <[email protected]>
rcu-tasks: Fix possible boot-time tests failed for the call_rcu_tasks()
Venkat Rao Bagalkote <[email protected]>
char/nvram: Remove redundant nvram_mutex
Thorsten Blum <[email protected]>
crypto: atmel-sha204a - remove sysfs group before hwrng
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
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
Allison Henderson <[email protected]>
net/rds: Don't sleep inside rds_ib_conn_path_shutdown
Eric Dumazet <[email protected]>
net/sched: sch_drr: make cl->quantum lockless
Eric Dumazet <[email protected]>
net: bridge: remove stale rcu_barrier() in br_multicast_dev_del()
Jan Volckaert <[email protected]>
net: usb: qmi_wwan: add MeiG SRM813Q
Maurizio Lombardi <[email protected]>
nvme-core: align fabrics_q teardown with admin_q in nvme_free_ctrl
Yury Norov <[email protected]>
bitfield: wire __bf_shf to __builtin_ctzll
Gil Fine <[email protected]>
thunderbolt: Verify Router Ready bit is set after router enumeration
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
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
Candice Li <[email protected]>
drm/amdgpu: validate and share PSP fw_pri_buf copies via psp_copy_fw
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
Pierre Barre <[email protected]>
9p: invalidate readdir buffer on seek
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
Cássio Gabriel <[email protected]>
ALSA: usx2y: Drain pending US-428 pipe-4 output commands
David Francis <[email protected]>
drm/amdkfd: Check bounds on allocate_doorbell
Sunday Clement <[email protected]>
drm/amdkfd: Fix OOB memory exposure in get_wave_state()
David Francis <[email protected]>
drm/amdkfd: Check bounds for allocate_sdma_queue restore_sdma_id
Bjorn Helgaas <[email protected]>
PCI: Wait for device readiness after D3hot -> D0uninitialized transition
Joonwon Kang <[email protected]>
mailbox: Make mbox_send_message() return error code when tx fails
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
Chenguang Zhao <[email protected]>
RDMA/mlx5: Use QP port when decoding responder CQEs
Alessandro Baldi <[email protected]>
media: imon: Add iMON VFD HID OEM v1.2 key mappings
Thorsten Blum <[email protected]>
crypto: atmel-ecc - add support for atecc608b
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
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
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
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
Shawn Lin <[email protected]>
mmc: core: Add validation for host-provided max_segs
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
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
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
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
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
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
Dian-Syuan Yang <[email protected]>
wifi: rtw89: disable CSI STBC for VHT 160MHz
Panagiotis Petrakopoulos <[email protected]>
wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
Johannes Berg <[email protected]>
wifi: mac80211: always allow transmitting null-data on TXQs
Johannes Berg <[email protected]>
wifi: nl80211: reject beacons with bad HE operation
Viacheslav Dubeyko <[email protected]>
hfsplus: fix issue of direct writes beyond end-of-file
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
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
Jie Wang <[email protected]>
gfs2: move quota_init qc iterator increment
Jie Wang <[email protected]>
gfs2: fix quota init duplicate scan
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
Tommaso Merciai <[email protected]>
drm: rz-du: Ensure correct suspend/resume ordering with VSP
Ioana Ciornei <[email protected]>
bus: fsl-mc: wait for the MC firmware to complete its boot
Boris Brezillon <[email protected]>
drm/gem: Consider GEM object reclaimable if shrinking fails
Abdifatah Suruur <[email protected]>
ksmbd: fix use-after-free in oplock break notification
-------------
Diffstat:
Documentation/filesystems/nfs/reexport.rst | 10 +-
Documentation/hwmon/hwmon-kernel-api.rst | 3 +
Documentation/netlink/specs/rt_link.yaml | 2 +
Documentation/networking/ethtool-netlink.rst | 2 +-
Documentation/networking/scaling.rst | 15 +-
Documentation/scheduler/sched-ext.rst | 2 +-
Documentation/sound/designs/midi-2.0.rst | 11 +
MAINTAINERS | 4 +-
Makefile | 4 +-
arch/arm/boot/dts/nvidia/tegra30-lg-p880.dts | 13 +
arch/arm/kernel/hw_breakpoint.c | 11 +-
arch/arm/mach-ux500/cpu-db8500.c | 6 +-
arch/arm/mm/cache-feroceon-l2.c | 2 +-
arch/arm/mm/cache-tauros2.c | 2 +-
arch/arm/mm/fault.c | 12 +-
arch/arm64/boot/dts/qcom/sc8180x.dtsi | 16 +-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 64 +--
arch/arm64/boot/dts/qcom/sm8150.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8250.dtsi | 12 +-
arch/arm64/boot/dts/qcom/sm8350.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8450.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8550.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8650.dtsi | 8 +-
arch/arm64/include/asm/daifflags.h | 10 +-
arch/arm64/include/asm/fixmap.h | 6 +-
arch/arm64/include/asm/kprobes.h | 6 +
arch/arm64/kernel/machine_kexec.c | 3 +-
arch/arm64/kernel/probes/kprobes.c | 23 +-
arch/mips/kernel/cps-vec.S | 6 +
arch/powerpc/kernel/eeh_driver.c | 2 -
arch/powerpc/kexec/file_load_64.c | 2 +-
arch/powerpc/kvm/book3s_hv.c | 4 +-
arch/powerpc/perf/core-book3s.c | 8 +-
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/s390/boot/ipl_parm.c | 26 +-
arch/s390/boot/physmem_info.c | 2 +-
arch/s390/crypto/aes_s390.c | 87 ++--
arch/s390/kernel/ipl.c | 12 +-
arch/s390/kernel/perf_pai_crypto.c | 3 +-
arch/s390/kernel/perf_pai_ext.c | 3 +-
arch/s390/kernel/vtime.c | 25 +-
arch/s390/net/bpf_jit_comp.c | 11 -
arch/sparc/Kconfig | 1 +
arch/sparc/kernel/uprobes.c | 1 +
arch/x86/crypto/aria-aesni-avx2-asm_64.S | 6 +
arch/x86/crypto/aria-gfni-avx512-asm_64.S | 3 +
arch/x86/events/amd/brs.c | 3 +-
arch/x86/events/amd/ibs.c | 3 +-
arch/x86/events/amd/lbr.c | 3 +-
arch/x86/events/core.c | 5 +-
arch/x86/events/intel/core.c | 4 +-
arch/x86/events/intel/ds.c | 208 +++++---
arch/x86/events/intel/lbr.c | 3 +-
arch/x86/events/perf_event.h | 14 +-
arch/x86/include/asm/alternative.h | 2 +-
arch/x86/include/asm/barrier.h | 10 +-
arch/x86/include/asm/cmpxchg.h | 4 +-
arch/x86/include/asm/cmpxchg_32.h | 4 +-
arch/x86/include/asm/edac.h | 2 +-
arch/x86/include/asm/perf_event.h | 16 +-
arch/x86/include/asm/pgtable.h | 2 +-
arch/x86/include/asm/sync_bitops.h | 12 +-
arch/x86/kvm/svm/sev.c | 243 +++++----
arch/x86/kvm/svm/svm.c | 33 +-
arch/x86/kvm/svm/svm.h | 23 +-
block/blk-cgroup.c | 13 +-
crypto/Makefile | 5 +
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/acpi_tad.c | 188 ++++---
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/apei/ghes.c | 24 +-
drivers/acpi/pci_root.c | 4 +
drivers/acpi/processor_driver.c | 2 +-
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 | 91 +++-
drivers/block/sunvdc.c | 17 +
drivers/block/zram/zram_drv.c | 62 +--
drivers/block/zram/zram_drv.h | 5 +-
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 | 47 +-
drivers/bluetooth/hci_mrvl.c | 3 +-
drivers/bus/fsl-mc/fsl-mc-bus.c | 46 ++
drivers/char/ipmi/ipmi_si_platform.c | 5 +-
drivers/char/nvram.c | 16 +-
drivers/char/virtio_console.c | 21 +-
drivers/clk/keystone/sci-clk.c | 8 +
drivers/clk/renesas/renesas-cpg-mssr.c | 3 +
drivers/clk/samsung/clk-exynos850.c | 5 +-
drivers/clk/socfpga/clk-agilex.c | 2 +
drivers/clk/ux500/clk-prcmu.c | 20 +-
drivers/clk/ux500/u8500_of_clk.c | 2 +-
drivers/clocksource/timer-orion.c | 2 +-
drivers/cpufreq/apple-soc-cpufreq.c | 36 +-
drivers/cpufreq/cpufreq.c | 6 +-
drivers/cpuidle/cpuidle-ux500.c | 6 +-
drivers/crypto/atmel-ecc.c | 11 +-
drivers/crypto/atmel-sha204a.c | 3 +-
drivers/crypto/ccp/sev-dev.c | 2 +-
drivers/crypto/intel/iaa/iaa_crypto_main.c | 36 +-
drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c | 25 +-
drivers/crypto/omap-des.c | 26 +-
.../crypto/virtio/virtio_crypto_akcipher_algs.c | 81 ++-
.../crypto/virtio/virtio_crypto_skcipher_algs.c | 13 +-
drivers/cxl/core/Makefile | 2 +
drivers/cxl/core/core.h | 12 +
drivers/cxl/core/pci.c | 318 ------------
drivers/cxl/core/ras.c | 186 +++++++
drivers/cxl/core/ras_rch.c | 136 +++++
drivers/cxl/pci.c | 1 -
drivers/dma/altera-msgdma.c | 24 +-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 11 +-
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/efi/cper.c | 5 +-
drivers/firmware/efi/cper_cxl.c | 38 +-
drivers/firmware/efi/cper_cxl.h | 54 +-
drivers/firmware/stratix10-svc.c | 4 +-
drivers/gpio/gpio-dwapb.c | 17 +
drivers/gpio/gpio-pisosr.c | 4 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 23 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 4 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 +
drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 97 ++--
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/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/display/amdgpu_dm/amdgpu_dm.c | 2 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 7 +-
.../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 +-
drivers/gpu/drm/amd/display/dc/core/dc.c | 21 +-
.../drm/amd/display/dc/dml2/dml2_mall_phantom.c | 6 +-
.../gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c | 8 +-
.../drm/amd/display/dc/hwss/dce110/dce110_hwseq.c | 12 +-
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 | 2 +
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/gma500/oaktrail_hdmi_i2c.c | 21 +-
drivers/gpu/drm/gud/gud_drv.c | 1 +
drivers/gpu/drm/i915/i915_query.c | 4 +-
drivers/gpu/drm/imagination/pvr_context.c | 32 +-
drivers/gpu/drm/logicvc/Kconfig | 1 -
drivers/gpu/drm/mediatek/mtk_dsi.c | 1 +
.../gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.c | 110 +++-
drivers/gpu/drm/panel/Kconfig | 11 +-
drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c | 2 +
drivers/gpu/drm/panel/panel-simple.c | 28 +
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/tiny/cirrus.c | 7 +-
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/xe/xe_oa.c | 6 +-
drivers/gpu/host1x/bus.c | 4 +-
.../hid/bpf/progs/Huion__Inspiroy-Frego-M.bpf.c | 87 ++++
drivers/hid/hid-apple.c | 18 +-
drivers/hid/hid-logitech-hidpp.c | 1 +
drivers/hid/hid-mcp2221.c | 15 +-
drivers/hid/hid-multitouch.c | 147 +++++-
drivers/hid/hid-sony.c | 82 ++-
drivers/hid/hid-universal-pidff.c | 4 +-
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 | 16 +-
drivers/hwmon/ina2xx.c | 14 +-
drivers/hwmon/ltc4282.c | 2 +-
drivers/hwmon/pmbus/lm25066.c | 60 +--
drivers/hwmon/pmbus/pmbus_core.c | 4 +-
drivers/hwmon/raspberrypi-hwmon.c | 12 +-
drivers/hwtracing/coresight/coresight-platform.c | 12 +-
drivers/i2c/i2c-core-smbus.c | 12 +
drivers/i3c/master/mipi-i3c-hci/cmd_v1.c | 4 +-
drivers/i3c/master/mipi-i3c-hci/cmd_v2.c | 4 +-
drivers/iio/accel/mma8452.c | 19 +-
drivers/iio/adc/qcom-spmi-iadc.c | 18 +-
drivers/iio/adc/rtq6056.c | 10 +-
drivers/iio/light/stk3310.c | 76 ++-
drivers/infiniband/core/umem.c | 18 +-
drivers/infiniband/hw/bnxt_re/qplib_res.c | 11 +
drivers/infiniband/hw/irdma/utils.c | 2 +-
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/arm/arm-smmu-v3/tegra241-cmdqv.c | 21 +-
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 9 +
drivers/iommu/rockchip-iommu.c | 8 +
drivers/irqchip/irq-gic-v3-its.c | 1 +
drivers/leds/leds-pca9532.c | 8 +-
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/raid10.c | 5 +
drivers/md/raid5.c | 35 +-
drivers/media/i2c/video-i2c.c | 2 +-
drivers/media/pci/dm1105/dm1105.c | 7 +-
.../platform/chips-media/wave5/wave5-vpu-dec.c | 47 +-
.../platform/chips-media/wave5/wave5-vpuapi.c | 11 +-
.../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 5 +-
drivers/media/platform/qcom/camss/camss-csiphy.c | 10 +-
.../platform/verisilicon/hantro_g2_hevc_dec.c | 6 +-
.../verisilicon/rockchip_vpu981_hw_av1_dec.c | 57 +-
drivers/media/rc/imon.c | 4 +
drivers/media/rc/mceusb.c | 2 +
drivers/media/usb/as102/as102_usb_drv.c | 75 ++-
drivers/media/usb/em28xx/em28xx-video.c | 4 +-
drivers/media/v4l2-core/v4l2-ctrls-core.c | 32 ++
drivers/media/v4l2-core/v4l2-h264.c | 3 +-
drivers/mfd/ab8500-core.c | 2 +-
drivers/mfd/db8500-prcmu.c | 6 +-
drivers/mfd/rsmu_i2c.c | 2 +
drivers/mfd/rsmu_spi.c | 2 +
drivers/mfd/tps65219.c | 14 +-
drivers/mmc/core/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_gswip.c | 367 +++----------
drivers/net/dsa/lantiq_gswip.h | 252 +++++++++
drivers/net/dsa/mv88e6xxx/chip.c | 23 +-
drivers/net/dsa/qca/qca8k-8xxx.c | 22 +-
drivers/net/dsa/qca/qca8k.h | 1 +
drivers/net/dsa/realtek/rtl8365mb.c | 14 +
drivers/net/dsa/sja1105/sja1105_flower.c | 4 +-
drivers/net/ethernet/allwinner/sun4i-emac.c | 2 +
drivers/net/ethernet/amd/au1000_eth.c | 3 +-
drivers/net/ethernet/amd/pds_core/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 | 19 +-
drivers/net/ethernet/cadence/macb.h | 2 +-
drivers/net/ethernet/cadence/macb_main.c | 39 +-
drivers/net/ethernet/cavium/thunder/nicvf_main.c | 8 +-
drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c | 4 +-
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 | 3 +-
drivers/net/ethernet/ibm/emac/mal.c | 6 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 19 +-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 2 +-
drivers/net/ethernet/intel/ice/ice_common.c | 9 +-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 2 +-
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_txrx.c | 10 +-
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/mellanox/mlx5/core/Kconfig | 2 +-
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/eswitch.c | 8 +-
.../mellanox/mlx5/core/eswitch_offloads_termtbl.c | 7 +-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 3 +-
.../mlx5/core/steering/hws/mlx5hws_table.c | 3 +
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_en.c | 12 +-
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 36 +-
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/sfc/ethtool.c | 1 +
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 4 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 169 ++++--
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c | 1 -
drivers/net/ethernet/ti/cpsw.c | 41 +-
drivers/net/ethernet/ti/cpsw_new.c | 4 +-
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/netconsole.c | 2 +
drivers/net/phy/Kconfig | 17 +-
drivers/net/phy/Makefile | 3 +-
drivers/net/phy/mediatek/Kconfig | 22 +
drivers/net/phy/mediatek/Makefile | 3 +
.../{mediatek-ge-soc.c => mediatek/mtk-ge-soc.c} | 0
.../net/phy/{mediatek-ge.c => mediatek/mtk-ge.c} | 29 ++
drivers/net/phy/motorcomm.c | 41 +-
drivers/net/phy/phy_device.c | 16 +
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/vxlan/vxlan_vnifilter.c | 13 +-
drivers/net/wireless/ath/ath11k/dp_rx.c | 50 +-
drivers/net/wireless/ath/ath9k/hif_usb.c | 12 +-
drivers/net/wireless/ath/ath9k/hif_usb.h | 2 +-
drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 4 +-
drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 5 +
drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 13 +-
drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 19 +-
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 25 +-
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 7 +-
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 3 -
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 | 5 +
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 45 +-
drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 9 +-
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 | 4 +-
drivers/net/wireless/realtek/rtw89/mac_be.c | 4 +
drivers/net/wireless/realtek/rtw89/pci.c | 16 +-
drivers/net/wireless/rsi/rsi_91x_hal.c | 8 +
drivers/net/wireless/rsi/rsi_91x_mgmt.c | 6 +-
drivers/net/wireless/virtual/mac80211_hwsim.c | 6 +-
drivers/net/wwan/t7xx/t7xx_pci.c | 3 +
drivers/nvdimm/claim.c | 9 +-
drivers/nvme/host/apple.c | 182 +++----
drivers/nvme/host/core.c | 34 +-
drivers/nvme/host/fc.c | 7 +-
drivers/nvme/host/rdma.c | 18 +-
drivers/nvme/host/tcp.c | 17 +-
drivers/nvme/target/rdma.c | 15 +-
drivers/of/dynamic.c | 20 +-
drivers/of/overlay.c | 15 +
drivers/opp/of.c | 2 +-
drivers/pci/controller/dwc/pcie-intel-gw.c | 19 +-
drivers/pci/controller/pcie-altera.c | 2 +
drivers/pci/controller/pcie-iproc.c | 2 +
drivers/pci/controller/pcie-mediatek.c | 2 +
drivers/pci/controller/pcie-rockchip-host.c | 2 +
drivers/pci/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/pinctrl/renesas/pinctrl-rzg2l.c | 3 +-
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/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-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/scsi_error.c | 2 +-
drivers/soc/tegra/fuse/fuse-tegra.c | 14 +-
drivers/soc/ti/pm33xx.c | 2 +-
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-xilinx.c | 6 +-
drivers/spi/spi.c | 9 +-
drivers/staging/fbtft/fbtft-core.c | 9 +-
drivers/target/iscsi/iscsi_target.c | 4 +-
drivers/tee/optee/call.c | 3 +-
drivers/thermal/db8500_thermal.c | 10 +-
drivers/thermal/qcom/tsens.c | 111 ++--
drivers/thermal/qcom/tsens.h | 1 +
drivers/thermal/tegra/soctherm.c | 6 +-
drivers/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_regs.h | 1 +
drivers/thunderbolt/usb4.c | 11 +-
drivers/thunderbolt/xdomain.c | 49 +-
drivers/tty/serial/8250/8250_port.c | 7 +
drivers/usb/atm/xusbatm.c | 6 +-
drivers/usb/class/cdc-acm.c | 6 +
drivers/usb/class/usbtmc.c | 2 -
drivers/usb/core/hcd.c | 14 +-
drivers/usb/gadget/function/f_fs.c | 31 +-
drivers/usb/gadget/udc/aspeed_udc.c | 7 +-
drivers/usb/gadget/udc/core.c | 7 +-
drivers/usb/gadget/udc/goku_udc.c | 3 +-
drivers/usb/host/Kconfig | 2 +-
drivers/usb/host/xhci-debugfs.c | 10 +-
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-mem.c | 34 +-
drivers/usb/host/xhci-pci.c | 9 +-
drivers/usb/host/xhci-ring.c | 13 +-
drivers/usb/host/xhci.c | 31 +-
drivers/usb/host/xhci.h | 39 +-
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/virtio/virtio.c | 2 +-
drivers/virtio/virtio_input.c | 9 +-
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/balloon.c | 56 +-
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/fs_probe.c | 1 +
fs/afs/server.c | 1 -
fs/autofs/inode.c | 4 +-
fs/befs/linuxvfs.c | 3 +-
fs/bfs/inode.c | 3 +-
fs/btrfs/accessors.h | 1 +
fs/btrfs/acl.h | 2 +
fs/btrfs/compression.c | 16 +-
fs/btrfs/ctree.h | 11 +-
fs/btrfs/defrag.c | 32 +-
fs/btrfs/delayed-ref.h | 2 +
fs/btrfs/dir-item.h | 1 +
fs/btrfs/direct-io.c | 41 +-
fs/btrfs/direct-io.h | 2 +
fs/btrfs/discard.h | 1 +
fs/btrfs/disk-io.c | 11 +-
fs/btrfs/extent-io-tree.h | 6 +-
fs/btrfs/extent-tree.h | 1 -
fs/btrfs/extent_io.c | 53 +-
fs/btrfs/extent_map.c | 94 ++--
fs/btrfs/extent_map.h | 8 +-
fs/btrfs/fiemap.c | 4 +-
fs/btrfs/file-item.h | 2 +
fs/btrfs/file.c | 136 +++--
fs/btrfs/file.h | 2 +
fs/btrfs/free-space-cache.c | 10 +-
fs/btrfs/fs.c | 10 +-
fs/btrfs/fs.h | 10 +
fs/btrfs/inode.c | 181 +++----
fs/btrfs/ioctl.c | 171 +++---
fs/btrfs/ioctl.h | 5 +-
fs/btrfs/locking.c | 1 -
fs/btrfs/ordered-data.c | 8 +-
fs/btrfs/ordered-data.h | 1 +
fs/btrfs/print-tree.h | 2 +
fs/btrfs/props.h | 1 +
fs/btrfs/qgroup.h | 3 +
fs/btrfs/raid-stripe-tree.c | 25 +-
fs/btrfs/raid-stripe-tree.h | 2 +
fs/btrfs/reflink.c | 8 +-
fs/btrfs/relocation.c | 71 ++-
fs/btrfs/send.c | 3 +-
fs/btrfs/space-info.c | 2 +-
fs/btrfs/subpage.c | 1 -
fs/btrfs/super.c | 2 +-
fs/btrfs/sysfs.h | 1 +
fs/btrfs/tests/extent-io-tests.c | 6 +-
fs/btrfs/tests/extent-map-tests.c | 56 +-
fs/btrfs/tests/inode-tests.c | 67 +--
fs/btrfs/transaction.c | 13 +-
fs/btrfs/tree-checker.c | 41 ++
fs/btrfs/tree-log.c | 12 +-
fs/btrfs/verity.c | 4 +-
fs/btrfs/volumes.c | 10 +-
fs/btrfs/volumes.h | 4 +
fs/btrfs/xattr.h | 2 +
fs/btrfs/zoned.c | 15 +-
fs/cachefiles/namei.c | 1 -
fs/ceph/caps.c | 69 ++-
fs/ceph/crypto.c | 46 +-
fs/ceph/mds_client.c | 196 ++++++-
fs/ceph/mds_client.h | 2 -
fs/ceph/super.h | 5 +-
fs/configfs/dir.c | 12 +-
fs/dlm/memory.c | 4 +-
fs/erofs/decompressor_lzma.c | 18 +-
fs/erofs/zutil.c | 2 +
fs/exec.c | 22 +-
fs/exfat/nls.c | 19 +-
fs/f2fs/inline.c | 7 +
fs/freevxfs/vxfs_bmap.c | 3 +-
fs/fuse/dev.c | 27 +-
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/internal.h | 12 +
fs/nfs/blocklayout/rpc_pipefs.c | 41 +-
fs/nfs/export.c | 3 +-
fs/nfs/nfs42proc.c | 15 +-
fs/nfs/nfs4idmap.c | 8 +-
fs/nfsd/filecache.c | 34 +-
fs/nfsd/netns.h | 14 +-
fs/nfsd/nfs4callback.c | 78 ++-
fs/nfsd/nfs4proc.c | 32 +-
fs/nfsd/nfs4recover.c | 76 +--
fs/nfsd/nfs4state.c | 257 +++++++--
fs/nfsd/nfsctl.c | 199 ++++---
fs/nfsd/nfsd.h | 15 -
fs/nfsd/state.h | 5 +-
fs/nfsd/trace.h | 14 +-
fs/nfsd/xdr4.h | 1 +
fs/ntfs3/dir.c | 4 +-
fs/ntfs3/fslog.c | 28 +-
fs/ntfs3/index.c | 41 +-
fs/ntfs3/super.c | 8 +-
fs/ntfs3/xattr.c | 4 +-
fs/ocfs2/dir.c | 71 ++-
fs/omfs/inode.c | 6 +-
fs/pidfs.c | 65 ++-
fs/qnx4/inode.c | 3 +-
fs/smb/client/cifsacl.c | 30 +-
fs/smb/client/cifspdu.h | 8 -
fs/smb/client/connect.c | 27 +-
fs/smb/client/file.c | 5 +-
fs/smb/client/link.c | 2 +-
fs/smb/client/misc.c | 24 +-
fs/smb/client/readdir.c | 9 +-
fs/smb/client/reparse.c | 5 +-
fs/smb/client/smb1ops.c | 2 +-
fs/smb/client/smb2ops.c | 487 +++++++++++------
fs/smb/client/smb2pdu.h | 20 -
fs/smb/client/trace.h | 2 +-
fs/smb/client/transport.c | 11 +-
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 | 221 ++++++--
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/scrub/agheader_repair.c | 39 +-
fs/xfs/scrub/alloc_repair.c | 18 +-
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/quota_repair.c | 14 +-
fs/xfs/scrub/quotacheck.c | 4 +-
fs/xfs/scrub/scrub.c | 3 +-
fs/xfs/scrub/stats.c | 60 ++-
fs/xfs/scrub/stats.h | 4 +-
fs/xfs/scrub/symlink_repair.c | 2 +-
fs/xfs/scrub/trace.h | 35 +-
fs/xfs/xfs_exchmaps_item.c | 19 +-
fs/xfs/xfs_exchrange.c | 12 +-
include/cxl/event.h | 80 +++
include/linux/bio.h | 14 -
include/linux/bitfield.h | 2 +-
include/linux/bpf.h | 1 +
include/linux/bpf_verifier.h | 4 +-
include/linux/cper.h | 4 +
include/linux/device.h | 1 +
include/linux/ethtool.h | 28 +-
include/linux/exportfs.h | 1 +
include/linux/firmware/intel/stratix10-smc.h | 18 +-
include/linux/fwnode.h | 1 +
include/linux/hugetlb.h | 5 +
include/linux/hwmon.h | 1 +
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/mm.h | 2 +
include/linux/mm_inline.h | 15 +-
include/linux/mm_types.h | 27 +-
include/linux/mmzone.h | 2 +
include/linux/oa_tc6.h | 50 ++
include/linux/perf/riscv_pmu.h | 2 +-
include/linux/perf_event.h | 7 +-
include/linux/phy.h | 1 +
include/linux/platform_data/cros_ec_proto.h | 2 +
include/linux/rbtree_augmented.h | 35 +-
include/linux/sched.h | 1 +
include/linux/skbuff.h | 5 +
include/linux/sunrpc/rpc_pipe_fs.h | 4 +-
include/linux/sunrpc/svc.h | 21 +-
include/linux/sunrpc/svc_rdma.h | 3 +-
include/linux/sunrpc/xdr.h | 13 +
include/linux/switchtec.h | 1 +
include/linux/thunderbolt.h | 2 +
include/linux/workqueue.h | 38 +-
include/media/v4l2-hevc.h | 41 ++
include/net/cfg80211.h | 2 +-
include/net/cfg802154.h | 1 +
include/net/dst.h | 6 +
include/net/if_inet6.h | 2 -
include/net/inet6_hashtables.h | 2 +-
include/net/ip.h | 28 +-
include/net/ip6_route.h | 45 ++
include/net/ip6_tunnel.h | 2 +-
include/net/ip_fib.h | 5 +
include/net/ipv6.h | 10 +-
include/net/netlink.h | 14 +
include/net/sch_generic.h | 2 +-
include/net/tcp.h | 8 +-
include/rdma/ib_umem.h | 4 +-
include/sound/hda_codec.h | 30 ++
include/sound/rawmidi.h | 2 +
include/sound/tas2781.h | 4 +-
include/trace/events/hwmon.h | 10 +-
include/trace/events/icmp.h | 13 +-
include/uapi/linux/ethtool.h | 128 ++---
include/uapi/linux/virtio_crypto.h | 1 +
include/uapi/sound/asound.h | 6 +-
io_uring/net.c | 10 +-
kernel/bpf/bpf_iter.c | 2 +-
kernel/bpf/btf.c | 24 +-
kernel/bpf/cgroup.c | 1 +
kernel/bpf/disasm.c | 5 +-
kernel/bpf/stackmap.c | 175 +++++--
kernel/bpf/verifier.c | 123 +++--
kernel/events/core.c | 27 +-
kernel/events/ring_buffer.c | 9 +-
kernel/locking/lockdep.c | 50 +-
kernel/printk/nbcon.c | 2 +-
kernel/rcu/tasks.h | 3 +-
kernel/sched/ext.c | 10 +-
kernel/sched/fair.c | 209 +++-----
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 | 26 +-
kernel/trace/trace_event_perf.c | 12 +-
kernel/trace/trace_events_hist.c | 42 +-
kernel/trace/trace_events_user.c | 26 +-
kernel/trace/trace_probe.c | 48 +-
kernel/trace/trace_probe.h | 2 +
kernel/workqueue.c | 5 +-
mm/damon/core.c | 13 +-
mm/gup.c | 10 +-
mm/huge_memory.c | 10 +
mm/hugetlb.c | 6 +-
mm/hugetlb_vmemmap.c | 6 +-
mm/migrate_device.c | 6 +
mm/mm_init.c | 2 +
mm/page_alloc.c | 5 +
mm/slab.h | 8 +-
mm/slab_common.c | 41 +-
mm/slub.c | 116 ++---
mm/swap.c | 49 +-
mm/swapfile.c | 8 +-
mm/vmscan.c | 78 ++-
net/8021q/vlan.c | 7 +-
net/8021q/vlan_dev.c | 32 +-
net/9p/client.c | 2 +-
net/appletalk/aarp.c | 5 +
net/bluetooth/hci_core.c | 4 +-
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_device.c | 2 +-
net/bridge/br_fdb.c | 7 +-
net/bridge/br_input.c | 2 +-
net/bridge/br_multicast.c | 11 +-
net/core/dev.c | 2 +-
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/ethtool/ioctl.c | 212 +++++++-
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/icmp.c | 2 +-
net/ipv4/igmp.c | 210 +++++---
net/ipv4/inet_fragment.c | 6 +
net/ipv4/ip_output.c | 4 +-
net/ipv4/ip_sockglue.c | 2 +-
net/ipv4/ip_tunnel_core.c | 6 +
net/ipv4/ipmr.c | 5 +-
net/ipv4/netfilter/nf_reject_ipv4.c | 2 +-
net/ipv4/nexthop.c | 2 +-
net/ipv4/route.c | 4 +-
net/ipv4/tcp.c | 14 +-
net/ipv4/tcp_ipv4.c | 15 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_offload.c | 22 +-
net/ipv4/tcp_output.c | 10 +-
net/ipv4/tcp_timer.c | 6 +-
net/ipv4/udp.c | 4 +-
net/ipv6/addrconf.c | 10 +-
net/ipv6/af_inet6.c | 2 +-
net/ipv6/exthdrs.c | 99 ++--
net/ipv6/ioam6.c | 17 +-
net/ipv6/ip6_fib.c | 4 +-
net/ipv6/ip6_gre.c | 8 +-
net/ipv6/ip6_input.c | 34 +-
net/ipv6/ip6_output.c | 54 +-
net/ipv6/ip6_tunnel.c | 8 +-
net/ipv6/ip6_vti.c | 2 +-
net/ipv6/ip6mr.c | 9 +-
net/ipv6/ipv6_sockglue.c | 13 +-
net/ipv6/mcast.c | 257 +++++----
net/ipv6/netfilter.c | 4 +-
net/ipv6/netfilter/ip6_tables.c | 5 +
net/ipv6/netfilter/nf_reject_ipv6.c | 2 +-
net/ipv6/output_core.c | 2 +-
net/ipv6/reassembly.c | 10 +-
net/ipv6/route.c | 19 +-
net/ipv6/seg6_iptunnel.c | 6 +-
net/ipv6/sit.c | 2 +-
net/ipv6/tcp_ipv6.c | 15 +-
net/ipv6/tcpv6_offload.c | 15 +-
net/ipv6/xfrm6_output.c | 2 +-
net/l2tp/l2tp_debugfs.c | 4 +
net/l2tp/l2tp_ppp.c | 56 +-
net/mac80211/cfg.c | 9 +-
net/mac80211/ibss.c | 9 +-
net/mac80211/mlme.c | 6 +-
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/protocol.c | 5 +-
net/mptcp/protocol.h | 2 +-
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_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_log_syslog.c | 6 +-
net/netfilter/nfnetlink_log.c | 28 +-
net/netfilter/nft_set_pipapo_avx2.c | 1 +
net/netlabel/netlabel_unlabeled.c | 2 +-
net/openvswitch/flow.c | 4 +-
net/openvswitch/flow_table.c | 4 +-
net/packet/af_packet.c | 101 +++-
net/phonet/pn_dev.c | 30 +-
net/qrtr/af_qrtr.c | 4 +-
net/rds/af_rds.c | 63 ++-
net/rds/connection.c | 102 +++-
net/rds/ib_cm.c | 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_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/auth_gss/auth_gss.c | 7 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 9 +-
net/sunrpc/clnt.c | 52 +-
net/sunrpc/rpc_pipe.c | 80 +--
net/sunrpc/svc.c | 23 +-
net/sunrpc/xprtrdma/ib_client.c | 26 +-
net/sunrpc/xprtrdma/svc_rdma_pcl.c | 2 +-
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 15 +-
net/sunrpc/xprtrdma/svc_rdma_transport.c | 32 +-
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 | 8 +-
net/wireless/wext-sme.c | 9 +
rust/bindings/lib.rs | 3 +-
rust/uapi/lib.rs | 3 +-
scripts/mksysmap | 2 +-
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/keys/trusted-keys/trusted_tpm1.c | 2 +-
sound/core/pcm_native.c | 35 +-
sound/core/rawmidi.c | 4 +
sound/core/seq/oss/seq_oss_rw.c | 3 +-
sound/core/seq/seq_prioq.c | 14 +-
sound/core/ump.c | 94 +++-
sound/hda/ext/hdac_ext_controller.c | 6 +-
sound/hda/hdac_bus.c | 8 +-
sound/hda/hdac_component.c | 6 +-
sound/hda/hdac_device.c | 28 +-
sound/hda/hdac_regmap.c | 35 +-
sound/isa/es18xx.c | 4 +
sound/pci/ctxfi/cthw20k2.c | 1 +
sound/pci/hda/cs35l41_hda_property.c | 2 +
sound/pci/hda/cs35l56_hda.c | 30 +-
sound/pci/hda/hda_codec.c | 119 ++---
sound/pci/hda/hda_controller.c | 24 +-
sound/pci/hda/hda_proc.c | 4 +-
sound/pci/hda/hda_sysfs.c | 77 ++-
sound/pci/hda/patch_conexant.c | 12 +
sound/pci/hda/patch_realtek.c | 40 ++
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 | 20 +-
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/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/pcm.c | 34 +-
sound/soc/intel/avs/topology.c | 2 +-
sound/soc/intel/avs/topology.h | 1 +
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 | 9 +-
sound/usb/usx2y/usbusx2y.c | 49 +-
sound/usb/usx2y/usbusx2y.h | 4 +-
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/tests/shell/stat_bpf_counters.sh | 28 +-
tools/perf/util/evsel.c | 4 +
tools/perf/util/symbol.c | 11 +-
tools/sched_ext/scx_central.bpf.c | 6 +-
tools/sched_ext/scx_qmap.bpf.c | 2 +-
tools/testing/cxl/Kbuild | 2 +
tools/testing/selftests/alsa/mixer-test.c | 4 +-
tools/testing/selftests/bpf/progs/test_bpf_nf.c | 8 +-
tools/testing/selftests/cgroup/test_kmem.c | 2 +-
tools/testing/selftests/kselftest_harness.h | 2 +-
tools/testing/selftests/mm/cow.c | 338 +++++-------
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 +-
1054 files changed, 15506 insertions(+), 8702 deletions(-)Greg Kroah-Hartman
maintainerPATCH 1/1102 ksmbd: fix use-after-free in oplock break notification
6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Abdifatah Suruur <[email protected]>
commit 0e753899627b5e28a9fea8bca98262a6f65a2452 upstream.
smb2_oplock_break_noti() reads opinfo->conn without any lock and dereferences it after two allocations which may sleep. When the durable handle owning the oplock is disconnected, session_fd_check() clears opinfo->conn and drops its conn reference under ci->m_lock, and the last ksmbd_conn_put() frees the connection. A break triggered by another connection that races with the teardown can then resurrect the freed connection: ksmbd_conn_get() is a plain atomic_inc, and the queued break work later dereferences the stale conn via ksmbd_conn_write(), a use-after-free reachable by any authenticated client holding a durable batch oplock.
Thread the caller's inode into the notification path instead of taking a new reference on it. Every caller of oplock_break() already holds a live ksmbd_file (or an explicit ksmbd_inode_lookup_lock() reference, in the parent lease break paths) on the inode that owns the break target's oplock list, so ci cannot be freed during the call, and its lock can be taken without dereferencing opinfo->o_fp, which a concurrent close may free. Select and pin the connection under ci->m_lock, the same lock session_fd_check() and ksmbd_reopen_durable_fd() use to update opinfo->conn, so a concurrent detach either loses the race to the clear or keeps the connection alive until the notification work releases it. Transfer the reference to the work item and release it on allocation failures.
[ This tree predates the deferred break machinery
(oplock_break_add()/oplock_break_drain_none()) that the original commit is layered on, so it is ported in the same patch: the three walks that hold ci->m_lock (smb_send_parent_lease_break_noti(), smb_lazy_parent_lease_break_close(), smb_break_all_levII_oplock()) collect the breaks and drain them after releasing the lock, and every oplock_break() call site runs outside ci->m_lock, so smb2_oplock_break_conn_get() takes the read lock itself, as in the 6.18.y backport. ]
--- fs/smb/server/oplock.c | 118 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 14 deletions(-)
fs/smb/server/oplock.c +104 -14
@@ -708,31 +708,67 @@ static void __smb2_oplock_break_noti(struct work_struct *wk)ksmbd_conn_put (conn); } +/* +* Select and pin the connection used for an oplock break before doing any +* allocations which may sleep. The caller of oplock_break() holds a live +* reference on ci (a file being opened, a file being operated on, or an +* explicit ksmbd_inode_lookup_lock() reference in the parent lease break +* paths), so the inode cannot be freed during the call. +* +* opinfo->conn is cleared under ci->m_lock by session_fd_check() when the +* durable handle owning the oplock is disconnected, reassigned by +* ksmbd_reopen_durable_fd() under the same lock, and the last +* ksmbd_conn_put() of the old connection frees it. Holding the read lock +* excludes both writers, so the connection cannot be freed while it is +* selected. +*/ +static struct ksmbd_conn *smb2_oplock_break_conn_get (struct oplock_info *opinfo, +struct ksmbd_inode *ci) +{ +struct ksmbd_conn *conn; + +down_read (&ci->m_lock); + conn =READ_ONCE (opinfo->conn); +if (conn && !ksmbd_conn_releasing (conn)) + conn =ksmbd_conn_get (conn); +else + conn =NULL ; +up_read (&ci->m_lock); + +return conn; +} +/** * smb2_oplock_break_noti() - send smb2 exclusive/batch to level2 oplock * break command from server to client * @opinfo: oplock info object +* @ci: inode owning the break target's oplock list, pinned by +* the caller * * Return: 0 on success, otherwise error */ -static int smb2_oplock_break_noti (struct oplock_info *opinfo) +static int smb2_oplock_break_noti (struct oplock_info *opinfo, +struct ksmbd_inode *ci) {struct ksmbd_conn *conn;struct oplock_break_info *br_info;int ret =0 ;struct ksmbd_work *work; - conn =READ_ONCE (opinfo->conn); + conn =smb2_oplock_break_conn_get (opinfo, ci);if (!conn)return 0 ; work =ksmbd_alloc_work_struct (); -if (!work) +if (!work) { +ksmbd_conn_put (conn);return -ENOMEM ; + } br_info =kmalloc (sizeof (struct oplock_break_info ),KSMBD_DEFAULT_GFP );if (!br_info) {ksmbd_free_work_struct (work); +ksmbd_conn_put (conn);return -ENOMEM ; }
@@ -741,7 +777,8 @@ static int smb2_oplock_break_noti(struct oplock_info *opinfo) br_info->open_trunc = opinfo->open_trunc; work->request_buf = (char *)br_info; - work->conn =ksmbd_conn_get (conn); +/* Transfer the reference acquired by smb2_oplock_break_conn_get(). */ + work->conn = conn; work->sess = opinfo->sess;ksmbd_conn_r_count_inc (conn);
@@ -890,8 +927,8 @@ static void wait_lease_breaking(struct oplock_info *opinfo) } } -static int oplock_break (struct oplock_info *brk_opinfo,int req_op_level, -struct ksmbd_work *in_work) +static int oplock_break (struct oplock_info *brk_opinfo,struct ksmbd_inode *ci, +int req_op_level,struct ksmbd_work *in_work) {int err =0 ;
@@ -957,7 +994,7 @@ static int oplock_break(struct oplock_info *brk_opinfo, int req_op_level,if (brk_opinfo->is_lease) err =smb2_lease_break_noti (brk_opinfo);else - err =smb2_oplock_break_noti (brk_opinfo); + err =smb2_oplock_break_noti (brk_opinfo, ci);ksmbd_debug (OPLOCK ,"oplock granted = %d\n" , brk_opinfo->level);if (brk_opinfo->op_state ==OPLOCK_CLOSING )
@@ -969,6 +1006,43 @@ static int oplock_break(struct oplock_info *brk_opinfo, int req_op_level,return err; } +struct oplock_break_entry { +struct list_head list; +struct oplock_info *opinfo; +}; + +/* +* Collect an oplock for a deferred break. oplock_break() may block for +* the client's break acknowledgment, and the close that wakes that wait +* needs ci->m_lock for write, so the walks that hold ci->m_lock defer the +* break until the lock is released. +*/ +static int oplock_break_add (struct list_head *head,struct oplock_info *opinfo) +{ +struct oplock_break_entry *ent; + + ent = kmalloc_obj(struct oplock_break_entry, KSMBD_DEFAULT_GFP); +if (!ent) +return -ENOMEM ; + + ent->opinfo = opinfo; +list_add_tail (&ent->list, head); +return 0 ; +} + +static void oplock_break_drain_none (struct list_head *head, +struct ksmbd_inode *ci) +{ +struct oplock_break_entry *ent, *tmp; + +list_for_each_entry_safe (ent, tmp, head, list) { +oplock_break (ent->opinfo, ci,SMB2_OPLOCK_LEVEL_NONE ,NULL ); +list_del (&ent->list); +opinfo_put (ent->opinfo); +kfree (ent); + } +} +void destroy_lease_table (struct ksmbd_conn *conn) {struct lease_table *lb, *lbtmp;
@@ -1112,6 +1186,7 @@ void smb_send_parent_lease_break_noti(struct ksmbd_file *fp, {struct oplock_info *opinfo;struct ksmbd_inode *p_ci =NULL ; +LIST_HEAD (brk_list);if (lctx->version !=2 )return ;
@@ -1137,12 +1212,14 @@ void smb_send_parent_lease_break_noti(struct ksmbd_file *fp,continue ; } -oplock_break (opinfo,SMB2_OPLOCK_LEVEL_NONE ,NULL ); -opinfo_put (opinfo); +if (oplock_break_add (&brk_list, opinfo)) +opinfo_put (opinfo); } }up_read (&p_ci->m_lock); +oplock_break_drain_none (&brk_list, p_ci); +ksmbd_inode_put (p_ci); }
@@ -1150,6 +1227,7 @@ void smb_lazy_parent_lease_break_close(struct ksmbd_file *fp) {struct oplock_info *opinfo;struct ksmbd_inode *p_ci =NULL ; +LIST_HEAD (brk_list);rcu_read_lock (); opinfo =rcu_dereference (fp->f_opinfo);
@@ -1178,12 +1256,14 @@ void smb_lazy_parent_lease_break_close(struct ksmbd_file *fp)continue ; } -oplock_break (opinfo,SMB2_OPLOCK_LEVEL_NONE ,NULL ); -opinfo_put (opinfo); +if (oplock_break_add (&brk_list, opinfo)) +opinfo_put (opinfo); } }up_read (&p_ci->m_lock); +oplock_break_drain_none (&brk_list, p_ci); +ksmbd_inode_put (p_ci); }
@@ -1280,7 +1360,7 @@ int smb_grant_oplock(struct ksmbd_work *work, int req_op_level, u64 pid, goto op_break_not_needed; } - err =oplock_break (prev_opinfo,SMB2_OPLOCK_LEVEL_II , work); + err =oplock_break (prev_opinfo, fp->f_ci,SMB2_OPLOCK_LEVEL_II , work);opinfo_put (prev_opinfo);if (err == -ENOENT ) goto set_lev;
@@ -1366,7 +1446,7 @@ static void smb_break_all_write_oplock(struct ksmbd_work *work, } brk_opinfo->open_trunc = is_trunc; -oplock_break (brk_opinfo,SMB2_OPLOCK_LEVEL_II , work); +oplock_break (brk_opinfo, fp->f_ci,SMB2_OPLOCK_LEVEL_II , work);opinfo_put (brk_opinfo); }
@@ -1383,6 +1463,7 @@ void smb_break_all_levII_oplock(struct ksmbd_work *work, struct ksmbd_file *fp,struct oplock_info *op, *brk_op;struct ksmbd_inode *ci;struct ksmbd_conn *conn = work->conn; +LIST_HEAD (brk_list);if (!test_share_config_flag (work->tcon->share_conf,KSMBD_SHARE_FLAG_OPLOCKS ))
@@ -1430,12 +1511,21 @@ void smb_break_all_levII_oplock(struct ksmbd_work *work, struct ksmbd_file *fp, SMB2_LEASE_KEY_SIZE)) goto next; brk_op->open_trunc = is_trunc; -oplock_break (brk_op,SMB2_OPLOCK_LEVEL_NONE ,NULL ); + +/* +* Defer the break until ci->m_lock is released: oplock_break() +* may block waiting for the break acknowledgment, and the +* close that wakes that wait needs ci->m_lock for write. +*/ +if (!oplock_break_add (&brk_list, brk_op)) +continue ; next:opinfo_put (brk_op); }up_read (&ci->m_lock); +oplock_break_drain_none (&brk_list, ci); +if (op)opinfo_put (op); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 2/1102 drm/gem: Consider GEM object reclaimable if shrinking fails
In reply to Greg Kroah-Hartman6.12-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
@@ -1546,6 +1546,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
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.111 release. There are 1102 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:49 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.111-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.12.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian
Greg Kroah-Hartman
maintainerPATCH 3/1102 bus: fsl-mc: wait for the MC firmware to complete its boot
In reply to Greg Kroah-Hartman6.12-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)
@@ -1006,6 +1013,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
@@ -1070,6 +1112,10 @@ static int fsl_mc_bus_probe(struct platform_device *pdev) mc->fsl_mc_regs + FSL_MC_GCR1); } + error =fsl_mc_firmware_check (pdev); +if (error) +return error; +/* * Get physical address of MC portal for the root DPRC: */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 4/1102 drm: rz-du: Ensure correct suspend/resume ordering with VSP
In reply to Greg Kroah-Hartman6.12-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 5/1102 drm/amd/display: Fix DPMS using partially updated pipe context
In reply to Greg Kroah-Hartman6.12-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
@@ -3411,27 +3411,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 6/1102 drm/panel: jadard-jd9365da-h3: set prepare_prev_first
In reply to Greg Kroah-Hartman6.12-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
@@ -1159,6 +1159,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 7/1102 drm/amd/pm: Check SMUv13.0.6/12 metrics integrity
In reply to Greg Kroah-Hartman6.12-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
@@ -537,6 +537,10 @@ static int smu_v13_0_6_get_metrics_table(struct smu_context *smu,amdgpu_asic_invalidate_hdp (smu->adev,NULL );memcpy (smu_table->metrics_table, table->cpu_addr, table_size); +if (!memchr_inv (smu_table->metrics_table,0xff , +min (16 , table_size))) +return -EHWPOISON ; + smu_table->metrics_time = jiffies; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 8/1102 gfs2: fix quota init duplicate scan
In reply to Greg Kroah-Hartman6.12-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
@@ -255,9 +255,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;
@@ -265,12 +269,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 ;
@@ -1459,7 +1473,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 "
@@ -1468,7 +1482,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 9/1102 gfs2: move quota_init qc iterator increment
In reply to Greg Kroah-Hartman6.12-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
@@ -1449,7 +1449,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);
@@ -1457,7 +1457,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 10/1102 iio: adc: rtq6056: add i2c_device_id support
In reply to Greg Kroah-Hartman6.12-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
@@ -719,7 +719,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" );
@@ -862,6 +862,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 },
@@ -876,6 +883,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 11/1102 pinctrl: renesas: rzg2l: Handle RZ/V2H(P) IOLH configuration in PM cache
In reply to Greg Kroah-Hartman6.12-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
@@ -2898,7 +2898,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 12/1102 ALSA: usb-audio: Propagate write errors in generic mixer put callbacks
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cássio Gabriel <[email protected]>
[ Upstream commit 87a6f2fa6e6c69bb649fa327635a0bd977724603 ]
mixer_ctl_feature_put(), mixer_ctl_procunit_put(), and mixer_ctl_selector_put() ignore failures from their SET_CUR helper routines and report the control as changed whenever the requested value differs from the current one.
If the device rejects the write, userspace still sees success although the hardware state did not change. Propagate write failures instead, using filter_error() so ignore_ctl_error keeps the same semantics as the existing get paths.
--- sound/usb/mixer.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
sound/usb/mixer.c +13 -4
@@ -1463,7 +1463,10 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (oval != val) { -snd_usb_set_cur_mix_value (cval, c +1 , cnt, val); + err =snd_usb_set_cur_mix_value (cval, c +1 , + cnt, val); +if (err <0 ) +return filter_error (cval, err); changed =1 ; } cnt++;
@@ -1478,7 +1481,9 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -snd_usb_set_cur_mix_value (cval,0 ,0 , val); + err =snd_usb_set_cur_mix_value (cval,0 ,0 , val); +if (err <0 ) +return filter_error (cval, err); changed =1 ; } }
@@ -2343,7 +2348,9 @@ static int mixer_ctl_procunit_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -set_cur_ctl_value (cval, cval->control <<8 , val); + err =set_cur_ctl_value (cval, cval->control <<8 , val); +if (err <0 ) +return filter_error (cval, err);return 1 ; }return 0 ;
@@ -2707,7 +2714,9 @@ static int mixer_ctl_selector_put(struct snd_kcontrol *kcontrol,return -EINVAL ; val =get_abs_value (cval, val);if (val != oval) { -set_cur_ctl_value (cval, cval->control <<8 , val); + err =set_cur_ctl_value (cval, cval->control <<8 , val); +if (err <0 ) +return filter_error (cval, err);return 1 ; }return 0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 13/1102 ima: return error early if file xattr cannot be changed
In reply to Greg Kroah-Hartman6.12-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
@@ -89,6 +89,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 14/1102 usb: gadget: udc: skip pullup() if already connected
In reply to Greg Kroah-Hartman6.12-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 15/1102 tee: optee: Allow MT_NORMAL_TAGGED shared memory
In reply to Greg Kroah-Hartman6.12-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 16/1102 tools/nolibc: avoid call to wcslen() in _start_c() inserted by clang
In reply to Greg Kroah-Hartman6.12-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
@@ -64,7 +64,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 17/1102 PCI: Stop setting cached power state to unknown on unbind
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lukas Wunner <[email protected]>
[ Upstream commit d462c8e89e84bfb6417e6b4c88e0cb7cc747ba41 ]
When a PCI device is unbound from its driver, pci_device_remove() sets the cached power state in pci_dev->current_state to PCI_UNKNOWN. This was introduced by commit 2449e06a5696 ("PCI: reset pci device state to unknown state for resume") to invalidate the cached power state in case the system is subsequently put to sleep.
For bound devices, the cached power state is set to PCI_UNKNOWN in pci_pm_suspend_noirq(), immediately before entering system sleep.
Extend to unbound devices for consistency.
This obviates the need to change the cached power state on unbind, so stop doing so.
--- drivers/pci/pci-driver.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
drivers/pci/pci-driver.c +2 -8
@@ -490,13 +490,6 @@ static void pci_device_remove(struct device *dev)/* Undo the runtime PM settings in local_pci_probe() */ pm_runtime_put_sync (dev); -/* -* If the device is still on, set the power state as "unknown", -* since it might change by the next time we load the driver. -*/ -if (pci_dev->current_state ==PCI_D0 ) - pci_dev->current_state =PCI_UNKNOWN ; -/* * We would love to complain here if pci_dev->is_enabled is set, that * the driver should have called pci_disable_device(), but the
@@ -874,7 +867,7 @@ static int pci_pm_suspend_noirq(struct device *dev)if (!pm) {pci_save_state (pci_dev); - goto Fixup; + goto set_unknown; }if (pm->suspend_noirq) {
@@ -926,6 +919,7 @@ static int pci_pm_suspend_noirq(struct device *dev) goto Fixup; } +set_unknown:pci_pm_set_unknown_state (pci_dev);/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 18/1102 wifi: cfg80211: reject duplicate wiphy cipher suite entries
In reply to Greg Kroah-Hartman6.12-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
@@ -729,6 +729,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);
@@ -860,6 +878,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 19/1102 hfsplus: fix issue of direct writes beyond end-of-file
In reply to Greg Kroah-Hartman6.12-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
@@ -123,9 +123,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);/*
@@ -133,8 +168,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 20/1102 wifi: nl80211: reject beacons with bad HE operation
In reply to Greg Kroah-Hartman6.12-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
@@ -5896,8 +5896,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 21/1102 wifi: mac80211: always allow transmitting null-data on TXQs
In reply to Greg Kroah-Hartman6.12-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
@@ -3894,7 +3894,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 22/1102 wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result()
In reply to Greg Kroah-Hartman6.12-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
@@ -270,6 +270,9 @@ static void rtw_fw_adaptivity_result(struct rtw_dev *rtwdev, u8 *payload,struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;struct rtw_c2h_adaptivity *result = (struct rtw_c2h_adaptivity *)payload; +if (!edcca_th) +return ; + rtw_dbg(rtwdev, RTW_DBG_ADAPTIVITY, "Adaptivity: density %x igi %x l2h_th_init %x l2h %x h2l %x option %x\n", result->density, result->igi, result->l2h_th_init, result->l2h,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 23/1102 wifi: rtw89: disable CSI STBC for VHT 160MHz
In reply to Greg Kroah-Hartman6.12-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
@@ -2131,6 +2131,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 24/1102 ASoC: fsl-asoc-card: reduce WM8904 PLL ratio to meet frequency limit
In reply to Greg Kroah-Hartman6.12-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; };/**
@@ -215,7 +219,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 ;
@@ -739,6 +743,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 */
@@ -830,6 +835,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 25/1102 kcsan: Silence -Wmaybe-uninitialized when calling __kcsan_check_access()
In reply to Greg Kroah-Hartman6.12-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 26/1102 firmware: stratix10-svc: change get provision data to async SMC call
In reply to Greg Kroah-Hartman6.12-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 27/1102 bridge: Do not suppress ARP probes and DAD NS unconditionally
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Danielle Ratson <[email protected]>
[ Upstream commit fee1fc1d5a5475f5516d406a03e443348cd0f06c ]
When neighbor suppression is enabled on a VXLAN port, the bridge is expected to reply to ARP/NS messages on behalf of remote hosts when both FDB and neighbor entries exist. This allows the bridge to suppress flooding of these messages to the VXLAN overlay.
According to RFC 9161 ("Operational Aspects of Proxy ARP/ND in Ethernet Virtual Private Networks"):
"A PE SHOULD reply to broadcast/multicast address resolution messages, i.e., ARP Requests, ARP probes, NS messages, as well as DAD NS messages. An ARP probe is an ARP Request constructed with an all-zero sender IP address that may be used by hosts for IPv4 Address Conflict Detection as specified in [RFC5227]".
However, the current implementation unconditionally suppresses ARP probes and DAD Neighbor Solicitations, which breaks Duplicate Address Detection (DAD) over EVPN.
For DAD to work correctly over the VXLAN fabric:
- When the bridge does not know the answer:
flood the probe/DAD packet to allow remote VTEPs to respond.
- When the bridge knows the answer:
reply to indicate the address is in use.
Fix by adjusting the early suppression checks to exclude ARP probes and DAD NS from unconditional suppression.
When replying to a DAD NS, br_nd_send() is adjusted to set the NA destination to the all-nodes multicast address (ff02::1) and clear the Solicited flag, in accordance with RFC 4861 section 7.2.4.
--- net/bridge/br_arp_nd_proxy.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
net/bridge/br_arp_nd_proxy.c +11 -5
@@ -162,7 +162,7 @@ void br_do_proxy_suppress_arp(struct sk_buff *skb, struct net_bridge *br,return ;if (parp->ar_op !=htons (ARPOP_RREQUEST ) && parp->ar_op !=htons (ARPOP_RREPLY ) && - (ipv4_is_zeronet (sip) || sip == tip)) { + sip == tip) {/* prevent flooding to neigh suppress ports */ BR_INPUT_SKB_CB (skb)->proxyarp_replied =1 ;return ;
@@ -260,6 +260,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p,int ns_olen;int i, len;u8 *daddr; +bool dad;u16 pvid;if (!dev ||skb_linearize (request))
@@ -298,8 +299,13 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, } } + dad =ipv6_addr_any (&ipv6_hdr (request)->saddr); +/* Ethernet header */ -ether_addr_copy (eth_hdr (reply)->h_dest, daddr); +if (dad) +ipv6_eth_mc_map (&in6addr_linklocal_allnodes,eth_hdr (reply)->h_dest); +else +ether_addr_copy (eth_hdr (reply)->h_dest, daddr);ether_addr_copy (eth_hdr (reply)->h_source, n->ha);eth_hdr (reply)->h_proto =htons (ETH_P_IPV6 ); reply->protocol =htons (ETH_P_IPV6 );
@@ -315,7 +321,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, pip6->priority =ipv6_hdr (request)->priority; pip6->nexthdr =IPPROTO_ICMPV6 ; pip6->hop_limit =255 ; - pip6->daddr =ipv6_hdr (request)->saddr; + pip6->daddr = dad ? in6addr_linklocal_allnodes :ipv6_hdr (request)->saddr; pip6->saddr = *(struct in6_addr *)n->primary_key;skb_pull (reply,sizeof (struct ipv6hdr ));
@@ -328,7 +334,7 @@ static void br_nd_send(struct net_bridge *br, struct net_bridge_port *p, na->icmph.icmp6_type =NDISC_NEIGHBOUR_ADVERTISEMENT ; na->icmph.icmp6_router = (n->flags &NTF_ROUTER ) ?1 :0 ; na->icmph.icmp6_override =1 ; - na->icmph.icmp6_solicited =1 ; + na->icmph.icmp6_solicited = dad ?0 :1 ; na->target = ns->target;ether_addr_copy (&na->opt[2 ], n->ha); na->opt[0 ] =ND_OPT_TARGET_LL_ADDR ;
@@ -429,7 +435,7 @@ void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br, saddr = &iphdr->saddr; daddr = &iphdr->daddr; -if (ipv6_addr_any (saddr) || !ipv6_addr_cmp (saddr, daddr)) { +if (!ipv6_addr_cmp (saddr, daddr)) {/* prevent flooding to neigh suppress ports */ BR_INPUT_SKB_CB (skb)->proxyarp_replied =1 ;return ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 28/1102 soundwire: intel_auxdevice: Add cs42l43b to wake_capable_list
In reply to Greg Kroah-Hartman6.12-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
@@ -47,6 +47,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 29/1102 soundwire: validate DT compatible before parsing it
In reply to Greg Kroah-Hartman6.12-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
@@ -228,8 +228,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 30/1102 media: chips-media: wave5: Fix Reports from Kernel Lock Validator
In reply to Greg Kroah-Hartman6.12-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
@@ -356,10 +356,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 ,
@@ -378,14 +391,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) { inst->conf_win.left = initial_info->pic_crop_rect.left;
@@ -494,19 +499,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); }/*
@@ -1625,8 +1635,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 ));
@@ -1650,8 +1661,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 ; }
@@ -1684,6 +1698,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) &&
@@ -1692,14 +1707,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 31/1102 spi: spi-qcom-qspi: Fix incomplete error handling in runtime PM
In reply to Greg Kroah-Hartman6.12-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 32/1102 media: rc: mceusb: Add support for 04eb:e033
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Riccardo Boninsegna <[email protected]>
[ Upstream commit 0692c2602e4cd410aa045f8991bd1c142b2e56f9 ]
This is a Sonix SN8P2202XG microcontroller with firmware compatible with the already supported Northstar 04eb:e004, implementing an MCE IR receiver (PCB seems to be tracked for a transmitter too but missing related parts).
Found in a Skintek SK-CR-IN+IR ( http://www.skintek.it/SK-CR-IN+IR.php ) internal 3.5 inch USB card reader and MCE receiver combo (implemented by, and wired as, separate USB devices)
PCB marking: AU6475 966816 STIR REV:A02 MCE
--- drivers/media/rc/mceusb.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/media/rc/mceusb.c +2 -0
@@ -398,6 +398,8 @@ static const struct usb_device_id mceusb_dev_table[] = { { USB_DEVICE(VENDOR_COMPRO, 0x3082) },/* Northstar Systems, Inc. eHome Infrared Transceiver */ { USB_DEVICE(VENDOR_NORTHSTAR, 0xe004) }, +/* Northstar Systems, Inc. eHome Infrared Transceiver - variant */ + { USB_DEVICE(VENDOR_NORTHSTAR, 0xe033) },/* TiVo PC IR Receiver */ { USB_DEVICE(VENDOR_TIVO, 0x2000), .driver_info = TIVO_KIT },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 33/1102 net: mana: hardening: Reject zero max_num_queues from MANA_QUERY_VPORT_CONFIG
In reply to Greg Kroah-Hartman6.12-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
@@ -959,6 +959,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 34/1102 s390/cio: Purge based on the cdevs online status
In reply to Greg Kroah-Hartman6.12-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
@@ -1331,7 +1331,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 35/1102 thunderbolt: Avoid reserved fields in path config space for USB4 routers
In reply to Greg Kroah-Hartman6.12-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 ; }
@@ -544,15 +545,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 ;
@@ -562,12 +566,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 36/1102 thunderbolt: Dont disable lane adapter if XDomain lane bonding isnt possible
In reply to Greg Kroah-Hartman6.12-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
@@ -1947,7 +1947,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 37/1102 thunderbolt: Release request if tb_cfg_request() fails in __tb_xdomain_response()
In reply to Greg Kroah-Hartman6.12-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 38/1102 thunderbolt: Keep XDomain reference during the lifetime of a service
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
[ Upstream commit 8b4060998637f06975fceee9b73845d8672d411e ]
This is needed because we release the service ID in tb_service_release() and the ID array is owned by the parent XDomain.
--- drivers/thunderbolt/xdomain.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/thunderbolt/xdomain.c +2 -1
@@ -1025,6 +1025,7 @@ static void tb_service_release(struct device *dev)ida_free (&xd->service_ids, svc->id);kfree (svc->key);kfree (svc); +tb_xdomain_put (xd); }const struct device_type tb_service_type = {
@@ -1133,7 +1134,7 @@ static void enumerate_services(struct tb_xdomain *xd) svc->id = id; svc->dev.bus = &tb_bus_type; svc->dev.type = &tb_service_type; - svc->dev.parent = &xd->dev; + svc->dev.parent =get_device (&xd->dev);dev_set_name (&svc->dev,"%s.%d" ,dev_name (&xd->dev), svc->id);tb_service_debugfs_init (svc);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 39/1102 thunderbolt: Keep the domain reference while processing hotplug
In reply to Greg Kroah-Hartman6.12-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
@@ -86,7 +86,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;
@@ -2453,6 +2453,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 40/1102 thunderbolt: Set tb->root_switch to NULL when domain is stopped
In reply to Greg Kroah-Hartman6.12-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
@@ -2850,6 +2850,7 @@ static void tb_stop(struct tb *tb)tb_tunnel_free (tunnel); }tb_switch_remove (tb->root_switch); + tb->root_switch =NULL ; tcm->hotplug_active = false;/* signal tb_handle_hotplug to quit */ }
drivers/thunderbolt/xdomain.c +5 -1
@@ -754,7 +754,7 @@ static void tb_xdp_handle_request(struct work_struct *work)mutex_lock (&tb->lock);if (tb->root_switch) - uuid = tb->root_switch->uuid; + uuid =kmemdup (tb->root_switch->uuid,sizeof (*uuid),GFP_KERNEL );else uuid =NULL ;mutex_unlock (&tb->lock);
@@ -868,6 +868,7 @@ static void tb_xdp_handle_request(struct work_struct *work) } out: +kfree (uuid);kfree (xw->pkg);kfree (xw);
@@ -2330,6 +2331,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 41/1102 thunderbolt: Dont create multiple DMA tunnels on firmware connection manager
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Borzeszkowski <[email protected]>
[ Upstream commit cf0c38ee554c3e9062408cc3a38325483d52ecd0 ]
Firmware connection manager supports only one DMA tunnel per XDomain connection. Firmware prior Intel Titan Ridge failed the operation directly but the same does not happen anymore on Titan Ridge and forward. For this reason add an explicit check, and fail the operation accordingly in the driver.
--- drivers/thunderbolt/icm.c | 10 ++++++++++ drivers/thunderbolt/xdomain.c | 25 +++++++++++++++++++------ include/linux/thunderbolt.h | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-)
drivers/thunderbolt/icm.c +10 -0
@@ -565,6 +565,11 @@ static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd,struct icm_fr_pkg_approve_xdomain request;int ret; +if (atomic_read (&xd->ntunnels) >=1 ) { +tb_warn (tb,"only one tunnel is supported by the firmware\n" ); +return -EOPNOTSUPP ; + } +memset (&request,0 ,sizeof (request)); request.hdr.code =ICM_APPROVE_XDOMAIN ; request.link_info = xd->depth <<ICM_LINK_INFO_DEPTH_SHIFT | xd->link;
@@ -1132,6 +1137,11 @@ static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd,struct icm_tr_pkg_approve_xdomain request;int ret; +if (atomic_read (&xd->ntunnels) >=1 ) { +tb_warn (tb,"only one tunnel is supported by the firmware\n" ); +return -EOPNOTSUPP ; + } +memset (&request,0 ,sizeof (request)); request.hdr.code =ICM_APPROVE_XDOMAIN ; request.route_hi =upper_32_bits (xd->route);
drivers/thunderbolt/xdomain.c +19 -6
@@ -2015,6 +2015,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)
@@ -2288,9 +2289,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);
@@ -2313,9 +2320,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
@@ -223,6 +223,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) *
@@ -269,6 +270,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 42/1102 drm/amd/display: Find link encoder for flexible DIG mapping cases
In reply to Greg Kroah-Hartman6.12-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
@@ -1730,20 +1730,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 43/1102 drm/amdgpu: Prefer ROM BAR for default VGA device
In reply to Greg Kroah-Hartman6.12-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. */
@@ -476,7 +477,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 44/1102 drm/panel: Enable GPIOLIB for panels which uses functions from it
In reply to Greg Kroah-Hartman6.12-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
@@ -98,6 +98,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
@@ -273,7 +274,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
@@ -375,6 +377,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
@@ -479,6 +482,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
@@ -489,6 +493,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
@@ -595,7 +600,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
@@ -954,6 +960,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 45/1102 media: dm1105: fix missing error check for dma_alloc_coherent
In reply to Greg Kroah-Hartman6.12-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 46/1102 net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
In reply to Greg Kroah-Hartman6.12-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
@@ -6268,7 +6268,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = { .global1_addr = 0x1b, .global2_addr = 0x1c, .age_time_coeff = 15000, - .g1_irqs = 8, + .g1_irqs = 9, .g2_irqs = 10, .atu_move_port_mask = 0xf, .pvt = true,
@@ -6294,7 +6294,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = { .global1_addr = 0x1b, .global2_addr = 0x1c, .age_time_coeff = 15000, - .g1_irqs = 8, + .g1_irqs = 9, .g2_irqs = 10, .atu_move_port_mask = 0xf, .pvt = true,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 47/1102 PCI: switchtec: Add Gen6 Device IDs
In reply to Greg Kroah-Hartman6.12-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
@@ -1853,6 +1853,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 48/1102 net: dsa: mv88e6xxx: define .pot_clear() for 6321
In reply to Greg Kroah-Hartman6.12-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
@@ -5260,6 +5260,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 49/1102 net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
In reply to Greg Kroah-Hartman6.12-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
@@ -5211,6 +5211,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,
@@ -5264,6 +5265,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 50/1102 media: em28xx-video: fix missing res_free() on init_usb_xfer failure
In reply to Greg Kroah-Hartman6.12-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 51/1102 wifi: mac80211: explicitly disable FTM responder on AP stop
In reply to Greg Kroah-Hartman6.12-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
@@ -1600,6 +1600,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);
@@ -1644,6 +1645,11 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,if (old_unsol_bcast_probe_resp)kfree_rcu (old_unsol_bcast_probe_resp, 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 ;
@@ -1665,8 +1671,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev, sdata->beacon_rate_set = false; sdata->vif.cfg.ssid_len =0 ;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);if (sdata->wdev.links[link_id].cac_started) { chandef = link_conf->chanreq.oper;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 52/1102 rtase: Fix flow control configuration
In reply to Greg Kroah-Hartman6.12-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
@@ -152,6 +152,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
@@ -970,6 +970,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 53/1102 crypto: ixp4xx - fix buffer chain unwind on allocation failure
In reply to Greg Kroah-Hartman6.12-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 54/1102 crypto: omap - add omap_des_unregister_algs helper
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thorsten Blum <[email protected]>
[ Upstream commit 9ab1392b1163daab674484d6ddacf16f0ad4c040 ]
Add a new helper omap_des_unregister_algs() and replace two for loops in omap_des_probe() and omap_des_remove(), which also ensure ->registered is reset to 0.
--- drivers/crypto/omap-des.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
drivers/crypto/omap-des.c +16 -10
@@ -946,6 +946,20 @@ static int omap_des_get_pdev(struct omap_des_dev *dd,return 0 ; } +static void omap_des_unregister_algs (const struct omap_des_pdata *pdata) +{ +struct omap_des_algs_info *alg_info; +int i; + +for (i = pdata->algs_info_size -1 ; i >=0 ; i--) { + alg_info = &pdata->algs_info[i]; + +crypto_engine_unregister_skciphers (alg_info->algs_list, + alg_info->registered); + alg_info->registered =0 ; + } +} +static int omap_des_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1051,11 +1065,7 @@ static int omap_des_probe(struct platform_device *pdev)return 0 ; err_algs: -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); - +omap_des_unregister_algs (dd->pdata); err_engine:if (dd->engine)crypto_engine_exit (dd->engine);
@@ -1075,16 +1085,12 @@ static int omap_des_probe(struct platform_device *pdev)static 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);tasklet_kill (&dd->done_task);omap_des_dma_cleanup (dd);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 55/1102 clk: renesas: cpg-mssr: Add number of clock cells check
In reply to Greg Kroah-Hartman6.12-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
@@ -283,6 +283,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 56/1102 drm/bridge: tc358768: Set pre_enable_prev_first for reverse order
In reply to Greg Kroah-Hartman6.12-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 57/1102 dlm: add usercopy whitelist to dlm_cb cache
In reply to Greg Kroah-Hartman6.12-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
Greg Kroah-Hartman
maintainerPATCH 58/1102 PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store()
In reply to Greg Kroah-Hartman6.12-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
@@ -1431,6 +1431,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 59/1102 media: qcom: camss: avoid format string warning
In reply to Greg Kroah-Hartman6.12-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
@@ -545,12 +545,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 60/1102 ASoC: ti: omap3pandora: update board check to use DT compatible
In reply to Greg Kroah-Hartman6.12-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 61/1102 watchdog: lenovo_se10_wdt: Add support for SE10 Gen 2 platform
In reply to Greg Kroah-Hartman6.12-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 62/1102 watchdog: imx7ulp_wdt: Keep WDOG running until A55 enters WFI on i.MX94
In reply to Greg Kroah-Hartman6.12-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 63/1102 watchdog: lenovo_se10_wdt: Fix use-after-free and resource leak risk
In reply to Greg Kroah-Hartman6.12-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 64/1102 net/mlx5: HWS, Handle destroying table that has a miss table
In reply to Greg Kroah-Hartman6.12-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.
--- .../ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_table.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_table.c +3 -0
@@ -275,6 +275,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 65/1102 platform/chrome: Resolve kb_wake_angle visibility race
In reply to Greg Kroah-Hartman6.12-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
@@ -334,7 +334,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);
@@ -345,7 +346,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
@@ -215,6 +215,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.
@@ -224,6 +225,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 66/1102 mmc: core: Add validation for host-provided max_segs
In reply to Greg Kroah-Hartman6.12-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 67/1102 mmc: davinci: avoid NULL deref of host->data in IRQ handler
In reply to Greg Kroah-Hartman6.12-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
@@ -929,7 +929,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 ;
@@ -941,7 +941,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 68/1102 platform/x86: sel3350-platform: Retain LED state on load and unload
In reply to Greg Kroah-Hartman6.12-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 69/1102 drm/amd/display: Fix CRC open failure during active rendering
In reply to Greg Kroah-Hartman6.12-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
@@ -296,8 +296,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 70/1102 PCI: intel-gw: Enable clock before PHY init
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Eckert <[email protected]>
[ Upstream commit febf9ed3c35e5eec7ea384ebbd55a5296e3ca5e9 ]
To ensure that the boot sequence is correct, the DWC PCIe core clock must be switched on before PHY init call [1]. This changes are based on patched kernel sources of the MaxLinear SDK.
The reason why the MaxLinear SDK is used as a reference here is, that this PCIe DWC IP is used in the URX851 and URX850 SoC. This SoC was originally developed by Intel when they acquired Lantiq’s home networking division in 2015 [2]. In 2020 the home network division was sold to MaxLinear [3]. Since then, this SoC belongs to MaxLinear. They use their own SDK, which runs on kernel version '5.15.x'.
[1] https://github.com/maxlinear/linux/blob/updk_9.1.90/drivers/pci/controller/dwc/pcie-intel-gw.c#L544
[2] https://www.intc.com/news-events/press-releases/detail/364/intel-to-acquire-lantiq-advancing-the-connected-home
[3] https://investors.maxlinear.com/press-releases/detail/395/maxlinear-to-acquire-intels-home-gateway-platform
--- drivers/pci/controller/dwc/pcie-intel-gw.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
drivers/pci/controller/dwc/pcie-intel-gw.c +10 -9
@@ -286,13 +286,9 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)intel_pcie_core_rst_assert (pcie);intel_pcie_device_rst_assert (pcie); - - ret =phy_init (pcie->phy); -if (ret) -return ret; -intel_pcie_core_rst_deassert (pcie); +/* Controller clock must be provided earlier than PHY */ ret =clk_prepare_enable (pcie->core_clk);if (ret) {dev_err (pcie->pci.dev,"Core clock enable failed: %d\n" , ret);
@@ -301,13 +297,17 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie) pci->atu_base = pci->dbi_base +0xC0000 ; + ret =phy_init (pcie->phy); +if (ret) + goto phy_err; +intel_pcie_ltssm_disable (pcie);intel_pcie_link_setup (pcie);intel_pcie_init_n_fts (pci); ret =dw_pcie_setup_rc (&pci->pp);if (ret) - goto app_init_err; + goto err;dw_pcie_upconfig_setup (pci);
@@ -316,7 +316,7 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie) ret =dw_pcie_wait_for_link (pci);if (ret) - goto app_init_err; + goto err;/* Enable integrated interrupts */ pcie_app_wr_mask(pcie, PCIE_APP_IRNEN, PCIE_APP_IRN_INT,
@@ -324,11 +324,12 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)return 0 ; -app_init_err: +err: +phy_exit (pcie->phy); +phy_err:clk_disable_unprepare (pcie->core_clk); clk_err:intel_pcie_core_rst_assert (pcie); -phy_exit (pcie->phy);return ret; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 71/1102 hfsplus: rework hfsplus_readdir() logic
In reply to Greg Kroah-Hartman6.12-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
@@ -247,8 +247,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;
@@ -298,8 +296,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
@@ -445,8 +445,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
@@ -90,8 +90,6 @@ struct inode *hfsplus_iget(struct super_block *sb, unsigned long ino)HFSPLUS_I (inode)->fs_blocks =0 ;HFSPLUS_I (inode)->userflags =0 ;HFSPLUS_I (inode)->subfolders =0 ; -INIT_LIST_HEAD (&HFSPLUS_I (inode)->open_dir_list); -spin_lock_init (&HFSPLUS_I (inode)->open_dir_lock);HFSPLUS_I (inode)->phys_size =0 ; if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID ||
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 72/1102 net: phy: motorcomm: use device properties for firmware tuning
In reply to Greg Kroah-Hartman6.12-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
@@ -829,12 +829,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
@@ -978,12 +978,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,
@@ -1000,7 +1000,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,
@@ -1033,7 +1033,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;
@@ -1083,7 +1082,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 ) {
@@ -1151,11 +1150,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) {
@@ -1647,7 +1646,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 ;
@@ -1662,7 +1661,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 );
@@ -1670,7 +1669,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 );
@@ -1683,14 +1682,14 @@ static int yt8521_config_init(struct phy_device *phydev)static int yt8531_config_init (struct phy_device *phydev) { -struct device_node *node = phydev->mdio.dev.of_node; +struct device *dev = &phydev->mdio.dev;int ret; ret =ytphy_rgmii_clk_delay_config_with_lock (phydev);if (ret <0 )return ret; -if (of_property_read_bool (node,"motorcomm,auto-sleep-disabled" )) { +if (device_property_read_bool (dev,"motorcomm,auto-sleep-disabled" )) {/* disable auto sleep */ ret = ytphy_modify_ext_with_lock(phydev, YT8521_EXTREG_SLEEP_CONTROL1_REG,
@@ -1699,7 +1698,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,
@@ -1726,7 +1725,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;
@@ -1734,17 +1733,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 73/1102 drm/gud: Add RCade Display Adapter VID/PID pair
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sophie D <[email protected]>
[ Upstream commit ac5ac0acf11df04295eb1811066097b7022d6c7f ]
The RCade Display Adapter is a hardware device that allows driving an Arcade CRT display via the GUD protocol. Currently it spoofs an existing GUD VID/PID pair. However, now that it has its own pair assigned, it makes sense to add this to the list of pairs that GUD supports natively.
More information can be found in the project repositories:
https://gitlab.scd31.com/stephen/stm32-usb-vga-adapter-hardware
https://gitlab.scd31.com/stephen/stm32-usb-vga-rcade-adapter
--- drivers/gpu/drm/gud/gud_drv.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/gud/gud_drv.c +1 -0
@@ -660,6 +660,7 @@ static int gud_resume(struct usb_interface *intf)static const struct usb_device_id gud_id_table[] = { {USB_DEVICE_INTERFACE_CLASS (0x1d50 ,0x614d ,USB_CLASS_VENDOR_SPEC ) }, {USB_DEVICE_INTERFACE_CLASS (0x16d0 ,0x10a9 ,USB_CLASS_VENDOR_SPEC ) }, + {USB_DEVICE_INTERFACE_CLASS (0x1209 ,0x4fb3 ,USB_CLASS_VENDOR_SPEC ) }, { } };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 74/1102 media: chips-media: wave5: Add range checks for dec_output_info
In reply to Greg Kroah-Hartman6.12-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
@@ -553,8 +553,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 75/1102 media: video-i2c: use vb2_video_unregister_device on driver removal
In reply to Greg Kroah-Hartman6.12-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
@@ -908,7 +908,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 76/1102 HID: multitouch: Fix Yoga Book 9 14IAH10 touchscreen misclassification
In reply to Greg Kroah-Hartman6.12-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
@@ -409,11 +409,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,
@@ -1479,6 +1481,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) {
@@ -1508,6 +1648,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 77/1102 wifi: rtw89: phy: check length before parsing PHY status IE
In reply to Greg Kroah-Hartman6.12-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
@@ -1824,13 +1824,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 78/1102 net: dsa: realtek: rtl8365mb: add support for RTL8367SB
In reply to Greg Kroah-Hartman6.12-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 79/1102 integrity: Check for NULL returned by asymmetric_key_public_key
In reply to Greg Kroah-Hartman6.12-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 80/1102 drivers/of: validate status properties in reconfig state changes
In reply to Greg Kroah-Hartman6.12-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
Greg Kroah-Hartman
maintainerPATCH 81/1102 soundwire: intel: Move suspend tracking from trigger to pm suspend
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Ujfalusi <[email protected]>
[ Upstream commit acf676b9de0c86bc735a7f04962d3d688e156ffc ]
Mark all open DAI runtimes as suspended in the component .suspend callback instead of relying on SNDRV_PCM_TRIGGER_SUSPEND, which is not delivered during PAUSE or xrun states.
If during system suspend a dai is open it means that it is in either in SUSPENDED, PAUSED or STOPPED (due to xrun) state and they will need to be re-initialized during resume (which is done in .prepare callback).
--- drivers/soundwire/intel.c | 31 ++++++-------------------- drivers/soundwire/intel_ace2x.c | 39 ++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 37 deletions(-)
drivers/soundwire/intel.c +7 -24
@@ -907,19 +907,6 @@ static int intel_trigger(struct snd_pcm_substream *substream, int cmd, struct sn }switch (cmd) { -case SNDRV_PCM_TRIGGER_SUSPEND : - -/* -* The .prepare callback is used to deal with xruns and resume operations. -* In the case of xruns, the DMAs and SHIM registers cannot be touched, -* but for resume operations the DMAs and SHIM registers need to be initialized. -* the .trigger callback is used to track the suspend case only. -*/ - - dai_runtime->suspended = true; - -break ; -case SNDRV_PCM_TRIGGER_PAUSE_PUSH : dai_runtime->paused = true;break ;
@@ -956,10 +943,12 @@ static int intel_component_dais_suspend(struct snd_soc_component *component)struct snd_soc_dai *dai;/* -* In the corner case where a SUSPEND happens during a PAUSE, the ALSA core -* does not throw the TRIGGER_SUSPEND. This leaves the DAIs in an unbalanced state. -* Since the component suspend is called last, we can trap this corner case -* and force the DAIs to release their resources. +* Mark all open streams as suspended. +* Open streams at this point can be in SUSPENDED, PAUSED or STOPPED +* state and during prepare the DMAs and SHIM registers need to be +* initialized for them. +* The STOPPED state is a special corner case which can happen if audio +* experiences xrun at suspend time. */ for_each_component_dais (component, dai) {struct sdw_cdns *cdns =snd_soc_dai_get_drvdata (dai);
@@ -967,13 +956,7 @@ static int intel_component_dais_suspend(struct snd_soc_component *component) dai_runtime = cdns->dai_runtime_array[dai->id]; -if (!dai_runtime) -continue ; - -if (dai_runtime->suspended) -continue ; - -if (dai_runtime->paused) +if (dai_runtime) dai_runtime->suspended = true; }
drivers/soundwire/intel_ace2x.c +26 -13
@@ -500,19 +500,6 @@ static int intel_trigger(struct snd_pcm_substream *substream, int cmd, struct sn }switch (cmd) { -case SNDRV_PCM_TRIGGER_SUSPEND : - -/* -* The .prepare callback is used to deal with xruns and resume operations. -* In the case of xruns, the DMAs and SHIM registers cannot be touched, -* but for resume operations the DMAs and SHIM registers need to be initialized. -* the .trigger callback is used to track the suspend case only. -*/ - - dai_runtime->suspended = true; - -break ; -case SNDRV_PCM_TRIGGER_PAUSE_PUSH : dai_runtime->paused = true;break ;
@@ -536,8 +523,34 @@ static const struct snd_soc_dai_ops intel_pcm_dai_ops = { .get_stream = intel_get_sdw_stream, }; +static int intel_component_dais_suspend (struct snd_soc_component *component) +{ +struct snd_soc_dai *dai; + +/* +* Mark all open streams as suspended. +* Open streams at this point can be in SUSPENDED, PAUSED or STOPPED +* state and during prepare the DMAs and SHIM registers need to be +* initialized for them. +* The STOPPED state is a special corner case which can happen if audio +* experiences xrun at suspend time. +*/ +for_each_component_dais (component, dai) { +struct sdw_cdns *cdns =snd_soc_dai_get_drvdata (dai); +struct sdw_cdns_dai_runtime *dai_runtime; + + dai_runtime = cdns->dai_runtime_array[dai->id]; + +if (dai_runtime) + dai_runtime->suspended = true; + } + +return 0 ; +} +static const struct snd_soc_component_driver dai_component = { .name ="soundwire" , + .suspend = intel_component_dais_suspend, };/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 82/1102 clk: samsung: exynos850: mark APM I3C clocks as critical
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexey Klimov <[email protected]>
[ Upstream commit 44984aaf1aa727ff944dd4b72fcf069d08b0056d ]
The Exynos850 APM co-processor relies on the I3C bus to communicate with the PMIC. Currently, there is no dedicated PMIC consumer driver managing these clocks, so the clock subsystem automatically gates them during the initialisation. Once gated, any subsequent ACPM communication with APM results in timeouts.
As a temporary workaround (and let's hope it doesn't become permanent), mark both gout_i3c_pclk and gout_i3c_sclk as CLK_IS_CRITICAL ones to prevent the clock subsystem from disabling them. This makes the ACPM communication functional. This workaround should be reverted once a proper ACPM PMIC driver is implemented to manage these clocks.
--- drivers/clk/samsung/clk-exynos850.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/clk/samsung/clk-exynos850.c +3 -2
@@ -684,10 +684,11 @@ static const struct samsung_gate_clock apm_gate_clks[] __initconst = { CLK_CON_GAT_GOUT_APM_APBIF_RTC_PCLK, 21, 0, 0),GATE (CLK_GOUT_TOP_RTC_PCLK ,"gout_top_rtc_pclk" ,"dout_apm_bus" ,CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_PCLK ,21 ,0 ,0 ), +/* TODO: Should be dealt with or enabled in PMIC ACPM driver */ GATE (CLK_GOUT_I3C_PCLK ,"gout_i3c_pclk" ,"dout_apm_bus" , -CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK ,21 ,0 ,0 ), +CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK ,21 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_GOUT_I3C_SCLK ,"gout_i3c_sclk" ,"mout_apm_i3c" , -CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK ,21 ,0 ,0 ), +CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK ,21 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_GOUT_SPEEDY_PCLK ,"gout_speedy_pclk" ,"dout_apm_bus" , CLK_CON_GAT_GOUT_APM_SPEEDY_APM_PCLK, 21, 0, 0),/* TODO: Should be enabled in GPIO driver (or made CLK_IS_CRITICAL) */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 83/1102 scsi: pm8001: Reject firmware update in fatal error state
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kumar Meiyappan <[email protected]>
[ Upstream commit 2a8fbcfb04aa9db189bfa3842d4f586aecd0e631 ]
pm8001_store_update_fw() allows a firmware update request even when the controller has already entered a fatal error state.
Firmware update is not valid once the controller is in that state, and attempting it can lead to a call trace. Reject the request early by checking controller_fatal_error, set the firmware status to FAIL_PARAMETERS, and return -EINVAL.
--- drivers/scsi/pm8001/pm8001_ctl.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/scsi/pm8001/pm8001_ctl.c +8 -0
@@ -823,6 +823,14 @@ static ssize_t pm8001_store_update_fw(struct device *cdev, goto out; } +if (pm8001_ha->controller_fatal_error) { +pm8001_dbg (pm8001_ha,FAIL , +"controller in fatal error state, firmware update rejected\n" ); + pm8001_ha->fw_status =FAIL_PARAMETERS ; + ret = -EINVAL ; + goto out; + } +for (i =0 ; flash_command_table[i].code !=FLASH_CMD_NONE ; i++) {if (!memcmp (flash_command_table[i].command, cmd_ptr,strlen (cmd_ptr))) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 84/1102 scsi: pm8001: Reject non-fatal dump when controller is crashed
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kumar Meiyappan <[email protected]>
[ Upstream commit aa3b8f56ef27ed72394a752820abdec4608b731c ]
pm80xx_get_non_fatal_dump() can be called even after the controller has entered a fatal error state. In that case the forensic memory contents are not safe to access for a non-fatal dump request, and attempting to do so can trigger a call trace.
Check controller_fatal_error before reading the non-fatal dump buffer and return -EINVAL when the controller is already in a crashed state.
This prevents non-fatal dump collection from running in an invalid controller state.
--- drivers/scsi/pm8001/pm80xx_hwi.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/scsi/pm8001/pm80xx_hwi.c +7 -0
@@ -401,6 +401,13 @@ ssize_t pm80xx_get_non_fatal_dump(struct device *cdev,char *buf_copy = buf; temp = (u32 *)pm8001_ha->memoryMap.region[FORENSIC_MEM ].virt_ptr; + +if (pm8001_ha->controller_fatal_error) { +pm8001_dbg (pm8001_ha,FAIL , +"non-fatal dump not available in fatal error state\n" ); +return -EINVAL ; + } +if (++pm8001_ha->non_fatal_count ==1 ) {if (pm8001_ha->chip_id == chip_8001) { snprintf(pm8001_ha->forensic_info.data_buf.direct_data,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 85/1102 crypto: ecc - Unbreak the build on arm with CONFIG_KASAN_STACK=y
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lukas Wunner <[email protected]>
[ Upstream commit c64ba13e2033c3c6dc1a097bf35f9f1fe457c3f7 ]
Andrew reports build breakage of arm allmodconfig, reproducible with gcc 14.2.0 and 15.2.0:
crypto/ecc.c: In function 'ecc_point_mult':
crypto/ecc.c:1380:1: error: the frame size of 1360 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
gcc aggressively inlines functions called by ecc_point_mult() (without there being any explicit inline declarations), which pushes stack usage close to the limit imposed by CONFIG_FRAME_WARN. allmodconfig implies CONFIG_KASAN_STACK=y, which increases the stack above that limit.
In the bugzilla entry linked below, gcc maintainers explain that gcc estimates extra stack usage caused by inlining, but ASAN instrumentation is added in post-IPA passes and thus the inlining heuristics cannot account for it.
It could be argued that -Werror=frame-larger-than=1280 instructs the compiler to avoid inlining beyond that limit lest the build breaks, which would imply gcc behaves incorrectly. But gcc maintainers reject this notion and believe that a warning switch should never affect code generation, even if it is promoted to an error.
One way to unbreak the build is to limit inlining via -finline-limit=100 or by explicitly declaring some functions noinline. However while it does keep stack usage of individual functions below the limit, *total* stack usage increases.
A longterm solution is to refactor ecc.c for reduced stack usage. It currently performs ECC point multiplication with a Montgomery ladder which uses co-Z (conjugate) addition to trade off memory for speed. The algorithm is susceptible to timing attacks and needs to be replaced with a constant time Montgomery ladder, which should consume less memory and thus resolve the stack usage issue as a side effect.
In the interim, raise the limit for ecc.c, as is already done for several other files in the source tree.
Constrain to gcc because clang 19.1.7 does not exhibit the issue. It makes do with a 724 bytes stack frame even though it inlines almost the same functions as gcc.
--- crypto/Makefile | 5 +++++ 1 file changed, 5 insertions(+)
crypto/Makefile +5 -0
@@ -182,6 +182,11 @@ obj-$(CONFIG_CRYPTO_ECC) += ecc.o obj-$(CONFIG_CRYPTO_ESSIV) += essiv.o obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124949 +ifeq ($(CONFIG_ARM)$(CONFIG_KASAN_STACK)$(CONFIG_CC_IS_GCC),yyy) +CFLAGS_ecc.o += $(call cc-option,-Wframe-larger-than=1536) +endif + ecdh_generic-y += ecdh.o ecdh_generic-y += ecdh_helper.o obj-$(CONFIG_CRYPTO_ECDH) += ecdh_generic.o
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 86/1102 ASoC: Intel: sof_sdw: append dai type to dai link name unconditionally
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bard Liao <[email protected]>
[ Upstream commit c84179a1d36bebe99d9694502737ae9f3a90d2bc ]
The dai_type is used to select function topologies. Since the topology stream name and DAI link name use partial matching, unconditionally appending the dai_type provides necessary selection metadata without breaking existing topologies.
--- sound/soc/intel/boards/sof_sdw.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
sound/soc/intel/boards/sof_sdw.c +12 -11
@@ -748,10 +748,16 @@ static int create_sdw_dailink(struct snd_soc_card *card, } } +/* +* The dai_type is used to select function topologies. Since the topology stream name +* and DAI link name use partial matching, unconditionally appending the dai_type provides +* necessary selection metadata without breaking existing topologies. Although +* ctx->append_dai_type is not checked here, we overwrite it to ensure consistency in case +* it is referenced elsewhere. +*/ + ctx->append_dai_type = true;for_each_pcm_streams (stream) {static const char *const sdw_stream_name[] = { -"SDW%d-Playback" , -"SDW%d-Capture" ,"SDW%d-Playback-%s" ,"SDW%d-Capture-%s" , };
@@ -778,15 +784,10 @@ static int create_sdw_dailink(struct snd_soc_card *card, }/* create stream name according to first link id */ -if (ctx->append_dai_type) - name =devm_kasprintf (dev,GFP_KERNEL , - sdw_stream_name[stream +2 ], -ffs (sof_end->link_mask) -1 , - type_strings[sof_end->dai_info->dai_type]); -else - name =devm_kasprintf (dev,GFP_KERNEL , - sdw_stream_name[stream], -ffs (sof_end->link_mask) -1 ); + name =devm_kasprintf (dev,GFP_KERNEL , + sdw_stream_name[stream], +ffs (sof_end->link_mask) -1 , + type_strings[sof_end->dai_info->dai_type]);if (!name)return -ENOMEM ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 87/1102 crypto: atmel-ecc - add support for atecc608b
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thorsten Blum <[email protected]>
[ Upstream commit b668edaf8dcc8d09f6f1e71797422b44d4bd22a3 ]
Tested on hardware with an ATECC608B at 0x60. The device binds successfully, passes the driver's sanity check, and registers the ecdh-nist-p256 KPP algorithm.
The hardware ECDH path was also exercised using a minimal KPP test module, covering private key generation, public key derivation, and shared secret computation.
--- drivers/crypto/atmel-ecc.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/crypto/atmel-ecc.c +3 -0
@@ -365,6 +365,8 @@ static void atmel_ecc_remove(struct i2c_client *client)static const struct of_device_id atmel_ecc_dt_ids[] = { { .compatible ="atmel,atecc508a" , + }, { + .compatible ="atmel,atecc608b" , }, {/* sentinel */ }
@@ -374,6 +376,7 @@ MODULE_DEVICE_TABLE(of, atmel_ecc_dt_ids);static const struct i2c_device_id atmel_ecc_id[] = { {"atecc508a" }, + {"atecc608b" }, { } };MODULE_DEVICE_TABLE (i2c, atmel_ecc_id);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 88/1102 media: imon: Add iMON VFD HID OEM v1.2 key mappings
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alessandro Baldi <[email protected]>
[ Upstream commit d97d13c24d7893abcfb80d38630ce74daaa1434c ]
Add Vol+/Vol-/Mute panel button mappings for iMON VFD HID OEM v1.2. This version differs in the codes that generate the KEY_VOLUMEUP, KEY_VOLUMEDOWN and KEY_MUTE events.
--- drivers/media/rc/imon.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/media/rc/imon.c +4 -0
@@ -295,6 +295,10 @@ static const struct imon_usb_dev_descr imon_OEM_VFD = { { 0x000100000000ffeell, KEY_VOLUMEUP }, { 0x010000000000ffeell, KEY_VOLUMEDOWN }, { 0x000000000100ffeell, KEY_MUTE }, +/* iMON VFD HID OEM v1.2 */ + { 0x000000000a00ffeell, KEY_VOLUMEUP }, + { 0x000000000b00ffeell, KEY_VOLUMEDOWN }, + { 0x000000000c00ffeell, KEY_MUTE },/* 0xffdc iMON MCE VFD */ { 0x00010000ffffffeell, KEY_VOLUMEUP }, { 0x01000000ffffffeell, KEY_VOLUMEDOWN },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 89/1102 RDMA/mlx5: Use QP port when decoding responder CQEs
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chenguang Zhao <[email protected]>
[ Upstream commit 194762e6e436acde0f8f6aef44200b0058c36791 ]
The responder CQE path determines the link layer via rdma_port_get_link_layer(). Use qp->port instead of hardcoding port 1, which can mis-decode completions on multi-port devices.
--- drivers/infiniband/hw/mlx5/cq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/hw/mlx5/cq.c +2 -1
@@ -169,7 +169,8 @@ enum {static void handle_responder (struct ib_wc *wc,struct mlx5_cqe64 *cqe,struct mlx5_ib_qp *qp) { -enum rdma_link_layer ll =rdma_port_get_link_layer (qp->ibqp.device,1 ); +enum rdma_link_layer ll = +rdma_port_get_link_layer (qp->ibqp.device, qp->port);struct mlx5_ib_dev *dev =to_mdev (qp->ibqp.device);struct mlx5_ib_srq *srq =NULL ;struct mlx5_ib_wq *wq;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 90/1102 drm/mediatek: dsi: Add compatible for mt8167-dsi
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luca Leonardo Scorcia <[email protected]>
[ Upstream commit 6428eaf0c1f39815b08d57054895c1934d5782f3 ]
The mt8167 DSI controller is fully compatible with the one found in mt2701. Unfortunately the device tree has a dedicated compatible for mt8167 since 2022 and it cannot be changed with a fallback nor removed at this point. The only way to get the device to work is to add the compatible to the driver.
--- drivers/gpu/drm/mediatek/mtk_dsi.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/mediatek/mtk_dsi.c +1 -0
@@ -1294,6 +1294,7 @@ static const struct mtk_dsi_driver_data mt8188_dsi_driver_data = {static const struct of_device_id mtk_dsi_of_match[] = { { .compatible ="mediatek,mt2701-dsi" , .data = &mt2701_dsi_driver_data }, + { .compatible ="mediatek,mt8167-dsi" , .data = &mt2701_dsi_driver_data }, { .compatible ="mediatek,mt8173-dsi" , .data = &mt8173_dsi_driver_data }, { .compatible ="mediatek,mt8183-dsi" , .data = &mt8183_dsi_driver_data }, { .compatible ="mediatek,mt8186-dsi" , .data = &mt8186_dsi_driver_data },
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 91/1102 iomap: dont make REQ_POLLED imply REQ_NOWAIT
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit 47f28b493daf9049307494689e515205f1c377af ]
As described in commit 2bc057692599 ("block: don't make REQ_POLLED imply REQ_NOWAIT"), which fixed the same issue for the block device node, there are valid cases to poll for I/O completion without REQ_NOWAIT.
Additionally, sing REQ_NOWAIT for file system writes is currently not supported as file systems writes are not idempotent and would need a retry of just the bio and not the entire operation to be fully supported.
Switch iomap to set REQ_POLLED and remove the now unused bio_set_polled helper.
--- fs/iomap/direct-io.c | 2 +- include/linux/bio.h | 14 -------------- 2 files changed, 1 insertion(+), 15 deletions(-)
fs/iomap/direct-io.c +1 -1
@@ -77,7 +77,7 @@ static void iomap_dio_submit_bio(const struct iomap_iter *iter,/* Sync dio can't be polled reliably */ if ((iocb->ki_flags &IOCB_HIPRI ) && !is_sync_kiocb (iocb)) { -bio_set_polled (bio, iocb); + bio->bi_opf |=REQ_POLLED ;WRITE_ONCE (iocb->private, bio); }
include/linux/bio.h +0 -14
@@ -661,20 +661,6 @@ static inline bool bioset_initialized(struct bio_set *bs)return bs->bio_slab !=NULL ; } -/* -* Mark a bio as polled. Note that for async polled IO, the caller must -* expect -EWOULDBLOCK if we cannot allocate a request (or other resources). -* We cannot block waiting for requests on polled IO, as those completions -* must be found by the caller. This is different than IRQ driven IO, where -* it's safe to wait for IO to complete. -*/ -static inline void bio_set_polled (struct bio *bio,struct kiocb *kiocb) -{ - bio->bi_opf |=REQ_POLLED ; -if (kiocb->ki_flags &IOCB_NOWAIT ) - bio->bi_opf |=REQ_NOWAIT ; -} -static inline void bio_clear_polled (struct bio *bio) { bio->bi_opf &= ~REQ_POLLED ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 92/1102 mailbox: Make mbox_send_message() return error code when tx fails
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joonwon Kang <[email protected]>
[ Upstream commit 96a3d2f3167f5644b30e60171898e67123c3c2c6 ]
When the mailbox controller failed transmitting message, the error code was only passed to the client's tx done handler and not to mbox_send_message() in blocking mode. For this reason, the function could return a false success. This commit resolves the issue by introducing the tx status and checking it before mbox_send_message() returns.
This commit works with the premise that the multi-threads' access to a channel in blocking mode is serialized by clients, not by the mailbox APIs, since the current mbox_send_message() in blocking mode does not support multi-threads.
--- drivers/mailbox/mailbox.c | 6 +++++- include/linux/mailbox_controller.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-)
drivers/mailbox/mailbox.c +5 -1
@@ -110,8 +110,10 @@ static void tx_tick(struct mbox_chan *chan, int r)if (chan->cl->tx_done) chan->cl->tx_done (chan->cl, mssg, r); -if (r != -ETIME && chan->cl->tx_block) +if (r != -ETIME && chan->cl->tx_block) { + chan->tx_status = r;complete (&chan->tx_complete); + } }static enum hrtimer_restart txdone_hrtimer (struct hrtimer *hrtimer)
@@ -281,6 +283,8 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg)if (ret ==0 ) { t = -ETIME ;tx_tick (chan, t); + }else if (chan->tx_status <0 ) { + t = chan->tx_status; } }
include/linux/mailbox_controller.h +2 -0
@@ -114,6 +114,7 @@ struct mbox_controller {* @txdone_method: Way to detect TXDone chosen by the API * @cl: Pointer to the current owner of this channel * @tx_complete: Transmission completion +* @tx_status: Transmission status * @active_req: Currently active request hook * @msg_count: No. of mssg currently queued * @msg_free: Index of next available mssg slot
@@ -126,6 +127,7 @@ struct mbox_chan {unsigned txdone_method;struct mbox_client *cl;struct completion tx_complete; +int tx_status;void *active_req;unsigned msg_count, msg_free;void *msg_data[MBOX_TX_QUEUE_LEN ];
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 93/1102 PCI: Wait for device readiness after D3hot -> D0uninitialized transition
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bjorn Helgaas <[email protected]>
[ Upstream commit 41167a1e98536b4baf0846fd259c8124bd1c4e1b ]
For a device that advertises No_Soft_Reset == 0, a transition from D3hot to D0uninitialized is a soft reset, and the resulting internal device state is undefined.
Per PCIe r7.0, sec 2.3.1, a transition from D3hot to D0uninitialized mandates a minimum 10 ms delay before accessing the device. Following this delay, the device is permitted to respond to initial configuration requests with a Request Retry Status (RRS) completion status if it needs more time to initialize.
Call pci_dev_wait() after pci_power_up() performs a D3hot->D0uninitialized transition to ensure the device is ready to accept config accesses, as is done after the similar transition in pci_pm_reset().
If the device is already ready, this is essentially a no-op except for one additional config read.
--- drivers/pci/pci.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-)
drivers/pci/pci.c +22 -2
@@ -1390,7 +1390,18 @@ int pci_power_up(struct pci_dev *dev)bool need_restore;pci_power_t state;u16 pmcsr; +int ret; +/* +* When setting power state to D0, platform_pci_set_power_state() +* ensures main power is on. If it puts the device in D0, it also +* completes any required delays after the transition; if it leaves +* the device in D1, D2, or D3hot, we use the PM Capability to +* transition to D0. +* +* In all cases, the device is either Configuration-Ready or +* inaccessible upon return. +*/ platform_pci_set_power_state (dev,PCI_D0 );if (!dev->pm_cap) {
@@ -1431,10 +1442,19 @@ int pci_power_up(struct pci_dev *dev)pci_write_config_word (dev, dev->pm_cap +PCI_PM_CTRL ,0 );/* Mandatory transition delays; see PCI PM 1.2. */ -if (state == PCI_D3hot) +if (state == PCI_D3hot) {pci_dev_d3_sleep (dev); -else if (state ==PCI_D2 ) +if (!(pmcsr &PCI_PM_CTRL_NO_SOFT_RESET )) { + ret =pci_dev_wait (dev,"power up D3hot->D0uninitialized" , +PCIE_RESET_READY_POLL_MS ); +if (ret) { + dev->current_state = PCI_D3cold; +return -EIO ; + } + } + }else if (state ==PCI_D2 ) {udelay (PCI_PM_D2_DELAY ); + } end: dev->current_state =PCI_D0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 94/1102 drm/amdkfd: Check bounds for allocate_sdma_queue restore_sdma_id
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Francis <[email protected]>
[ Upstream commit bfe9a7545b2a7be1c543f1741e16f2d5ec4116ae ]
allocate_sdma_queue has an option where the sdma queue id can be specified (used by CRIU). We weren't bounds-checking that value.
Confirm it's less than the maximum number of queues.
--- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +6 -0
@@ -1550,6 +1550,9 @@ static int allocate_sdma_queue(struct device_queue_manager *dqm, }if (restore_sdma_id) { +if (*restore_sdma_id >=get_num_sdma_queues (dqm)) +return -EINVAL ; +/* Re-use existing sdma_id */ if (!test_bit (*restore_sdma_id, dqm->sdma_bitmap)) {dev_err (dev,"SDMA queue already in use\n" );
@@ -1575,6 +1578,9 @@ static int allocate_sdma_queue(struct device_queue_manager *dqm,return -ENOMEM ; }if (restore_sdma_id) { +if (*restore_sdma_id >=get_num_xgmi_sdma_queues (dqm)) +return -EINVAL ; +/* Re-use existing sdma_id */ if (!test_bit (*restore_sdma_id, dqm->xgmi_sdma_bitmap)) {dev_err (dev,"SDMA queue already in use\n" );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 95/1102 drm/amdkfd: Fix OOB memory exposure in get_wave_state()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sunday Clement <[email protected]>
[ Upstream commit 7ef144458f48d5589e36f1b3d83e83db2e5c5ba5 ]
The get_wave_state() function for v9 trusts cp_hqd_cntl_stack_size and cp_hqd_cntl_stack_offset values read directly from the MQD, which are written by GPU microcode and fully attacker-controlled on the CRIU-restore path (via AMDKFD_IOC_RESTORE_PROCESS with H3).
this leads to an unbounded copy_to_user() that can leak adjacent GTT/kernel memory. If offset > size, integer underflow produces a ~4 GiB read length, if size is set to 1 MiB against a 4 KiB allocation, we leak 1 MiB of adjacent kernel memory (other queues' MQDs, ring buffers, KASLR pointers).
Fix by clamping both cp_hqd_cntl_stack_size to the actual allocated buffer size (q->ctl_stack_size) and cp_hqd_cntl_stack_offset to the clamped size before performing arithmetic and copy_to_user().
This ensures we never read beyond the allocated kernel BO regardless of attacker-supplied MQD field values.
--- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +8 -3
@@ -339,11 +339,15 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd, {struct v9_mqd *m;struct kfd_context_save_area_header header; +u32 cntl_stack_size; +u32 cntl_stack_offset;/* Control stack is located one page after MQD. */ void *mqd_ctl_stack = (void *)((uintptr_t )mqd +PAGE_SIZE ); m =get_mqd (mqd); + cntl_stack_size =min_t (u32, m->cp_hqd_cntl_stack_size, q->ctl_stack_size); + cntl_stack_offset =min_t (u32, m->cp_hqd_cntl_stack_offset, cntl_stack_size); *ctl_stack_used_size = m->cp_hqd_cntl_stack_size - m->cp_hqd_cntl_stack_offset;
@@ -359,9 +363,10 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,if (copy_to_user (ctl_stack, &header,sizeof (header.wave_state)))return -EFAULT ; -if (copy_to_user (ctl_stack + m->cp_hqd_cntl_stack_offset, - mqd_ctl_stack + m->cp_hqd_cntl_stack_offset, - *ctl_stack_used_size)) + *ctl_stack_used_size = cntl_stack_size - cntl_stack_offset; + +if (copy_to_user (ctl_stack + cntl_stack_offset, mqd_ctl_stack + cntl_stack_offset, + *ctl_stack_used_size))return -EFAULT ;return 0 ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 96/1102 drm/amdkfd: Check bounds on allocate_doorbell
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Francis <[email protected]>
[ Upstream commit 1f087bb8cf9e8797633da35c85435e557ef74d06 ]
allocated_doorbell has an option to set the doorbell id to a specific value (used by CRIU). This value was not bounds checked.
Check to confirm it's less than KFD_MAX_NUM_OF_QUEUES_PER_PROCESS.
--- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +3 -0
@@ -437,6 +437,9 @@ static int allocate_doorbell(struct qcm_process_device *qpd, }else {/* For CP queues on SOC15 */ if (restore_id) { +if (*restore_id >=KFD_MAX_NUM_OF_QUEUES_PER_PROCESS ) +return -EINVAL ; +/* make sure that ID is free */ if (__test_and_set_bit (*restore_id, qpd->doorbell_bitmap))return -EINVAL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 97/1102 ALSA: usx2y: Drain pending US-428 pipe-4 output commands
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cássio Gabriel <[email protected]>
[ Upstream commit 18977c0dd722f52217027ff75de2811c53cce2cc ]
The US-428 pipe-4 output path submits at most one pending p4out entry from the shared-memory ring per input interrupt. If userspace queues more than one command before the interrupt handler runs, later commands remain pending until later input interrupts, even when async pipe-4 URBs are available.
Drain pending entries while idle async URBs are available. Copy each command into the existing per-URB async buffer before submission, so the submitted transfer does not depend on a userspace-mapped ring slot remaining unchanged after p4out_sent is advanced.
Also update p4out_sent only after usb_submit_urb() succeeds, so a failed submission is not reported as sent.
This keeps the shared-memory ABI unchanged and fixes only the local queue-draining behavior.
--- sound/usb/usx2y/usbusx2y.c | 39 ++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-)
sound/usb/usx2y/usbusx2y.c +23 -16
@@ -180,7 +180,7 @@ static void i_usx2y_in04_int(struct urb *urb)struct usx2ydev *usx2y = urb->context;struct us428ctls_sharedmem *us428ctls = usx2y->us428ctls_sharedmem;struct us428_p4out *p4out; -int i, j, n, diff, send; +int i, j, n, diff, send, len; usx2y->in04_int_calls++;
@@ -222,24 +222,31 @@ static void i_usx2y_in04_int(struct urb *urb) }while (!err && usx2y->us04->submitted < usx2y->us04->len); } }else { -if (us428ctls && us428ctls->p4out_last >=0 && us428ctls->p4out_last <N_US428_P4OUT_BUFS ) { -if (us428ctls->p4out_last != us428ctls->p4out_sent) { - send = us428ctls->p4out_sent +1 ; -if (send >=N_US428_P4OUT_BUFS ) - send =0 ; -for (j =0 ; j <URBS_ASYNC_SEQ && !err; ++j) { -if (!usx2y->as04.urb[j]->status) { - p4out = us428ctls->p4out + send;// FIXME if more than 1 p4out is new, 1 gets lost. -usb_fill_bulk_urb (usx2y->as04.urb[j], usx2y->dev, -usb_sndbulkpipe (usx2y->dev,0x04 ), &p4out->val.vol, - p4out->type ==ELT_LIGHT ?sizeof (struct us428_lights ) :5 , - i_usx2y_out04_int, usx2y); - err =usb_submit_urb (usx2y->as04.urb[j],GFP_ATOMIC ); +while (us428ctls && + us428ctls->p4out_last >=0 && + us428ctls->p4out_last <N_US428_P4OUT_BUFS && + us428ctls->p4out_last != us428ctls->p4out_sent) { +for (j =0 ; j <URBS_ASYNC_SEQ && !err; ++j) { +if (!usx2y->as04.urb[j]->status) { + send = us428ctls->p4out_sent +1 ; +if (send >=N_US428_P4OUT_BUFS ) + send =0 ; + + p4out = us428ctls->p4out + send; + len = p4out->type ==ELT_LIGHT ? +sizeof (struct us428_lights ) :5 ; +memcpy (usx2y->as04.urb[j]->transfer_buffer, + &p4out->val.vol, len); + usx2y->as04.urb[j]->transfer_buffer_length = len; + err =usb_submit_urb (usx2y->as04.urb[j],GFP_ATOMIC ); +if (!err) us428ctls->p4out_sent = send; -break ; - } + +break ; } } +if (j >=URBS_ASYNC_SEQ || err) +break ; } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 98/1102 sched/fair: Reject misfit pulls onto busy SMT siblings on asym-capacity
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrea Righi <[email protected]>
[ Upstream commit bf6aa722198d3c06e4236e8c5a480f30a64e1513 ]
When SD_ASYM_CPUCAPACITY load balancing considers pulling a misfit task, capacity_of(dst_cpu) can overstate available compute if the SMT sibling is
busy: the core does not deliver its full nominal capacity.
If SMT is active and dst_cpu is not on a fully idle core, skip this destination so we do not migrate a misfit expecting a capacity upgrade we cannot actually provide.
--- kernel/sched/fair.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
kernel/sched/fair.c +10 -1
@@ -9340,6 +9340,7 @@ struct lb_env {int dst_cpu;struct rq *dst_rq; +bool dst_core_idle;struct cpumask *dst_grpmask;int new_dst_cpu;
@@ -10530,10 +10531,16 @@ static bool update_sd_pick_busiest(struct lb_env *env,* We can use max_capacity here as reduction in capacity on some * CPUs in the group should either be possible to resolve * internally or be covered by avg_load imbalance (eventually). +* +* When SMT is active, only pull a misfit to dst_cpu if it is on a +* fully idle core; otherwise the effective capacity of the core is +* reduced and we may not actually provide more capacity than the +* source. */ if ((env->sd->flags &SD_ASYM_CPUCAPACITY ) && (sgs->group_type == group_misfit_task) && - (!capacity_greater (capacity_of (env->dst_cpu), sg->sgc->max_capacity) || + (!env->dst_core_idle || + !capacity_greater (capacity_of (env->dst_cpu), sg->sgc->max_capacity) || sds->local_stat.group_type != group_has_spare))return false;
@@ -11099,6 +11106,8 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sdunsigned long sum_util =0 ;bool sg_overloaded =0 , sg_overutilized =0 ; + env->dst_core_idle = !sched_smt_active () ||is_core_idle (env->dst_cpu); + do { struct sg_lb_stats *sgs = &tmp_sgs; int local_group;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 99/1102 iommu: arm-smmu-qcom: Ensure smmu is powered up in set_ttbr0_cfg
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Maniscalco <[email protected]>
[ Upstream commit 8a0aab012b52b5c044ca3bec523e91f95dd40765 ]
arm_smmu_write_context_bank() assumes it is being called with RPM active, but it turns out that is not guaranteed in the path from qcom_adreno_smmu_set_ttbr0_cfg(), so it's possible for the register writes to get lost when configuring the context bank while the GPU is idle, leading to page faults later.
Add the RPM calls here to make sure the SMMU is active before we touch it.
--- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +9 -0
@@ -142,6 +142,7 @@ static int qcom_adreno_smmu_set_ttbr0_cfg(const void *cookie,struct io_pgtable *pgtable =io_pgtable_ops_to_pgtable (smmu_domain->pgtbl_ops);struct arm_smmu_cfg *cfg = &smmu_domain->cfg;struct arm_smmu_cb *cb = &smmu_domain->smmu->cbs[cfg->cbndx]; +int ret;/* The domain must have split pagetables already enabled */ if (cb->tcr[0 ] &ARM_SMMU_TCR_EPD1 )
@@ -171,8 +172,16 @@ static int qcom_adreno_smmu_set_ttbr0_cfg(const void *cookie, cb->ttbr[0 ] |=FIELD_PREP (ARM_SMMU_TTBRn_ASID, cb->cfg->asid); } + ret =pm_runtime_resume_and_get (smmu_domain->smmu->dev); +if (ret <0 ) { +dev_err (smmu_domain->smmu->dev,"failed to get runtime PM: %d\n" , ret); +return -ENODEV ; + } +arm_smmu_write_context_bank (smmu_domain->smmu, cb->cfg->cbndx); +pm_runtime_put_autosuspend (smmu_domain->smmu->dev); +return 0 ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 100/1102 9p: invalidate readdir buffer on seek
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre Barre <[email protected]>
[ Upstream commit e661e17ddbed524b5fbda789a091b48b6b677067 ]
The per-fid readdir buffer (fid->rdir) is populated lazily and only refilled when fully drained (rdir->head == rdir->tail). userspace lseek() on a directory fd updates file->f_pos via generic_file_llseek() but does not touch the cached buffer, so the next getdents() iterates the stale cache and emits entries from the previous position instead of the one the caller asked for.
Track the file position the cached data corresponds to in struct p9_rdir, and drop the cache on entry to iterate_shared when it no longer matches ctx->pos. The 9p protocol's Tread/Treaddir already take an arbitrary offset on every request, so a refill at the new position is always legal; no .llseek override or seek restriction is needed.
Message-ID: <[email protected]>
--- fs/9p/vfs_dir.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
fs/9p/vfs_dir.c +12 -0
@@ -27,6 +27,7 @@* struct p9_rdir - readdir accounting * @head: start offset of current dirread buffer * @tail: end offset of current dirread buffer +* @offset: file position the data at @head corresponds to * @buf: dirread buffer * * private structure for keeping track of readdir
@@ -36,6 +37,7 @@struct p9_rdir {int head;int tail; +loff_t offset;uint8_t buf[]; };
@@ -102,6 +104,9 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) kvec.iov_base = rdir->buf; kvec.iov_len = buflen; +if (rdir->head < rdir->tail && rdir->offset != ctx->pos) + rdir->head = rdir->tail =0 ; +while (1 ) {if (rdir->tail == rdir->head) {struct iov_iter to;
@@ -117,6 +122,7 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) rdir->head =0 ; rdir->tail = n; + rdir->offset = ctx->pos; }while (rdir->head < rdir->tail) { err = p9stat_read(fid->clnt, rdir->buf + rdir->head,
@@ -134,6 +140,7 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx) rdir->head += err; ctx->pos += err; + rdir->offset = ctx->pos; } } }
@@ -161,6 +168,9 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx)if (!rdir)return -ENOMEM ; +if (rdir->head < rdir->tail && rdir->offset != ctx->pos) + rdir->head = rdir->tail =0 ; +while (1 ) {if (rdir->tail == rdir->head) { err = p9_client_readdir(fid, rdir->buf, buflen,
@@ -170,6 +180,7 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx) rdir->head =0 ; rdir->tail = err; + rdir->offset = ctx->pos; }while (rdir->head < rdir->tail) {
@@ -190,6 +201,7 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx) ctx->pos = curdirent.d_off; rdir->head += err; + rdir->offset = ctx->pos; } } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 101/1102 arm64/daifflags: Make local_daif_*() helpers __always_inline
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leonardo Bras <[email protected]>
[ Upstream commit 827ce94e0897a70241abf810b1d3d7d083053a39 ]
Make sure those helpers are always inlined and instrumentation safe.
--- arch/arm64/include/asm/daifflags.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
arch/arm64/include/asm/daifflags.h +5 -5
@@ -19,7 +19,7 @@/* mask/save/unmask/restore all exceptions, including interrupts. */ -static inline void local_daif_mask (void ) +static __always_inline void local_daif_mask(void) { WARN_ON(system_has_prio_mask_debugging() && (read_sysreg_s(SYS_ICC_PMR_EL1) == (GIC_PRIO_IRQOFF |
@@ -38,7 +38,7 @@ static inline void local_daif_mask(void)trace_hardirqs_off (); } -static inline unsigned long local_daif_save_flags (void ) +static __always_inline unsigned long local_daif_save_flags (void ) {unsigned long flags;
@@ -53,7 +53,7 @@ static inline unsigned long local_daif_save_flags(void)return flags; } -static inline unsigned long local_daif_save (void ) +static __always_inline unsigned long local_daif_save (void ) {unsigned long flags;
@@ -64,7 +64,7 @@ static inline unsigned long local_daif_save(void)return flags; } -static inline void local_daif_restore (unsigned long flags) +static __always_inline void local_daif_restore(unsigned long flags) {bool irq_disabled = flags &PSR_I_BIT ;
@@ -124,7 +124,7 @@ static inline void local_daif_restore(unsigned long flags)* Called by synchronous exception handlers to restore the DAIF bits that were * modified by taking an exception. */ -static inline void local_daif_inherit (struct pt_regs *regs) +static __always_inline void local_daif_inherit(struct pt_regs *regs) {unsigned long flags = regs->pstate &DAIF_MASK ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 102/1102 drm/imagination: Populate FW common context ID before passing to the FW
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brajesh Gupta <[email protected]>
[ Upstream commit de1e8a590f4ed48b6b7902fc3aafc878262f8278 ]
Initialise the context ID for the FW common context correctly by moving the context allocation earlier.
--- drivers/gpu/drm/imagination/pvr_context.c | 30 ++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-)
drivers/gpu/drm/imagination/pvr_context.c +16 -14
@@ -332,10 +332,14 @@ int pvr_context_create(struct pvr_file *pvr_file, struct drm_pvr_ioctl_create_co goto err_put_vm; } - err =pvr_context_create_queues (ctx, args, ctx->data); + err =xa_alloc (&pvr_dev->ctx_ids, &ctx->ctx_id, ctx, xa_limit_32b,GFP_KERNEL );if (err) goto err_free_ctx_data; + err =pvr_context_create_queues (ctx, args, ctx->data); +if (err) + goto err_free_ctx_id; + err =init_fw_objs (ctx, args, ctx->data);if (err) goto err_destroy_queues;
@@ -343,23 +347,12 @@ int pvr_context_create(struct pvr_file *pvr_file, struct drm_pvr_ioctl_create_co err =pvr_fw_object_create (pvr_dev, ctx_size,PVR_BO_FW_FLAGS_DEVICE_UNCACHED , ctx_fw_data_init, ctx, &ctx->fw_obj);if (err) - goto err_free_ctx_data; + goto err_destroy_queues; - err =xa_alloc (&pvr_dev->ctx_ids, &ctx->ctx_id, ctx, xa_limit_32b,GFP_KERNEL ); + err =xa_alloc (&pvr_file->ctx_handles, &args->handle, ctx, xa_limit_32b,GFP_KERNEL );if (err) goto err_destroy_fw_obj; - err =xa_alloc (&pvr_file->ctx_handles, &args->handle, ctx, xa_limit_32b,GFP_KERNEL ); -if (err) { -/* -* It's possible that another thread could have taken a reference on the context at -* this point as it is in the ctx_ids xarray. Therefore instead of directly -* destroying the context, drop a reference instead. -*/ -pvr_context_put (ctx); -return err; - } -spin_lock (&pvr_dev->ctx_list_lock);list_add_tail (&ctx->file_link, &pvr_file->contexts);spin_unlock (&pvr_dev->ctx_list_lock);
@@ -372,6 +365,15 @@ int pvr_context_create(struct pvr_file *pvr_file, struct drm_pvr_ioctl_create_co err_destroy_queues:pvr_context_destroy_queues (ctx, true); +err_free_ctx_id: +/* +* Ctx_id is not exposed to userspace and not visible yet within +* the kernel/FW, plus a matching context handle (exposed to userspace) +* hasn't been allocated yet, so it is safe to remove ctx_id +* from the ctx_ids xarray. +*/ +xa_erase (&pvr_dev->ctx_ids, ctx->ctx_id); + err_free_ctx_data:kfree (ctx->data);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 103/1102 9p: use kvzalloc for readdir buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre Barre <[email protected]>
[ Upstream commit b4d71bea144550ff4a0917f8c4b06d4063eb27a6 ]
The readdir buffer is sized to msize, so kzalloc() can fail under fragmentation with a page allocation failure in v9fs_alloc_rdir_buf() / v9fs_dir_readdir_dotl().
The buffer is only a response sink and is never pack_sg_list()'d, so kvzalloc() is safe for all transports, unlike the fcall buffers fixed in e21d451a82f3 ("9p: Use kvmalloc for message buffers on supported transports").
Message-ID: <[email protected]>
--- fs/9p/vfs_dir.c | 2 +- net/9p/client.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
fs/9p/vfs_dir.c +1 -1
@@ -72,7 +72,7 @@ static struct p9_rdir *v9fs_alloc_rdir_buf(struct file *filp, int buflen)struct p9_fid *fid = filp->private_data;if (!fid->rdir) - fid->rdir =kzalloc (sizeof (struct p9_rdir ) + buflen,GFP_KERNEL ); + fid->rdir =kvzalloc (sizeof (struct p9_rdir ) + buflen,GFP_KERNEL );return fid->rdir; }
net/9p/client.c +1 -1
@@ -890,7 +890,7 @@ static void p9_fid_destroy(struct p9_fid *fid)spin_lock_irqsave (&clnt->lock, flags);idr_remove (&clnt->fids, fid->fid);spin_unlock_irqrestore (&clnt->lock, flags); -kfree (fid->rdir); +kvfree (fid->rdir);kfree (fid); }
Signature · 1 line
2.53.0