7.2.6-rc1 review
Subsystems (3)
Greg Kroah-Hartman
maintainercover 7.2.6-rc1 review
This is the start of the stable review cycle for the 7.2.6 release. There are 1815 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 Mon, 14 Sep 2026 06:54:17 +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/v7.x/stable-review/patch-7.2.6-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-7.2.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 7.2.6-rc1
Jamal Hadi Salim <[email protected]>
net/sched: fq: clamp quantum and initial_quantum in change path
Pavel Begunkov <[email protected]>
tcp: reject non zerocopy devmem tx
Steffen Klassert <[email protected]>
Revert "esp: do not unref managed frag pages in esp_ssg_unref()"
Ben Cressey <[email protected]>
dm-integrity: fix buffer overflow with keyed discard
Jamal Hadi Salim <[email protected]>
net/sched: sch_htb: limit htb_classify inner-class filter hops
Jiayuan Chen <[email protected]>
tcp: fix corruption of urgent data on multi-segment retransmit
Deepanshu Kartikey <[email protected]>
usb: atm: usbatm: fix invalid ci_range initialization
bui duc phuc <[email protected]>
net: fec: only stop PTP if it was initialized
Eric Dumazet <[email protected]>
slip: remove slip_hangup() to fix use-after-free in slip_receive_buf()
Jamal Hadi Salim <[email protected]>
net/sched: bound qdisc_pkt_len to prevent qdisc soft lockup
Edoardo Pinci <[email protected]>
net: dsa: mxl862xx: enable assisted learning on CPU port
Pascal Kneuper <[email protected]>
net: stmmac: restore NET_IP_ALIGN in the RX DMA offset
Lorenzo Bianconi <[email protected]>
net: stmmac: drop gso_enabled_types and rely on netdev features
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Don't test flow control for small rx fifos
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Account for the UC filter list for filtering tests
Maxime Chevallier <[email protected]>
net: stmmac: dwxgmac: Account for the primary MAC address for UC filtering
Maxime Chevallier <[email protected]>
net: stmmac: dwmac4: Account for the primary MAC address for UC filtering
Maxime Chevallier <[email protected]>
net: stmmac: dwmac1000: Account for the primary MAC address for UC filtering
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Check multiple MMC counters
Anoop Vijay <[email protected]>
drm/xe/sysctrl: Read mailbox phase bit from hardware
Riana Tauro <[email protected]>
drm/xe/xe_ras: Add support to get error counter value
Riana Tauro <[email protected]>
drm/xe/uapi: Add additional error components to xe drm_ras
Daniel Pawlik <[email protected]>
net: airoha: npu: fix missing streaming DMA mask
Muhammad Usama Anjum <[email protected]>
selftests/arm64: Fix MTE prctl TAP plan
Muhammad Usama Anjum <[email protected]>
selftests/arm64: Treat KSM merge_across_nodes as optional
Muhammad Usama Anjum <[email protected]>
selftests/arm64: Print missing MTE TAP headers
Takashi Iwai <[email protected]>
ALSA: control: Don't add invalid kcontrols to LED layer
Pablo Neira Ayuso <[email protected]>
netfilter: nf_tables: skip double clone set expressions on element insert
Pablo Neira Ayuso <[email protected]>
netfilter: x_tables: replace pr_{info,err}() by pr_info_ratelimited()
Pablo Neira Ayuso <[email protected]>
netfilter: nf_tables: move hardware offload step after building the chain blob
Alice Mikityanska <[email protected]>
virtio-net: Ensure that TCP packets don't overflow gso_segs
Arvind Yadav <[email protected]>
drm/xe: Reject page faults from non-fault-mode scratch VMs
Balasubramani Vivekanandan <[email protected]>
drm/xe/xe_gt_idle: Add CCS to the powergating info print
Daniele Ceraolo Spurio <[email protected]>
drm/xe: Do not apply WA 14025883347 to media 3503
Maxime Chevallier <[email protected]>
net: stmmac: selftests: Pass the IP proto mask in the TC selftest
Jiawen Wu <[email protected]>
net: wangxun: use BIT_ULL() to prevent shift overflow on 32-bit archs
Vitaliy Sochnev <[email protected]>
net: phy: air_en8811h: move LED GPIO configuration to config_init
Yifei Chu <[email protected]>
net/smc: release the internal TCP sock on IPPROTO_SMC socket creation failure
bui duc phuc <[email protected]>
net: ethernet: sun4i-emac: Fix IRQ error handling
Shengyu Qu <[email protected]>
ASoC: amd: acp-config: change quirks to cover all ASUS FA401EA variants
Haotian Zhang <[email protected]>
samples/ftrace: Fix kthread_stop() on ERR_PTR in ftrace-direct-multi-modify
Haotian Zhang <[email protected]>
samples/ftrace: Fix kthread_stop() on ERR_PTR in ftrace-direct-modify
Aleksandr Nogikh <[email protected]>
libceph: validate banner payload length
Xiubo Li <[email protected]>
ceph: revalidate ki_pos for O_APPEND writes after cap acquisition
Hongling Zeng <[email protected]>
ceph: Fix ERR_PTR(0) in ceph_mkdir()
HyeongJun An <[email protected]>
ASoC: dapm: Fix off-by-one check on the second enum channel
Fuad Tabba <[email protected]>
of/irq: Fix device node refcount leak in of_irq_get_affinity()
John Johansen <[email protected]>
apparmor: policy_int make sure list heads are initialized before fail path
Jérémy Jean <[email protected]>
crypto: acomp - allocate async request context when cloning
Ruoyu Wang <[email protected]>
tpm: st33zp24: Validate locality read result
Ruoyu Wang <[email protected]>
tpm: st33zp24: Return zero on status read failure
Victor Nogueira <[email protected]>
net/sched: sch_teql: restore skb->dev on the slave failure path
Jamal Hadi Salim <[email protected]>
net/sched: sfq: clamp quantum to avoid signed overflow soft lockup
Jamal Hadi Salim <[email protected]>
net/sched: hhf: clamp quantum before hhf_change() to avoid overflow
Jamal Hadi Salim <[email protected]>
net/sched: fq_pie: clamp default quantum to avoid signed overflow
Jamal Hadi Salim <[email protected]>
net/sched: sch_codel: clamp default mtu to avoid disabling CoDel
Jamal Hadi Salim <[email protected]>
net/sched: fq_codel: clamp default quantum and mtu
Jamal Hadi Salim <[email protected]>
net/sched: fq: add overflow bounds to quantum and initial quantum
Tetsuo Handa <[email protected]>
net: fix a resource leak in copy_net_ns() error handling path
Mina Almasry <[email protected]>
net: core: check skb_frags_readable before uncloning in skb_copy_ubufs
Eric Dumazet <[email protected]>
net/sched: act_skbmod: fix length calculations and avoid invalid header warnings
Karl Mehltretter <[email protected]>
selftests/proc: make proc-maps-race work with READ_IMPLIES_EXEC
Liam R. Howlett (Oracle) <[email protected]>
maple_tree: fix argument name in header
Liam R. Howlett (Oracle) <[email protected]>
maple_tree: catch race in mas_alloc_cyclic()
Usama Arif <[email protected]>
mm/memcontrol: avoid false sharing between vmstats and events
Hongfu Li <[email protected]>
selftests/mm: fix read_file() return value check
Muhammad Usama Anjum <[email protected]>
selftests/mm: skip COW tmpfile cases when fallocate() is unsupported
Ze Tan <[email protected]>
smb/client: preserve open info type across compound queries
Frank Sorenson <[email protected]>
cifs: fix clearing stats for fastest execution of each smb2 command
Sai Krishna <[email protected]>
octeontx2-af: fix cn20k mailbox lifetime on repeated rvu_mbox_init()
Suman Ghosh <[email protected]>
octeontx2-pf: fix NULL deref of af_xdp_zc_qidx on rep setup
Allison Henderson <[email protected]>
net/rds: use wq_has_sleeper() in rds_cong_map_updated()
Long Li <[email protected]>
net: mana: Cap MSI-X vectors to the device MSI-X table size
Victor Nogueira <[email protected]>
net/sched: act_ife: Only operate on Ethernet frames
Wei Fang <[email protected]>
net: enetc: restore RX ring congestion mode for ENETC v4
Wei Fang <[email protected]>
net: enetc: remove invalid code from enetc4_pl_mac_link_up()
Wei Fang <[email protected]>
net: enetc: improve MAFT entry management with bitmap tracking
Wei Fang <[email protected]>
net: enetc: convert ndo_set_rx_mode() to ndo_set_rx_mode_async()
Wei Fang <[email protected]>
net: enetc: extract common helpers for MAC hash filter configuration
Wei Fang <[email protected]>
net: enetc: extract common helpers for MAC promiscuous mode setting
Wei Fang <[email protected]>
net: enetc: restore RX ring congestion mode after ring reconfiguration
Naveen Mamindlapalli <[email protected]>
octeontx2-af: Fix TL3/TL2 link config ENA clearing
Xiang Mei <[email protected]>
net: qualcomm: rmnet: restore skb->dev on deaggregated frames
Anshumali Gaur <[email protected]>
octeontx2-vf: fix workqueue and netdev race in probe/remove
Anshumali Gaur <[email protected]>
octeontx2-af: fix out-of-bounds read setting MSI-X irq affinity
Anshumali Gaur <[email protected]>
octeontx2-af: fix NULL deref in NIX TM tree debugfs read path
Cen Zhang (Microsoft) <[email protected]>
gtp: add synchronize_net() in gtp_newlink() error path to prevent use-after-free
Stanislav Fomichev <[email protected]>
xsk: honor XDP_TX_METADATA in zero-copy path
Stanislav Fomichev <[email protected]>
xsk: align TX metadata layout across ABIs
Radek Podgorny <[email protected]>
Bluetooth: do not leak an hci_conn when a second LE connect is rejected
Hyunwoo Kim <[email protected]>
Bluetooth: RFCOMM: Validate MTU in rfcomm_apply_pn() to prevent infinite loop
Ali Ahmet Memis <[email protected]>
Bluetooth: btnxpuart: Validate the FW dump header length
Pauli Virtanen <[email protected]>
Bluetooth: hci_sync: add conditional locking annotations
Chris Lu <[email protected]>
Bluetooth: btmtksdio: Fix out-of-bounds DMA read in the TX path
Chris Lu <[email protected]>
Bluetooth: btmtksdio: Take exclusive ownership of the SKB before TX
Ismail Tarim <[email protected]>
Bluetooth: btmtk: Do not discard the subsystem reset timeout
Ismail Tarim <[email protected]>
Bluetooth: btmtk: Do not report success when subsys reset fails
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: fix race l2cap_sock_cleanup_listen() vs. put_chan
Pavel Shpakovskiy <[email protected]>
Bluetooth: mgmt: fix 'hdev->discovery.uuids' NULL dereference
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: reject accept queue add unless BT_LISTEN
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: access chan->conn safely in get/setsockopt
Seongjae Jeong <[email protected]>
f2fs: use adjusted write range after f2fs_write_checks()
Vladimir Murzin <[email protected]>
arm64: process: Fix context switching MTE store-only tag check
Wei-Lin Chang <[email protected]>
arm64: ptdump: Make note_page_flush() range aware
Bernd Schubert <[email protected]>
fuse: Fix the condition to enable over-io-uring
Joanne Koong <[email protected]>
fuse: use release/acquire for fch->initialized
Baokun Li <[email protected]>
fuse: invalidate the correct range after O_APPEND direct write
Geert Uytterhoeven <[email protected]>
erofs: Fix EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS default logic
Dan Carpenter <[email protected]>
scsi: qla2xxx: Fix an loop timeout test
Michael Kelley <[email protected]>
Drivers: hv: vmbus: Skip VMBus module cleanup for non-nested root partition
Giuseppe Piscitelli <[email protected]>
net/sched: sch_cake: fix autorate reconfiguration throttling
Jian Shen <[email protected]>
net: hibmcge: fix page_pool DMA direction mismatch
Eric Dumazet <[email protected]>
net_sched: sch_fq: fix pacing delay underflow with pacing offload
Rong Zhang <[email protected]>
net: page_pool: Remove zone/policy GFP flags when allocating XArray entries
Jiawen Wu <[email protected]>
net: libwx: fix concurrent bitmap overwrite in PTP setup
Jiawen Wu <[email protected]>
net: txgbe: fix MISC interrupt unmasking in non-MSI-X mode and device shutdown
Daniel Machon <[email protected]>
net: sparx5: fix sleep in atomic context in MAC table access
Daniel Machon <[email protected]>
net: microchip: vcap: use port number instead of netdev name for debugfs
Jamal Hadi Salim <[email protected]>
net/sched: account classifier filter allocations to memcg
Wei Fang <[email protected]>
ptp: netc: fix period truncation and potential divide-by-zero in PEROUT
Thomas Walsh <[email protected]>
bnxt_en: Gate TPH enablement behind BNXT_SUPPORTS_QUEUE_API check
Guenter Roeck <[email protected]>
bnxt_en: Fix call to hardware monitoring event handler
Julian Braha <[email protected]>
ASoC: fix unmet dependencies on PPC_BESTCOMM and SND_SOC_AC97_BUS
Cosmo Chou <[email protected]>
rtc: pcf85363: Add error checking to regmap calls in probe()
Junrui Luo <[email protected]>
NFSv4/pnfs: key the data server cache on the NFS version
Junrui Luo <[email protected]>
NFSv4.2: fix LAYOUTSTATS send buffer exhaustion
Jérémy Jean <[email protected]>
NFSv4.1: zero referring call lists before decoding
Nikolay Aleksandrov <[email protected]>
vxlan: fix reading neigh ha
Nikolay Aleksandrov <[email protected]>
net: bridge: arp/nd proxy: fix reading neigh ha
Mahanta Jambigi <[email protected]>
net/smc: free pending qentry in smc_llc_flow_stop() before memset
Mahanta Jambigi <[email protected]>
net/smc: free stashed qentry before overwrite in REQ_ADD_LINK to ADD_LINK transition
Li, Yifan <[email protected]>
powercap: intel_rapl: Sign-extend the PMU delta on counter wraparound
Jamal Hadi Salim <[email protected]>
net: sched: fix 32-bit backlog wrap in gred, bfifo and plug enqueue
Mina Almasry <[email protected]>
net: tcp: block mixing readable and unreadable frags
Eric Dumazet <[email protected]>
inetpeer: randomize RB-tree node comparison using SipHash
Eric Dumazet <[email protected]>
ip6mr: do not clone dst in ip6mr_cache_report()
Pengpeng Hou <[email protected]>
net: qlcnic: validate unified ROM sections before loading
Tetsuo Handa <[email protected]>
net: add missing ref_tracker_dir_exit() to net_passive_dec()
Cen Zhang (Microsoft) <[email protected]>
ipv6: avoid divide by zero in rt6_multipath_rebalance
Eric Dumazet <[email protected]>
netdevsim: update queue NAPI association on queue reset
Ruoyu Wang <[email protected]>
net: ipa: balance runtime PM reference on remove error
Marek Czernohous <[email protected]>
forcedeth: stop the tx_timeout register dump past the requested window
Or Har-Toov <[email protected]>
net/mlx5: E-Switch, preserve max tx speed on vport state modification
Or Har-Toov <[email protected]>
net/mlx5: Move vport DOWN state check out of mlx5_query_vport_max_tx_speed()
Mark Bloch <[email protected]>
net/mlx5: E-Switch, use state lock for vport state changes
Fan Ye <[email protected]>
net: thunderbolt: Count delivered packets in rx_packets and rx_bytes
Victor Nogueira <[email protected]>
net/sched: add get_fill_size callbacks for actions missing them
Ruoyu Wang <[email protected]>
net: bridge: Reject descending VLAN tunnel ranges
Cen Zhang (Microsoft) <[email protected]>
xsk: fix NULL pointer dereference in __xsk_rcv()
Rustam Adilov <[email protected]>
irqchip/irq-realtek-rtl: Use readl_be()/writel_be() instead of readl()/writel()
Markus Stockhausen <[email protected]>
irqchip/irq-realtek-rtl: Add mask for interrupt handling
Markus Stockhausen <[email protected]>
irqchip/irq-realtek-rtl: Add interrupt data structure
Markus Stockhausen <[email protected]>
irqchip/irq-realtek-rtl: Split out parent setup code
Namjae Jeon <[email protected]>
smb: server: remove unused DES crypto header
Thomas Huth <[email protected]>
smb: server: Remove obsolete "select CRYPTO_LIB_DES" from Kconfig file
Runyu Xiao <[email protected]>
ALSA: mtpav: shut down output timer before card teardown
Nitin Gote <[email protected]>
drm/xe: don't WARN on kernel job timeout when device already wedged
Geert Uytterhoeven <[email protected]>
spi: amlogic-spisg: Make sure clk_init_data is fully initialized
Serhat Kumral <[email protected]>
RDMA/ucma: Allow path records to exactly fit the output buffer
Dennis Tighe <[email protected]>
ntfs: validate usa_ofs before preserving the update sequence number
Dennis Tighe <[email protected]>
ntfs: fix off-by-one page overflow in ntfs_decompress()
Sebastian Andrzej Siewior <[email protected]>
sched/topology: Add a cpus_read_lock to rebuild_sched_domains()
Haotian Zhang <[email protected]>
ALSA: ice1712: Fix the card leak at probe error with the auto-cleanup
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Defer default SPI and LPI IAFFID programming
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Use logical cpu 0 irs_data for dynamic IST allocation
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Release IRS iomem region on driver init failure
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Fix gicv5_init_common() error paths
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Disable IRSes on probe failures
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Check for NULL LPI domain on domain teardown
Lorenzo Pieralisi <[email protected]>
irqchip/gic-v5: Check get_logical_index() return value in MADT IAFFID parsing
Sascha Bischoff <[email protected]>
irqchip/gic-v5: Synchronize CPU interface disable
Sascha Bischoff <[email protected]>
irqchip/gic-v5: Clear per-CPU IRS data on teardown
Michael Pesa <[email protected]>
irqchip/ast2700-intc: Disable all interrupt merge banks on probe
Geert Uytterhoeven <[email protected]>
clk: visconti: Make sure clk_init_data is fully initialized
Geert Uytterhoeven <[email protected]>
clk: ti: Make sure clk_init_data is fully initialized
Bradley Morgan <[email protected]>
prctl: fix PR_SET_MM_AUXV losing the forced AT_NULL terminator
Karl Mehltretter <[email protected]>
lib/interval_tree: fix allocation warning messages
Linkai Gong <[email protected]>
rtc: gamecube: check return value of devm_rtc_register_device()
Ruoyu Wang <[email protected]>
i2c: ocores: Disable clock on failed resume
Ryan Chen <[email protected]>
irqchip/ast2700-intc: Avoid allocating in the irq_domain activate() callback
Biju Das <[email protected]>
irqchip/renesas-rzg2l: Fix loss of interrupt
Pengpeng Hou <[email protected]>
rtc: zynqmp: Return optional clock lookup errors
Frank Sorenson <[email protected]>
cifs: remove dead size-update blocks in cifs_setattr_unix/nounix
Christopher Lusk <[email protected]>
smb: client: set replay flag on the read send-error retry path
Christopher Lusk <[email protected]>
smb: client: fix request buffer leak in smb2_new_read_req()
ChenXiaoSong <[email protected]>
smb/client: return EOPNOTSUPP for unsupported O_TMPFILE
Surendra Singh Chouhan <[email protected]>
rtc: spacemit: handle regmap_test_bits() error return
Yi Ding <[email protected]>
rtc: pcf8563: fix clock provider leak on unbind
GuoHan Zhao <[email protected]>
virtio: rtc: time out alarm requests
Li RongQing <[email protected]>
vdpa/mlx5: fix wrong list iterated in add_direct_chain error path
Li RongQing <[email protected]>
virtio_pci: fix wrong queue index for admin vq in intx path
Yufeng Wang <[email protected]>
vhost/net: fix clear_user start address in VHOST_GET_FEATURES_ARRAY
Denis V. Lunev <[email protected]>
virtio_balloon: quiesce balloon work before device shutdown
Denis V. Lunev <[email protected]>
virtio_balloon: factor out virtballoon_quiesce()
Denis V. Lunev <[email protected]>
virtio: add virtio_device_shutdown() helper
Linfeng Sun <[email protected]>
vdpa_sim: fix cleanup after worker creation failure
Michael S. Tsirkin <[email protected]>
virtio_balloon: disable indirect descriptors
Baolin Liu <[email protected]>
ntfs: do not update ctime when setxattr fails
Hyeontae Lee <[email protected]>
ntfs: serialize resident iomap reads with mrec_lock
Joanne Koong <[email protected]>
ntfs: convert iomap ops to ->iomap_next()
Joanne Koong <[email protected]>
iomap: add ->iomap_next()
Joanne Koong <[email protected]>
iomap: split iomap_iter() logic into iomap_iter_next()
Namjae Jeon <[email protected]>
ntfs: allow index root relocation
Pisit Preechapramoth <[email protected]>
ntfs: reject unprivileged writes to reserved $LX* xattrs
Namjae Jeon <[email protected]>
ntfs: respect per-file chmod mode over mount masks
Namjae Jeon <[email protected]>
ntfs: apply Windows name checks only with windows_names
Alexandro Calo <[email protected]>
ntfs: Fix index_root heap OOB write in ntfs_ir_to_ib()
Namjae Jeon <[email protected]>
ntfs: fix kmap_local_page() usage in compress
Matthew Wilcox (Oracle) <[email protected]>
ntfs: Remove references to page->__folio_index
Matthew Wilcox (Oracle) <[email protected]>
ntfs: Use zero_user_segment() in handle_bounds_compressed_page()
Matthew Wilcox (Oracle) <[email protected]>
ntfs: Remove use of __folio_index in handle_bounds_compressed_page()
Matthew Wilcox (Oracle) <[email protected]>
ntfs: Inline zero_partial_compressed_page()
Namjae Jeon <[email protected]>
ntfs: rewrite EA stream before updating metadata
Namjae Jeon <[email protected]>
ntfs: remove empty EA attribute pair
Namjae Jeon <[email protected]>
ntfs: validate final EA attribute size
Besar Wicaksono <[email protected]>
perf vendor events arm64: Fix Tegra410 Olympus event 0x0197
Saurav Sachidanand <[email protected]>
perf vendor events arm64: fix swapped MetricGroup for Tegra410 L1 prefetcher metrics
Jian-Ming Liao <[email protected]>
i3c: mipi-i3c-hci: Fix missing STAT_IBI_STATUS_THLD in PIO mode
Tetsuo Handa <[email protected]>
net: add missing ref_tracker_dir_exit() to alloc_netdev_mqs()
Ruoyu Wang <[email protected]>
bonding: initialize err for empty target lists
Nikolay Kulikov <[email protected]>
mlxbf-bootctl: fix the build error with FIELD_PREP()
Hemanth Selam <[email protected]>
platform/x86/amd/hsmp: Reject negative power cap writes in hwmon
Guangshuo Li <[email protected]>
platform/x86: hp-bioscfg: fix password encoding bounds check
Nguyen Dinh Phi <[email protected]>
vsock: use sock_error() to consume sk_err after a failed connect
Nguyen Dinh Phi <[email protected]>
vsock: don't check the listener's sk_err in vsock_accept()
HyeongJun An <[email protected]>
platform/x86: dell-wmi-sysman: Fix instance ID bounds
Mahanta Jambigi <[email protected]>
net/smc: hash socket only after full initialisation in smc_sk_init()
Karl Mehltretter <[email protected]>
8139cp: fix Rx and Tx not being disabled in cp_suspend
Baul Lee <[email protected]>
vxlan: mdb: Fix use-after-free in vxlan_mdb_flush()
Xu Rao <[email protected]>
ALSA: hda: Fix connection list comparison in proc output
Baokun Li <[email protected]>
fuse: check for NULL root inode in fuse_fill_super_submount
Daniel Baluta <[email protected]>
soc: qcom: ubwc: Fix missing include
Baokun Li <[email protected]>
fuse: reject a duplicate fd= mount option
Weiming Shi <[email protected]>
fs/ntfs3: validate ef->size covers the record's name and value
Konstantin Komarov <[email protected]>
fs/ntfs3: fix out-of-bounds read in read_log_rec_buf()
Baokun Li <[email protected]>
cuse: wait for pending RCU callbacks on module exit
Nikolay Aleksandrov <[email protected]>
net: bridge: vlan: fix inverted default vlan notification
Maximilian Immanuel Brandtner <[email protected]>
tls: fix RX desync on overlapping skbs
Ruoyu Wang <[email protected]>
net: dsa: mv88e6xxx: Fix PCS link check on CMODE read error
Xiang Mei <[email protected]>
vxlan: vnifilter: enforce exact length of GROUP/GROUP6 attributes
Joas Antonio dos Santos <[email protected]>
ipvs: fix integer overflow in ftp helper port/address parsing
Pablo Neira Ayuso <[email protected]>
netfilter: ctnetlink: do not expose expectation DEAD flag
Florian Westphal <[email protected]>
netfilter: ipset: remove need to allocate memory on delete operations
Chao Yu <[email protected]>
f2fs: fix to avoid pinfile fragment on fragment:{block, segment} mode
Chao Yu <[email protected]>
f2fs: cleanup w/ f2fs_need_rand_{blk, seg, seg_blk}Anton Protopopov <[email protected]>
virtio_net: Fix resize of the RX ring
Xin Xie <[email protected]>
net: hsr: free learned nodes on device setup failure
Qingfang Deng <[email protected]>
pppox: drain queued packets on channel handoff
Vladimir Oltean <[email protected]>
net: dsa: b53: fix error propagation from b53_fdb_dump()
Junseo Lim <[email protected]>
net: kcm: Hold RCU read lock while running BPF parser
Petr Oros <[email protected]>
dpll: fix NULL deref in dpll_device_ops() during teardown race
Prabu Thayalan <[email protected]>
ionic: fix completion descriptor access with 2x desc size
Eric Joyner <[email protected]>
ionic: add missing dma_rmb() after the completion publish check
Wei Fang <[email protected]>
ptp: netc: skip PEROUT disable if channel is not enabled
Dan Carpenter <[email protected]>
drm/xe: tests: fix error message in xe_migrate_sanity_test()
Fan Gong <[email protected]>
hinic3: Fix skb linearization mismatch and drop skb when skb_checksum_help() failed
Karl Mehltretter <[email protected]>
octeontx2-af: initialize lmac_bmap in rvu_mcs_set_lmac_bmap()
bui duc phuc <[email protected]>
can: m_can: Use of_property_present() for wakeup-source
Jiayuan Chen <[email protected]>
bpf, xdp: move offload check into dev_xdp_install()
Mario Rugiero <[email protected]>
regulator: tps65185: wait for the IC to wake before the first I2C access
Mathieu Dubois-Briand <[email protected]>
clk: ti: mux: resolve parent clocks by DT index, not by name
Onur Özkan <[email protected]>
clk: devres: fix cleanup in devm_clk_get_optional_enabled_with_rate()
Michael Nemanov <[email protected]>
nfs: fix ENXIO on O_CREAT open of existing symlink over NFSv3
Zhansong Gao <[email protected]>
NFSv4: Fix incorrect argument passed to nfs4_delete_lease() in nfs4_add_lease()
Jeuk Kim <[email protected]>
NFSv4/flexfiles: fix NULL dereference for NFSv4.0 data servers
Guangshuo Li <[email protected]>
NFS: Fix delayed delegation return list handling
ZhangGuoDong <[email protected]>
pnfs/blocklayout: Fix device leaks on parse failure
Ruoyu Wang <[email protected]>
NFSv4: remove callback IDR entry on client allocation failure
Arnaud Bonnet <[email protected]>
nfs: refactor pNFS functions using clear_and_wake_up_bit
Arnaud Bonnet <[email protected]>
nfs: replace atomic bitops sequence with clear_and_wake_up_bit helper
Andrii Nakryiko <[email protected]>
selftests/bpf: Retry stat generation in cgroup_iter_memcg
Ze Tan <[email protected]>
smb/server: fix session counter on session removal
Ze Tan <[email protected]>
smb/server: update session counter under sessions table lock
Ze Tan <[email protected]>
smb/server: warn if ksmbd_proc_create() fails
Namjae Jeon <[email protected]>
ksmbd: add procfs monitoring for active shares
Ze Tan <[email protected]>
smb/server: fix session leak in ksmbd_session_register()
Hang Nan <[email protected]>
ksmbd: bound smb_check_perm_dacl() ACE walks by DACL size
Namjae Jeon <[email protected]>
ksmbd: handle encrypted compressed requests
Namjae Jeon <[email protected]>
ksmbd: decrypt requests from expired encrypted sessions
Namjae Jeon <[email protected]>
ksmbd: disconnect on SMB3 decryption failure
Namjae Jeon <[email protected]>
ksmbd: scope session state changes to bound connections
Namjae Jeon <[email protected]>
ksmbd: fix encrypted request lookup on bound channels
Namjae Jeon <[email protected]>
ksmbd: expire SMB sessions when Kerberos tickets expire
Namjae Jeon <[email protected]>
ksmbd: validate SMB2 write offsets
Namjae Jeon <[email protected]>
ksmbd: detach blocked lock requests before freeing
Namjae Jeon <[email protected]>
ksmbd: safely discard unregistered deferred locks
Junseo Lim <[email protected]>
bpf: Reject negative optlen in cgroup getsockopt hook
Andreas Schwab <[email protected]>
m68k: nfcon: Do not call console_is_registered() in nfcon_device()
Junseo Lim <[email protected]>
bpf: Disallow bpf_{g,s}etsockopt() in cgroup UNIX getname hooks
Ojaswin Mujoo <[email protected]>
erofs: fix unused pcluster_pools for higher page sizes
Junseo Lim <[email protected]>
lwt_bpf: Restore reserved headroom after xmit program
Josh Poimboeuf <[email protected]>
objtool/klp: Fix vmlinux klp relocations for EXPORT_SYMBOL_FOR_MODULES()
Gao Xiang <[email protected]>
erofs: guard on-disk algorithm IDs against Z_EROFS_COMPRESSION_MAX
Gao Xiang <[email protected]>
erofs: fix interlaced ztailpacking pclusters
Ilan Dudnik <[email protected]>
ksmbd: defer publishing granted locks to prevent UAF/double-free race
Namjae Jeon <[email protected]>
ksmbd: recognize replayed SMB2 lock sequences
ZhangGuoDong <[email protected]>
smb/server: preserve error status in smb2_handle_negotiate()
ZhangGuoDong <[email protected]>
smb/server: call ksmbd_proc_cleanup() on module init failure
ZhangGuoDong <[email protected]>
smb/server: abort initialization when proc setup fails
ZhangGuoDong <[email protected]>
smb/server: fix invalid pointer dereference in ksmbd_stop_durable_scavenger()
ZhangGuoDong <[email protected]>
smb/server: fix null-ptr-deref in ksmbd_ipc_tree_connect_request()
Namjae Jeon <[email protected]>
ksmbd: serialize oplock close with pending break ownership
Namjae Jeon <[email protected]>
ksmbd: add SMB3 request replay support
Namjae Jeon <[email protected]>
ksmbd: retain connection for pending notify work
Gael Blivet <[email protected]>
ksmbd: defer CHANGE_NOTIFY completion instead of STATUS_NOT_IMPLEMENTED
Gael Blivet <[email protected]>
ksmbd: add AAPL kAAPL_SERVER_QUERY create context support
Gael Blivet <[email protected]>
ksmbd: fix durable handle v2 default timeout units (60 -> 60000)
Namjae Jeon <[email protected]>
ksmbd: support access-based directory enumeration
Namjae Jeon <[email protected]>
ksmbd: free preauth sessions on connection teardown
Namjae Jeon <[email protected]>
ksmbd: do not advertise unimplemented CA support
Yunseong Kim <[email protected]>
ksmbd: validate ipc response length before dereferencing its fields
Yunseong Kim <[email protected]>
smb: smbdirect: release pending child sockets outside the handler lock
Yunseong Kim <[email protected]>
smb: smbdirect: avoid recursive listen.lock during cleanup
Yunseong Kim <[email protected]>
smb: smbdirect: destroy QP before mem pools on accept failure
Yunseong Kim <[email protected]>
smb: smbdirect: free completion queues with ib_free_cq()
Yunseong Kim <[email protected]>
ksmbd: fix slab-out-of-bounds read in ksmbd_alloc_user()
Enzo Matsumiya <[email protected]>
smb: server: fix leak of ksmbd_ipc_login_request_ext() returned buffer
Guangshuo Li <[email protected]>
ksmbd: Do not skip lock checks for single-byte ranges
Yiyang Chen <[email protected]>
bpf: Check pointer type for all atomic RMW paths
Marius Cristea <[email protected]>
hwmon: (emc1403) Drop hysteresis for low limit temperature
Szymon Wilczek <[email protected]>
hwmon: (coretemp) Fix core_data leak on CPUs without PTS
John Johansen <[email protected]>
apparmor: fix deadlock in complain-mode change_hat
Mike Rapoport (Microsoft) <[email protected]>
selftests/mm: thuge-gen: fix test_shmget() for PAGE_SIZE check
Hongyan Xu <[email protected]>
block: mtip32xx: synchronize ioctls with device removal
Yao Sang <[email protected]>
ublk: avoid teardown retry loop on xarray allocation failure
Yao Sang <[email protected]>
ublk: reject non-power-of-2 zone sizes in SET_PARAMS
Usama Arif <[email protected]>
blk-iocost: clear delay state when freeing policy data
Usama Arif <[email protected]>
blk-iolatency: clear delay state when freeing policy data
Niklas Cassel <[email protected]>
null_blk: serialize configfs attribute updates with device setup
Zizhi Wo <[email protected]>
null_blk: serialize configfs attribute stores with the lock
Zizhi Wo <[email protected]>
null_blk: reject per-device queue resize for shared tag set
Zizhi Wo <[email protected]>
null_blk: free zones array on device power-off
Zizhi Wo <[email protected]>
null_blk: free global tag_set on init error path
Zizhi Wo <[email protected]>
null_blk: register configfs subsystem after creating default devices
Zizhi Wo <[email protected]>
null_blk: use DEFINE_MUTEX for the file-scope mutex
Pengpeng Hou <[email protected]>
mailbox: riscv-sbi-mpxy: validate RPMI notification lengths
Huisong Li <[email protected]>
mailbox: pcc: Fix command timeout due to missed interrupt
Linmao Li <[email protected]>
mailbox: rockchip: disable pclk on probe failure and unbind
Jia Yang <[email protected]>
mailbox: qcom-cpucp: handle NULL data in send_data callback
Jia Yang <[email protected]>
mailbox: qcom-cpucp: fix PREEMPT_RT self-deadlock in IRQ handler
Arnaldo Carvalho de Melo <[email protected]>
perf dso: Replace assert with runtime check in dso__read_symbol()
Arnaldo Carvalho de Melo <[email protected]>
perf dso: Guard against cache underflow on short reads in dso_cache__memcpy()
Arnaldo Carvalho de Melo <[email protected]>
perf dso: Use stored fd error instead of stale errno in file_read() and file_size()
Arnaldo Carvalho de Melo <[email protected]>
perf dso: Guard close() against invalid fd in dso__decompress_kmodule_path()
Arnaldo Carvalho de Melo <[email protected]>
perf dso: Guard against errno==0 when dso__get_filename() returns NULL
Tejun Heo <[email protected]>
sched_ext: Make SCHED_CLASS_EXT select GENERIC_ALLOCATOR
Tao Cui <[email protected]>
sched_ext/scx_flatcg: Fix cvtime true-up on slice expiry
Tejun Heo <[email protected]>
sched_ext: Drop unlocked scx_rq_clock_invalidate() from scx_root_disable()
Karl Mehltretter <[email protected]>
crypto: lskcipher - propagate errors from unaligned crypt
Zhushuai Yin <[email protected]>
crypto: hisilicon/sec2 - fix CCM algorithm long packet failure
Michal Blaszczyk <[email protected]>
selftests/sched_ext: Fix flaky ddsp failure tests on busy systems
Israel Téllez García <[email protected]>
bpf: Fix pending_pos walk on 32-bit ring position wrap
Ihor Solodrai <[email protected]>
selftests/bpf: Fix selftest build after filter.h update
Rafael J. Wysocki <[email protected]>
ACPI: scan: Use acpi_bus_get_primary_device()
Rafael J. Wysocki <[email protected]>
ACPI: platform: Use acpi_bus_get_primary_device()
Rafael J. Wysocki <[email protected]>
ACPI: bus: Introduce acpi_bus_get_primary_device()
Hongyan Xu <[email protected]>
ACPI: scan: fix bus ID cleanup on device_add() failures
Vincent Donnefort <[email protected]>
ring-buffer: Remove trace_buffer::cpus
Pu Lehui <[email protected]>
riscv, bpf: Fix missing sign-ext for signed 1-byte and 2-byte kfunc args
Mykyta Yatsenko <[email protected]>
bpf: Fix arm64 KASAN false positive after bpf_throw
Andrii Nakryiko <[email protected]>
selftests/bpf: Use ping_command() for IPv6 pings in lwt_ip_encap
Linmao Li <[email protected]>
HID: tmff: Use 64-bit arithmetic for force feedback scaling
Xianglin Lin <[email protected]>
HID: multitouch: reclassify HTIX5288 to WIN_8_FORCE_MULTI_INPUT_NSMU
Pengpeng Hou <[email protected]>
ASoC: SOF: validate topology volume range before allocation
Steven Rostedt <[email protected]>
tracing: Have trace_event_update_all() only handle module that is loading
Karl Mehltretter <[email protected]>
HID: haptic: don't write an uninitialized value to unhandled usages
Aleksandr Nogikh <[email protected]>
ALSA: core: Fix use-after-free in snd_card_do_free()
Zhan Xusheng <[email protected]>
fs/ntfs3: reject out-of-range evcn in mi_enum_attr()
Zhan Xusheng <[email protected]>
fs/ntfs3: fix integer overflow in MFT cluster validation
Puranjay Mohan <[email protected]>
bpf, arm64: Fix stack-passed arguments for indirect trampolines
Jijie Shao <[email protected]>
net: page_pool: fix UAF in __page_pool_release_netmem_dma on xa_cmpxchg race
Bart Van Assche <[email protected]>
scsi: ufs: core: Set task state before io_schedule_timeout()
Chandrakanth Patil <[email protected]>
scsi: mpt3sas: Avoid freeing unallocated PCIe SGL buffers
Eduard Zingerman <[email protected]>
selftests/bpf: Fix for veristat file/prog filters processing
Phillip Lougher <[email protected]>
Squashfs: check block offset is not negative
Krystian Kaniewski <[email protected]>
ocfs2: fix circular locking dependency in ocfs2_init_acl()
ZhengYuan Huang <[email protected]>
ocfs2: validate DIO orphan slot during inode read
ZhengYuan Huang <[email protected]>
ocfs2: validate orphan slot during inode read
Yuan Chen <[email protected]>
bpftool: Fix double close in map dump
Bijan Tabatabai <[email protected]>
x86/pkeys: Fix pkey_alloc() return value when pkeys are not supported
Rui Qi <[email protected]>
selftests/cgroup: Preserve CPU hotplug write errors
Maurizio Lombardi <[email protected]>
nvmet: fix max_qid race between configfs and controller allocation
John Keeping <[email protected]>
ALSA: seq: midi: Serialize input teardown with event_input
Takashi Iwai <[email protected]>
ALSA: seq: midi: Optimize event_input locking with RCU
Yuho Choi <[email protected]>
clocksource/drivers/armada: Unwind timer clock on init failure
Marek Szyprowski <[email protected]>
clocksource/drivers/samsung_pwm: Switch to raw_spinlock_t type
Guangshuo Li <[email protected]>
clocksource/drivers/clps711x: Do not unmap clocksource MMIO
Peter Oberparleiter <[email protected]>
s390/debug: Fix deadlock during unregister
Yuho Choi <[email protected]>
xenbus: Unregister reboot notifier on init failure
Waiman Long <[email protected]>
sched/isolation: Defer freeing of cpumask memblock memory to initcall
Ricardo B. Marlière (SUSE) <[email protected]>
selftests/namespaces: Fix racy pipe handshake in timens and pidns_separate
Hui Zhu <[email protected]>
bpf: Fix UAF in bpf_trampoline_multi_attach_free on update failure
Willem de Bruijn <[email protected]>
selftests: drv-net: so_txtime: fix qdisc replace with handle
Henrik Grimler <[email protected]>
power: supply: bq27xxx: bq27z561: fix invalid AverageEnergy address
Henrik Grimler <[email protected]>
power: supply: bq27xxx: bq28z610: fix invalid AverageEnergy address
Henrik Grimler <[email protected]>
power: supply: bq27xxx: bq27520g4: fix REG_TTES address
Matti Vaittinen <[email protected]>
power: supply: bd99954: Drop bad register fields
Matti Vaittinen <[email protected]>
power: supply: bd71828: Do not hide errors
Matti Vaittinen <[email protected]>
power: supply: bd71828: Drop duplicate power-supply property
Matti Vaittinen <[email protected]>
power: supply: bd71828: Fix current direction
Matti Vaittinen <[email protected]>
power: supply: bd71815: Fix temperature reading
Josh Poimboeuf <[email protected]>
objtool/klp: Fix .kcfi_traps special section extraction
Puranjay Mohan <[email protected]>
objtool/klp: Fix vmlinux .klp.symid link error for .exitcall.exit symbols
Krishna Chaitanya Chundru <[email protected]>
PCI/ASPM: Disable/restore ASPM on every function for multi-function devices
Felix Gu <[email protected]>
spi: img-spfi: don't disable runtime PM on DMA deferred probe
bui duc phuc <[email protected]>
ASoC: spacemit: advertise only DMA-backed DAI streams
Vineet Gupta <[email protected]>
selftests/bpf: vmtest.sh: Preserve command quoting when running in the VM
David Matlack <[email protected]>
selftests: harness: Mark test fixture objects __maybe_unused
Daniel Borkmann <[email protected]>
bpf, s390: Clear fetch destination on faulting arena atomic
Daniel Borkmann <[email protected]>
bpf, arm64: Clear fetch destination on faulting arena atomic
Daniel Borkmann <[email protected]>
bpf, x86: Clear fetch destination on faulting arena atomic
Daniel Borkmann <[email protected]>
bpf: Derive the atomic load register in one place
Daniel Borkmann <[email protected]>
bpf, riscv: Clear fetch destination on faulting arena atomic
Mohammad Abu-Khader <[email protected]>
kunit: tool: fix _list_tests filtering wrong variable when list has TAP prefix
Dan Carpenter <[email protected]>
drm/amd/pm: silence uninitialized variable warnings
Arnaldo Carvalho de Melo <[email protected]>
perf build: Remove leftover feature tests for removed cxx and clang support
Julian Braha <[email protected]>
backlight: ktd2801: Fix unmet dependency on GPIOLIB
Junjie Cao <[email protected]>
backlight: aw99706: Validate all DT property values consistently
Charles Keepax <[email protected]>
mfd: cs42l43: Fix regmap defaults ordering
Will Deacon <[email protected]>
arm64/efi: Avoid voluntary preemption with efi_mm installed
Christoph Hellwig <[email protected]>
iomap: iomap_bio_read_folio_range_sync is missing a call to bio_uninit
Karl Mehltretter <[email protected]>
super: fix dying superblock warning messages
Krishna Chaitanya Chundru <[email protected]>
PCI/ASPM: Use pcie_capability_clear_and_set_word() for ASPM disable/restore
Josh Poimboeuf <[email protected]>
objtool/klp: Fix relocations for EXPORT_SYMBOL_FOR_MODULES() symbols
Josh Poimboeuf <[email protected]>
objtool/klp: Don't match local symbols against exports
Josh Poimboeuf <[email protected]>
objtool/klp: Fix cross-module klp relocation section naming
Takashi Sakamoto <[email protected]>
firewire: core: fix memory leak in error path of build_tree()
Takashi Sakamoto <[email protected]>
firewire: core: validate parent port count before allocating nodes in build_tree()
Takashi Sakamoto <[email protected]>
firewire: core: consolidate port counting in build_tree()
Takashi Sakamoto <[email protected]>
firewire: core: add KUnit tests for failure of tree building
Takashi Sakamoto <[email protected]>
firewire: core: add KUnit tests for successful tree building
Takashi Sakamoto <[email protected]>
firewire: core: add KUnit test skeleton for node tree
Ran Hongyun <[email protected]>
UBI: fix two issues in the ubi.mtd MODULE_PARM_DESC
Rosen Penev <[email protected]>
ASoC: xilinx: formatter_pcm: fix stream_data leak on open error
Yuho Choi <[email protected]>
mtd: ubi: Release device reference on busy detach
Josh Poimboeuf <[email protected]>
objtool/klp: Ignore replacement offset of empty x86 alternatives
Josh Poimboeuf <[email protected]>
objtool/klp: Fix size of empty special section entries
Josh Poimboeuf <[email protected]>
objtool/klp: Fix vmlinux .klp.symid link error for .no_trim_symbol symbols
Yuho Choi <[email protected]>
ubi: Fix rollback for explicit UBI device numbers
Ning Ding <[email protected]>
bpf: Compare iterator types during state pruning
Zhihao Cheng <[email protected]>
UBI: fastmap: Pass to_be_tortured when reusing old fastmap PEBs
Zhihao Cheng <[email protected]>
UBI: Preserve torture flag when rescheduling failed erasures
LiangCheng Wang <[email protected]>
ASoC: fsl-asoc-card: defer probe when the CPU DAI device is not ready
bui duc phuc <[email protected]>
ASoC: pxa: Use devm_clk_get_optional() for extclk clock
Willem de Bruijn <[email protected]>
idpf: add missing cpu_to_le32 in idpf_tx_splitq_build_flow_desc
Robert Malz <[email protected]>
ice: acquire NVM lock around each flash read
Petr Oros <[email protected]>
ice: clear the default forwarding VSI rule when releasing a VSI
Przemyslaw Korba <[email protected]>
ice: fall back to SBQ when LL PHY timer interface times out
Zhu Yanjun <[email protected]>
RDMA/cma: Fix WARNING in res_to_rt
Fan Wu <[email protected]>
RDMA/cxgb4: Free debugfs on registration failure
Guangshuo Li <[email protected]>
dmaengine: qcom-bam-dma: fix autosuspend cleanup during removal
Cristian Ciocaltea <[email protected]>
phy: rockchip: samsung-hdptx: Handle uncommitted PHY config changes
Cristian Ciocaltea <[email protected]>
phy: rockchip: samsung-hdptx: Fix rate recalculation for 3.2GHz FRL
Cristian Ciocaltea <[email protected]>
phy: rockchip: samsung-hdptx: Guard against clk rate integer underflow
Cristian Ciocaltea <[email protected]>
phy: rockchip: samsung-hdptx: Prevent divide-by-zero when computing clk rate
Cristian Ciocaltea <[email protected]>
phy: rockchip: samsung-hdptx: Fix rate recalculation for high bpc
HyeongJun An <[email protected]>
ALSA: seq: Don't leak the extension cell pointer in the bounce payload
Yun Zhou <[email protected]>
nfc: nci: fix use of uninitialized memory in CORE_INIT_RSP parsing
Linmao Li <[email protected]>
nfc: digital: Do not dump a NULL response in command completion
Yinhao Hu <[email protected]>
nfc: pn533: hold a reference to the request skb during send_frame
Doruk Tan Ozturk <[email protected]>
nfc: llcp: bound SNL TLV parsing to the skb and add length checks
Zhenghang Xiao <[email protected]>
nfc: nci: fix double completion race in nci_data_exchange_complete
Breno Leitao <[email protected]>
nfc: llcp: read llcp_sock->local under the socket lock in getsockopt
Breno Leitao <[email protected]>
nfc: llcp: avoid userspace overflow on invalid optlen
Liang Hao <[email protected]>
hrtimer: Account nr_retries on recovered interrupt retries
Chao Shi <[email protected]>
nvme: reject passthrough of driver-managed Set Features
Yang Xiuwei <[email protected]>
nvme/ioctl: check SUBMIT_IO with nvme_cmd_allowed()
Guixin Liu <[email protected]>
nvmet: fix NULL pointer dereference in nvmet_execute_identify_ns_zns()
Sven Peter <[email protected]>
nvme-apple: Drop the PRP null check chicken bit
Sven Peter <[email protected]>
nvme-apple: Require page aligned buffers on the admin queue
Sven Peter <[email protected]>
nvme: Add a quirk for page aligned admin queue buffers
Sven Peter <[email protected]>
nvme-apple: Never set the opcode in the NVMMU TCB
Sven Peter <[email protected]>
nvme-apple: Don't set a DMA direction for commands without a data transfer
Sven Peter <[email protected]>
nvme-apple: Destroy the admin queue on removal
Guixin Liu <[email protected]>
nvmet: fix heap out-of-bounds read in nvmet_auth_negotiate()
Ilya Leoshkevich <[email protected]>
s390/irqflags: Add out-of-line definitions of arch_local_irq_*() for KMSAN
Josh Poimboeuf <[email protected]>
arm64: bti: Disable in-kernel BTI with recent versions of Clang
Jorijn van der Graaf <[email protected]>
ASoC: qcom: q6apm: keep the graph start count in sync with the DSP
Babanpreet Singh <[email protected]>
spi: sprd-adi: Fix probe succeeding without registering the controller
Vladimir Murzin <[email protected]>
arm64: entry: Avoid unnecessary local_irq_disable() on kernel exit
Esteban Urrutia <[email protected]>
phy: qcom: qmp-combo: Drop qmp_v4_calibrate_dp_phy
Esteban Urrutia <[email protected]>
phy: qcom: qmp-combo: Correct pre-emphasis table for QMP v4 DP PHYs
Lad Prabhakar <[email protected]>
phy: renesas: rcar-gen3-usb2: Ignore missing VBUS regulator
Mukesh Kumar Chaurasiya (IBM) <[email protected]>
rust: uapi: replace direct asm-generic/ioctl.h include with linux/ioctl.h
Vasant Hegde <[email protected]>
iommu/amd: Fix incorrect device ID in invalid PASID error message
John Johansen <[email protected]>
apparmor: fix unconfined user namespace restriction forced stack
Michael Walle <[email protected]>
powerpc/configs: enable CONFIG_RAS to fix EDAC support
Willem de Bruijn <[email protected]>
selftests: drv-net: so_txtime: only send test traffic to sch_etf
Mohsin Bashir <[email protected]>
selftests: drv-net: Test queue stall upon reconfig
Jia Wang <[email protected]>
PCI: ultrarisc: Get and enable DP1000 PCIe controller clocks
Kuniyuki Iwashima <[email protected]>
amt: Don't support cross-netns setup.
Simon Glass <[email protected]>
pinctrl: rockchip: Decode drive strength in the get function
Liang Luo <[email protected]>
selftests/sched_ext: Check skeleton open failure in exit test
Rui Qi <[email protected]>
selftests/cgroup: Avoid awk -e in cpuset tests
Guopeng Zhang <[email protected]>
cgroup/cpuset: Use WRITE_ONCE() for shared prs_err updates
Guixin Liu <[email protected]>
nvme-pci: release descriptor pools on probe failure
Guixin Liu <[email protected]>
nvmet: propagate percpu_ref_init() failure in nvmet_ns_enable()
Zhengrong Li <[email protected]>
nvmet: fix Reservation Register Replace for unregistered host with IEKEY
Chuck Lever <[email protected]>
NFS: Return a delegation the client fails to record
Runyu Xiao <[email protected]>
sunrpc: xprtsock: annotate shared socket callbacks with READ_ONCE/WRITE_ONCE
Weiming Shi <[email protected]>
SUNRPC: check rpc_sockaddr2uaddr() return value in rpcb_register_inet4/6
surendra <[email protected]>
hwmon: (pmbus/ltc4283) Add missing MODULE_DEVICE_TABLE for OF match table
Thomas Weißschuh <[email protected]>
hwmon: (cros_ec) Synchronize EC access from the thermal device callbacks
Thomas Weißschuh <[email protected]>
hwmon: (cros_ec) Store the hwmon device in cros_ec_hwmon_priv
Thomas Weißschuh <[email protected]>
hwmon: (cros_ec) Register the thermal devices after the hwmon ones
Marco Elver <[email protected]>
arm64: Disable KCSAN instrumentation in delay.o
Chuck Lever <[email protected]>
xdrgen: Fix opaque and string encoders for unbounded members
Chuck Lever <[email protected]>
xdrgen: Add XDR width macros for short integer types
Chuck Lever <[email protected]>
xdrgen: Do not declare union XDR functions in the definitions header
Chuck Lever <[email protected]>
xdrgen: Emit a blank line ahead of enum declarations
Chuck Lever <[email protected]>
lockd: Regenerate NLMv4 XDR code
Jeff Layton <[email protected]>
nfsd: add protocol support for CB_NOTIFY
Chuck Lever <[email protected]>
NFSD: Release the export reference when reaping open stateids
Pablo Neira Ayuso <[email protected]>
netfilter: nft_ct: move custom expectation support to helper
Florian Westphal <[email protected]>
netfilter: nft_ct: support expectation creation for natted flows
Karl Mehltretter <[email protected]>
m68k: Fix backtraces for non-running tasks
Yifei Gao <[email protected]>
media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path
Yifei Gao <[email protected]>
media: amd: isp4: release partial allocations in isp4if_alloc_fw_gpumem()
Yuho Choi <[email protected]>
hwrng: imx-rngc - Disable clock on registration failure
Ahsan Atta <[email protected]>
crypto: qat - remove dead ADF_HEX code
Thorsten Blum <[email protected]>
crypto: qat - use 2-arg strscpy where destination size is known
Lu Baolu <[email protected]>
iommu/vt-d: Flush context cache with correct SID when tearing down aliases
Lu Baolu <[email protected]>
iommu/vt-d: Tear down scalable-mode context on probe failure
Lu Baolu <[email protected]>
iommu/vt-d: Fix iopf_refcount leak on RID domain replacement
Lu Baolu <[email protected]>
iommu/vt-d: Clear Present bit before tearing down copied context entry
Desnes Nunes <[email protected]>
iommu/vt-d: Fix UCTP context table slot when copying root entries
Andrew Jones <[email protected]>
iommu/dma: Restore locking around msi_page_list
Karl Mehltretter <[email protected]>
fbdev: clps711x-fb: Remove unreachable unregister_framebuffer() call
Danila Chernetsov <[email protected]>
fbdev: kyro: Validate overlay viewport coordinates
Myeonghun Pak <[email protected]>
fbdev: tdfxfb: fix PCI enable cleanup with pcim_enable_device()
Fabrice Derepas <[email protected]>
apparmor: fix integer overflow in verify_tags() bounds check
Ian Rogers <[email protected]>
perf synthetic-events: Fix divide by zero in perf_event__synthesize_threads
Ian Rogers <[email protected]>
perf python: Fix memory leak in pyrf__metrics_cb
Ian Rogers <[email protected]>
perf python: Fix count_values memory leak in pyrf_evsel__read
Ian Rogers <[email protected]>
perf python: Validate attribute setters in pyrf_evsel
Ian Rogers <[email protected]>
perf python: Validate CPU and thread maps in pyrf_evsel__open
Ian Rogers <[email protected]>
perf python: Handle Py_None for thread and cpu maps
Ian Rogers <[email protected]>
perf python: Check counts_values size in set_values
Ian Rogers <[email protected]>
perf test: Fix skiplist leak in cmd_test
Ian Rogers <[email protected]>
perf synthetic-events: Fix uninitialized pthread_join
Ian Rogers <[email protected]>
perf python: Fix memory leak in pyrf_evlist__get_pollfd
Ian Rogers <[email protected]>
perf tools: Fix sb_evlist leaks in top and record
Ian Rogers <[email protected]>
perf stat: Fix evsel_list leak in cmd_stat
Ian Rogers <[email protected]>
perf script: Fix metric_evlist leak in script_find_metrics
Rosen Penev <[email protected]>
ARM: dts: helios4: add SATA regulator supplies
Rosen Penev <[email protected]>
ARM: dts: helios4: add vcc-supply to GPIO expander
Rosen Penev <[email protected]>
ARM: dts: helios4: add vcc-supply to EEPROM
Tomáš Macholda <[email protected]>
arm64: dts: turris-mox: fix usb3 phys
Tommaso Merciai <[email protected]>
i3c: renesas: Don't register devices when ENTDAA times out
Claudiu Beznea <[email protected]>
i3c: renesas: Follow a unified pattern for transfer and command initialization
Claudiu Beznea <[email protected]>
i3c: renesas: Return immediately if there is no transfer
Sanghyun Park <[email protected]>
bpf: Fix mmap_lock leak in irq_work path
Guodong Xu <[email protected]>
riscv: cpufeature: Clarify ISA spec version for canonical order
Victor Nogueira <[email protected]>
net/sched: cls_api: fix teardown of an adopted proto on insert-race loss
Nikhil Gautam <[email protected]>
iio: light: gp2ap002: re-enable irq if runtime suspend fails
Nikhil Gautam <[email protected]>
iio: light: gp2ap002: Fix unbalanced runtime PM on repeated event writes
Vidhu Sarwal <[email protected]>
iio: light: opt4060: Fix pointer type passed to div_u64_rem()
Pu Lehui <[email protected]>
bpf, cgroup: Fix storage null-ptr-deref after replacing prog
Alvin Šipraga <[email protected]>
pinctrl: fix PINCTRL_GENERIC_MUX not always being selectable
Ali Ahmet Memis <[email protected]>
Bluetooth: MSFT: validate evt_prefix_len against the response length
Guangshuo Li <[email protected]>
Bluetooth: btmtksdio: fix usage_count leak when autosuspend_delay is negative
Linmao Li <[email protected]>
Bluetooth: MGMT: free the HCI command when it is cancelled
Linmao Li <[email protected]>
Bluetooth: MGMT: free the mesh send cancel command when it is cancelled
Linmao Li <[email protected]>
Bluetooth: hci_sync: free the advertising instance on the failure and cancel paths
Linmao Li <[email protected]>
Bluetooth: hci_conn: fix the SCO setup context lifetime
Zijun Hu <[email protected]>
Bluetooth: btintel: Fix diagnostics event detection
Pauli Virtanen <[email protected]>
Bluetooth: L2CAP: use proto_lock for l2cap_data to fix l2cap_disconn_ind
HyeongJun An <[email protected]>
Bluetooth: virtio_bt: avoid OOB read of build info string
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: fix edge-triggered interrupts handling
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: fix IRQ mask/unmask code
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: add missed IRQ resource helpers
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: fix getting gpiochip/pinctrl pointers in the IRQ handling code
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: add missed get_direction() function for gpio_chip
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: an7583: fix spi group pins
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: an7583: fix muxing of non-gpio default pins
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: an7581: fix mux/conf of pcie_reset pins
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: an7583: fix I2C0_SDA_PD register bit order
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: an7581: fix pinconf of i2c_scl/i2c_sda pins
Mikhail Kshevetskiy <[email protected]>
pinctrl: airoha: fix mdio bitfield names
Aaron Tomlin <[email protected]>
perf sched: Handle missing trace samples in pipe mode
Aaron Tomlin <[email protected]>
perf sched: Suppress latency table output when trace samples are missing
Qu Wenruo <[email protected]>
btrfs: qgroup: fix a wrong length calculation in qgroup_free_reserved_data()
Qu Wenruo <[email protected]>
btrfs: use aligned range for locking in extent_fiemap()
Johannes Thumshirn <[email protected]>
btrfs: zoned: don't clobber the extent buffer when zeroing it out
Johannes Thumshirn <[email protected]>
btrfs: zoned: flush active metadata block group at btree_writepages() start
Yichong Chen <[email protected]>
btrfs: retry verity reads for not-uptodate Merkle folios
Leo Martins <[email protected]>
btrfs: replace writeback inhibition xarray with a fixed inline buffer
Sun YangKai <[email protected]>
btrfs: check if root is readonly when setting posix acl
Qu Wenruo <[email protected]>
btrfs: make sure EXTENT_BUFFER_READING is cleared under refs_lock
Qu Wenruo <[email protected]>
btrfs: fix a lockdep caused by path resolution during device scan
Qu Wenruo <[email protected]>
btrfs: always wait for ordered extents to avoid OE races
Filipe Manana <[email protected]>
btrfs: defrag: fix deadlock between defrag and delalloc space reservation
Johannes Thumshirn <[email protected]>
btrfs: zoned: don't force read-only on transient -EAGAIN from reloc merge
Yang Xiuwei <[email protected]>
scsi: sd: Fix sd_done() sense handling condition
Yang Xiuwei <[email protected]>
scsi: sd: Fix special_vec mempool leak when scsi_alloc_sgtables() fails
Yang Xiuwei <[email protected]>
scsi: sd: Fix error handling in sd_probe() after large pool creation failure
Tanushree Shah <[email protected]>
perf trace-event: Fix integer truncation in do_read() and skip()
Zijun Hu <[email protected]>
Bluetooth: btusb: QCA: Fix populating devcoredump fields on unenabled devices
Zijun Hu <[email protected]>
Bluetooth: btusb: Record matched usb_device_id into btusb_data
Zijun Hu <[email protected]>
Bluetooth: btusb: Fix BD_ADDR byte order in btusb_set_bdaddr_wcn6855()
Zijun Hu <[email protected]>
Bluetooth: btqca: Fix qca_set_bdaddr() waiting for wrong HCI event
Ricardo Neri <[email protected]>
sched/fair: Check CPU capacity before comparing group types during load balance
Ricardo Neri <[email protected]>
sched/fair: Also gate overloaded status update for SD_ASYM_CPUCAPACITY
Adrian Hunter <[email protected]>
perf/x86/intel/pt: Fix stop/start with no update
Adrian Hunter <[email protected]>
perf/x86/intel/pt: Use bitwise access for PERF_HES_STOPPED
Adrian Hunter <[email protected]>
perf/x86/intel/pt: Factor out pt_config_enable()
Yuho Choi <[email protected]>
ACPI: video: Release PCI device reference after lookup
surendra <[email protected]>
thermal/drivers/spacemit: Validate clamped trip thresholds
Kazuma Kondo <[email protected]>
ACPI: PCI: Avoid misleading _OSC messages for non-PCIe host bridges without _OSC
Peter Ujfalusi <[email protected]>
ASoC: tas675x: sort the register default table
Kamal Wadhwa <[email protected]>
regulator: qcom-rpmh: Fix PMIC5 BOB bypass mode handling
Daniel Borkmann <[email protected]>
bpf, arm64: Fix exception table metadata for arena load-acquire
Daniel Borkmann <[email protected]>
bpf, x86: Fix exception table metadata for arena load-acquire
Daniel Borkmann <[email protected]>
bpf, riscv: Add and use bpf_atomic_is_load_acq() helper
Daniel Borkmann <[email protected]>
bpf: Reject load-acquire from pointers requiring fault protection
Ben Horgan <[email protected]>
arm_mpam: Disable driver unbind to avoid UAF
Ben Horgan <[email protected]>
arm_mpam: Fix a NULL pointer dereference on unbinding after an error interrupt
James Clark <[email protected]>
perf: arm_pmuv3: Zero initialize hw_id branch stack field
Yeoreum Yun <[email protected]>
coresight: etm4x: missing cscfg_csdev_disable_active_config() in perf enable
Yeoreum Yun <[email protected]>
coresight: etm4x: fix leaked trace id
Yeoreum Yun <[email protected]>
coresight: etm4x: fix underflow for usage of (nrseqstate - 1)
Yeoreum Yun <[email protected]>
coresight: etm4x: fix wrong check of etm4x_sspcicrn_present()
Bruce Johnston <[email protected]>
md/raid1: don't set array_frozen in raid1_takeover()
Yu Kuai <[email protected]>
md/md-llbitmap: stop daemon timer rearm on destroy
Yu Kuai <[email protected]>
md/md-llbitmap: prevent create failure bitmap UAF
Yu Kuai <[email protected]>
md: avoid stale clone I/O accounting timestamps
Yu Kuai <[email protected]>
md: wait for behind writes before destroying bitmap
Yu Kuai <[email protected]>
md/raid5: round bitmap stripes with sector division
Esteban Urrutia <[email protected]>
phy: qcom: qmp-pcie: Add pcs_lane1 offset to V5 offsets
Loic Poulain <[email protected]>
phy: qcom: qmp-usb: Fix possible NULL-deref on early runtime suspend
Loic Poulain <[email protected]>
phy: qcom: snps-femto-v2: Fix possible NULL-deref on early runtime suspend
Loic Poulain <[email protected]>
phy: qcom: qmp-usb-legacy: Fix possible NULL-deref on early runtime suspend
Mohd Ayaan Anwar <[email protected]>
phy: qcom: sgmii-eth: vote for both voltage rails with correct current loads
Linkai Gong <[email protected]>
soc: fsl: qe: check platform_driver_register() in qe_ic_of_init()
Jan Kara <[email protected]>
ext4: fix transaction overflow during writeback
Jan Kara <[email protected]>
ext4: teach ext4_meta_trans_blocks() about number of allocated extents
Muhammad Usama Anjum <[email protected]>
selftests/mm: unpoison pages in memory-failure teardown
Yichong Chen <[email protected]>
hugetlbfs: release subpool on fill_super failure
Simon Glass <[email protected]>
pinctrl: rockchip: Restrict the RV1103B 2-bit drive type to bank 2
Simon Glass <[email protected]>
pinctrl: rockchip: Reset the pin count when recalculating SoC data
Prathamesh Shete <[email protected]>
pinctrl: tegra264: fix DAP2 DIN/DOUT pin assignment
Mukesh Ojha <[email protected]>
firmware_loader: do not queue completed sysfs fallback requests
Manish Rangankar <[email protected]>
scsi: qla2xxx: Remove redundant VPD flash read in sysfs read path
Aksh Garg <[email protected]>
PCI: cadence: Fix host/endpoint dependencies for cadence-plat driver
Timur Kristóf <[email protected]>
drm/amdgpu/gfx6: Use PFP on the compute queues too
Timur Kristóf <[email protected]>
drm/amdgpu/gfx6: Fixup emitting SWITCH_BUFFER packets
Tanushree Shah <[email protected]>
perf trace-event: Fix buffer overflow in read_string()
Gerald Loacker <[email protected]>
phy: rockchip: phy-rockchip-inno-csidphy: fix rk1808 hsfreq table
Felix Gu <[email protected]>
phy: sunplus: fix error handling in sp_uphy_init()
Felix Gu <[email protected]>
phy: renesas: rcar-gen2: Fix double of_node_put on phy creation failure
Biju Das <[email protected]>
phy: renesas: phy-rcar-gen3-usb2: Fix devm action registration for disabled VBUS regulator
Meghana Malladi <[email protected]>
arm64: dts: ti: k3-am64: Fix MDIO clock reference for ICSSG0 node
Takashi Iwai <[email protected]>
ALSA: hda: cix-ipbloq: Avoid build with 32bit archs
Jan Kara <[email protected]>
ext4: fix spurious message about orphan cleanup on RO fs
Harry Wentland <[email protected]>
drm/amd/display: Resize MST HDCP per-connector arrays to 32
Timur Kristóf <[email protected]>
drm/amdgpu/gfx6: Fixup emit_cntxcntl()
Steve Dunnagan <[email protected]>
leds: gpio: Clear error pointers for skipped LEDs
Arnd Bergmann <[email protected]>
leds: gpio: Make legacy gpiolib interface optional
Sven Peter <[email protected]>
mfd: macsmc: Fix key count endianness annotation
Qiang Yu <[email protected]>
drm/amdgpu: read TRUNCATE_COORD_MODE on gfx12
Alex Deucher <[email protected]>
drm/gfx12: Program DB_RING_CONTROL
Pengpeng Hou <[email protected]>
mfd: iqs62x: Reject zero-length firmware records
Mark Brown <[email protected]>
tools: Ensure tools copy of linux/filter.h exports the UAPI
Pengpeng Hou <[email protected]>
mfd: rave-sp: validate received frame payload lengths
Vladimir Murzin <[email protected]>
arm64: hibernate: Restore DAIF state on error
Ada Couprie Diaz <[email protected]>
arm64: hibernate: mask DAIF before restoring hibernated kernel
Felix Fietkau <[email protected]>
wifi: mac80211: skip default WMM setup for AP_VLAN links
Leon Romanovsky <[email protected]>
RDMA/erdma: restrict the driver to little-endian systems
Petr Pavlu <[email protected]>
module/dups: Fix use-after-free in kmod_dup_req lifetime handling
Petr Pavlu <[email protected]>
module/dups: Inform duplicate requests about the result directly
Naveen Kumar Chaudhary <[email protected]>
module: use strscpy() to copy module names in stats and dup tracking
Shuangpeng Bai <[email protected]>
RDMA/siw: Fix use-after-free in siw_accept()
Yehyeong Lee <[email protected]>
IB/isert: post the full-feature receive buffers after session registration
Yehyeong Lee <[email protected]>
IB/isert: delay the final Login Response until the session is registered
Bard Liao <[email protected]>
soundwire: cadence_master: add BRA_NumBytes[8] support
Karl Mehltretter <[email protected]>
cpufreq: imx6q: fix out-of-bounds write when probed more than once
Karl Mehltretter <[email protected]>
cpufreq: imx6q: fix devres accumulation across driver rebind
Priya Bala Govindasamy <[email protected]>
rust: cpufreq: Fix temporary write in Registration::bios_limit_callback
Priya Bala Govindasamy <[email protected]>
rust: cpufreq: Add CPUFREQ_TABLE_END as last table entry in TableBuilder::to_table
Jernej Skrabec <[email protected]>
drm/sun4i: hdmi-phy: Fix H6 8-bit MPLL config at 594 MHz
Jernej Skrabec <[email protected]>
drm/sun4i: Drop node references while building component list
Jernej Skrabec <[email protected]>
drm/sun4i: dw-hdmi: Drop TCON TOP port reference
Jernej Skrabec <[email protected]>
drm/sun4i: tcon: Drop remote endpoint reference
Jernej Skrabec <[email protected]>
drm/sun4i: crtc: Propagate layer initialization error
Jernej Skrabec <[email protected]>
drm/sun4i: hdmi: Don't leak sync polarity bits into packet control
Jernej Skrabec <[email protected]>
drm/sun4i: tcon: Drop TCON TOP device reference
Jernej Skrabec <[email protected]>
drm/sun4i: tcon: Set output mux for DSI and LVDS
Jernej Skrabec <[email protected]>
drm/sun4i: tcon-top: Keep mixer routes distinct
Jernej Skrabec <[email protected]>
drm/sun4i: vi scaler: Restore opaque alpha in video modes
Jernej Skrabec <[email protected]>
drm/sun4i: vi scaler: Fix coefficient selection
Jernej Skrabec <[email protected]>
drm/sun4i: Fix V3s YUV scanline size
Arnaldo Carvalho de Melo <[email protected]>
perf c2c: Clean up registered formats on c2c_hists__init() and c2c_hists__reinit() failure
Arnaldo Carvalho de Melo <[email protected]>
perf c2c: Fix error masking, OOM, and unchecked caller errors in hpp_list__parse()
Alexey Charkov <[email protected]>
clk: rockchip: rk3576: fix source muxes for SPI0..SPI4
Leon Hwang <[email protected]>
bpf: Fix sleepable check for tracing/lsm prog
Jiri Olsa <[email protected]>
bpf: Clear buf on error in __bpf_get_task_stack
Jiri Olsa <[email protected]>
bpf: Remove trace_in argument from __bpf_get_stack
Jiri Olsa <[email protected]>
bpf: Factor callchain_finalize function from __bpf_get_stack
Jiri Olsa <[email protected]>
bpf: Factor callchain_store function from __bpf_get_stack
Cen Zhang <[email protected]>
ocfs2: o2hb: quiesce negotiate handlers and timeout work
Cen Zhang <[email protected]>
ocfs2: synchronize heartbeat callbacks with o2net teardown
Arnaldo Carvalho de Melo <[email protected]>
perf libbfd: Fix memory leaks and NULL fclose in BPF disassembly
Arnaldo Carvalho de Melo <[email protected]>
perf bpf: Add PROG_TAGS to required arrays in __bpf_event__print_bpf_prog_info()
Arnaldo Carvalho de Melo <[email protected]>
perf header: Use write lock when translating BPF prog info pointers
Arnaldo Carvalho de Melo <[email protected]>
perf libbfd: Validate BPF prog info arrays before pointer cast
Farhan Ali <[email protected]>
vfio/pci: Avoid mapping BARs for devices with non-mappable BARs
Xie Yuanbin <[email protected]>
ARM: 9485/1: mm: acquire mmap write lock around show_pte() for user faults
Xie Yuanbin <[email protected]>
ARM: 9484/1: enable interrupts when unhandled user faults are triggered
Karl Mehltretter <[email protected]>
ARM: 9483/1: select HAVE_POSIX_CPU_TIMERS_TASK_WORK
Linus Walleij <[email protected]>
ARM: 9481/2: breakpoint: CFI breakpoints only on demand
Yehyeong Lee <[email protected]>
RDMA/srp: fix heap information leak on a truncated SRP_CRED_REQ
Cheng Xu <[email protected]>
RDMA/erdma: Hold QP references for AE and CM processing
Cheng Xu <[email protected]>
RDMA/erdma: Hold CQ references when processing EQ events
Yuntao Wang <[email protected]>
kbuild: fix modules.builtin(.modinfo) targets in the top-level Makefile
Robertus Diawan Chris <[email protected]>
modpost: prevent leak when early return no suffix .o in read_symbols()
Sergei Litvin <[email protected]>
scripts/tags.sh: Prevent binary files appearing in cscope.files
Rafael J. Wysocki <[email protected]>
intel_idle: Avoid using deep idle states during initialization
Marek Marczykowski-Górecki <[email protected]>
xen/xenbus: check otherend_id only after it has been initialized
Rafael J. Wysocki <[email protected]>
thermal: hwmon: Remove hwmon class device along with its parent
Daniel Borkmann <[email protected]>
bpf: Check load-acquire src ptr type before the load
Eliot Courtney <[email protected]>
gpu: nova-core: correct FRTS vidmem offset calculation
John Hubbard <[email protected]>
gpu: nova-core: clean up FSP FRTS comments
Zhi Wang <[email protected]>
gpu: nova-core: factor out common FSP message header
Mika Westerberg <[email protected]>
thunderbolt: stream: Fix possible short reads/writes
Mika Westerberg <[email protected]>
thunderbolt: stream: Restore consumer if copying from iter fails
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: talos-evk: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sa8155p-adp: Fix swapped USB and UFS QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: eliza-mtp: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: lemans: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: glymur: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: kaanapali: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sar2130p: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8750: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8650: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: purwa: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: hamoa: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sc8180x: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sc7280: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sc7180: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm7225-fairphone-fp4: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs6490: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcm6490: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs8550-aim300: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8550: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8450: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8350: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8250: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8150: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sdm850: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sdm845: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sa8540p: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sc8280xp-blackrock: Fix swapped USB QMP PHY vdda-phy/vdda-pll supplies
Sayali Patil <[email protected]>
selftests/mm: fix ternary operator precedence in ksm_tests
Sayali Patil <[email protected]>
selftests/mm: fix ksm NUMA merge test for systems with memoryless NUMA nodes
Sayali Patil <[email protected]>
selftests/mm: handle EINVAL when configuring gigantic hugepages
Hongfu Li <[email protected]>
selftests/mm: fix memleak in migration benchmark
Pu Lehui <[email protected]>
bpf, cgroup: Fix invalid storage access after __cgroup_bpf_attach failed
Mukesh Ojha <[email protected]>
remoteproc: fix OOB read via signed offset in rsc_table_for_each_entry()
Krzysztof Wilczyński <[email protected]>
PCI/sysfs: Add lockdown checks to legacy I/O and memory handlers
Krzysztof Wilczyński <[email protected]>
PCI/sysfs: Return -EINVAL for unsupported I/O BAR mmap
Jackie Dong <[email protected]>
ALSA: hda/realtek: ALC269 fixup for Yoga/Legion Mic noise
Imran Shaik <[email protected]>
arm64: dts: qcom: agatti: Add missing CX power domain to DISPCC
Christoph Hellwig <[email protected]>
block: handle nogenerate/noverify properly in fs-integrity
Christoph Hellwig <[email protected]>
block: lift BIP_CHECK_FLAGS to include/linux/bio-integrity.h
Christoph Hellwig <[email protected]>
block: remove bip_should_check
Yang Xiuwei <[email protected]>
ublk: clear auto buf reg before updating io->buf in batch commit
Andreas Kemnade <[email protected]>
drm/omap: dsi: Do not copy isr table
Inochi Amaoto <[email protected]>
riscv: dts: sophgo: cv180x: Allow the DMA multiplexer to set channel number for DMA controller
Ning Ding <[email protected]>
bpf: Invalidate RCU pointers after final spin unlock
Yichong Chen <[email protected]>
fat: release buffer head after rebuilding parent
Guangshuo Li <[email protected]>
rapidio: clear mport->net when rio_add_net() fails
Dmitry Antipov <[email protected]>
ocfs2: do not use make_bad_inode() in ocfs2_read_inode_block_full()
Cen Zhang <[email protected]>
ocfs2: validate external xattr entries when reading metadata
Cen Zhang <[email protected]>
ocfs2: validate inline xattrs during inode block validation
Calvin Owens <[email protected]>
pps-gpio: remove dead capture_clear code
Michael Byczkowski <[email protected]>
pps: pps-gpio: split IRQ handler into hardirq timestamper + threaded handler
Calvin Owens <[email protected]>
pps: don't try to wait for negative timeouts in PPS_FETCH
Bradley Morgan <[email protected]>
lib/string: fix memchr_inv() for large ranges
Cen Zhang <[email protected]>
ocfs2/cluster: keep heartbeat local node stable
Yang Xiuwei <[email protected]>
ublk: validate auto buf reg before taking uring_cmd
Caleb Sander Mateos <[email protected]>
ublk: check for ublk_unmap_io() returning 0
Caleb Sander Mateos <[email protected]>
ublk: check import_ubuf() return value
Tao Cui <[email protected]>
block/kyber-iosched: flush per-cpu latency buckets over possible CPUs
Tao Cui <[email protected]>
block/blk-iocost: collect per-cpu latency stats over possible CPUs
Tao Cui <[email protected]>
block/blk-iolatency: account per-cpu latency stats over possible CPUs
Tao Cui <[email protected]>
block/blk-stat: drain per-cpu callback stats over possible CPUs
Zheng Qixing <[email protected]>
blk-cgroup: skip dying blkg in blkcg_activate_policy()
Zheng Qixing <[email protected]>
blk-cgroup: fix race between policy activation and blkg destruction
Breno Leitao <[email protected]>
phonet: pep: do not write beyond optlen in getsockopt
Zxyan Zhu <[email protected]>
net: stmmac: Skip PHY attach if custom PCS is in use
Sang-Heon Jeon <[email protected]>
iio: light: tsl2583: return zero in write_raw() on success
Sang-Heon Jeon <[email protected]>
iio: light: isl29028: return zero in write_raw() on success
Yuanshen Cao <[email protected]>
iio: light: tsl2772: fix ALS calibscale readback
Arnaldo Carvalho de Melo <[email protected]>
perf arm-spe: Reject zero nr_cpu in metadata to prevent division by zero
Arnaldo Carvalho de Melo <[email protected]>
perf intel-bts: Fix off-by-one in auxtrace_info minimum size check
Arnaldo Carvalho de Melo <[email protected]>
perf intel-pt: Fix off-by-one in auxtrace_info minimum size check
Arnaldo Carvalho de Melo <[email protected]>
perf auxtrace: Fix queue grow overflow and old array leak
Arnaldo Carvalho de Melo <[email protected]>
perf thread-stack: Fix heap buffer overflow on branch stack wrap copy
Jiancheng Huang <[email protected]>
HID: lg4ff: validate report length before fixed offsets
Chao Huang <[email protected]>
HID: i2c-hid: goodix: Disable VDD on VDDIO enable failure
Rosalie Wanders <[email protected]>
HID: sony: add missing __packed to struct with static_assert()
Vicki Pfau <[email protected]>
HID: steam: Reject short reads
Vicki Pfau <[email protected]>
HID: steam: Improve logging and other cleanup
Vicki Pfau <[email protected]>
HID: steam: Add support for sensor events on the Steam Controller (2015)
Vicki Pfau <[email protected]>
HID: steam: Rename some constants that got renamed upstream
Vicki Pfau <[email protected]>
HID: steam: Refactor and clean up report parsing
Ai Chao <[email protected]>
HID: i2c-hid: Fix "(null)" output when reading report descriptor fails
Yousef Alhouseen <[email protected]>
HID: synchronize input before cleaning up a failed probe
谢致邦 (XIE Zhibang) <[email protected]>
HID: i2c-hid: Refactor _DSM helper and add i2c-hid-acpi-prp0001 driver
Haoxiang Li <[email protected]>
HID: logitech-hidpp: Fix FF device cleanup on init failure
Denis Benato <[email protected]>
HID: asus: fix a off-by-one in mcu_parse_version_string() validation
Denis Benato <[email protected]>
HID: asus: refactor the two workqueues and init sequence
Niklas Cassel <[email protected]>
PCI: dwc: ep: Fix unmap potentially unmapping the wrong iATU
Linmao Li <[email protected]>
platform: arm64: qcom-hamoa-ec: reject incomplete responses
Niklas Cassel <[email protected]>
PCI: dwc: ep: Flush cached MSI write before unmapping the iATU
Niklas Cassel <[email protected]>
misc: pci_endpoint_test: Check SUCCESS bit for doorbell status
Shukai Ni <[email protected]>
dm-integrity: replace forgeable discard filler with a keyed sector marker
Karl Mehltretter <[email protected]>
tty: clear cdev pointer after cdev_add() failure
Karl Mehltretter <[email protected]>
tty: skip cdev_del() when no cdev is registered
Karl Mehltretter <[email protected]>
serial: core: clear freed pointers on uart_register_driver() failure
Karl Mehltretter <[email protected]>
serial: core: do fallible allocations before the console can be registered
Karl Mehltretter <[email protected]>
serial: amba-pl011: keep console clock enabled for atomic writes
Karl Mehltretter <[email protected]>
serial: amba-pl011: unprepare console clock on unregister
Thomas Bogendoerfer <[email protected]>
MIPS: ptrace: Fix syscall skipping via PTRACE_SYSCALL
Christophe Leroy (CS GROUP) <[email protected]>
soc: fsl: qe: implement get_direction()
Christophe Leroy (CS GROUP) <[email protected]>
soc: fsl: qe: properly scan GPIO nodes at startup
Saket Kumar Bhaskar <[email protected]>
powerpc/irq: Fix missing r2 clobber in PCREL inline assembly
Saket Kumar Bhaskar <[email protected]>
powerpc64/bpf: Fix build break for arch_bpf_timed_may_goto
Madhavan Srinivasan <[email protected]>
powerpc64/bpf: Fix build break in bpf_jit_emit_func_call_rel()
Mukesh Kumar Chaurasiya (IBM) <[email protected]>
powerpc/syscall: Fix syscall skip handling for seccomp and ptrace
Gou Hao <[email protected]>
powerpc/smp: add NULL guard for cause_ipi in smp_muxed_ipi_message_pass
Gou Hao <[email protected]>
powerpc/xive: propagate IPI init errors to prevent use-after-free
Gou Hao <[email protected]>
powerpc/xive: add error return value to xive_smp_probe()
Gou Hao <[email protected]>
powerpc/xive: make xive IPI allocation NULL-safe
Troy Mitchell <[email protected]>
pinctrl: spacemit: validate pins in pinconf callbacks
Surendra Singh Chouhan <[email protected]>
pinctrl: generic: free maps on pinctrl_generic_to_map() failure
Yulin Lu <[email protected]>
pinctrl: eswin: Fix Handling of PIN_CONFIG_PERSIST_STATE
Josh Poimboeuf <[email protected]>
objtool/klp: Fix symbol resolution for duplicate data symbols
Josh Poimboeuf <[email protected]>
objtool/klp: Add .klp.symid for sympos disambiguation
Josh Poimboeuf <[email protected]>
objtool/klp: Fix false module dependencies caused by dead relocs
Joe Lawrence <[email protected]>
objtool/klp: Normalize Module.symvers paths to module names
Josh Poimboeuf <[email protected]>
objtool/klp: Fix module name normalization for paths with dots
Laxman Acharya Padhya <[email protected]>
firmware: coreboot: Validate table bounds
Jiayuan Chen <[email protected]>
bpf: Fix mmap_lock deadlock on arena lock failure
Zhao Li <[email protected]>
wifi: cfg80211: stop PMSR before P2P and NAN teardown
Johannes Berg <[email protected]>
wifi: mac80211: disconnect on CSA to channel 0
Jason Huang <[email protected]>
wifi: brcmfmac: fix P2P action frame handling without device vif
Namhyung Kim <[email protected]>
perf build: Fix a build error on 32-bit x86
Zhao Li <[email protected]>
wifi: mac80211: skip unused probe response countdown offsets
Slawomir Stepien <[email protected]>
wifi: zd1211rw: reject secondary interfaces to prevent conflicts
Zhao Li <[email protected]>
wifi: nl80211: clean up color-change beacon data on errors
Zhao Li <[email protected]>
wifi: mac80211: send TWT teardown to peer after setup TX failure
Davidlohr Bueso <[email protected]>
perf/cxlpmu: Fix 64-bit write to 32-bit HDM filter register
Pranjal Shrivastava <[email protected]>
iommu/arm-smmu-v3: Convert to use atomic poll timeout
Mark Brown <[email protected]>
kselftest/arm64: Don't write to P0 in irritator on SME only systems
Will Deacon <[email protected]>
arm64: ptrace: Keep 'orig_x0' in-sync with x0 on syscall entry
Karl Mehltretter <[email protected]>
kselftest/arm64: fp-ptrace: Fix checks for inactive SVE and SSVE regsets
Karl Mehltretter <[email protected]>
arm64/fpsimd: ptrace: Fix inactive SVE and SSVE regsets
Shanker Donthineni <[email protected]>
arm_mpam: Apply T241-MPAM-6 to 63-bit counters
Vladimir Murzin <[email protected]>
arm64: smp: Fix IPI teardown for GICv5 flow
Jose Ignacio Tornos Martinez <[email protected]>
wifi: mt76: mt7996: remove beacon_int_min_gcd from ADHOC interface combinations
Linghui Wu <[email protected]>
wifi: ath10k: snoc: use memcpy_fromio() for MSA ramdump
Reshma Immaculate Rajkumar <[email protected]>
wifi: ath12k: fix encrypted EAPOL TX in encap offload mode
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: fix out-of-bounds link array access in mt7996_tx()
Felix Fietkau <[email protected]>
wifi: mt76: reject out-of-range link ids in mt76_vif_link()
shengwei.lu <[email protected]>
wifi: mt76: mt7925: Fix EHT Beamformee SS subfields to meet 802.11be minimum
Peter Chiu <[email protected]>
wifi: mt76: fix queue assignment for disassoc packets
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: report RX chain signal for all RX paths
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: fix chainmask handling for non-dbdc phys on band 1
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: do not leave state behind after a failed WED attach
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: do not attach hif2 WED when the main WED attach failed
StanleyYP Wang <[email protected]>
wifi: mt76: mt7996: fix reg addr remap when addr is 0
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: release hif2 reference on probe IRQ failure
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: fix ext PHY use-after-free on register error path
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: fix double hif2 init on the non-WED path
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: fix MIB TX aggregation counter registers for mt7990
Felix Fietkau <[email protected]>
wifi: mt76: set MT76_SCANNING when starting a hw scan
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: clear stale link state on full reset
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: free vif links after clearing wcid entries on full reset
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: wake MCU waiters before aborting scan in L1 SER
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: skip key upload when adding an offchannel link
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: unlink TWT flow if the MCU rejects the agreement
Yonghong Song <[email protected]>
bpf, x86: Fix trampoline stack size for 128-bit arguments
Yonghong Song <[email protected]>
bpf: Reject >8 byte return values on return-reading trampoline paths
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Check snprintf truncation for guest kallsyms path
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Free scandir entries in guest kernel map creation
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Reset errno before strtol in guest kernel map creation
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Don't abort guest map creation on first inaccessible dir
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Check snprintf truncation in machines__findnew()
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Guard against NULL strlist in machines__findnew()
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Fix NULL parent dereference in fork event processing
Arnaldo Carvalho de Melo <[email protected]>
perf machine: Fix fd leak on bounds check in maps__set_modules_path_dir()
Michael Liang <[email protected]>
perf libdw: Fix outer-frame name resolution and spurious "(inlined)" tag
Alessio Podda <[email protected]>
perf unwind-libdw: Fix unwinding of multi-threaded processes
Charles Keepax <[email protected]>
ASoC: SDCA: Add missing stub for sdca_fdl_free_state()
Joy Zou <[email protected]>
regulator: core: use system_freezable_wq for init complete work
Ashish Mhetre <[email protected]>
arm64: tegra: Fix CMDQV interrupt type on Tegra264
Yuho Choi <[email protected]>
ARM: tegra: Fix OF node reference leaks in IRQ init
Andrey Golovko <[email protected]>
ASoC: tas2783-sdw: drop stale regcache on uninitialized re-attach
Pengpeng Hou <[email protected]>
ASoC: codecs: tas2783-sdw: Propagate regcache_sync() errors
Jeff Johnson <[email protected]>
wifi: ath11k: fix leak in ath11k_service_ready_ext_event()
Konrad Dybcio <[email protected]>
drm/msm/dsi: Drop dev_pm_opp_set_rate(0)
Konrad Dybcio <[email protected]>
drm/msm/dp: Drop dev_pm_opp_set_rate(0)
Konrad Dybcio <[email protected]>
drm/msm/dpu: Drop sneaky dev_pm_opp_set_rate(0)
Leo Yan <[email protected]>
perf: arm_spe: Make wakeup range check overflow safe
Dmitry Baryshkov <[email protected]>
drm/msm/dp: do not reject wide-bus modes while a YUV420 mode is active
Dmitry Baryshkov <[email protected]>
drm/msm/dp: reject YUV420-only modes without VSC SDP support
Dmitry Baryshkov <[email protected]>
drm/msm: don't tear down KMS twice when KMS init fails
Yongxing Mou <[email protected]>
drm/msm/dpu: Fix DMA SSPP REC block offsets on DPU v13
Can Peng <[email protected]>
ACPI: processor: Unregister cpufreq notifier on init failure
Felix Fietkau <[email protected]>
wifi: mt76: only consume the WO drop bit on WED v2 devices
StanleyYP Wang <[email protected]>
wifi: mt76: mt7996: add missing rdd_idx check when enabling background radar
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: use little-endian for bss_info_ra wire fields
Felix Fietkau <[email protected]>
wifi: mt76: report data NSS for STBC frames in RX rate decode
Felix Fietkau <[email protected]>
wifi: mt76: cancel reset and rc work on device unregister
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: don't leak MLD group index on remap alloc failure
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: reserve space for the CSA-abort countdown TLV
Felix Fietkau <[email protected]>
wifi: mt76: fix ER-SU 106-tone RU check in RX rate decode
Felix Fietkau <[email protected]>
wifi: mt76: decode the full VHT Rx STBC capability field
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: hold dev->mt76.mutex while disabling tx worker in SER
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: unwind state on add_interface failure
Felix Fietkau <[email protected]>
wifi: mt76: fix out-of-bounds access in mmio copy helpers
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: bound TLV walk in mt7996_mcu_get_chip_config
Felix Fietkau <[email protected]>
wifi: mt76: fix HE DCM max-RU capability encoding
Rex Lu <[email protected]>
wifi: mt76: check txfree done event on the WED hw path
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: poll the correct SLP CTRL register for the second adie
Felix Fietkau <[email protected]>
wifi: mt76: fix RXDMAD_C buffer recycling race
Felix Fietkau <[email protected]>
wifi: mt76: fix uninitialised RXDMAD_C descriptor info
Felix Fietkau <[email protected]>
wifi: mt76: fix stranded frames in mt76_txq_schedule_pending
Felix Fietkau <[email protected]>
wifi: mt76: fix 4th chain ACK RSSI bitmask in sta_poll
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: write RX header translation bit to the correct register
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: don't report a zero TX bitrate
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: avoid nss underflow in mt7915_mcu_get_sta_nss
Felix Fietkau <[email protected]>
wifi: mt76: mt7915: clear wcid mask under mutex after RCU pointer clear
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: set MT76_MCU_RESET before waking MCU waiters on full reset
Felix Fietkau <[email protected]>
wifi: mt76: mt7996: validate RX band_idx before dereferencing phys[]
Michael-CY Lee <[email protected]>
wifi: mt76: assign link_id when sending probe request during scan
Michael-CY Lee <[email protected]>
wifi: mt76: fix non-AQL packet accounting for MLO stations
Peter Chiu <[email protected]>
wifi: mt76: mt7996: fix MLD ID in MAC TXD and HIF TXP
Rex Lu <[email protected]>
wifi: mt76: fix RX data queuing of RRO 3.0
Shayne Chen <[email protected]>
wifi: mt76: mt7996: fix capability of EHT-MCS 15 in MRU
Chad Monroe <[email protected]>
wifi: mt76: mt7996: fix non-MLD station num_sta leak
Chad Monroe <[email protected]>
wifi: mt76: mt7996: fix EAPOL source BSS for non-MLD stations
Eason Lai <[email protected]>
wifi: mt76: mt792x: Fix memory leak in SDIO TX path
Jared.Huang <[email protected]>
wifi: mt76: mt7925: fix msg len mismatch between driver and firmware
Jared.Huang <[email protected]>
wifi: mt76: mt7925: update clc before setting sar power table
Sean Wang <[email protected]>
wifi: mt76: mt7927: set band index for sniffer mode
Eason Lai <[email protected]>
wifi: mt76: mt7921: Add PCIe AER handler support to prevent system crash
Eason Lai <[email protected]>
wifi: mt76: mt792x: fix use-after-free in mt76_rx_poll_complete
Sean Wang <[email protected]>
wifi: mt76: add init_wiphy callback
Sean Wang <[email protected]>
wifi: mt76: mt7925: add NAN MCU helpers
Sean Wang <[email protected]>
wifi: mt76: connac: add NAN connection type
Zhi-Jun You <[email protected]>
wifi: mt76: mt7915: fix net_fill_forward_path for non-DBDC mt7986
Laxman Acharya Padhya <[email protected]>
wifi: mt76: mt7921: validate CLC firmware records
Sean Wang <[email protected]>
wifi: mt76: mt792x: stop USB register access after bus hang
Shayne Chen <[email protected]>
wifi: mt76: fix handling channel context with different bands in mt76_switch_vif_chanctx()
Devin Wittmayer <[email protected]>
wifi: mt76: mt76x02: do not WARN on invalid rx descriptor length
Dmitry Gomzyakov <[email protected]>
wifi: mt76: connac: add MT7991A (0x7991) to is_mt7996()
Yichong Chen <[email protected]>
fanotify: report full event length for FIONREAD
Muhammad Usama Anjum <[email protected]>
misc: sgi-gru: remove interrupt-context page-table walks
Abdun Nihaal <[email protected]>
misc: vmc_vmci: Fix potential memory leak in vmci_event_subscribe()
Jinjie Ruan <[email protected]>
powerpc/crash: Fix possible memory leak in update_crash_elfcorehdr()
Rosen Penev <[email protected]>
powerpc/44x: Set GPIO chip parent
Christophe Leroy (CS GROUP) <[email protected]>
powerpc: implement get_direction() in cpm2
Mukesh Kumar Chaurasiya (IBM) <[email protected]>
dma-resv: Fix undefined symbol when CONFIG_DMA_SHARED_BUFFER is disabled
Brian Foster <[email protected]>
iomap: release the folio batch on iomap callback failures
Karl Mehltretter <[email protected]>
dcache: keep shrink_dcache_for_umount() making progress on busy roots
Naveen Kumar Chaudhary <[email protected]>
locking/lockdep: Fix NULL pointer dereference in __lock_set_class()
Komal Bajaj <[email protected]>
pinctrl: qcom: shikra: Fix intr_target_width for summary interrupt routing
Martin Wilck <[email protected]>
md/raid1: create serial pool adding rdev to array with serialize_policy=1
Yu Peng <[email protected]>
fs: annotate inode timestamp accessors
Can Peng <[email protected]>
i3c: master: adi: add OF module alias for autoloading
Jakub Kicinski <[email protected]>
i3c: dw: avoid shift-out-of-bounds when DAA assigns no devices
Aneesh Kumar K.V (Arm) <[email protected]>
swiotlb: Preserve allocation virtual address for dynamic pools
Aneesh Kumar K.V (Arm) <[email protected]>
iommu/dma: Check atomic pool allocation result directly
Chen Cheng <[email protected]>
md: scope memalloc_noio to allocation critical sections
Chen Cheng <[email protected]>
md/bitmap: resume array on backlog_store() error path
Vladimir Zapolskiy <[email protected]>
clk: qcom: Return expected ENOMEM error on dynamic allocation failure
Imran Shaik <[email protected]>
clk: qcom: gpucc-qcm2290: Park RCG's clk source at XO during disable
Imran Shaik <[email protected]>
clk: qcom: gpucc-qcm2290: Keep the critical clocks always-on from probe
Imran Shaik <[email protected]>
clk: qcom: gpucc-qcm2290: Move to the latest common qcom_cc_probe() model
Imran Shaik <[email protected]>
clk: qcom: gpucc-qcm2290: Drop pm_clk handling
Imran Shaik <[email protected]>
clk: qcom: qcm2290: Update DISPCC and GPUCC GDSC *wait_val values
Imran Shaik <[email protected]>
clk: qcom: qcm2290: Add RETAIN_FF_ENABLE flag for DISPCC and GPUCC GDSCs
Imran Shaik <[email protected]>
clk: qcom: qcm2290: Set POLL_CFG_GDSCR flag for DISPCC and GPUCC GDSCs
Imran Shaik <[email protected]>
clk: qcom: dispcc-qcm2290: Enable runtime PM support
Imran Shaik <[email protected]>
clk: qcom: dispcc-qcm2290: Move to the latest common qcom_cc_probe() model
Taniya Das <[email protected]>
clk: qcom: negcc-nord: keep GPU2 CFG clock enabled via critical CBCR
Taniya Das <[email protected]>
clk: qcom: gcc-nord: mark PCIe link clocks as critical
Taniya Das <[email protected]>
clk: qcom: negcc-nord: use clk_regmap_phy_mux for USB3 pipe clock srcs
Taniya Das <[email protected]>
clk: qcom: nord: use BRANCH_HALT_SKIP for PHY pipe clocks
Abel Vesa <[email protected]>
arm64: dts: qcom: eliza: Add fallback compatible for ADSP remoteproc
Stanislav Kinsburskii <[email protected]>
lib/test_hmm: fail dmirror_fault() when the mirrored mm is gone
Alexis Savery <[email protected]>
platform/chrome: lightbar: Limit payload to max packet size
Pu Lehui <[email protected]>
bpf: Fix potential UAF when reading bpf link info
Pu Lehui <[email protected]>
bpf: Fix potential UAF in bpf_netns_link_update_prog
Hongyan Xu <[email protected]>
power: supply: sc2731_charger: cancel work on remove
Hongyan Xu <[email protected]>
power: supply: isp1704_charger: cancel work on remove
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs6490-rb3gen2-industrial-mezzanine: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs6490-rb3gen2: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs6490-thundercomm-minipc-g1iot: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: qcs6490-radxa-dragon-q6a: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: lemans-evk-ifp-mezzanine: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: monaco-evk-ifp-mezzanine: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: monaco-monza-som: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: monaco: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: lemans: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: talos: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8750: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8650: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8550: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8450: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8350: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8250: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sm8150: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sdm845: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sc8180x: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sar2130p: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: kodiak: Fix the PCIe iommu-map entries
Manivannan Sadhasivam <[email protected]>
arm64: dts: qcom: kaanapali: Fix the PCIe iommu-map entries
Dawid Wróbel <[email protected]>
arm64: dts: qcom: sm8250-xiaomi-elish: correct the board ID
Imran Shaik <[email protected]>
arm64: dts: qcom: talos: Fix cpu6 1094.4MHz OPP frequency typo
Konrad Dybcio <[email protected]>
arm64: dts: qcom: glymur: Fix PDC IRQ mapping
Keith Busch <[email protected]>
block: fix dio leak on metadata mapping error
Mukesh Ojha <[email protected]>
firmware: qcom: scm: Fix tzmem state on probe retry
Mukesh Ojha <[email protected]>
firmware: qcom: scm: Fix reserved memory cleanup on probe failure
Mukesh Ojha <[email protected]>
firmware: qcom: scm: Fix NULL dereference in IRQ handler before __scm is published
Yuvaraj Ranganathan <[email protected]>
firmware: qcom: scm: instrument SMC call path with tracepoints
Yuvaraj Ranganathan <[email protected]>
firmware: qcom: scm: add trace events for the SMC call interface
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sc8280xp-crd: Fix the pin index for misc_3p3_reg_en
Pradyot Kumar Nayak <[email protected]>
arm64: dts: qcom: glymur-crd: Add FocalTech ft3d81 touchscreen support
Konrad Dybcio <[email protected]>
soc: qcom: pmic_glink_altmode: Define the TBT extradata properly
Dmitry Baryshkov <[email protected]>
clk: qcom: gcc-qcm2290: don't park QUP RCGs upon registration
Krishna Kurapati <[email protected]>
arm64: dts: qcom: qcs404: Fix DTBS Check errors in usb controller nodes
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sdm632-motorola-ocean: Fix LED default trigger property
Konrad Dybcio <[email protected]>
arm64: dts: qcom: msm8976-longcheer-l9360: Fix accidental node override
Konrad Dybcio <[email protected]>
arm64: dts: qcom: msm8998: Don't pull-up I2C pins by default in sleep
Itai Handler <[email protected]>
rcu: Mark accesses to ->rcu_urgent_qs and ->rcu_need_heavy_qs
Manivannan Sadhasivam <[email protected]>
PCI: dwc: ep: Clear MSI iATU mapping in dw_pcie_ep_cleanup()
Abd-Alrhman Masalkhi <[email protected]>
md/raid10: consistently fail atomic writes that require splitting
Abd-Alrhman Masalkhi <[email protected]>
md/raid1: restrict atomic write limits and handle runtime constraints
Jeff Johnson <[email protected]>
wifi: ath11k: fix stride mismatch in mac_phy_caps_parse()
Jeff Johnson <[email protected]>
wifi: ath12k: fix stride mismatch in mac_phy_caps_parse()
Fushuai Wang <[email protected]>
Revert "serial: 8250: Clear CON_PRINTBUFFER on port re-registration"
Cheng-Han Wu <[email protected]>
selftests/zram: fix kernel_gte() for POSIX sh
Abd-Alrhman Masalkhi <[email protected]>
md: recheck spare changes before starting sync
Abd-Alrhman Masalkhi <[email protected]>
md: remove REQ_NOWAIT support from raid1/10/456
Thomas Weißschuh <[email protected]>
tools/nolibc/powerpc: mark ctr and xer as clobbered by system call
Yichong Chen <[email protected]>
fanotify: stop permission watchdog when timeout is zero
Chen Cheng <[email protected]>
md/raid5: protect lockless recovery_offset accesses during reshape
Lorenzo Bianconi <[email protected]>
net: airoha: fix ETS QoS stats counter underflow and cross-channel corruption
Chen Cheng <[email protected]>
md/raid5: fix lockless max_nr_stripes reads
Sajal Gupta <[email protected]>
md/raid5-ppl: fix use-after-free in ppl_do_flush()
Chen Cheng <[email protected]>
md/raid5: protect bitmap batch counters aka seq_flush/seq_write consistency
Yuho Choi <[email protected]>
bus: mhi: host: Fix controller cleanup on EDL sysfs failure
Manivannan Sadhasivam <[email protected]>
bus: mhi: host: Flush the posted write after writing to MHI_SOC_RESET_REQ_OFFSET
Abdun Nihaal <[email protected]>
wifi: rtlwifi: pci: fix error path in rtl_pci_probe()
Hongyan Xu <[email protected]>
platform/chrome: cros_ec_debugfs: Unregister panic notifier
Hongyan Xu <[email protected]>
platform/chrome: cros_ec_debugfs: Clean up console log on probe failure
Surendra Singh Chouhan <[email protected]>
regulator: tps65185: handle gpiod_get_value_cansleep() error returns
Jens Remus <[email protected]>
s390/vdso: Pass --eh-frame-hdr to the linker
Dan Carpenter <[email protected]>
media: stm32: dcmi: fix some error handling bugs in probe()
Hungyu Lin <[email protected]>
media: qcom: iris: handle runtime PM resume failure in core deinit
Dikshita Agarwal <[email protected]>
media: qcom: iris: Remove duplicate HFI_PROP_OPB_ENABLE entry
Dikshita Agarwal <[email protected]>
media: qcom: iris: Fix bitmask test in iris_allow_cmd()
Anna Maniscalco <[email protected]>
drm/msm: remove objects from evit list after pinning them
Ali Tariq <[email protected]>
PCI: starfive: Fix unchecked pm_runtime_get_sync() in probe
Ali Tariq <[email protected]>
PCI: starfive: Fix Runtime PM handling and teardown ordering
Jeff Johnson <[email protected]>
wifi: ath12k: validate TLV length in process_tpc_stats()
Jeff Johnson <[email protected]>
wifi: ath11k: fix overreads in ath11k_wmi_process_csa_switch_count_event()
Jeff Johnson <[email protected]>
wifi: ath12k: fix overreads in ath12k_wmi_process_csa_switch_count_event()
Adrián Larumbe <[email protected]>
drm/panthor: Add vm_bind region with kbo range overlap check
Fan Wu <[email protected]>
spi: davinci: switch to managed controller allocation
Guixin Liu <[email protected]>
nvmet: reject out-of-range mdts values in configfs store
Guixin Liu <[email protected]>
nvme-pci: return error when parsing a quirk string fails
Guixin Liu <[email protected]>
nvme-fc: unmap cmd_iu DMA on rsp_iu mapping failure in init_request
Guixin Liu <[email protected]>
nvmet: fix return status of RMI log page on allocation failure
Yehyeong Lee <[email protected]>
IB/isert: reject login PDUs declaring more data than was received
Yehyeong Lee <[email protected]>
IB/isert: reject PDUs declaring more data than was received
Cong Nguyen <[email protected]>
media: staging/ipu7: fix async notifier leak on init error
Leon Romanovsky <[email protected]>
RDMA/cxgb4: free STAG index when TPT entry write fails
Leon Romanovsky <[email protected]>
RDMA/mlx5: Send cong param changes to the resolved port mdev
Leon Romanovsky <[email protected]>
RDMA/mlx5: Fix stack out-of-bounds read in cc_params debugfs
Leon Romanovsky <[email protected]>
RDMA/cxgb4: Fix dereg_skb leak and double free in write_tpt_entry()
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 com260 board
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 pico-itx board
Troy Mitchell <[email protected]>
clk: spacemit: k3: fix missing /2 factor in i2s sysclk dividers
David Strahan <[email protected]>
scsi: smartpqi: Fix AIO retry marker cleared by SCSI core between dispatches.
Ryusuke Konishi <[email protected]>
nilfs2: fix BUG in nilfs_copy_dirty_pages() on dirty state mismatch
David Lee <[email protected]>
nilfs2: prevent out-of-bounds read in super root block parsing
Joshua Crofts <[email protected]>
nilfs2: fix infinite loop in nilfs_clean_segments()
Alexey Charkov <[email protected]>
clk: rockchip: Fractional PLL coefficient on RK3588/RK3576 is two's complement
Alexey Charkov <[email protected]>
clk: rockchip: Fix the fractional part denominator on RK3588/RK3576 PLLs
Gary Guo <[email protected]>
PCI: Fix UAF when probe runs concurrent to dyn ID removal
Gary Guo <[email protected]>
PCI: Fix dyn_id add TOCTOU
Gary Guo <[email protected]>
PCI: Make pci_match_one_device() match on ID instead of device
Akari Tsuyukusa <[email protected]>
clk: mediatek: mt8135: Fix inverted gate control for devapc_ck
longlong yan <[email protected]>
clk/x86: pmc_atom: add kasprintf return value check
Myeonghun Pak <[email protected]>
clk: palmas: Manage external-control prepare with devm
Kostas Damaskinakis <[email protected]>
clk: eswin: Zero-initialize stack-allocated clk_init_data
Louis-Alexis Eyraud <[email protected]>
clk: mediatek: pllfh: Fix IO remapping leak in register_pllfhs error path
Guangshuo Li <[email protected]>
clk: tegra: tegra124-emc: put EMC node on register failure
Ondrej Jirman <[email protected]>
arm64: dts: allwinner: sun50i-a64-pinephone: Fix mpu6050 mount matrix
Zhao Li <[email protected]>
wifi: mac80211: fix per-STA profile length in cross-link CSA parsing
Alain Volmat <[email protected]>
media: stm32: dcmi: fix error handling on MDMA pool alloc failure
Yonatan Nachum <[email protected]>
RDMA/efa: Fix PBL chunk length computation
Peiyang He <[email protected]>
RDMA/rxe: Fix UAF in ODP init error-handling path
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Require exactly one Stream ID for a vSID
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Free the error IRQ before tearing down VINTFs
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Don't fall back to a freed smmu after devm_krealloc()
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Don't run the error ISR before probe sets up vintfs
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Synchronize the error ISR against VINTF (de)init
Nicolin Chen <[email protected]>
iommu/tegra241-cmdqv: Publish an LVCMDQ only after it is fully initialized
Weiming Shi <[email protected]>
fs/ntfs3: reject restart table growth beyond U16_MAX entries
Ivy Lopez <[email protected]>
staging: rtl8723bs: use kfree_sensitive() for key material
Ananthu C V <[email protected]>
arm64: dts: qcom: glymur: fix SoCCP memory mappings
Bjorn Andersson <[email protected]>
remoteproc: qcom: q6v5: Request shutdown if crash is triggered host-side
Jingyi Wang <[email protected]>
remoteproc: qcom: pas: Add late attach support for subsystems
Bjorn Andersson <[email protected]>
remoteproc: Prevent crash handling to race with rproc_del()
Jingyi Wang <[email protected]>
remoteproc: core: Attach rproc asynchronously in rproc_add() path via schedule_work()
Bjorn Andersson <[email protected]>
remoteproc: Allow shutdown of crashed processors
K Prateek Nayak <[email protected]>
cpufreq/amd-pstate: Set min_limit_freq based on bios_min_perf
Ian Rogers <[email protected]>
perf annotate: Be robust to annotating without a thread
Ian Rogers <[email protected]>
perf ui hists: In report UI ensure thread is set with reference counting
Alexandre Courbot <[email protected]>
gpu: nova-core: fix packed registry table size
Zhi Wang <[email protected]>
gpu: nova-core: build SetRegistry entries dynamically
Tejun Heo <[email protected]>
sched_ext: Abort directly from the hardlockup handler
Cheng-Yang Chou <[email protected]>
sched_ext: Fix exit_cpu accuracy for lockup paths
Babanpreet Singh <[email protected]>
w1: ds2482: Fix signedness bug in ds2482_w1_triplet()
Fan Wu <[email protected]>
spi: oc-tiny: switch to managed controller allocation
Myeonghun Pak <[email protected]>
clk: mediatek: mt6735: Unregister PLLs on probe failure
Manivannan Sadhasivam <[email protected]>
PCI/pwrctrl: tc9563: Power off only the external ports in tc9563_pwrctrl_disable_port()
Manivannan Sadhasivam <[email protected]>
PCI/pwrctrl: tc9563: Fix parsing the integrated Ethernet MAC Endpoint node
Yichong Chen <[email protected]>
isofs: release zisofs block pointer buffer head
Sumeet Pawnikar <[email protected]>
powercap: intel_rapl_tpmi: Handle PMU registration failure during probe
Rakesh Kota <[email protected]>
thermal/drivers/qcom-spmi-adc-tm5: Drop IIO_VAL_INT check in adc_tm5_get_temp
Christian Marangi <[email protected]>
thermal/drivers/airoha: Fix copy paste error for sen internal
Christian Marangi <[email protected]>
thermal/drivers/airoha: Fix copy paste error on clamp_t low temp
Rafael J. Wysocki <[email protected]>
ACPI: bus: Avoid confusing complaints regarding missing _OSC features
Maher Sanalla <[email protected]>
RDMA/mlx5: Fix integer overflow of user QP buffer size
Can Peng <[email protected]>
crypto: keembay - publish OF module alias for OCS AES/SM4
Linmao Li <[email protected]>
crypto: keembay - Initialize completion before requesting IRQ
Li Qiang <[email protected]>
scsi: ufs: debugfs: Reserve space for a string terminator
Li Qiang <[email protected]>
scsi: ufs: rpmb: Validate request frame length before parsing
Li Qiang <[email protected]>
scsi: ufs: core: Validate connected lane counts
Li Qiang <[email protected]>
scsi: ufs: Avoid NULL CQE dereference when reporting invalid tags
Li Qiang <[email protected]>
scsi: ufs: core: Validate string descriptors
Babanpreet Singh <[email protected]>
power: supply: sbs-battery: Use a per-device serial number buffer
Kohei Enju <[email protected]>
arm64: RSI: fix field-spanning write warning in attestation token init
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Fix phy id check for the phy on com260 board
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Fix phy id check for the phy on pico-itx board
James Clark <[email protected]>
tools/build: Allow versioning of all LLVM tools defined in Makefile.include
Justin Yeh <[email protected]>
pinctrl: mediatek: free EINT resources on unbind
Justin Yeh <[email protected]>
pinctrl: mediatek: use devm_gpiochip_add_data() for GPIO chip
David Matlack <[email protected]>
liveupdate: Remember FLB retrieve() status
David Matlack <[email protected]>
liveupdate: Reference count outgoing FLB data
Jackie Liu <[email protected]>
liveupdate: reject nonzero reserved value for SESSION_FINISH
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Add enough deassert time for the PHY on com260 board
Inochi Amaoto <[email protected]>
riscv: dts: spacemit: Add enough deassert time for the PHY on PICO ITX
Aurelien Jarno <[email protected]>
riscv: dts: spacemit: improve RTL8211F PHY configuration on K3 Pico-ITX board
Shivendra Pratap <[email protected]>
power: reset: reboot-mode: Remove devres based allocations
Alison Schofield <[email protected]>
cxl/region: Fix use-after-free in find_pos_and_ways() error path
Julian Braha <[email protected]>
pinctrl: fix unmet dependencies from missing GPIOLIB
Feng Yang <[email protected]>
selftests/bpf: Fix memory leak on subtest_states reallocation
Feng Yang <[email protected]>
selftests/bpf: Fix missing allocation null checks in test_progs.c
Feng Yang <[email protected]>
selftests/bpf: Fix incorrect error checking for pthread_create
Leon Hwang <[email protected]>
bpf: Fix WARNING in bpf_tracing_link_release
Karl Mehltretter <[email protected]>
ARM: lpc32xx: only run SoC init on LPC32xx hardware
Mykyta Yatsenko <[email protected]>
bpf: Fix CFI mismatch in task work callback
Fabio Estevam <[email protected]>
arm64: dts: rockchip: Fix rk3566-bigtreetech-cb2 touchscreen property
Fabio Estevam <[email protected]>
arm64: dts: rockchip: Fix Gru WLAN sideband interrupt
Damon Ding <[email protected]>
arm64: dts: rockchip: Add missing hclk for RK3588 eDP1
Damon Ding <[email protected]>
arm64: dts: rockchip: Add missing hclk for RK3588 eDP0
Namjae Jeon <[email protected]>
exfat: fix valid_size extension over a shared writable mapping
Osama Abdelkader <[email protected]>
drm/panthor: return PTR_ERR() from devm_drm_dev_alloc()
Weiming Wu <[email protected]>
fs/ntfs3: fix out-of-bounds read of INDEX_ROOT in reparse/objid init
Florian Westphal <[email protected]>
netfilter: nf_nat_sip: rewind offset when NAT shrinks the packet
Can Peng <[email protected]>
drm/tve200: add OF module alias for autoloading
Aaron Tomlin <[email protected]>
perf trace: Correct default cpumask formatting to hexadecimal
Ian Rogers <[email protected]>
perf cap: Remove used_root parameter and simplify capability checks
Troy Mitchell <[email protected]>
ASoC: spacemit: rename clock inputs to match binding
Jerome Brunet <[email protected]>
clk: sunxi-ng: mux: fix determine helper rate propagation
Cosmo Chou <[email protected]>
leds: pca9532: Fix phantom device registration on missing hardware
Malaya Kumar Rout <[email protected]>
PM: hibernate: Fix memory leak in snapshot_write_next() error path
Leon Romanovsky <[email protected]>
RDMA/erdma: complete object teardown when the destroy command fails
Sanghyun Park <[email protected]>
xfrm: Fix skb double-free in xfrm_dev_direct_output()
Leo Yan <[email protected]>
perf cs-etm: Avoid truncating AUX buffer sizes to int
Leo Yan <[email protected]>
perf cs-etm: Flush thread stacks after decoder reset
Eliot Courtney <[email protected]>
gpu: nova-core: correct RISC-V HALTED field
Icenowy Zheng <[email protected]>
riscv: dts: thead: th1520: remove pclk for I2C1
Junhui Liu <[email protected]>
riscv: dts: spacemit: k1: Split gmac_clk_ref into independent pinctrl groups
Aurelien Jarno <[email protected]>
riscv: dts: spacemit: set console baud rate on K3 Pico-ITX board
Christophe Leroy (CS GROUP) <[email protected]>
bitmap: Properly initialise destination bitmap for scatter & gather test
Sudeep Holla <[email protected]>
firmware: arm_scmi: Unrequest devices if driver registration fails
Sudeep Holla <[email protected]>
firmware: arm_scmi: Roll back partial protocol table registration
EDAMAMEX <[email protected]>
cpufreq/amd-pstate: handle missing policy in dynamic EPP callbacks
Marco Scardovi <[email protected]>
cpufreq/amd-pstate: Toggle auto_sel in active mode on shared memory systems
Marco Scardovi <[email protected]>
cpufreq/amd-pstate: Fix EPP return type and handle errors during initialization
Qianheng Peng <[email protected]>
cpufreq: amd-pstate-ut: Skip tests when amd-pstate driver is not active
Andre Przywara <[email protected]>
ARM: dts: allwinner: a10: Fix PMU interrupt
Zhang Yi <[email protected]>
ext4: skip tail block zeroing for inline data files
Xiang Mei <[email protected]>
ext4: check dir entry fits before reading the hash trailer in ext4_search_dir()
Guanghui Yang <[email protected]>
ext4: fix buffer_head leak in ext4_init_orphan_info
Selvin Xavier <[email protected]>
RDMA/bnxt_re: Clear VM_MAYWRITE on DBR/toggle page mmap
Jeff Johnson <[email protected]>
wifi: ath11k: Avoid buffer overread in ath11k_wmi_tlv_op_rx()
Jeff Johnson <[email protected]>
wifi: ath12k: Avoid buffer overread in ath12k_wmi_op_rx()
Matthew Leach <[email protected]>
wifi: ath12k: fix survey indexing across bands
Jeff Johnson <[email protected]>
wifi: ath11k: Correctly copy the hint BSSID in WMI scan request
Jeff Johnson <[email protected]>
wifi: ath12k: Correctly copy the hint BSSID in WMI scan request
Aaradhana Sahu <[email protected]>
wifi: ath12k: allocate HOST_DDR and BDF regions after Q6 RO region
Aaradhana Sahu <[email protected]>
wifi: ath12k: refactor QMI memory assignment
Aaradhana Sahu <[email protected]>
wifi: ath12k: switch to name-based reserved memory lookup
Jeff Johnson <[email protected]>
wifi: ath6kl: avoid buffer overreads in WMI event handlers
Miaoqing Pan <[email protected]>
wifi: ath12k: fix ML-STA authentication timeout on QCC2072
Manish Dharanenthiran <[email protected]>
wifi: ath12k: advertise ieee_link_id in vdev start MLO params
Tamizh Chelvam Raja <[email protected]>
wifi: ath12k: Set IEEE80211_OFFLOAD_ENCAP_4ADDR after tx_encap_type vdev param
Tamizh Chelvam Raja <[email protected]>
wifi: ath12k: Advertise multicast Ethernet encapsulation offload support
Yao Kai <[email protected]>
ext4: validate readdir offset before accessing dirent
Aditya Prakash Srivastava <[email protected]>
ext4: use fsdata to track inline data write state and fix race
Baokun Li <[email protected]>
ext4: drain in-flight DIO before buffered write fallback
Gerald Yang <[email protected]>
ext4: clear stale xarray tags on folios skipped during writeback
Aditya Prakash Srivastava <[email protected]>
ext4: fix ABBA deadlock in ext4_xattr_inode_cache_find()
Pengpeng Hou <[email protected]>
thermal: intel: int3400: clean up ODVP on probe failures
Nicolin Chen <[email protected]>
iommu/arm-smmu-v3: Declare eats_s1chk and eats_trans as host-endian u64
Mukesh Ojha <[email protected]>
iommu/qcom: Fix inverted fault report check in qcom_iommu_fault()
Haoxiang Li <[email protected]>
iommu/qcom: Remove sysfs device on probe failure path
Li RongQing <[email protected]>
iommu/amd: Fix undefined behavior in devid_write debugfs function
Sudeep Holla <[email protected]>
firmware: arm_scmi: Fix requested device removal race
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in ib_dealloc_pd_user()
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in uverbs_free_dmah()
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in ib_free_cq()
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in counter_release()
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in ib_destroy_srq_user()
Patrisious Haddad <[email protected]>
RDMA/core: Fix potential use after free in ib_destroy_cq_user()
Patrisious Haddad <[email protected]>
RDMA/core: Fix use after free in ib_query_qp()
Patrisious Haddad <[email protected]>
RDMA/core: Add rdma_restrack_begin/abort/commit_del() operations
Leon Romanovsky <[email protected]>
RDMA/mana_ib: drain QP references after partial table insertion
Myeonghun Pak <[email protected]>
RDMA/erdma: Fix CEQ tasklet use-after-free on removal
Takuma Fujiwara <[email protected]>
PCI: j721e: Fix incorrect max_lanes for J7200
Leon Romanovsky <[email protected]>
RDMA/srpt: Pass the mapped task attribute to target_init_cmd()
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Mark bpf_refcount field as unique
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Preserve unique-field state across nested structs
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Fix offset warn check for bpf_res_spin_lock
Kohei Enju <[email protected]>
virt: arm-cca-guest: use migrate_disable() for attestation token requests
Rafael J. Wysocki <[email protected]>
ACPI: battery: Adjust charging status validation check
Feng Jiang <[email protected]>
bpf, riscv: Fix extable handling for arena load_acquire
Pu Lehui <[email protected]>
riscv, bpf: Fix kernel stack corruption in tailcall with CFI
Pu Lehui <[email protected]>
riscv, bpf: Fix memory leak in bpf_jit_free
Ricardo B. Marlière <[email protected]>
libbpf: Search /lib64 and /lib in resolve_full_path()
Ricardo B. Marlière <[email protected]>
selftests/bpf: Fix lsm_bdev dev_t encoding mismatch
Ricardo B. Marlière <[email protected]>
selftests/bpf: Fix make install target
Kumar Kartikeya Dwivedi <[email protected]>
bpf: Zero queue and stack outputs on lock failure
Yousef Alhouseen <[email protected]>
platform/x86: acer-wmi: reject missing gaming WMI results
Yun Zhou <[email protected]>
ext4: skip extra isize expansion during mount to prevent deadlock
Xiang Mei <[email protected]>
ext4: fix out-of-bounds read in ext4_read_inline_dir()
Yun Zhou <[email protected]>
ext4: fix circular lock dependency in ext4_ext_migrate
Chen Pei <[email protected]>
ACPI: PCI: Clear driver_data on all paths that free the acpi_pci_root
Pengpeng Hou <[email protected]>
ACPI: processor: validate MADT IOAPIC entry bounds
Zhu Ling <[email protected]>
ACPI: EC: Avoid _REG disconnect on GPIO IRQ defer
Pengpeng Hou <[email protected]>
RDMA/nldev: validate dynamic counter attribute length
Kemeng Shi <[email protected]>
irqchip/gic-v3-its: Prevent leak in its_vpe_irq_domain_alloc()
Gary Guo <[email protected]>
samples: rust: debugfs: fix excessive stack use
Gary Guo <[email protected]>
rust: device: make lifetime on Core and CoreInternal invariant
Viktor Malik <[email protected]>
selftests/bpf: Silence maybe-uninitialized compiler warning in libarena
Viktor Malik <[email protected]>
selftests/bpf: Silence array bounds warning in global_map_resize
Viktor Malik <[email protected]>
selftests/bpf: Check malloc result with ASSERT_NEQ in test_sha256
Viktor Malik <[email protected]>
selftests/bpf: Check malloc result with ASSERT_NEQ in test_loader
Pawan Gupta <[email protected]>
x86/bugs: Don't use cpu-type matching in cpu_vuln_blacklist
Frank Li <[email protected]>
arm64: dts: imx8-ss-audio: Fix LPCG clock indices for ASRC0
Marco Elver <[email protected]>
kcsan: avoid unintended access checking in NMIs
TanZheng <[email protected]>
RDMA/srpt: Fix srpt_alloc_rw_ctxs() unwind counters
Leon Romanovsky <[email protected]>
RDMA/bnxt_re: Validate udata before executing commands
Jacob Moroni <[email protected]>
RDMA/core: Add ib_no_udata_io() helper
Ibrahim Hashimov <[email protected]>
RDMA/rxe: Validate num_sge/cur_sge before indexing wqe->dma.sge[]
Danila Chernetsov <[email protected]>
RDMA/hfi1: Propagate sdma_txinit_ahg() errors
Jun Yan <[email protected]>
arm64: dts: amlogic: meson-axg-s400: enable mipi_pcie_analog_dphy for PCIe
Jun Yan <[email protected]>
arm64: dts: amlogic: meson-axg: Add missing nand_rb0 pin to nand_all_pins
Can Peng <[email protected]>
phy: starfive: Fix runtime PM cleanup in JH7110 DPHY RX probe
Can Peng <[email protected]>
phy: starfive: Fix runtime PM cleanup in JH7110 DPHY TX probe
Rodrigo Alencar <[email protected]>
iio: dac: ad5686: missing NULL check on match data
Linmao Li <[email protected]>
ASoC: meson: Keep link pointers valid on realloc failure
Koichiro Den <[email protected]>
dmaengine: dw-edma: Clear stale requests on termination
Koichiro Den <[email protected]>
dmaengine: dw-edma: Serialize channel state checks
Koichiro Den <[email protected]>
dmaengine: dw-edma: Serialize abort state updates
Koichiro Den <[email protected]>
dmaengine: dw-edma: Terminate all descriptors without callbacks
Leon Hwang <[email protected]>
bpf: Disallow interpreter fallback for BPF_ADDR_PERCPU insn
Leon Hwang <[email protected]>
bpf: Disallow interpreter fallback for gotox insn
Leon Hwang <[email protected]>
bpf: Disallow interpreter fallback for arena-related insns
Yiyang Chen <[email protected]>
bpf: Reject arena frees below the arena base
Abel Vesa <[email protected]>
arm64: dts: qcom: glymur: Add CX power domain to GCC
Puranam V G Tejaswi <[email protected]>
drm/msm/a6xx: Fix RBBM_CLOCK_CNTL3_TP0 value in a730_hwcg
Yuho Choi <[email protected]>
driver core: soc: Unregister bus on early device registration failure
Alban Bedel <[email protected]>
software node: Fix software_node_get_reference_args() with index -1
Ewan D. Milne <[email protected]>
drivers: base: Remove statistics group if encryption group not created
Maíra Canal <[email protected]>
drm/v3d: Associate BOs with every job that accesses them
Maíra Canal <[email protected]>
drm/v3d: Convert submit helpers to operate on struct v3d_submit
Maíra Canal <[email protected]>
drm/v3d: Make v3d_get_cpu_indirect_csd_params() a pure parser
Maíra Canal <[email protected]>
drm/v3d: Introduce struct v3d_submit and convert CL/TFU/CSD ioctls
Maíra Canal <[email protected]>
drm/v3d: Migrate BO reservation locking to DRM exec
Maíra Canal <[email protected]>
drm/v3d: Extract v3d_job_add_syncobjs() helper
Maíra Canal <[email protected]>
drm/v3d: Drop unused drm_encoder.h include from v3d_drv.h
Namhyung Kim <[email protected]>
perf build: Fix compiler errors with old capstone
Ian Rogers <[email protected]>
perf ui hists: Fix uninitialized stack memory free on pstack allocation failure
zhouminqiang <[email protected]>
mtd: part: reject MTDPART_OFS_RETAIN in mtd_add_partition()
Ruoyu Wang <[email protected]>
mtd: mtdswap: Avoid freeing registered blktrans device twice
Guangshuo Li <[email protected]>
mtd: intel-dg: Fix runtime PM error path in probe
Pengpeng Hou <[email protected]>
soc: ti: knav_qmss: Remove debugfs file on teardown
Xiang Mei <[email protected]>
vfio/pci: clear vdev->msi_perm after freeing it on init failure
Alex Mastro <[email protected]>
vfio: selftests: Avoid VLAs
Myeonghun Pak <[email protected]>
char: xilinx_hwicap: unregister class on init errors
Pei Xiao <[email protected]>
ipack: ipoctal: fix UAF, null-ptr-deref, and use-after-free in cleanup on remove
Linmao Li <[email protected]>
ppdev: prevent overflow when setting port timeout
Breno Leitao <[email protected]>
cacheinfo: don't propagate DT/ACPI error when arch supplies info (arm64)
Pengpeng Hou <[email protected]>
misc: lan966x_pci: depopulate children on populate failure
Pengpeng Hou <[email protected]>
misc: ad525x_dpot: use driver core groups for sysfs files
Gleb Markov <[email protected]>
misc: rtsx: add missing write register handling
Gui-Dong Han <[email protected]>
misc: bcm-vk: Use acquire/release for msgq_inited
Uwe Kleine-König (The Capable Hub) <[email protected]>
misc: pch_phub: Complete enum usage for device identification
Alexander Usyskin <[email protected]>
mei: lb: fix incorrect type in assignment
Pavel Zhigulin <[email protected]>
speakup: keyhelp: guard letter_offsets possible out-of-range indexing
Christophe JAILLET <[email protected]>
accessibility: speakup: Fix incorrect string length computation in report_char_chartab_status()
Yuho Choi <[email protected]>
uio: Fix stale info pointer in failed registration path
Arnd Bergmann <[email protected]>
gpib: use 'static inline' instead of 'extern inline'
Gui-Dong Han <[email protected]>
gpib: Move stuck SRQ update under lock
Alexander A. Klimov <[email protected]>
tlclk: if sscanf() fails, fall back to 0, not random value
Cong Nguyen <[email protected]>
staging: rtl8723bs: fix xmit_frame/xmit_buf leaks on mgnt-frame error paths
David Lee <[email protected]>
UDF symlink pathComponent header OOB read
Karl Mehltretter <[email protected]>
tty: hvc: restrict HVC_DCC to ARMv6+ and ARM64
Xu Yang <[email protected]>
usb: gadget: f_uac1_legacy: remove broken string configfs attributes
Rafael J. Wysocki <[email protected]>
ACPI: processor: idle: Expand _LPI package sanity checks
Narasimharao Vadlamudi <[email protected]>
crypto: aspeed - Propagate platform_get_irq() errors
Thorsten Blum <[email protected]>
crypto: sl3516 - drop invalid sg_dma_len checks before DMA mapping
Chia-Yuan Li <[email protected]>
wifi: rtw89: fw: use MAC source for IO offload delay command
Can Guo <[email protected]>
scsi: ufs: core: Avoid possible memory reclaim deadlock in TX EQTR context
Pu Lehui <[email protected]>
bpf: Sync tail_call_reachable with callee state on entry
Ruoyu Wang <[email protected]>
drm/msm: Only fini scheduler after successful init
Jie Zhang <[email protected]>
drm/msm: Fix task_struct reference leak in recover_worker
Jie Zhang <[email protected]>
drm/msm/a6xx: Fix IRQ storm during msm_recovery test
Jie Zhang <[email protected]>
drm/msm/a6xx: Fix A621 GPUCC register list for state capture
Jie Zhang <[email protected]>
drm/msm/a6xx: Fix A663 GPUCC register list for state capture
Jie Zhang <[email protected]>
drm/msm: Recover HW before retire hung submit
Shivam Rawat <[email protected]>
drm/msm/a6xx: Fix stale rpmh votes after suspend
Dan Carpenter <[email protected]>
drm/msm/adreno: fix use after free on error path in a6xx_gpu_init()
Mikko Perttunen <[email protected]>
gpu: host1x: Avoid stack over-read in debug output helpers
Mikko Perttunen <[email protected]>
gpu: host1x: Fix offset calculation in trace_write_gather
Mikko Perttunen <[email protected]>
gpu: host1x: Avoid double device_add when clients already present
Avraham Stern <[email protected]>
wifi: iwlwifi: mei: pass correct argument to function
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: guard against division by zero in iwl_dbg_tlv_alloc_fragments
Avraham Stern <[email protected]>
wifi: iwlwifi: mei: check SAP message length before reading it
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: mvm: fix off-by-one in TXF key sanitiser
Emmanuel Grumbach <[email protected]>
wifi: iwlwifi: fix counter type in iwl_fwrt_dump_error_logs
Namhyung Kim <[email protected]>
perf stat: Fix duplicate output with --for-each-cgroup
Praveen Talari <[email protected]>
spi: geni-qcom: Fix sticky ret causing wrong return value on invalid proto
Iker Pedrosa <[email protected]>
drm/solomon: remove unneeded variables in blit functions
Geert Uytterhoeven <[email protected]>
soc: renesas: r8a78000: Drop duplicate "default ARCH_RENESAS"
Abel Vesa <[email protected]>
clk: qcom: gcc-glymur: Enable runtime PM
Ian Rogers <[email protected]>
perf jevents: Add more components to the metric sorting order
Namhyung Kim <[email protected]>
perf sched: Free subcommand string after perf sched stats
Namhyung Kim <[email protected]>
perf sched: Fix memory leaks in perf sched stats report
Namhyung Kim <[email protected]>
perf sched: Add missing perf_session__delete()
Luca Weiss <[email protected]>
arm64: dts: qcom: milos: Add reset for sdhc_2
Dmitry Baryshkov <[email protected]>
arm64: dts: qcom: sm8250: correct frequencies in the Iris OPP table
Dmitry Baryshkov <[email protected]>
arm64: dts: qcom: sm8250: sort out Iris power domains
George Moussalem <[email protected]>
arm64: qcom: ipq5018: Add GEPHY RX and TX clocks
George Moussalem <[email protected]>
arm64: dts: qcom: ipq5018: Correct CMN PLL reference clock rate
Gopikrishna Garmidi <[email protected]>
arm64: dts: qcom: glymur-crd: merge duplicate &pmh0101_gpios node extensions
Abel Vesa <[email protected]>
arm64: dts: qcom: eliza: Enable first QUPv3 wrapper by default
Pengyu Luo <[email protected]>
arm64: dts: qcom: sc8280xp-x13s: Fix the drive-strength of mclk pin
Konrad Dybcio <[email protected]>
arm64: dts: qcom: msm8996-xiaomi-gemini: Fix up ti,drv2604 enable GPIO
Denis V. Lunev <[email protected]>
x86/mm/pat: Take cpa_lock around large-page collapse
Maoyi Xie <[email protected]>
drm/bridge: tc358767: clamp the reported AUX read size to the request
Hongling Zeng <[email protected]>
perf: evsel: Fix error handling in tp_format lookup
Uday Khare <[email protected]>
remoteproc: qcom: Fix glink->node reference leak in qcom_add_glink_subdev
Stephan Gerhold <[email protected]>
remoteproc: qcom_q6v5_mss: Fix MDM9607 subsystem control instance ID
Stephan Gerhold <[email protected]>
remoteproc: qcom_q6v5_mss: Make ssctl_id configurable per platform
Zhongqiu Han <[email protected]>
cpufreq: schedutil: Fix self-contradictory comment in sugov_iowait_apply()
Rafael J. Wysocki <[email protected]>
cpufreq: intel_pstate: Fix setting minimum P-state at init time
Anas Khan <[email protected]>
drm/amd/display: remove duplicate link_dp_panel_replay.h include
Dyllan Kobal <[email protected]>
drm/amd/display: fix wrong register field in dccg35_set_hdmistreamclk_src_new
Gleb Markov <[email protected]>
drm/amd/display: Remove unused-but-set variable hubp from
Geoffrey McRae <[email protected]>
drm/amd/display: Fix DM I2C teardown race
Gregor Herburger <[email protected]>
OPP: Fix cleanup ordering
Ruoyu Wang <[email protected]>
media: ipu6: Do not free aux device pdata after init
Eugen Hristev <[email protected]>
media: bcm2835-unicam: Fix asc leaked in error/remove path
Julian Braha <[email protected]>
media: platform: amd: fix unmet dependency for VIDEO_V4L2_SUBDEV_API
Biren Pandya <[email protected]>
media: i2c: rdacm21: Fix missing media_entity_cleanup()
Yemike Abhilash Chandra <[email protected]>
media: ti: vpe: Select V4L2_FWNODE for VIP
Qingshuang Fu <[email protected]>
irqchip/renesas-irqc: Fix generic interrupt chip leak on remove
Yuho Choi <[email protected]>
PCI: keystone: Fix OF node reference leak in init
Yuho Choi <[email protected]>
PCI: xgene: Drop unnecessary OF node reference
Dan Carpenter <[email protected]>
cpufreq: spear: Fix an IS_ERR() vs NULL bug in spear1340_set_cpu_rate()
John Groves <[email protected]>
dax: fix holder_ops race in fs_put_dax()
John Groves <[email protected]>
dax: read holder_ops once in dax_holder_notify_failure()
John Groves <[email protected]>
dax/fsdev: fail probe on invalid pgmap offset
John Groves <[email protected]>
dax/fsdev: use __va(phys) for kaddr in direct_access
John Groves <[email protected]>
dax/fsdev: clear pgmap ops and owner on unbind
John Groves <[email protected]>
dax/fsdev: don't leave a dangling dev_dax->pgmap on probe failure
John Groves <[email protected]>
dax/fsdev: clear vmemmap_shift when binding static pgmap
John Groves <[email protected]>
dax/fsdev: fix multi-range offset in memory_failure handler
John Groves <[email protected]>
dax: fix misleading comment about share/index union in dax_folio_reset_order()
Bryam Vargas <[email protected]>
libnvdimm/labels: Bound the on-media label size before the shift
Liang Luo <[email protected]>
tools/sched_ext: scx_qmap: Fix stale API name in comment
Dan Carpenter <[email protected]>
regulator: adp5055: Fix error code in adp5055_of_parse_cb()
Richard Cheng <[email protected]>
cxl/features: Clamp Get Feature output size to the remaining buffer
Richard Cheng <[email protected]>
cxl/features: Reject Set Features output buffer smaller than the header
Richard Cheng <[email protected]>
cxl/features: Reject Get Feature count larger than the output buffer
Sudeep Holla <[email protected]>
firmware: arm_scmi: Fix transport device teardown lookup
Sudeep Holla <[email protected]>
firmware: arm_scmi: Fix SCMI device destroy lifetimes
Sudeep Holla <[email protected]>
firmware: arm_scmi: Unwind P2A receiver mailbox setup failure
Sudeep Holla <[email protected]>
firmware: arm_scmi: Unwind TX receiver mailbox setup failure
Sudeep Holla <[email protected]>
firmware: arm_scmi: Fix OF node reference handling
Sudeep Holla <[email protected]>
firmware: arm_scmi: Clear SystemPower flag on create failure
Sudeep Holla <[email protected]>
firmware: arm_scmi: Drop handle on protocol bind failures
Sudeep Holla <[email protected]>
firmware: arm_scmi: Protect device request lookup with RCU
Sudeep Holla <[email protected]>
firmware: arm_scmi: Use channel ID for transport teardown
Sudeep Holla <[email protected]>
firmware: arm_scmi: Reject out of range DT protocol IDs
Sudeep Holla <[email protected]>
firmware: arm_scmi: Avoid IDR updates while cleaning channels
Sudeep Holla <[email protected]>
firmware: arm_scmi: Free transport channel on IDR failure
Sudeep Holla <[email protected]>
firmware: arm_scmi: Clean up channels on setup failure
Sudeep Holla <[email protected]>
firmware: arm_scmi: Quiesce notifications before teardown
Sudeep Holla <[email protected]>
firmware: arm_scmi: Unregister device notifier before IDR teardown
Sudeep Holla <[email protected]>
firmware: arm_scmi: Publish channel state before callbacks
David Stevens <[email protected]>
x86/entry/fred: Encode frame pointer on entry
Baochen Qiang <[email protected]>
wifi: ath11k: cap out-of-range rx MCS instead of leaving bogus rate
Wei Zhang <[email protected]>
wifi: ath12k: fix rx_mpdu_start layout for QCC2072
Baochen Qiang <[email protected]>
wifi: ath12k: fix MLO peer delete race
Baochen Qiang <[email protected]>
wifi: ath12k: fix dp_link_peer dangling references on AP vdev rollback
Kyle Zeng <[email protected]>
hfsplus: validate thread record before delete key rebuild
Alison Schofield <[email protected]>
cxl/port: Restart port enumeration when a sibling adds the dport first
Dave Jiang <[email protected]>
cxl/features: Serialize multi-part Get/Set Feature transfers
Dave Jiang <[email protected]>
cxl/pci: Honor -EPROBE_DEFER from component register setup
Dave Jiang <[email protected]>
cxl/mbox: Break poison list loop on an empty payload
Guzebing <[email protected]>
cxl/memdev: Fix firmware upload exact-fit handling
Li Ming <[email protected]>
cxl/test: Rework cxl_type2_mem_init() to use cxl_mock_platform_device_add()
Jason Gunthorpe <[email protected]>
iommufd: Simplify iommufd_device_remove_vdev()
Lad Prabhakar <[email protected]>
arm64: dts: renesas: r9a09g047: Fix PCIe dma-ranges memory space code
Lad Prabhakar <[email protected]>
arm64: dts: renesas: r9a09g056: Fix PCIe dma-ranges memory space code
Lad Prabhakar <[email protected]>
arm64: dts: renesas: rzt2h-n2h-evk: Remove unused MII/GMII pins
Vishnu Santhosh <[email protected]>
rpmsg: glink: fix deadlock in endpoint destroy during driver detach
Reinette Chatre <[email protected]>
fs/resctrl: Fix UAF from worker threads when domains are removed
Dmitry Ilvokhin <[email protected]>
perf record: Fix multiple PERF_RECORD_COMPRESSED2 records per push
Dmitry Ilvokhin <[email protected]>
perf record: Return the written size from process_comp_header()
Reinette Chatre <[email protected]>
fs/resctrl: Prevent use-after-free in rdtgroup_kn_put()
Liang Luo <[email protected]>
tools/sched_ext: scx_flatcg: Fix uninitialized stats on allocation failure
Hans Verkuil <[email protected]>
media: v4l2-async: Unregister sub-device if asc_list is empty
Sami Tolvanen <[email protected]>
rust: drm: gpuvm: require Send + Sync for the driver's associated data
yeeli <[email protected]>
iommufd/selftest: Fix dmabuf leak in iommufd_test_dmabuf_get()
Samuel Moelius <[email protected]>
iommufd/selftest: Avoid selftest dirty bitmap size wrap
Xiang Mei <[email protected]>
isofs: fix out-of-bounds page array access on empty zisofs block
James Calligeros <[email protected]>
ASoC: apple: mca: increase SERDES reset delay
Leon Romanovsky <[email protected]>
RDMA/hfi1: Initialize debugfs after probe completes
Leon Romanovsky <[email protected]>
RDMA/hfi1: Stop flushing the global IB workqueue
Leon Romanovsky <[email protected]>
RDMA/hfi1: Free RX data on late probe failure
Leon Romanovsky <[email protected]>
RDMA/hfi1: Preserve unit 0 on allocation failure
Leon Romanovsky <[email protected]>
RDMA/rvt: Return NULL after port allocation failure
Sean Rhodes <[email protected]>
misc: rtsx_usb: avoid USB I/O in runtime autosuspend
Pengpeng Hou <[email protected]>
pmdomain: bcm: bcm2835: handle genpd provider registration errors
Evgenii Burenchev <[email protected]>
ALSA: hpi: Check transport errors during HPI6000 adapter initialization
Maher Azzouzi <[email protected]>
esp: do not unref managed frag pages in esp_ssg_unref()
Xiang Mei <[email protected]>
xfrm6: fix out-of-bounds write in xfrm6_input_addr() when secpath is full
Guangshuo Li <[email protected]>
crash_dump: release keyring reference at the correct time
Yuho Choi <[email protected]>
hwrng: ks-sa - Fix runtime PM cleanup on registration failure
Atish Patra <[email protected]>
crypto: ccp - Fix memory leak in SEV INIT_EX path
Atish Patra <[email protected]>
crypto: ccp - Fix possible deadlock in SEV init failure path
Dmitry Baryshkov <[email protected]>
Revert "drm/msm: dsi: fix PLL init in bonded mode"
Jens Glathe <[email protected]>
drm/msm/dp: add missing drm_edid_connector_update() before add_modes on cached EDID
Allison Henderson <[email protected]>
RDMA/rxe: Avoid reprocessing the current packet after the QP enters the error state
Leon Romanovsky <[email protected]>
RDMA/ipoib: Drain RCU callbacks during module teardown
Leon Romanovsky <[email protected]>
RDMA/mlx5: Drain RCU callbacks during module teardown
Leon Romanovsky <[email protected]>
RDMA/core: Wait for RCU callbacks before unloading ib_core
Mert Seftali <[email protected]>
iio: accel: dmard09: Implement IIO_CHAN_INFO_SCALE
Chih-Kang Chang <[email protected]>
wifi: rtw89: 8852a: fix RSSI report when average beacon RSSI is not ready
Leon Hwang <[email protected]>
bpf: Mark tracing_multi trampolines as ftrace managed
Nicholas Dudar <[email protected]>
bpf: Require a BPF cpumask for bpf_cpumask_populate()
Brian Masney <[email protected]>
clk: qcom: camcc-sc8280xp: unregister CAMCC_GDSC_CLK
Pengpeng Hou <[email protected]>
bus: qcom-ebi2: use managed resources for clocks and children
Pengpeng Hou <[email protected]>
soc: qcom: rpmh-rsc: manage PM notifiers with devres
Yu Peng <[email protected]>
perf metricgroup: Fix metric expression copy leaks
Yixun Lan <[email protected]>
clk: spacemit: k3: fix parent clock of UFS aclk
Ian Rogers <[email protected]>
perf record: Fix teardown hang on system-wide multi-threaded sessions
Laxman Acharya Padhya <[email protected]>
drm/panel: samsung-s6d16d0: Power off on prepare failure
Xu Yang <[email protected]>
usb: chipidea: imx: fix missing ret assignment for dev_err_probe
Pengpeng Hou <[email protected]>
usb: typec: ucsi: gaokun: unwind notifier on UCSI register failure
Biju Das <[email protected]>
usb: renesas_usbhs: Fix power-off ordering on unbind
Fei Shao <[email protected]>
usb: mtu3: allow system suspend during active gadget connection
Linmao Li <[email protected]>
platform/surface: acpi-notify: Check ACPI companion before use
Linmao Li <[email protected]>
platform/mellanox: mlxbf-pmc: Check ACPI_COMPANION() against NULL
Marco Scardovi <[email protected]>
platform/x86: asus-wmi: fix resource leaks on probe failure
Gary Guo <[email protected]>
usb: fix UAF when probe runs concurrent to dyn ID removal
Ruoyu Wang <[email protected]>
usb: gadget: aspeed_udc: check endpoint DMA allocation
Maoyi Xie <[email protected]>
usb: ljca: bound bank_num in ljca_enumerate_gpio()
Xu Rao <[email protected]>
usb: typec: tcpm: fix EPR AVS APDO maximum voltage decoding
Michael Bommarito <[email protected]>
usb: gadget: configfs: fix out-of-bounds read of qw_sign
Nuno Sá <[email protected]>
usb: gadget: f_fs: Fix fence cleanup in ffs_dmabuf_transfer() error paths
Qing Ming <[email protected]>
usb: gadget: uac: validate rate list length before storing
Guangshuo Li <[email protected]>
serial: qcom-geni: do not advance stale DMA completions
Yuho Choi <[email protected]>
serial: ma35d1: Fix OF node reference leaks in console init
Fushuai Wang <[email protected]>
serial: 8250: Clear CON_PRINTBUFFER on port re-registration
Ricardo Ribalda <[email protected]>
media: platform: amd: use refcount_t instead of atomic_t
Praveen Talari <[email protected]>
spi: qcom-geni: Fix missing error check on pm_runtime_get_sync()
Linmao Li <[email protected]>
platform/x86: asus-wireless: Fail probe when there is no ACPI match
Tengda Wu <[email protected]>
perf capstone: Fix kernel map reference count leak
Liang Luo <[email protected]>
selftests/sched_ext: Fix bpf_link leak on early return in prog_run
Wolfram Sang <[email protected]>
hwspinlock: propagate errno when registering single lock
Nicholas Dudar <[email protected]>
bpf: Reject rdonly/rdwr_buf_size kfunc arguments that exceed u32 max
Val Packett <[email protected]>
remoteproc: qcom_wcnss: Fix handling the lack of PD regulators in v3
Felix Gu <[email protected]>
remoteproc: qcom_q6v5_adsp: Fix reference leak for device node
Daniel Borkmann <[email protected]>
bpf: Drop scalar id on sign-extending narrowing stack fills
Armin Wolf <[email protected]>
platform/x86: lg-laptop: Fix LED resource handling
Armin Wolf <[email protected]>
platform/x86: dell-wmi-base: Fix handling of ultra performance key
Armin Wolf <[email protected]>
platform/x86: dell-wmi-base: Fix resource leak on module load failure
Armin Wolf <[email protected]>
platform/x86: dell-privacy: Fix race condition
Lorenzo Pieralisi <[email protected]>
ACPI: RISC-V: Fix riscv_acpi_add_prt_dep() loop handling
Lorenzo Pieralisi <[email protected]>
ACPI: RISC-V: Check acpi_get_handle() status in riscv_acpi_add_prt_dep()
Lorenzo Pieralisi <[email protected]>
ACPI: RISC-V: Fix riscv_acpi_irq_get_dep() loop termination
John Ogness <[email protected]>
printk: Fix possible console use-after-free
Manuel Fombuena <[email protected]>
leds: st1202: Validate LED reg property against channel count
Manuel Fombuena <[email protected]>
leds: st1202: Disable channel when brightness is set to zero
Manuel Fombuena <[email protected]>
leds: st1202: Fix brightness having no effect while pattern mode is active
Manuel Fombuena <[email protected]>
leds: st1202: Set all pattern PWM slots to full after clearing pattern
Manuel Fombuena <[email protected]>
leds: st1202: Fix spurious pattern sequence start in setup
Manuel Fombuena <[email protected]>
leds: st1202: Fix pattern duration prescaler and pattern_clear skip marker
Manuel Fombuena <[email protected]>
leds: st1202: Stop pattern sequence before reprogramming
Cosmo Chou <[email protected]>
leds: pca9532: Fix inverted GPIO output polarity
AngeloGioacchino Del Regno <[email protected]>
arm64: dts: mediatek: tungsten-smarc: Remove unnecessary cells
Wei Wang <[email protected]>
iommu/amd: Fix false positive in SB IOAPIC IVRS validation
Wei Wang <[email protected]>
iommu/amd: Prevent SB IOAPIC from overriding IVRS validation errors
Vladimir Zapolskiy <[email protected]>
iommu/msm: Return -ENOMEM on memory allocation failure in probe
Daniel Borkmann <[email protected]>
bpf: Fix security_bpf_map_create error handling
Akari Tsuyukusa <[email protected]>
iommu/mediatek-v1: Fix off-by-one in MT2701_LARB_NR_MAX
Tiezhu Yang <[email protected]>
bpf: Reject programs with inlined helpers if JIT is not available
Tiezhu Yang <[email protected]>
bpf: Introduce jit_required flag and remove bpf_prog_has_kfunc_call()
Yuho Choi <[email protected]>
bus: mhi: ep: Fix device refcount leak in the error path of MHI device creation
Sanghyun Park <[email protected]>
bpf: Fix use-after-free on mm_struct in bpf_find_vma()
Breno Leitao <[email protected]>
efi: fix stale reference to efi_recover_from_page_fault()
Daniel Borkmann <[email protected]>
bpf: Fix vmlinux BTF prep race in bpf_get_btf_vmlinux
Tanushree Shah <[email protected]>
perf dso: Fix kallsyms DSO detection with fallback logic
Sandipan Das <[email protected]>
perf vendor events amd: Reintroduce deprecated Zen 5 core events
Geoffrey McRae <[email protected]>
drm/amdgpu/mes: Fix hung_queue_db_array loop limit for multi-XCC
Daniel Borkmann <[email protected]>
bpftool: Check EVP_Digest when computing excl_prog_hash
Aleksandr Nogikh <[email protected]>
udf: Mark LVID buffer as uptodate before marking it dirty
Hongyan Xu <[email protected]>
usb: gadget: r8a66597: avoid double free of ep0_req in probe error path
Bjorn Andersson <[email protected]>
usb: typec: ucsi: unregister debugfs entries on teardown
Dan Carpenter <[email protected]>
thermal/drivers/rcar: Fix error checking in probe()
Vidhu Sarwal <[email protected]>
staging: media: ipu7: fix pm_runtime refcount leak in ipu7_resume()
Vidhu Sarwal <[email protected]>
staging: media: ipu7: fix pm_runtime refcount leak in ipu7_init_fw_code_region_by_sys()
Nicholas Dudar <[email protected]>
bpf: Reject writes through untrusted BTF pointers
Tanushree Shah <[email protected]>
perf data convert json: Fix trace_seq memory leak in process_sample_event()
Jiawei Sun <[email protected]>
perf record: fix poll storm when monitored threads exit
Loic Poulain <[email protected]>
clk: qcom: gcc-qcs8300: Use retention for USB power domains
Loic Poulain <[email protected]>
clk: qcom: gcc-qcs8300: Use retention for PCIe power domains
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sc8180x-lenovo-flex-5g: Describe the display power net
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sc8180x-lenovo-flex-5g: Rename regulator nodes
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sc8180x-primus: Describe the display power net
Konrad Dybcio <[email protected]>
arm64: dts: qcom: sc8180x-primus: Rename regulator nodes
Richard Acayan <[email protected]>
arm64: dts: qcom: sdm670-google: add lpi reserved gpios
Yedaya Katsman <[email protected]>
arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Fixup panel compatible
Jérôme de Bretagne <[email protected]>
arm64: dts: qcom: sc8280xp-arcata: Fix top USB-C DP alt mode
Herman van Hazendonk <[email protected]>
clk: qcom: gdsc: tear down per-domain genpds in gdsc_unregister()
Herman van Hazendonk <[email protected]>
clk: qcom: gdsc: propagate gdsc_enable() failure for ALWAYS_ON domains
Herman van Hazendonk <[email protected]>
clk: qcom: gdsc: propagate gdsc_check_status() errors from gdsc_poll_status
Brian Norris <[email protected]>
arm64: dts: qcom: Add #{address,size}-cells to Chromium-based /firmware
David Woodhouse <[email protected]>
timekeeping: Account for monotonicity adjustment in ntp_error
Thomas Weißschuh <[email protected]>
y2038: uapi: Use 64-bit __kernel_old_timespec::tv_nsec on x32
Malaya Kumar Rout <[email protected]>
time/namespace: Validate nanosecond field in proc_timens_set_offset()
Malaya Kumar Rout <[email protected]>
timers/migration: Fix memory leak in tmigr_setup_groups() error path
Yuho Choi <[email protected]>
timekeeping: Unwind aux clock sysfs children on failure
Yuho Choi <[email protected]>
clocksource: Unregister subsystem on device registration failure
Jiangshan Yi <[email protected]>
selftests: timers: leap-a-day: Fix -w option and update usage comment
Kemeng Shi <[email protected]>
irqchip/gic-v3-its: Fix its node leak in gic_acpi_parse_madt_its()
Kemeng Shi <[email protected]>
irqchip/gic-v3-its: Fix memleak in its_probe_one()
Wang Yan <[email protected]>
selftests/lsm: Fix memory leak in attr_lsm_count
Feng Yang <[email protected]>
selftests/bpf: Fix memory leak in msg_alloc_iov
Maxim Khmelevskii <[email protected]>
s390/bpf: Replace ly instruction with llgf
Yiyang Chen <[email protected]>
bpf: Reject MEM_ALLOC BTF accesses past object bounds
Malaya Kumar Rout <[email protected]>
selftests/bpf: Fix memory leak in msg_alloc_iov error path
Emil Tsalapatis <[email protected]>
selftests/bpf: libarena: Clean up allocation state before buddy tests
Evgenii Burenchev <[email protected]>
ALSA: via82xx: Remove unreachable branch in snd_via686_pcm_pointer()
Thomas Weißschuh <[email protected]>
kbuild: unset sub_make_done before calling kselftest build system
Dawei Feng <[email protected]>
staging: rtl8723bs: fix mismatched free of HalData in rtw_sdio_if1_init()
Ayush Mukkanwar <[email protected]>
staging: octeon: add missing napi_disable in cvm_oct_rx_shutdown
Ayush Mukkanwar <[email protected]>
staging: octeon: add missing tasklet_kill in cvm_oct_tx_shutdown
Dan Carpenter <[email protected]>
staging: fbtft: Use sysfs_emit_at() to print to sysfs file
Bryam Vargas <[email protected]>
greybus: audio: bound the topology section sizes against the fetched size
Rong Zhang <[email protected]>
staging: sm750fb: Add missing Kconfig dependency
Ahmet Sezgin Duran <[email protected]>
staging: sm750fb: gate dualview dataflow using g_dualview
Alexander A. Klimov <[email protected]>
staging: greybus: audio: correct sscanf() return value check
Cen Zhang <[email protected]>
wifi: mac80211_hwsim: avoid NULL skb in stop queue drain
Manivannan Sadhasivam <[email protected]>
PCI: qcom: Skip PERST# GPIOs provided by downstream PCIe devices
Ruoyu Wang <[email protected]>
bus: qcom-ebi2: Fix clock leak on probe failure
Dmitry Baryshkov <[email protected]>
arm64: dts: qcom: sc8280xp: sort reserved memory regions
Taniya Das <[email protected]>
clk: qcom: gcc-glymur: Move EVA clocks to critical clock list
Pradyot Kumar Nayak <[email protected]>
arm64: dts: glymur-crd: Add reset GPIO to touchscreen node
Gopikrishna Garmidi <[email protected]>
arm64: dts: qcom: glymur-crd: Move common board nodes to shared DTSI
Sibi Sankar <[email protected]>
arm64: dts: qcom: glymur-crd: Add Embedded controller node
Gopikrishna Garmidi <[email protected]>
arm64: dts: qcom: glymur: Fix gcc clock specifier for usb_mp_qmpphy nodes
Gopikrishna Garmidi <[email protected]>
arm64: dts: qcom: glymur: Fix unit-address mismatch for spmi_bus2
Konrad Dybcio <[email protected]>
arm64: dts: qcom: hamoa: Fix clocks for HSPHYs
Biswapriyo Nath <[email protected]>
arm64: dts: qcom: sm6125: Use 64 bit addressing
Luca Weiss <[email protected]>
arm64: dts: qcom: sm7225-fairphone-fp4: Fix address in fb node name
Jens Glathe <[email protected]>
arm64: dts: qcom: sc8280xp-blackrock: switch to uefi rtc offset
Jie Gan <[email protected]>
arm64: dts: qcom: monaco: fix wrong connection for the replicator
Taniya Das <[email protected]>
clk: qcom: gxclkctl: Use custom disable callback for gx_gdsc
Jagadeesh Kona <[email protected]>
clk: qcom: gdsc: Add custom disable callback for GX GDSC
Waiman Long <[email protected]>
cgroup/cpuset: Make nr_deadline_tasks an atomic_t
Haowen Tu <[email protected]>
PM: sleep: Fix off-by-one in wakelocks number limit check
Yuho Choi <[email protected]>
bus: ti-sysc: Fix /chosen node reference leak
Shin'ichiro Kawasaki <[email protected]>
nvmet-rdma: fix response resource leak on queue teardown
Shin'ichiro Kawasaki <[email protected]>
nvmet-rdma: factor out response resource cleanup
Gui-Dong Han <[email protected]>
nvme-apple: Use acquire/release for queue enabled state
Miklos Szeredi <[email protected]>
fuse: move "epoch" from dentry.d_time to fuse_dentry.epoch
Pengpeng Hou <[email protected]>
RDMA/bng_re: return a timeout when firmware responses stall
Krzysztof Kozlowski <[email protected]>
arm64: dts: qcom: talos: Fix GMU unit address
Kuldeep Singh <[email protected]>
arm64: dts: qcom: sm8750: wire UFS to ice instance
Jacob Moroni <[email protected]>
RDMA/irdma: Add refcounting to user ring MRs
Jacob Moroni <[email protected]>
RDMA/irdma: Add irdma_cq fields to track pbl allocations
Jacob Moroni <[email protected]>
RDMA/irdma: Add a refcount to track user ring MR associations
Jacob Moroni <[email protected]>
RDMA/irdma: Deduplicate the irdma_del_memlist logic
Myeonghun Pak <[email protected]>
crypto: keembay - Fix AEAD unregister count in error path
Pengpeng Hou <[email protected]>
crypto: rk3288 - fail ahash requests on HASH idle timeout
Myeonghun Pak <[email protected]>
hwrng: omap - Fix probe error path cleanup
Pengpeng Hou <[email protected]>
hwrng: xilinx-trng - propagate timeout before any data is read
Pengpeng Hou <[email protected]>
crypto: sa2ul - stop probe if context pool creation fails
Lothar Rubusch <[email protected]>
crypto: atmel-sha204a - fix heap info leak on I2C transfer failure
Thorsten Blum <[email protected]>
crypto: atmel-ecc - reject hardware ECDH without a public key
Giovanni Cabiddu <[email protected]>
crypto: qat - clear AES key schedule from stack
Giovanni Cabiddu <[email protected]>
crypto: qat - cancel work on re-enable SR-IOV timeout
Manos Pitsidianakis <[email protected]>
hwrng: core - fix rng list on registration error
Sandipan Das <[email protected]>
perf vendor events amd: Update Zen 6 core events
Sandipan Das <[email protected]>
perf vendor events amd: Update Zen 5 core events
Ondrej Mosnacek <[email protected]>
perf test amd ibs: avoid using executable heap
Sandipan Das <[email protected]>
perf/x86/amd/uncore: Add group validation
Jiri Olsa <[email protected]>
libbpf: Detect uprobe syscall with new error
Jiri Olsa <[email protected]>
libbpf: Change has_nop_combo to work on top of nop10
Leo Yan <[email protected]>
perf cs-etm: Filter synthesized branch samples
Leo Yan <[email protected]>
perf cs-etm: Fix thread leaks on trace queue init failure
Thomas Weißschuh <[email protected]>
tools/nolibc: mark arg1 operand in __nolibc_syscall0() as write-only
Xuanqiang Luo <[email protected]>
fanotify: initialize permission event watchdog state
Jiri Olsa <[email protected]>
uprobes/x86: Move optimized uprobe from nop5 to nop10
Jiri Olsa <[email protected]>
uprobes/x86: Allow to copy uprobe trampolines on fork
Jiri Olsa <[email protected]>
uprobes/x86: Do not leak trampoline vma mapping on optimization failure
Jiri Olsa <[email protected]>
uprobes/x86: Remove struct uprobe_trampoline object
Pengpeng Hou <[email protected]>
wifi: rtw89: fix HE extended capability length check
Dmitry Morgun <[email protected]>
wifi: rtw89: check return values in rtw89_ops_start_ap()
Zong-Zhe Yang <[email protected]>
wifi: rtw89: fw: fix link ID filling for LPS MLO common info
Tzung-Bi Shih <[email protected]>
platform/chrome: sensorhub: Fix memory overread in ring handler
Wentao Guan <[email protected]>
wifi: rtw89: fw: correct preload field of w2 in rtw89_fw_h2c_default_cmac_tbl_be()
Dan Carpenter <[email protected]>
wifi: rtw89: debug: fix off by on in rtw89_ppdu_str()
Hisam Mehboob <[email protected]>
selftests/rseq: Replace glibc-specific __GNUC_PREREQ with portable check
Hanlin Song <[email protected]>
csky: Fix a4/a5 restoration in syscall trace path
Sanjay Chitroda <[email protected]>
iio: orientation: hid-sensor-rotation: Avoid race between callback setup and device exposure
Srinivas Kandagatla <[email protected]>
soundwire: qcom: Fix port exhaustion check in stream_alloc_ports
Alex Bereza <[email protected]>
dmaengine: xilinx_dma: Fix CPU stall in xilinx_dma_poll_timeout
Vladimir Zapolskiy <[email protected]>
dmaengine: hisilicon: Return -ENOMEM on dynamic memory allocation in probe
Golla Nagendra <[email protected]>
dmaengine: zynqmp_dma: fix race between runtime PM and device removal
Suraj Gupta <[email protected]>
dmaengine: xilinx_dma: Fix channel idle state management in AXIDMA and MCDMA interrupt handlers
Vladimir Zapolskiy <[email protected]>
dmaengine: mediatek: mtk-uart-apdma: Return -ENOMEM on memory allocation failure
Christophe JAILLET <[email protected]>
leds: lp5860-spi: Fix an error handling path
Christophe JAILLET <[email protected]>
leds: lp5860: Fix a potential double-unlock
Gregory Price <[email protected]>
mm/mm_init: handle alloc_percpu failure in free_area_init_core_hotplug
Sechang Lim <[email protected]>
bpf,lsm: Drop bpf_prog_free from sleepable_lsm_hooks
Guillaume Maudoux <[email protected]>
selftests/bpf: Mask socket type flags in mptcpify prog
Leon Hwang <[email protected]>
bpf: Copy per-CPU map value padding in copy_map_value_long()
Yichong Chen <[email protected]>
tools/bpf/bpftool: Reset vmlinux BTF after struct_ops commands
Yichong Chen <[email protected]>
tools/bpf/bpftool: Reset vmlinux BTF after map commands
Andrii Nakryiko <[email protected]>
bpftool: Strip all -Wformat* flags from bootstrap libbpf build
Evgenii Burenchev <[email protected]>
drm/amd/display: Fix dangling pointer in CRTC reset function
Evgenii Burenchev <[email protected]>
drm/amd/display: Fix dangling pointer in plane reset function
bui duc phuc <[email protected]>
ASoC: ti: j721e-evm: Avoid mixing goto with guard()
bui duc phuc <[email protected]>
ASoC: samsung: i2s: Avoid mixing goto with guard()
Asad Kamal <[email protected]>
drm/amdgpu/pm/powerplay: bounds-check voltage index in Vega10 lookup
Asad Kamal <[email protected]>
drm/amdgpu/pm/powerplay: bounds-check voltage index in SMU7 lookup
Asad Kamal <[email protected]>
drm/amd/powerplay: fix VoltageObjectInfo zero-stride loop and OOB read
Uday Khare <[email protected]>
regulator: tps6594: Fix device node reference leaks in multiphase loop
Arnd Bergmann <[email protected]>
PCI: imx6: Fix building against PCI_PWRCTRL_GENERIC
Arnd Bergmann <[email protected]>
PCI: imx6: Fix building against PCI_HOST_COMMON
Ian Rogers <[email protected]>
perf tests: Fix flakiness in branch stack sampling tests
Ian Rogers <[email protected]>
perf tests: Fix flakiness in BPF counters test on hybrid systems
Ian Rogers <[email protected]>
perf tests: Fix flakiness in trace record and replay test
Ian Rogers <[email protected]>
perf tests: Add robust record retry helper and use subsecond workloads
Ian Rogers <[email protected]>
perf tests: Fix Python JIT dump profiling test failure
Ian Rogers <[email protected]>
perf tests: Skip metrics validation if system-wide recording lacks permission
Ian Rogers <[email protected]>
perf test: Truncate test description to fit terminal width
Ian Rogers <[email protected]>
perf parse-events: Restrict core PMU bypass to --cputype option
Ian Rogers <[email protected]>
perf evlist: Add reference count checking
Ian Rogers <[email protected]>
perf evsel: Add reference count
Ian Rogers <[email protected]>
perf evlist: Add reference count
Ian Rogers <[email protected]>
perf util: Sort includes and add missed explicit dependencies
Ian Rogers <[email protected]>
perf pmu: Recognize default_core as a core PMU in more places
Aaradhana Sahu <[email protected]>
wifi: ath12k: correct monitor destination ring size
Miaoqing Pan <[email protected]>
wifi: ath12k: fix TLV32 length mask
Sean Young <[email protected]>
media: keymaps: Remove obsolete RC_MAP_HAUPPAUGE_NEW keymap define
Sean Young <[email protected]>
media: keymaps: Remove obsolete RC_MAP_RC5_TV keymap define
Dave Jiang <[email protected]>
cxl/test: Propagate -ENOMEM on platform_device_alloc() failures
Dave Jiang <[email protected]>
cxl/test: Add hierarchy enumeration support for type2 device
Dave Jiang <[email protected]>
cxl/test: Refactor platform device enumerations
Dave Jiang <[email protected]>
cxl/test: Add test for module parameters
Thomas Richter <[email protected]>
perf test: Skip failing 'perf test aslr' test case
Breno Leitao <[email protected]>
workqueue: only show running workers in stall diagnostics
Jinjie Ruan <[email protected]>
riscv: kexec_file: Fix crashk_low_res not exclude bug
Akash Goel <[email protected]>
drm/panthor: Fix NPD issue on partial unmap of an evicted BO
Adrián Larumbe <[email protected]>
drm/panthor: Support sparse mappings
Adrián Larumbe <[email protected]>
drm/panthor: Pass vm_bind_op to vm_prepare_map_op_ctx
Daniel McCarthy <[email protected]>
pinctrl: bcm2835: Don't remove an unregistered GPIO chip
Dapeng Mi <[email protected]>
perf/x86/intel: Keep cap_user_rdpmc in sync with RDPMC user-disable state
Felix Gu <[email protected]>
pinctrl: imx1: fix device_node leak in dt_is_flat_functions()
Zide Chen <[email protected]>
perf/x86/intel/uncore: Fix uncore_box ref/unref ordering
Zide Chen <[email protected]>
perf/x86/intel/uncore: Introduce PMU flags and broken state
Zide Chen <[email protected]>
perf/x86/intel/uncore: Factor out box setup code
Zide Chen <[email protected]>
perf/x86/intel/uncore: Let init_box() callback report failures
Zide Chen <[email protected]>
perf/x86/intel/uncore: Fix refcnt and other cleanups
Zide Chen <[email protected]>
perf/x86/intel/uncore: Fix PCI PMU cleanup on setup failure
Zide Chen <[email protected]>
perf/x86/intel/uncore: Keep PCI PMUs working when MMIO/MSR setup fails
Chen, Yu C <[email protected]>
sched/fair: Fix overflow in update_tg_cfs_runnable()
Peter Zijlstra <[email protected]>
sched/core: Fix inter-class wakeup_preempt()
Wei Yang <[email protected]>
mm/mm_init: fix incorrect node_spanned_pages
Henrik Grimler <[email protected]>
drm/lima: call drm_mm_init() with a valid allocation range
Brian Masney <[email protected]>
clk: imx: scu: drop redundant init.ops variable assignment
Shengjiu Wang <[email protected]>
arm64: dts: imx8mp-ab2: Enable MU2 for DSP communication
Francesco Dolcini <[email protected]>
arm64: dts: freescale: imx95-toradex-smarc: add alias for lpuart5
Frieder Schrempf <[email protected]>
arm64: dts: imx93-kontron: set memory node to 0x80000000/1GiB
Li Jun <[email protected]>
firmware: imx: sm-misc: Add NULL check for kmalloc in syslog_show
Yuho Choi <[email protected]>
ARM: OMAP2+: Fix OF node reference leaks in omap_hwmod
Weigang He <[email protected]>
ARM: imx: fix device_node refcount leaks in imx7_src_init()
Weigang He <[email protected]>
ARM: imx: fix device_node refcount leak in imx_src_init()
Min zhang <[email protected]>
clk: hisilicon: reset: Use devm_kzalloc to initialize hisi_reset_controller
Philipp Zabel <[email protected]>
arm64: dts: imx8mp-frdm: Add missing HDMI DDC pinctrl
Shengjiu Wang <[email protected]>
ASoC: fsl_audmix: rework runtime PM handling in probe
Runyu Xiao <[email protected]>
ASoC: rt700-sdw: always drain jack work on remove
Rosen Penev <[email protected]>
clk: stm32: add missing bitfield.h header
Joey Lu <[email protected]>
clk: nuvoton: ma35d1: fix ma35d1_clk_pll_determine_rate logic
Joey Lu <[email protected]>
clk: nuvoton: ma35d1: fix PLL_CTL1_FRAC bit field width and fractional calc
Joey Lu <[email protected]>
clk: nuvoton: ma35d1: fix ignored div_u64 return values in PLL freq calculation
Alexander A. Klimov <[email protected]>
clk: moxart: remove unused variables, fix refcount leak
Xuyang Dong <[email protected]>
clk: eswin: Add CLK_IGNORE_UNUSED to NoC clock
David Carlier <[email protected]>
clk: canaan: Clear rate fields before reprogramming dividers
Myeonghun Pak <[email protected]>
clk: versaclock7: Fix APLL clock leak on probe failure
Yuho Choi <[email protected]>
ARM: imx: avic: Fix OF node reference leaks
Wei Hou <[email protected]>
cxl/pci: Remove incorrect mbox.valid check in cxl_pci_type3_init_mailbox()
Richard Zhu <[email protected]>
arm64: dts: imx943: Correct PCIe outbound address space configuration
Richard Zhu <[email protected]>
arm64: dts: imx94: Correct PCIe outbound address space configuration
Richard Cheng <[email protected]>
cxl/mbox: Clamp mailbox output allocation to the payload size
Mert Seftali <[email protected]>
ASoC: SOF: ipc4-topology: Return error for invalid number of formats
Miquel Raynal (DAVE) <[email protected]>
mtd: rawnand: pl353: Fix debug prints
Gui-Dong Han <[email protected]>
media: cec-pin: Fix event FIFO ordering
Weigang He <[email protected]>
soc: samsung: exynos-pmu: fix of_node refcount leak in exynos_get_pmu_regmap()
Michael Bommarito <[email protected]>
HID: roccat: bound device-supplied profile index
Christos Maragkos <[email protected]>
HID: nintendo: Fix imu_timestamp_us double increment per report
Philipp Weber <[email protected]>
HID: core: quiesce input in hid_hw_stop() to prevent use-after-free
Amin Vakil <[email protected]>
selftests: proc: include fcntl.h in proc-pidns
Maoyi Xie <[email protected]>
platform/chrome: cros_ec_typec: Reject out-of-bounds PD cap count
Jens Remus <[email protected]>
x86/cfi: Use symmetric SYM_START and SYM_END in __CFI_TYPE()
Damon Ding <[email protected]>
drm/bridge: of-display-mode-bridge: Fix missing static const for the bridge funcs
Wanwu Li <[email protected]>
sched_ext/scx_flatcg: Fix cvtime_delta race and add hweight scaling to bypass charging
Waiman Long <[email protected]>
cgroup/cpuset: Avoid unnecessary cpus & mems update in cpuset_hotplug_update_tasks()
Konstantin Andreev <[email protected]>
smack: restrict smackfs/{direct,mapped} values to 0-255
Konstantin Andreev <[email protected]>
smack: deduplicate smackfs/{direct,mapped} file_operations
Dmitry Antipov <[email protected]>
smack: simplify write handlers of sysfs entries
Konstantin Andreev <[email protected]>
smack: fix incorrect task context in smack_msg_queue_msgrcv
Maxime Ripard <[email protected]>
drm/bridge: cdns-mhdp8546: Return an error pointer on allocation failure
Maxime Ripard <[email protected]>
drm/bridge: cdns-dsi: Return an error pointer on allocation failure
Deborah Brouwer <[email protected]>
rust: drm: gpuvm: update DriverGpuVm for DeviceContext
Nicolas Frattaroli <[email protected]>
drm/rockchip: vop2: Recognise 10-bit YUV422 as YUV format
Nicolas Frattaroli <[email protected]>
drm/rockchip: vop2: Add RK3576 to the RG swap special case
Nicolas Frattaroli <[email protected]>
drm/display: hdmi-state-helper: Try subsampling in mode_valid
Maíra Canal <[email protected]>
drm/v3d: Clear queue->active_job when v3d_fence_create() fails
Alexandre Courbot <[email protected]>
gpu: nova-core: gsp: tu102: keep unloading if FWSEC-SB fails
Dmitry Baryshkov <[email protected]>
drm/bridge: display-connector: trigger initial HPD event for DP
Dmitry Baryshkov <[email protected]>
drm/bridge: display-connector: don't autoenable HPD IRQ
Damon Ding <[email protected]>
drm/rockchip: analogix_dp: Fix OF node reference leak via auto cleanup
Damon Ding <[email protected]>
drm/rockchip: analogix_dp: Enable hclk for RK3588
Cristian Ciocaltea <[email protected]>
drm/rockchip: vop2: Wait for layer cfg done before switching LAYERSEL_REGDONE_SEL
Cristian Ciocaltea <[email protected]>
drm/rockchip: vop2: Fix wrong wait target in layer cfg done check
Cristian Ciocaltea <[email protected]>
drm/rockchip: dw_dp: Release core resources
Cristian Ciocaltea <[email protected]>
drm/rockchip: dw_dp: Add missing newline in dev_err_probe() message
Cristian Ciocaltea <[email protected]>
drm/bridge: synopsys: dw-dp: Support unregistering the AUX channel
Paul Kocialkowski <[email protected]>
drm: lcdif: Wait for vblank before disabling DMA
Svyatoslav Ryhel <[email protected]>
drm/tegra: dsi: Re-add clear enable register if DSI was powered by bootloader
Maxime Ripard <[email protected]>
drm/atomic: Drop drm_private_obj.state assignment from create_state
Yicong Hui <[email protected]>
drm: Remove unused header in drm_dumb_buffers.c
Casey Schaufler <[email protected]>
Smack: Fix error in capability bypass
Yosry Ahmed <[email protected]>
KVM: x86: Check EFER validity on KVM_SET_SREGS*
Sean Christopherson <[email protected]>
KVM: x86: Move the bulk of register specific code from x86.c to regs.c
Sean Christopherson <[email protected]>
KVM: x86: Rename __{g,s}et_sregs2() => kvm_vcpu_ioctl_x86_{g,s}et_sregs2()Sean Christopherson <[email protected]>
KVM: x86: Move get_segment_base() to regs.h, as kvm_get_segment_base()
Sean Christopherson <[email protected]>
KVM: x86: Extract REGS and SREGS runtime sync code to helpers
Imran Shaik <[email protected]>
clk: qcom: Fix test_ctl_hi field for DEFAULT_EVO PLLs
Lorenzo Stoakes (ARM) <[email protected]>
mm/mremap: reset unfaulted VMA page offset for MREMAP_DONTUNMAP
Li Chen <[email protected]>
nvdimm: virtio_pmem: refcount requests for token lifetime
Li Chen <[email protected]>
nvdimm: virtio_pmem: use READ_ONCE()/WRITE_ONCE() for wait flags
Li Chen <[email protected]>
nvdimm: virtio_pmem: always wake -ENOSPC waiters
Li Chen <[email protected]>
nvdimm: virtio_pmem: stop allocating child flush bio
Li Chen <[email protected]>
nvdimm: pmem: keep PREFLUSH before data writes
Li Chen <[email protected]>
nvdimm: preserve flush callback -ENOMEM
Shakeel Butt <[email protected]>
memcg: move LRU size accounting on reparenting instead of copying it
Cen Zhang (Microsoft Security FORGE Labs) <[email protected]>
ksmbd: fix tree connection use-after-free in smb2_tree_connect()
Ze Tan <[email protected]>
smb/server: fix tree connection leak in smb2_tree_connect()
Namjae Jeon <[email protected]>
ksmbd: fix maximum allowed access checks
Leo Martins <[email protected]>
btrfs: abort transaction before releasing tree_log_mutex on commit failure
Masami Hiramatsu (Google) <[email protected]>
tracing/probes: Fix BTF kflag check for anonymous struct member access
Martin Kaiser <[email protected]>
tracing/probes: ignore id update from btf_type_skip_modifiers
Muhammad Bilal <[email protected]>
staging: sm750fb: fix mono image source stride mismatch in lynxfb_ops_imageblit()
Jan Kara <[email protected]>
udf: Fix data loss when converting inline inodes to out of line
Jan Kara <[email protected]>
udf: Move udf_map_block() up
Bryam Vargas <[email protected]>
dm-pcache: validate the persisted dirty_tail chain at load
Adrian Hunter <[email protected]>
i3c: master: Do not treat master device as a duplicate target
Adrian Hunter <[email protected]>
i3c: master: Fix use-after-free of master->this
Bryam Vargas <[email protected]>
dm-pcache: validate seg_id fields from persistent memory
Adrian Hunter <[email protected]>
i3c: master: Fix recursive locking during device registration
Adrian Hunter <[email protected]>
i3c: master: Fix device_register() error path
SJ Park <[email protected]>
mm/damon/core: skip aging from repeated aggressive merging
Sven Eckelmann <[email protected]>
batman-adv: bla: avoid CRC corruption due to parallel claim add
Sven Eckelmann <[email protected]>
batman-adv: dat: atomically update mac addresses
Akhmed Zhitaev <[email protected]>
drm/amd/display: Scale custom brightness curve from full range
-------------
Diffstat:
.../ABI/testing/configfs-usb-gadget-uac1_legacy | 3 - Documentation/admin-guide/device-mapper/dm-ima.rst | 7 +- .../admin-guide/device-mapper/dm-integrity.rst | 13 + Documentation/hwmon/emc1403.rst | 8 +- Documentation/leds/leds-st1202.rst | 2 +- Documentation/sunrpc/xdr/nfs4_1.x | 241 +++- Documentation/usb/gadget-testing.rst | 3 - Makefile | 10 +- arch/arm/Kconfig | 1 + arch/arm/boot/dts/allwinner/sun4i-a10.dtsi | 2 +- arch/arm/boot/dts/marvell/armada-388-helios4.dts | 13 + arch/arm/kernel/hw_breakpoint.c | 11 +- arch/arm/mach-imx/avic.c | 2 + arch/arm/mach-imx/src.c | 3 + arch/arm/mach-lpc32xx/common.c | 5 +- arch/arm/mach-lpc32xx/common.h | 2 + arch/arm/mach-lpc32xx/phy3250.c | 2 + arch/arm/mach-lpc32xx/pm.c | 5 +- arch/arm/mach-omap2/omap_hwmod.c | 26 +- arch/arm/mach-tegra/irq.c | 9 +- arch/arm/mm/fault.c | 22 +- arch/arm64/Kconfig | 2 + .../boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 4 +- arch/arm64/boot/dts/amlogic/meson-axg-s400.dts | 4 + arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 3 +- arch/arm64/boot/dts/freescale/imx8-ss-audio.dtsi | 8 +- arch/arm64/boot/dts/freescale/imx8mp-ab2.dts | 4 + arch/arm64/boot/dts/freescale/imx8mp-frdm.dts | 2 + .../boot/dts/freescale/imx93-kontron-osm-s.dtsi | 4 +- arch/arm64/boot/dts/freescale/imx94.dtsi | 5 +- arch/arm64/boot/dts/freescale/imx943.dtsi | 5 +- .../boot/dts/freescale/imx95-toradex-smarc.dtsi | 1 + .../boot/dts/marvell/armada-3720-turris-mox.dts | 3 +- .../boot/dts/mediatek/mt8390-tungsten-smarc.dtsi | 4 - arch/arm64/boot/dts/nvidia/tegra264.dtsi | 10 +- arch/arm64/boot/dts/qcom/agatti.dtsi | 1 + arch/arm64/boot/dts/qcom/eliza-mtp.dts | 4 +- arch/arm64/boot/dts/qcom/eliza.dtsi | 4 +- arch/arm64/boot/dts/qcom/glymur-crd.dts | 399 ------ arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 434 ++++++- arch/arm64/boot/dts/qcom/glymur.dtsi | 25 +- arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 20 +- .../qcom/hamoa-lenovo-ideacentre-mini-01q8x10.dts | 20 +- arch/arm64/boot/dts/qcom/hamoa.dtsi | 4 +- arch/arm64/boot/dts/qcom/ipq5018.dtsi | 5 +- arch/arm64/boot/dts/qcom/kaanapali-mtp.dts | 4 +- arch/arm64/boot/dts/qcom/kaanapali-qrd.dts | 4 +- arch/arm64/boot/dts/qcom/kaanapali.dtsi | 4 +- arch/arm64/boot/dts/qcom/kodiak.dtsi | 8 +- .../boot/dts/qcom/lemans-evk-ifp-mezzanine.dtso | 18 +- arch/arm64/boot/dts/qcom/lemans-evk.dts | 4 +- arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi | 8 +- arch/arm64/boot/dts/qcom/lemans.dtsi | 8 +- arch/arm64/boot/dts/qcom/milos.dtsi | 2 + .../boot/dts/qcom/monaco-evk-ifp-mezzanine.dtso | 18 +- arch/arm64/boot/dts/qcom/monaco-monza-som.dtsi | 16 +- arch/arm64/boot/dts/qcom/monaco.dtsi | 24 +- .../boot/dts/qcom/msm8976-longcheer-l9360.dts | 4 +- arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts | 2 +- .../boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi | 4 - arch/arm64/boot/dts/qcom/msm8998-xiaomi-sagit.dts | 5 - arch/arm64/boot/dts/qcom/msm8998.dtsi | 24 +- arch/arm64/boot/dts/qcom/purwa-iot-som.dtsi | 20 +- arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 4 +- arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 4 +- .../boot/dts/qcom/qcm6490-particle-tachyon.dts | 4 +- arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts | 4 +- arch/arm64/boot/dts/qcom/qcs404.dtsi | 16 +- .../boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts | 18 +- .../qcom/qcs6490-rb3gen2-industrial-mezzanine.dtso | 50 +- arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 22 +- .../dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts | 22 +- .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 4 +- arch/arm64/boot/dts/qcom/qcs8550-aim300.dtsi | 4 +- arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 8 +- arch/arm64/boot/dts/qcom/sa8155p-adp.dts | 8 +- arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 16 +- arch/arm64/boot/dts/qcom/sa8540p-ride.dts | 8 +- arch/arm64/boot/dts/qcom/sar2130p-qar2130p.dts | 4 +- arch/arm64/boot/dts/qcom/sar2130p.dtsi | 8 +- arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts | 4 +- arch/arm64/boot/dts/qcom/sc7180-ecs-liva-qc710.dts | 4 +- arch/arm64/boot/dts/qcom/sc7180-idp.dts | 4 +- arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 9 +- arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 5 + arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 4 +- arch/arm64/boot/dts/qcom/sc7280-qcard.dtsi | 4 +- .../arm64/boot/dts/qcom/sc8180x-lenovo-flex-5g.dts | 73 +- arch/arm64/boot/dts/qcom/sc8180x-primus.dts | 72 +- arch/arm64/boot/dts/qcom/sc8180x.dtsi | 16 +- arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 4 +- .../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 2 +- .../boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 4 +- .../boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 19 +- arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 10 +- arch/arm64/boot/dts/qcom/sdm632-motorola-ocean.dts | 2 +- arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi | 5 + arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 8 +- arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 4 +- arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi | 4 +- arch/arm64/boot/dts/qcom/sdm845-mtp.dts | 8 +- .../boot/dts/qcom/sdm845-samsung-starqltechn.dts | 4 +- arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts | 4 +- .../dts/qcom/sdm845-xiaomi-beryllium-common.dtsi | 4 +- arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts | 4 +- arch/arm64/boot/dts/qcom/sdm845.dtsi | 64 +- .../dts/qcom/sdm850-huawei-matebook-e-2019.dts | 8 +- .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 8 +- arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts | 8 +- .../boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 2 +- arch/arm64/boot/dts/qcom/sm6125.dtsi | 153 +-- arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 6 +- arch/arm64/boot/dts/qcom/sm8150-hdk.dts | 8 +- .../boot/dts/qcom/sm8150-microsoft-surface-duo.dts | 4 +- arch/arm64/boot/dts/qcom/sm8150-mtp.dts | 4 +- .../boot/dts/qcom/sm8150-sony-xperia-kumano.dtsi | 4 +- arch/arm64/boot/dts/qcom/sm8150.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8250-hdk.dts | 8 +- arch/arm64/boot/dts/qcom/sm8250-mtp.dts | 8 +- .../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 4 +- .../boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 2 +- arch/arm64/boot/dts/qcom/sm8250-xiaomi-pipa.dts | 4 +- arch/arm64/boot/dts/qcom/sm8250.dtsi | 48 +- arch/arm64/boot/dts/qcom/sm8350-hdk.dts | 8 +- .../dts/qcom/sm8350-microsoft-surface-duo2.dts | 8 +- arch/arm64/boot/dts/qcom/sm8350-mtp.dts | 8 +- .../boot/dts/qcom/sm8350-sony-xperia-sagami.dtsi | 4 +- arch/arm64/boot/dts/qcom/sm8350.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8450-hdk.dts | 4 +- arch/arm64/boot/dts/qcom/sm8450-qrd.dts | 4 +- .../boot/dts/qcom/sm8450-sony-xperia-nagara.dtsi | 4 +- arch/arm64/boot/dts/qcom/sm8450.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8550-hdk.dts | 4 +- arch/arm64/boot/dts/qcom/sm8550-mtp.dts | 4 +- arch/arm64/boot/dts/qcom/sm8550-qrd.dts | 4 +- .../dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts | 4 +- arch/arm64/boot/dts/qcom/sm8550.dtsi | 8 +- .../boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts | 4 +- arch/arm64/boot/dts/qcom/sm8650-hdk.dts | 4 +- arch/arm64/boot/dts/qcom/sm8650-mtp.dts | 4 +- arch/arm64/boot/dts/qcom/sm8650-qrd.dts | 4 +- arch/arm64/boot/dts/qcom/sm8650.dtsi | 8 +- arch/arm64/boot/dts/qcom/sm8750-mtp.dts | 4 +- arch/arm64/boot/dts/qcom/sm8750-qrd.dts | 4 +- arch/arm64/boot/dts/qcom/sm8750.dtsi | 5 +- arch/arm64/boot/dts/qcom/talos-evk-som.dtsi | 4 +- arch/arm64/boot/dts/qcom/talos.dtsi | 8 +- arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi | 20 +- arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi | 20 +- arch/arm64/boot/dts/qcom/x1-crd.dtsi | 20 +- arch/arm64/boot/dts/qcom/x1-dell-thena.dtsi | 16 +- arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi | 12 +- arch/arm64/boot/dts/qcom/x1-microsoft-denali.dtsi | 8 +- arch/arm64/boot/dts/qcom/x1e001de-devkit.dts | 20 +- .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 20 +- .../boot/dts/qcom/x1e80100-dell-xps13-9345.dts | 16 +- .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 12 +- .../dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts | 16 +- .../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 16 +- arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 20 +- .../boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts | 20 +- arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 2 +- arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 2 +- .../boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts | 14 +- .../boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts | 15 +- .../boot/dts/rockchip/rk3399-gru-chromebook.dtsi | 3 +- .../boot/dts/rockchip/rk3566-bigtreetech-cb2.dtsi | 2 +- arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 4 +- arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi | 4 +- arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 2 +- arch/arm64/include/asm/processor.h | 2 +- arch/arm64/include/asm/ptdump.h | 2 + arch/arm64/include/asm/rsi_cmds.h | 27 +- arch/arm64/kernel/efi.c | 4 +- arch/arm64/kernel/entry-common.c | 30 +- arch/arm64/kernel/hibernate.c | 16 +- arch/arm64/kernel/ptrace.c | 54 +- arch/arm64/kernel/smp.c | 2 +- arch/arm64/lib/Makefile | 4 + arch/arm64/mm/ptdump.c | 14 +- arch/arm64/net/bpf_jit_comp.c | 68 +- arch/csky/kernel/entry.S | 6 +- arch/m68k/emu/nfcon.c | 2 +- arch/m68k/kernel/traps.c | 4 +- arch/mips/kernel/ptrace.c | 6 +- arch/powerpc/configs/85xx-hw.config | 1 + arch/powerpc/include/asm/syscall.h | 6 + arch/powerpc/include/asm/thread_info.h | 1 + arch/powerpc/include/asm/xive.h | 4 +- arch/powerpc/kernel/irq.c | 16 +- arch/powerpc/kernel/smp.c | 3 + arch/powerpc/kernel/syscall.c | 3 + arch/powerpc/kexec/crash.c | 2 +- arch/powerpc/net/bpf_jit_comp64.c | 6 +- arch/powerpc/net/bpf_timed_may_goto.S | 2 +- arch/powerpc/platforms/44x/gpio.c | 1 + arch/powerpc/platforms/powernv/smp.c | 8 +- arch/powerpc/platforms/pseries/smp.c | 8 +- arch/powerpc/sysdev/cpm_common.c | 13 + arch/powerpc/sysdev/xive/common.c | 22 +- arch/riscv/boot/dts/sophgo/cv180x.dtsi | 2 +- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 4 +- arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 4 +- arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 2 +- arch/riscv/boot/dts/spacemit/k1-orangepi-r2s.dts | 4 +- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 24 +- arch/riscv/boot/dts/spacemit/k3-com260.dtsi | 6 +- arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 10 +- arch/riscv/boot/dts/thead/th1520.dtsi | 3 +- arch/riscv/kernel/cpufeature.c | 3 +- arch/riscv/kernel/machine_kexec_file.c | 14 +- arch/riscv/net/bpf_jit_comp64.c | 28 +- arch/riscv/net/bpf_jit_core.c | 1 + arch/s390/include/asm/irqflags.h | 20 +- arch/s390/kernel/Makefile | 1 + arch/s390/kernel/debug.c | 10 +- arch/s390/kernel/irqflags.c | 28 + arch/s390/kernel/vdso/Makefile | 3 +- arch/s390/net/bpf_jit_comp.c | 15 +- arch/x86/entry/entry_64_fred.S | 2 + arch/x86/events/amd/uncore.c | 31 + arch/x86/events/core.c | 3 +- arch/x86/events/intel/core.c | 6 +- arch/x86/events/intel/pt.c | 96 +- arch/x86/events/intel/uncore.c | 151 ++- arch/x86/events/intel/uncore.h | 33 +- arch/x86/events/intel/uncore_discovery.c | 21 +- arch/x86/events/intel/uncore_discovery.h | 6 +- arch/x86/events/intel/uncore_nhmex.c | 3 +- arch/x86/events/intel/uncore_snb.c | 82 +- arch/x86/events/intel/uncore_snbep.c | 77 +- arch/x86/events/perf_event.h | 2 +- arch/x86/include/asm/linkage.h | 2 +- arch/x86/include/asm/pkeys.h | 3 + arch/x86/kernel/cpu/common.c | 25 +- arch/x86/kernel/uprobes.c | 408 ++++--- arch/x86/kvm/Makefile | 4 +- arch/x86/kvm/regs.c | 874 ++++++++++++++ arch/x86/kvm/regs.h | 30 + arch/x86/kvm/x86.c | 885 +------------- arch/x86/kvm/x86.h | 2 + arch/x86/mm/pat/set_memory.c | 8 +- arch/x86/net/bpf_jit_comp.c | 49 +- block/bio-integrity-auto.c | 10 +- block/bio-integrity-fs.c | 6 +- block/blk-cgroup.c | 5 + block/blk-iocost.c | 9 +- block/blk-iolatency.c | 13 +- block/blk-stat.c | 2 +- block/fops.c | 6 +- block/kyber-iosched.c | 2 +- crypto/acompress.c | 16 +- crypto/lskcipher.c | 1 - drivers/accessibility/speakup/keyhelp.c | 17 +- drivers/accessibility/speakup/kobjects.c | 6 +- drivers/acpi/acpi_platform.c | 16 +- drivers/acpi/battery.c | 44 +- drivers/acpi/bus.c | 68 +- drivers/acpi/ec.c | 40 +- drivers/acpi/pci_root.c | 14 +- drivers/acpi/processor_core.c | 31 +- drivers/acpi/processor_driver.c | 6 + drivers/acpi/processor_idle.c | 28 +- drivers/acpi/riscv/irq.c | 33 +- drivers/acpi/scan.c | 33 +- drivers/acpi/video_detect.c | 4 +- drivers/base/cacheinfo.c | 9 +- drivers/base/firmware_loader/fallback.c | 10 + drivers/base/soc.c | 15 +- drivers/base/swnode.c | 2 +- drivers/base/transport_class.c | 5 +- drivers/block/mtip32xx/mtip32xx.c | 7 + drivers/block/mtip32xx/mtip32xx.h | 2 + drivers/block/null_blk/main.c | 78 +- drivers/block/ublk_drv.c | 127 +- drivers/bluetooth/btintel.c | 2 +- drivers/bluetooth/btmtk.c | 11 +- drivers/bluetooth/btmtksdio.c | 40 +- drivers/bluetooth/btnxpuart.c | 15 +- drivers/bluetooth/btqca.c | 3 +- drivers/bluetooth/btusb.c | 17 +- drivers/bluetooth/virtio_bt.c | 8 +- drivers/bus/mhi/ep/main.c | 15 +- drivers/bus/mhi/host/init.c | 4 +- drivers/bus/mhi/host/main.c | 6 + drivers/bus/qcom-ebi2.c | 44 +- drivers/bus/ti-sysc.c | 12 +- drivers/char/hw_random/core.c | 4 +- drivers/char/hw_random/imx-rngc.c | 4 +- drivers/char/hw_random/ks-sa-rng.c | 9 +- drivers/char/hw_random/omap-rng.c | 30 +- drivers/char/hw_random/xilinx-trng.c | 32 +- drivers/char/ppdev.c | 10 +- drivers/char/tlclk.c | 36 +- drivers/char/tpm/st33zp24/st33zp24.c | 8 +- drivers/char/xilinx_hwicap/xilinx_hwicap.c | 5 +- drivers/clk/clk-devres.c | 12 +- drivers/clk/clk-k230.c | 4 + drivers/clk/clk-moxart.c | 14 - drivers/clk/clk-palmas.c | 14 +- drivers/clk/clk-versaclock7.c | 2 +- drivers/clk/eswin/clk-eic7700.c | 3 +- drivers/clk/eswin/clk.c | 4 +- drivers/clk/hisilicon/reset.c | 2 +- drivers/clk/imx/clk-scu.c | 1 - drivers/clk/mediatek/clk-mt6735-apmixedsys.c | 5 +- drivers/clk/mediatek/clk-mt8135.c | 5 +- drivers/clk/mediatek/clk-pllfh.c | 98 +- drivers/clk/nuvoton/clk-ma35d1-pll.c | 42 +- drivers/clk/qcom/camcc-sc8280xp.c | 19 - drivers/clk/qcom/common.c | 4 +- drivers/clk/qcom/dispcc-qcm2290.c | 44 +- drivers/clk/qcom/gcc-glymur.c | 33 +- drivers/clk/qcom/gcc-nord.c | 45 +- drivers/clk/qcom/gcc-qcm2290.c | 18 +- drivers/clk/qcom/gcc-qcs8300.c | 8 +- drivers/clk/qcom/gcc-sm6115.c | 6 +- drivers/clk/qcom/gdsc.c | 47 +- drivers/clk/qcom/gdsc.h | 1 + drivers/clk/qcom/gpucc-qcm2290.c | 89 +- drivers/clk/qcom/gxclkctl-kaanapali.c | 1 + drivers/clk/qcom/negcc-nord.c | 75 +- drivers/clk/rockchip/clk-pll.c | 16 +- drivers/clk/rockchip/clk-rk3576.c | 15 +- drivers/clk/rockchip/clk-rk3588.c | 4 +- drivers/clk/rockchip/clk.h | 8 +- drivers/clk/spacemit/ccu-k3.c | 17 +- drivers/clk/stm32/clk-stm32mp21.c | 1 + drivers/clk/stm32/clk-stm32mp25.c | 1 + drivers/clk/sunxi-ng/ccu_mux.c | 57 +- drivers/clk/tegra/clk-tegra124-emc.c | 1 + drivers/clk/ti/adpll.c | 4 +- drivers/clk/ti/divider.c | 2 +- drivers/clk/ti/mux.c | 22 +- drivers/clk/visconti/clkc.c | 2 +- drivers/clk/x86/clk-pmc-atom.c | 3 + drivers/clocksource/clps711x-timer.c | 2 +- drivers/clocksource/samsung_pwm_timer.c | 22 +- drivers/clocksource/timer-armada-370-xp.c | 18 +- drivers/cpufreq/amd-pstate-ut.c | 5 + drivers/cpufreq/amd-pstate.c | 47 +- drivers/cpufreq/imx6q-cpufreq.c | 6 +- drivers/cpufreq/intel_pstate.c | 19 +- drivers/cpufreq/spear-cpufreq.c | 4 +- drivers/crypto/aspeed/aspeed-acry.c | 2 +- drivers/crypto/aspeed/aspeed-hace.c | 2 +- drivers/crypto/atmel-ecc.c | 3 + drivers/crypto/atmel-sha204a.c | 6 +- drivers/crypto/ccp/sev-dev.c | 19 +- drivers/crypto/gemini/sl3516-ce-cipher.c | 8 - drivers/crypto/hisilicon/sec2/sec_crypto.c | 12 +- .../crypto/intel/keembay/keembay-ocs-aes-core.c | 9 +- drivers/crypto/intel/qat/qat_common/adf_aer.c | 2 + drivers/crypto/intel/qat/qat_common/adf_cfg.c | 10 +- .../crypto/intel/qat/qat_common/adf_cfg_common.h | 1 - .../crypto/intel/qat/qat_common/adf_cfg_services.c | 2 +- .../crypto/intel/qat/qat_common/adf_mstate_mgr.c | 3 +- .../intel/qat/qat_common/adf_transport_debug.c | 3 +- drivers/crypto/intel/qat/qat_common/qat_algs.c | 1 + .../crypto/intel/qat/qat_common/qat_compression.c | 3 +- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 7 +- drivers/crypto/sa2ul.c | 6 +- drivers/cxl/core/features.c | 15 +- drivers/cxl/core/mbox.c | 12 +- drivers/cxl/core/memdev.c | 2 +- drivers/cxl/core/port.c | 4 +- drivers/cxl/core/region.c | 7 +- drivers/cxl/pci.c | 13 +- drivers/dax/dax-private.h | 2 - drivers/dax/fsdev.c | 139 ++- drivers/dax/super.c | 54 +- drivers/dma/dw-edma/dw-edma-core.c | 104 +- drivers/dma/hisi_dma.c | 2 +- drivers/dma/mediatek/mtk-uart-apdma.c | 2 +- drivers/dma/qcom/bam_dma.c | 1 + drivers/dma/xilinx/xilinx_dma.c | 26 +- drivers/dma/xilinx/zynqmp_dma.c | 4 +- drivers/dpll/dpll_core.c | 24 +- drivers/dpll/dpll_netlink.c | 59 +- drivers/firewire/.kunitconfig | 1 + drivers/firewire/Kconfig | 15 + drivers/firewire/core-topology.c | 62 +- drivers/firewire/node-tree-test.c | 607 ++++++++++ drivers/firmware/arm_scmi/bus.c | 182 +-- drivers/firmware/arm_scmi/common.h | 2 + drivers/firmware/arm_scmi/driver.c | 81 +- drivers/firmware/arm_scmi/notify.c | 21 + drivers/firmware/arm_scmi/notify.h | 1 + drivers/firmware/arm_scmi/transports/mailbox.c | 26 +- drivers/firmware/arm_scmi/transports/smc.c | 15 +- drivers/firmware/google/coreboot_table.c | 17 +- drivers/firmware/imx/sm-misc.c | 3 + drivers/firmware/qcom/Makefile | 1 + drivers/firmware/qcom/qcom_scm-smc.c | 12 +- drivers/firmware/qcom/qcom_scm.c | 42 +- drivers/firmware/qcom/qcom_scm.h | 2 +- drivers/firmware/qcom/qcom_scm_trace.h | 143 +++ drivers/firmware/qcom/qcom_tzmem.c | 13 +- drivers/gpib/common/gpib_os.c | 21 +- drivers/gpib/common/iblib.c | 3 - drivers/gpib/include/amccs5933.h | 10 +- drivers/gpib/tnt4882/mite.h | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 15 + drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 74 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 22 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 7 + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 8 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c | 10 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h | 10 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 12 +- .../gpu/drm/amd/display/dc/dccg/dcn35/dcn35_dccg.c | 2 +- .../gpu/drm/amd/display/dc/hubp/dcn10/dcn10_hubp.c | 3 +- .../dc/link/protocols/link_dp_irq_handler.c | 1 - .../gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 10 +- .../gpu/drm/amd/pm/powerplay/hwmgr/ppatomfwctrl.c | 11 +- .../gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c | 24 + .../gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c | 35 +- .../gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_8_ppt.c | 5 +- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 2 +- .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +- drivers/gpu/drm/bridge/display-connector.c | 36 + drivers/gpu/drm/bridge/of-display-mode-bridge.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-dp.c | 6 + drivers/gpu/drm/bridge/tc358767.c | 2 +- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 15 +- drivers/gpu/drm/drm_atomic_state_helper.c | 2 - drivers/gpu/drm/drm_dumb_buffers.c | 1 - drivers/gpu/drm/lima/lima_device.c | 12 +- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 5 + drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 5 +- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 8 +- drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 5 +- drivers/gpu/drm/msm/adreno/a6xx_gpu_state.h | 12 + drivers/gpu/drm/msm/adreno/a8xx_gpu.c | 5 +- .../drm/msm/disp/dpu1/catalog/dpu_13_0_kaanapali.h | 12 +- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 4 + drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 12 + drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 22 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 11 +- drivers/gpu/drm/msm/dp/dp_ctrl.c | 5 +- drivers/gpu/drm/msm/dp/dp_display.c | 28 +- drivers/gpu/drm/msm/dp/dp_panel.c | 4 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 2 - drivers/gpu/drm/msm/dsi/phy/dsi_phy.h | 1 + drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 18 +- drivers/gpu/drm/msm/msm_drv.h | 8 - drivers/gpu/drm/msm/msm_gem_vma.c | 2 + drivers/gpu/drm/msm/msm_gpu.c | 8 +- drivers/gpu/drm/msm/msm_ringbuffer.c | 7 +- drivers/gpu/drm/msm/msm_ringbuffer.h | 1 + drivers/gpu/drm/mxsfb/lcdif_kms.c | 15 +- drivers/gpu/drm/omapdrm/dss/dsi.c | 7 +- drivers/gpu/drm/omapdrm/dss/dsi.h | 2 - drivers/gpu/drm/panel/panel-samsung-s6d16d0.c | 10 +- drivers/gpu/drm/panthor/panthor_drv.c | 2 +- drivers/gpu/drm/panthor/panthor_gem.c | 18 + drivers/gpu/drm/panthor/panthor_gem.h | 2 + drivers/gpu/drm/panthor/panthor_mmu.c | 251 +++- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 22 +- drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 15 +- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 5 +- drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 21 +- drivers/gpu/drm/solomon/ssd130x.c | 9 +- drivers/gpu/drm/sun4i/sun4i_crtc.c | 2 +- drivers/gpu/drm/sun4i/sun4i_drv.c | 3 + drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 2 +- drivers/gpu/drm/sun4i/sun4i_tcon.c | 22 +- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 2 + drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 2 +- drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 +- drivers/gpu/drm/sun4i/sun8i_tcon_top.c | 71 +- drivers/gpu/drm/sun4i/sun8i_tcon_top.h | 6 + drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 20 +- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 1 + drivers/gpu/drm/tegra/dsi.c | 9 + drivers/gpu/drm/tve200/tve200_drv.c | 1 + drivers/gpu/drm/v3d/Kconfig | 1 + drivers/gpu/drm/v3d/v3d_drv.h | 39 +- drivers/gpu/drm/v3d/v3d_sched.c | 60 +- drivers/gpu/drm/v3d/v3d_submit.c | 737 ++++++------ drivers/gpu/drm/xe/tests/xe_migrate.c | 3 +- drivers/gpu/drm/xe/xe_gt_idle.c | 3 +- drivers/gpu/drm/xe/xe_guc_submit.c | 6 + drivers/gpu/drm/xe/xe_pagefault.c | 2 +- drivers/gpu/drm/xe/xe_ras.c | 91 ++ drivers/gpu/drm/xe/xe_ras.h | 3 + drivers/gpu/drm/xe/xe_ras_types.h | 26 + drivers/gpu/drm/xe/xe_sysctrl.c | 7 +- drivers/gpu/drm/xe/xe_sysctrl_mailbox.c | 36 +- drivers/gpu/drm/xe/xe_sysctrl_mailbox.h | 4 +- drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h | 2 + drivers/gpu/drm/xe/xe_sysctrl_types.h | 3 - drivers/gpu/drm/xe/xe_wa_oob.rules | 2 +- drivers/gpu/host1x/bus.c | 2 +- drivers/gpu/host1x/debug.c | 4 +- drivers/gpu/host1x/hw/channel_hw.c | 5 +- drivers/gpu/nova-core/fb/hal/gb100.rs | 1 + drivers/gpu/nova-core/fb/hal/gb202.rs | 1 + drivers/gpu/nova-core/fsp.rs | 87 +- drivers/gpu/nova-core/fsp/hal.rs | 4 + drivers/gpu/nova-core/fsp/hal/gb100.rs | 6 + drivers/gpu/nova-core/fsp/hal/gb202.rs | 9 +- drivers/gpu/nova-core/fsp/hal/gh100.rs | 9 +- drivers/gpu/nova-core/gpu.rs | 6 +- drivers/gpu/nova-core/gsp/boot.rs | 2 +- drivers/gpu/nova-core/gsp/commands.rs | 73 +- drivers/gpu/nova-core/gsp/hal/tu102.rs | 19 +- drivers/gpu/nova-core/regs.rs | 2 +- drivers/hid/hid-asus.c | 430 +++++-- drivers/hid/hid-core.c | 9 + drivers/hid/hid-haptic.c | 2 +- drivers/hid/hid-lg4ff.c | 8 + drivers/hid/hid-logitech-hidpp.c | 23 +- drivers/hid/hid-multitouch.c | 2 +- drivers/hid/hid-nintendo.c | 1 - drivers/hid/hid-roccat-kone.c | 8 +- drivers/hid/hid-sony.c | 2 +- drivers/hid/hid-steam.c | 516 +++++--- drivers/hid/hid-tmff.c | 9 +- drivers/hid/i2c-hid/Makefile | 2 +- drivers/hid/i2c-hid/i2c-hid-acpi-prp0001.c | 104 ++ drivers/hid/i2c-hid/i2c-hid-acpi.c | 54 +- drivers/hid/i2c-hid/i2c-hid-acpi.h | 33 + drivers/hid/i2c-hid/i2c-hid-core.c | 2 +- drivers/hid/i2c-hid/i2c-hid-of-goodix.c | 4 +- drivers/hv/vmbus_drv.c | 15 + drivers/hwmon/coretemp.c | 1 + drivers/hwmon/cros_ec_hwmon.c | 17 +- drivers/hwmon/emc1403.c | 27 +- drivers/hwmon/ltc4283.c | 1 + drivers/hwspinlock/hwspinlock_core.c | 2 +- drivers/hwtracing/coresight/coresight-etm4x-cfg.c | 2 +- drivers/hwtracing/coresight/coresight-etm4x-core.c | 59 +- .../hwtracing/coresight/coresight-etm4x-sysfs.c | 6 +- drivers/hwtracing/coresight/coresight-etm4x.h | 7 +- drivers/i2c/busses/i2c-ocores.c | 6 +- drivers/i3c/master.c | 63 +- drivers/i3c/master/adi-i3c-master.c | 1 + drivers/i3c/master/dw-i3c-master.c | 10 +- drivers/i3c/master/mipi-i3c-hci/pio.c | 7 +- drivers/i3c/master/renesas-i3c.c | 28 +- drivers/idle/intel_idle.c | 23 + drivers/iio/accel/dmard09.c | 7 + drivers/iio/dac/ad5686-spi.c | 9 +- drivers/iio/dac/ad5696-i2c.c | 9 +- drivers/iio/light/gp2ap002.c | 14 +- drivers/iio/light/isl29028.c | 2 +- drivers/iio/light/opt4060.c | 4 +- drivers/iio/light/tsl2583.c | 2 +- drivers/iio/light/tsl2772.c | 2 +- drivers/iio/orientation/hid-sensor-rotation.c | 20 +- drivers/infiniband/core/cma.c | 6 +- drivers/infiniband/core/counters.c | 5 +- drivers/infiniband/core/cq.c | 2 +- drivers/infiniband/core/device.c | 1 + drivers/infiniband/core/nldev.c | 5 + drivers/infiniband/core/restrack.c | 165 ++- drivers/infiniband/core/restrack.h | 3 + drivers/infiniband/core/ucma.c | 2 +- drivers/infiniband/core/uverbs_std_types_dmah.c | 7 +- drivers/infiniband/core/verbs.c | 32 +- drivers/infiniband/hw/bng_re/bng_fw.c | 10 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 71 +- drivers/infiniband/hw/cxgb4/device.c | 2 +- drivers/infiniband/hw/cxgb4/mem.c | 50 +- drivers/infiniband/hw/efa/efa_verbs.c | 15 +- drivers/infiniband/hw/erdma/Kconfig | 2 +- drivers/infiniband/hw/erdma/erdma_cm.c | 6 +- drivers/infiniband/hw/erdma/erdma_eq.c | 10 +- drivers/infiniband/hw/erdma/erdma_verbs.c | 39 +- drivers/infiniband/hw/erdma/erdma_verbs.h | 40 +- drivers/infiniband/hw/hfi1/init.c | 16 +- drivers/infiniband/hw/hfi1/user_sdma.c | 13 +- drivers/infiniband/hw/irdma/utils.c | 6 + drivers/infiniband/hw/irdma/verbs.c | 116 +- drivers/infiniband/hw/irdma/verbs.h | 3 + drivers/infiniband/hw/mana/qp.c | 10 +- drivers/infiniband/hw/mlx5/cong.c | 8 +- drivers/infiniband/hw/mlx5/main.c | 7 +- drivers/infiniband/hw/mlx5/qp.c | 25 +- drivers/infiniband/sw/rdmavt/vt.c | 4 +- drivers/infiniband/sw/rxe/rxe_odp.c | 1 + drivers/infiniband/sw/rxe/rxe_req.c | 15 + drivers/infiniband/sw/rxe/rxe_resp.c | 9 +- drivers/infiniband/sw/siw/siw_cm.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 + drivers/infiniband/ulp/isert/ib_isert.c | 85 +- drivers/infiniband/ulp/isert/ib_isert.h | 1 + drivers/infiniband/ulp/srp/ib_srp.c | 45 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 9 +- drivers/iommu/amd/debugfs.c | 12 +- drivers/iommu/amd/init.c | 36 +- drivers/iommu/amd/ppr.c | 2 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 9 +- drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c | 173 ++- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 6 +- drivers/iommu/dma-iommu.c | 26 +- drivers/iommu/intel/iommu.c | 32 +- drivers/iommu/intel/iommu.h | 2 +- drivers/iommu/intel/pasid.c | 9 +- drivers/iommu/iommufd/device.c | 13 +- drivers/iommu/iommufd/iommufd_private.h | 9 +- drivers/iommu/iommufd/main.c | 20 + drivers/iommu/iommufd/selftest.c | 12 +- drivers/iommu/msm_iommu.c | 2 +- drivers/iommu/mtk_iommu_v1.c | 2 +- drivers/ipack/devices/ipoctal.c | 56 +- drivers/irqchip/irq-ast2700-intc0.c | 4 +- drivers/irqchip/irq-ast2700-intc1.c | 3 +- drivers/irqchip/irq-gic-v3-its.c | 23 +- drivers/irqchip/irq-gic-v5-irs.c | 38 +- drivers/irqchip/irq-gic-v5.c | 29 +- drivers/irqchip/irq-realtek-rtl.c | 127 +- drivers/irqchip/irq-renesas-irqc.c | 1 + drivers/irqchip/irq-renesas-rzg2l.c | 4 +- drivers/leds/leds-gpio.c | 53 +- drivers/leds/leds-pca9532.c | 18 +- drivers/leds/leds-st1202.c | 96 +- drivers/leds/rgb/leds-lp5860-core.c | 3 +- drivers/leds/rgb/leds-lp5860-spi.c | 10 +- drivers/mailbox/pcc.c | 41 +- drivers/mailbox/qcom-cpucp-mbox.c | 25 +- drivers/mailbox/riscv-sbi-mpxy-mbox.c | 12 +- drivers/mailbox/rockchip-mailbox.c | 17 +- drivers/md/dm-integrity.c | 139 ++- drivers/md/dm-pcache/cache.c | 11 + drivers/md/dm-pcache/cache.h | 17 + drivers/md/dm-pcache/cache_gc.c | 16 +- drivers/md/dm-pcache/cache_key.c | 80 ++ drivers/md/dm-pcache/cache_writeback.c | 23 +- drivers/md/md-bitmap.c | 14 +- drivers/md/md-bitmap.h | 3 +- drivers/md/md-linear.c | 1 + drivers/md/md-llbitmap.c | 30 +- drivers/md/md.c | 80 +- drivers/md/md.h | 1 - drivers/md/raid0.c | 1 + drivers/md/raid1-10.c | 8 +- drivers/md/raid1.c | 121 +- drivers/md/raid10.c | 112 +- drivers/md/raid5-ppl.c | 4 +- drivers/md/raid5.c | 108 +- drivers/media/cec/core/cec-pin.c | 8 +- drivers/media/i2c/rdacm21.c | 5 +- drivers/media/pci/intel/ipu6/ipu6.c | 10 +- drivers/media/platform/amd/isp4/Kconfig | 1 + drivers/media/platform/amd/isp4/isp4_interface.c | 10 +- drivers/media/platform/amd/isp4/isp4_interface.h | 2 +- drivers/media/platform/amd/isp4/isp4_subdev.c | 30 +- drivers/media/platform/broadcom/bcm2835-unicam.c | 2 + drivers/media/platform/qcom/iris/iris_core.c | 12 +- .../platform/qcom/iris/iris_hfi_gen2_command.c | 1 - drivers/media/platform/qcom/iris/iris_state.c | 2 +- drivers/media/platform/st/stm32/stm32-dcmi.c | 15 +- drivers/media/platform/ti/Kconfig | 1 + drivers/media/v4l2-core/v4l2-async.c | 15 +- drivers/mfd/cs42l43.c | 16 +- drivers/mfd/iqs62x.c | 2 +- drivers/mfd/macsmc.c | 8 +- drivers/mfd/rave-sp.c | 64 +- drivers/misc/ad525x_dpot-i2c.c | 1 + drivers/misc/ad525x_dpot-spi.c | 1 + drivers/misc/ad525x_dpot.c | 177 +-- drivers/misc/ad525x_dpot.h | 3 + drivers/misc/bcm-vk/bcm_vk_msg.c | 6 +- drivers/misc/cardreader/rtsx_pcr.c | 2 + drivers/misc/cardreader/rtsx_usb.c | 26 +- drivers/misc/lan966x_pci.c | 1 + drivers/misc/mei/mei_lb.c | 4 +- drivers/misc/pch_phub.c | 20 +- drivers/misc/pci_endpoint_test.c | 11 +- drivers/misc/sgi-gru/grufault.c | 101 +- drivers/misc/sgi-gru/gruprocfs.c | 1 - drivers/misc/sgi-gru/grutables.h | 1 - drivers/misc/vmw_vmci/vmci_event.c | 4 +- drivers/mtd/devices/mtd_intel_dg.c | 2 +- drivers/mtd/mtdpart.c | 3 +- drivers/mtd/mtdswap.c | 1 + drivers/mtd/nand/raw/pl35x-nand-controller.c | 8 +- drivers/mtd/ubi/attach.c | 4 +- drivers/mtd/ubi/build.c | 11 +- drivers/mtd/ubi/fastmap.c | 6 +- drivers/mtd/ubi/io.c | 11 +- drivers/mtd/ubi/ubi.h | 4 +- drivers/mtd/ubi/wl.c | 15 +- drivers/net/amt.c | 3 + drivers/net/bonding/bond_netlink.c | 2 +- drivers/net/can/m_can/m_can.c | 2 +- drivers/net/dsa/b53/b53_common.c | 2 +- drivers/net/dsa/mv88e6xxx/pcs-6352.c | 5 +- drivers/net/dsa/mxl862xx/mxl862xx.c | 1 + drivers/net/ethernet/airoha/airoha_eth.c | 18 +- drivers/net/ethernet/airoha/airoha_eth.h | 7 +- drivers/net/ethernet/airoha/airoha_npu.c | 2 +- drivers/net/ethernet/allwinner/sun4i-emac.c | 4 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +- drivers/net/ethernet/broadcom/bnxt/bnxt_hwmon.c | 2 +- drivers/net/ethernet/freescale/enetc/enetc.c | 72 +- drivers/net/ethernet/freescale/enetc/enetc.h | 11 +- .../net/ethernet/freescale/enetc/enetc4_debugfs.c | 30 +- drivers/net/ethernet/freescale/enetc/enetc4_hw.h | 4 - drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 347 ++---- .../net/ethernet/freescale/enetc/enetc_ethtool.c | 2 +- drivers/net/ethernet/freescale/enetc/enetc_hw.h | 7 +- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 76 +- drivers/net/ethernet/freescale/enetc/enetc_pf.h | 4 - .../net/ethernet/freescale/enetc/enetc_pf_common.c | 84 ++ .../net/ethernet/freescale/enetc/enetc_pf_common.h | 4 + drivers/net/ethernet/freescale/fec_main.c | 6 +- drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c | 2 +- drivers/net/ethernet/huawei/hinic3/hinic3_tx.c | 9 +- drivers/net/ethernet/intel/ice/devlink/devlink.c | 32 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 18 +- drivers/net/ethernet/intel/ice/ice_lib.c | 3 + drivers/net/ethernet/intel/ice/ice_nvm.c | 90 +- drivers/net/ethernet/intel/ice/ice_nvm.h | 2 +- drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 38 +- drivers/net/ethernet/intel/idpf/idpf_txrx.c | 2 +- drivers/net/ethernet/intel/igc/igc_main.c | 3 +- .../net/ethernet/marvell/octeontx2/af/cn20k/api.h | 1 + .../marvell/octeontx2/af/cn20k/mbox_init.c | 21 +- .../net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c | 2 +- drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 43 +- .../ethernet/marvell/octeontx2/af/rvu_debugfs.c | 6 + .../net/ethernet/marvell/octeontx2/af/rvu_nix.c | 11 +- .../ethernet/marvell/octeontx2/nic/otx2_common.c | 6 +- .../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 3 +- .../net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 20 +- .../net/ethernet/marvell/octeontx2/nic/otx2_xsk.c | 3 +- .../net/ethernet/mellanox/mlx5/core/en/xsk/tx.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 20 +- .../ethernet/mellanox/mlx5/core/esw/adj_vport.c | 22 + .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 4 + drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 2 + drivers/net/ethernet/mellanox/mlx5/core/vport.c | 44 +- .../net/ethernet/microchip/sparx5/sparx5_netdev.c | 11 +- .../ethernet/microchip/sparx5/sparx5_vcap_impl.c | 5 +- .../net/ethernet/microchip/vcap/vcap_api_debugfs.c | 21 + .../net/ethernet/microchip/vcap/vcap_api_debugfs.h | 14 + drivers/net/ethernet/microsoft/mana/gdma_main.c | 19 + drivers/net/ethernet/nvidia/forcedeth.c | 2 +- drivers/net/ethernet/pensando/ionic/ionic_main.c | 4 + drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 31 +- drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c | 467 ++++---- .../net/ethernet/qualcomm/rmnet/rmnet_map_data.c | 1 + drivers/net/ethernet/realtek/8139cp.c | 2 +- .../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 2 +- drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 2 +- .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 2 +- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 30 +- .../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 57 +- drivers/net/ethernet/wangxun/libwx/wx_ptp.c | 18 +- drivers/net/ethernet/wangxun/libwx/wx_type.h | 2 +- drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c | 5 +- drivers/net/ethernet/wangxun/txgbe/txgbe_type.h | 2 +- drivers/net/gtp.c | 2 + drivers/net/ipa/ipa_main.c | 6 +- drivers/net/netdevsim/netdev.c | 2 + drivers/net/phy/air_en8811h.c | 18 +- drivers/net/ppp/pppox.c | 17 + drivers/net/slip/slip.c | 8 - drivers/net/thunderbolt/main.c | 6 +- drivers/net/virtio_net.c | 14 + drivers/net/vxlan/vxlan_core.c | 20 +- drivers/net/vxlan/vxlan_mdb.c | 9 +- drivers/net/vxlan/vxlan_vnifilter.c | 6 +- drivers/net/wireless/ath/ath10k/snoc.c | 9 +- drivers/net/wireless/ath/ath11k/dp_rx.c | 32 +- drivers/net/wireless/ath/ath11k/wmi.c | 40 +- drivers/net/wireless/ath/ath12k/ahb.c | 18 +- drivers/net/wireless/ath/ath12k/core.c | 29 +- drivers/net/wireless/ath/ath12k/core.h | 13 +- drivers/net/wireless/ath/ath12k/dp_tx.c | 46 + drivers/net/wireless/ath/ath12k/dp_tx.h | 2 + drivers/net/wireless/ath/ath12k/hal.c | 8 +- drivers/net/wireless/ath/ath12k/hal.h | 5 +- drivers/net/wireless/ath/ath12k/mac.c | 72 +- drivers/net/wireless/ath/ath12k/peer.c | 132 +- drivers/net/wireless/ath/ath12k/peer.h | 14 +- drivers/net/wireless/ath/ath12k/qmi.c | 168 ++- drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c | 64 +- .../net/wireless/ath/ath12k/wifi7/hal_rx_desc.h | 34 +- drivers/net/wireless/ath/ath12k/wifi7/hw.c | 61 +- drivers/net/wireless/ath/ath12k/wmi.c | 160 ++- drivers/net/wireless/ath/ath12k/wmi.h | 8 + drivers/net/wireless/ath/ath6kl/wmi.c | 17 +- .../net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 4 + drivers/net/wireless/intel/iwlwifi/fw/dump.c | 2 +- drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 8 +- drivers/net/wireless/intel/iwlwifi/mei/main.c | 8 +- drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 +- drivers/net/wireless/mediatek/mt76/channel.c | 98 +- drivers/net/wireless/mediatek/mt76/dma.c | 48 +- drivers/net/wireless/mediatek/mt76/dma.h | 2 +- drivers/net/wireless/mediatek/mt76/mac80211.c | 15 + drivers/net/wireless/mediatek/mt76/mcu.c | 12 +- drivers/net/wireless/mediatek/mt76/mmio.c | 18 +- drivers/net/wireless/mediatek/mt76/mt76.h | 7 + drivers/net/wireless/mediatek/mt76/mt76_connac.h | 8 +- .../net/wireless/mediatek/mt76/mt76_connac_mac.c | 6 +- .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 16 +- .../net/wireless/mediatek/mt76/mt76_connac_mcu.h | 4 + drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7915/init.c | 11 +- drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 8 +- drivers/net/wireless/mediatek/mt76/mt7915/main.c | 24 +- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 14 +- drivers/net/wireless/mediatek/mt76/mt7915/mcu.h | 6 +- drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h | 18 + drivers/net/wireless/mediatek/mt76/mt7915/pci.c | 9 +- drivers/net/wireless/mediatek/mt76/mt7915/soc.c | 2 +- .../net/wireless/mediatek/mt76/mt7915/testmode.c | 5 +- drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 5 +- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 28 +- drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 103 ++ drivers/net/wireless/mediatek/mt76/mt7925/Makefile | 2 +- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 56 +- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 16 +- drivers/net/wireless/mediatek/mt76/mt7925/nan.c | 927 ++++++++++++++ drivers/net/wireless/mediatek/mt76/mt7925/nan.h | 419 +++++++ drivers/net/wireless/mediatek/mt76/mt7925/regd.c | 30 + drivers/net/wireless/mediatek/mt76/mt7925/regd.h | 3 + drivers/net/wireless/mediatek/mt76/mt792x.h | 38 + drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 91 +- drivers/net/wireless/mediatek/mt76/mt7996/init.c | 20 +- drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 60 +- drivers/net/wireless/mediatek/mt76/mt7996/main.c | 40 +- drivers/net/wireless/mediatek/mt76/mt7996/mcu.c | 21 +- drivers/net/wireless/mediatek/mt76/mt7996/mcu.h | 2 +- drivers/net/wireless/mediatek/mt76/mt7996/mmio.c | 90 +- drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h | 1 + drivers/net/wireless/mediatek/mt76/mt7996/regs.h | 24 +- drivers/net/wireless/mediatek/mt76/scan.c | 17 +- drivers/net/wireless/mediatek/mt76/sdio.c | 11 +- drivers/net/wireless/mediatek/mt76/tx.c | 9 +- drivers/net/wireless/mediatek/mt76/usb.c | 11 + drivers/net/wireless/realtek/rtlwifi/pci.c | 6 +- drivers/net/wireless/realtek/rtw89/debug.c | 2 +- drivers/net/wireless/realtek/rtw89/fw.c | 10 +- drivers/net/wireless/realtek/rtw89/fw.h | 3 +- drivers/net/wireless/realtek/rtw89/mac.c | 2 +- drivers/net/wireless/realtek/rtw89/mac80211.c | 35 +- drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +- drivers/net/wireless/virtual/mac80211_hwsim_main.c | 5 +- drivers/net/wireless/zydas/zd1211rw/zd_usb.c | 8 + drivers/nfc/pn533/pn533.c | 21 +- drivers/nvdimm/label.c | 15 +- drivers/nvdimm/nd_virtio.c | 121 +- drivers/nvdimm/pmem.c | 15 +- drivers/nvdimm/region_devs.c | 5 +- drivers/nvdimm/virtio_pmem.c | 17 +- drivers/nvdimm/virtio_pmem.h | 6 + drivers/nvme/host/apple.c | 62 +- drivers/nvme/host/core.c | 5 +- drivers/nvme/host/fc.c | 6 + drivers/nvme/host/ioctl.c | 117 +- drivers/nvme/host/nvme.h | 7 + drivers/nvme/host/pci.c | 2 + drivers/nvme/target/admin-cmd.c | 12 +- drivers/nvme/target/configfs.c | 10 +- drivers/nvme/target/core.c | 54 +- drivers/nvme/target/fabrics-cmd-auth.c | 12 +- drivers/nvme/target/fabrics-cmd.c | 2 +- drivers/nvme/target/nvmet.h | 6 + drivers/nvme/target/pci-epf.c | 2 +- drivers/nvme/target/pr.c | 27 +- drivers/nvme/target/rdma.c | 31 +- drivers/nvme/target/zns.c | 2 +- drivers/of/irq.c | 4 +- drivers/opp/core.c | 13 +- drivers/pci/controller/cadence/Kconfig | 4 +- drivers/pci/controller/cadence/pci-j721e.c | 4 +- drivers/pci/controller/dwc/Kconfig | 2 + drivers/pci/controller/dwc/pci-keystone.c | 6 +- drivers/pci/controller/dwc/pcie-designware-ep.c | 19 + drivers/pci/controller/dwc/pcie-designware.h | 1 + drivers/pci/controller/dwc/pcie-qcom.c | 37 + drivers/pci/controller/dwc/pcie-ultrarisc.c | 85 +- drivers/pci/controller/pci-xgene.c | 5 +- drivers/pci/controller/plda/pcie-starfive.c | 10 +- drivers/pci/pci-driver.c | 192 +-- drivers/pci/pci-sysfs.c | 26 +- drivers/pci/pci.h | 41 +- drivers/pci/pcie/aspm.c | 19 +- drivers/pci/pwrctrl/pci-pwrctrl-tc9563.c | 24 +- drivers/pci/search.c | 8 +- drivers/perf/arm_pmuv3.c | 2 +- drivers/perf/arm_spe_pmu.c | 2 +- drivers/perf/cxl_pmu.c | 2 +- drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 33 +- drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 1 + drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c | 12 +- drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 12 +- drivers/phy/qualcomm/phy-qcom-sgmii-eth.c | 37 +- drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 26 +- drivers/phy/renesas/phy-rcar-gen2.c | 1 - drivers/phy/renesas/phy-rcar-gen3-usb2.c | 27 +- drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 2 +- drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c | 160 ++- drivers/phy/starfive/phy-jh7110-dphy-rx.c | 5 +- drivers/phy/starfive/phy-jh7110-dphy-tx.c | 5 +- drivers/phy/sunplus/phy-sunplus-usb2.c | 6 +- drivers/pinctrl/Kconfig | 4 +- drivers/pinctrl/airoha/pinctrl-airoha.c | 362 ++++-- drivers/pinctrl/bcm/Kconfig | 2 + drivers/pinctrl/bcm/pinctrl-bcm2835.c | 1 - drivers/pinctrl/freescale/pinctrl-imx1-core.c | 7 +- drivers/pinctrl/mediatek/mtk-eint.c | 25 +- drivers/pinctrl/mediatek/pinctrl-moore.c | 6 +- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 14 +- drivers/pinctrl/mediatek/pinctrl-paris.c | 2 +- drivers/pinctrl/pinctrl-eic7700.c | 3 + drivers/pinctrl/pinctrl-generic.c | 25 +- drivers/pinctrl/pinctrl-rockchip.c | 50 +- drivers/pinctrl/qcom/pinctrl-shikra.c | 1 + drivers/pinctrl/spacemit/pinctrl-k1.c | 10 +- drivers/pinctrl/tegra/pinctrl-tegra264.c | 24 +- drivers/platform/arm64/qcom-hamoa-ec.c | 4 +- drivers/platform/chrome/cros_ec_debugfs.c | 6 +- drivers/platform/chrome/cros_ec_lightbar.c | 7 +- drivers/platform/chrome/cros_ec_sensorhub_ring.c | 9 +- drivers/platform/chrome/cros_ec_typec.c | 6 + drivers/platform/mellanox/mlxbf-bootctl.c | 1 + drivers/platform/mellanox/mlxbf-pmc.c | 10 +- drivers/platform/surface/surface_acpi_notify.c | 6 +- drivers/platform/x86/acer-wmi.c | 4 +- drivers/platform/x86/amd/hsmp/hwmon.c | 3 + drivers/platform/x86/asus-wireless.c | 11 +- drivers/platform/x86/asus-wmi.c | 6 +- drivers/platform/x86/dell/dell-wmi-base.c | 19 +- drivers/platform/x86/dell/dell-wmi-privacy.c | 4 +- .../x86/dell/dell-wmi-sysman/dell-wmi-sysman.h | 2 +- .../x86/hp/hp-bioscfg/passwdobj-attributes.c | 5 + drivers/platform/x86/lg-laptop.c | 21 +- drivers/pmdomain/bcm/bcm2835-power.c | 7 +- drivers/power/reset/reboot-mode.c | 30 +- drivers/power/supply/bd71828-power.c | 20 +- drivers/power/supply/bd99954-charger.h | 23 +- drivers/power/supply/bq27xxx_battery.c | 6 +- drivers/power/supply/isp1704_charger.c | 1 + drivers/power/supply/sbs-battery.c | 7 +- drivers/power/supply/sc2731_charger.c | 2 + drivers/powercap/intel_rapl_common.c | 11 +- drivers/powercap/intel_rapl_tpmi.c | 5 +- drivers/pps/clients/pps-gpio.c | 66 +- drivers/pps/pps.c | 10 +- drivers/ptp/ptp_netc.c | 13 +- drivers/pwm/pwm-samsung.c | 22 +- drivers/rapidio/rio-scan.c | 1 + drivers/regulator/adp5055-regulator.c | 2 +- drivers/regulator/core.c | 6 +- drivers/regulator/qcom-rpmh-regulator.c | 6 +- drivers/regulator/tps65185.c | 11 +- drivers/regulator/tps6594-regulator.c | 19 +- drivers/remoteproc/qcom_common.c | 4 +- drivers/remoteproc/qcom_common.h | 6 + drivers/remoteproc/qcom_q6v5.c | 5 +- drivers/remoteproc/qcom_q6v5_adsp.c | 1 + drivers/remoteproc/qcom_q6v5_mss.c | 19 +- drivers/remoteproc/qcom_q6v5_pas.c | 68 ++ drivers/remoteproc/qcom_sysmon.c | 19 + drivers/remoteproc/qcom_wcnss.c | 23 +- drivers/remoteproc/remoteproc_core.c | 67 +- drivers/remoteproc/remoteproc_sysfs.c | 1 - drivers/resctrl/mpam_devices.c | 10 +- drivers/rpmsg/qcom_glink_native.c | 3 - drivers/rtc/rtc-gamecube.c | 4 +- drivers/rtc/rtc-pcf85363.c | 17 +- drivers/rtc/rtc-pcf8563.c | 4 +- drivers/rtc/rtc-spacemit-p1.c | 5 +- drivers/rtc/rtc-zynqmp.c | 7 +- drivers/scsi/mpt3sas/mpt3sas_base.c | 2 + drivers/scsi/qla2xxx/qla_attr.c | 1 - drivers/scsi/qla2xxx/qla_nx2.c | 2 +- drivers/scsi/sd.c | 55 +- drivers/scsi/smartpqi/smartpqi_init.c | 18 + drivers/soc/fsl/qe/gpio.c | 25 + drivers/soc/fsl/qe/qe_ic.c | 3 +- drivers/soc/fsl/qe/qe_io.c | 15 + drivers/soc/qcom/pmic_glink_altmode.c | 3 +- drivers/soc/qcom/rpmh-rsc.c | 37 +- drivers/soc/renesas/Kconfig | 1 - drivers/soc/samsung/exynos-pmu.c | 4 +- drivers/soc/ti/knav_qmss.h | 1 + drivers/soc/ti/knav_qmss_queue.c | 7 +- drivers/soundwire/cadence_master.c | 24 +- drivers/soundwire/qcom.c | 2 +- drivers/spi/spi-amlogic-spisg.c | 2 +- drivers/spi/spi-davinci.c | 7 +- drivers/spi/spi-geni-qcom.c | 17 +- drivers/spi/spi-img-spfi.c | 5 +- drivers/spi/spi-oc-tiny.c | 24 +- drivers/spi/spi-sprd-adi.c | 6 + drivers/staging/fbtft/fbtft-sysfs.c | 2 +- drivers/staging/greybus/audio_gb.c | 13 + drivers/staging/greybus/audio_manager_sysfs.c | 2 +- drivers/staging/media/ipu7/ipu7-isys.c | 1 + drivers/staging/media/ipu7/ipu7.c | 4 +- drivers/staging/octeon/ethernet-rx.c | 2 + drivers/staging/octeon/ethernet-tx.c | 2 + drivers/staging/rtl8723bs/core/rtw_cmd.c | 8 +- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 22 +- drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 4 +- drivers/staging/sm750fb/Kconfig | 1 + drivers/staging/sm750fb/sm750.c | 6 +- drivers/staging/sm750fb/sm750.h | 2 +- drivers/staging/sm750fb/sm750_accel.c | 6 +- drivers/staging/sm750fb/sm750_accel.h | 4 +- drivers/thermal/airoha_thermal.c | 4 +- .../intel/int340x_thermal/int3400_thermal.c | 4 +- drivers/thermal/qcom/qcom-spmi-adc-tm5.c | 3 - drivers/thermal/renesas/rcar_thermal.c | 15 +- drivers/thermal/spacemit/k1_tsensor.c | 5 +- drivers/thermal/thermal_hwmon.c | 89 +- drivers/thunderbolt/stream.c | 12 +- drivers/tty/hvc/Kconfig | 2 +- drivers/tty/serial/amba-pl011.c | 48 +- drivers/tty/serial/ma35d1_serial.c | 12 +- drivers/tty/serial/qcom_geni_serial.c | 10 +- drivers/tty/serial/serial_core.c | 32 +- drivers/tty/tty_io.c | 6 +- drivers/ufs/core/ufs-debugfs.c | 2 +- drivers/ufs/core/ufs-rpmb.c | 4 + drivers/ufs/core/ufs-txeq.c | 27 +- drivers/ufs/core/ufshcd.c | 33 +- drivers/uio/uio.c | 5 + drivers/usb/atm/usbatm.c | 4 +- drivers/usb/chipidea/ci_hdrc_imx.c | 2 +- drivers/usb/core/driver.c | 12 +- drivers/usb/gadget/configfs.c | 4 +- drivers/usb/gadget/function/f_fs.c | 8 +- drivers/usb/gadget/function/f_uac1.c | 13 +- drivers/usb/gadget/function/f_uac1_legacy.c | 56 - drivers/usb/gadget/function/f_uac2.c | 13 +- drivers/usb/gadget/function/u_uac1_legacy.h | 3 - drivers/usb/gadget/udc/aspeed_udc.c | 50 +- drivers/usb/gadget/udc/r8a66597-udc.c | 1 - drivers/usb/misc/usb-ljca.c | 3 + drivers/usb/mtu3/mtu3_core.c | 11 +- drivers/usb/renesas_usbhs/common.c | 6 +- drivers/usb/typec/ucsi/debugfs.c | 1 + drivers/usb/typec/ucsi/ucsi.c | 2 + drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c | 15 +- drivers/vdpa/mlx5/core/mr.c | 2 +- drivers/vdpa/vdpa_sim/vdpa_sim.c | 25 +- drivers/vfio/pci/vfio_pci_config.c | 1 + drivers/vfio/pci/vfio_pci_core.c | 3 + drivers/vhost/net.c | 3 +- drivers/video/backlight/Kconfig | 2 +- drivers/video/backlight/aw99706.c | 15 +- drivers/video/fbdev/clps711x-fb.c | 2 - drivers/video/fbdev/kyro/fbdev.c | 24 +- drivers/video/fbdev/tdfxfb.c | 2 +- drivers/virt/coco/arm-cca-guest/arm-cca-guest.c | 97 +- drivers/virtio/virtio.c | 41 +- drivers/virtio/virtio_balloon.c | 40 +- drivers/virtio/virtio_pci_common.c | 2 +- drivers/virtio/virtio_rtc_driver.c | 14 +- drivers/w1/masters/ds2482.c | 4 + drivers/xen/xenbus/xenbus_probe.c | 3 +- drivers/xen/xenbus/xenbus_xs.c | 16 +- fs/btrfs/acl.c | 4 + fs/btrfs/block-group.c | 8 +- fs/btrfs/defrag.c | 50 +- fs/btrfs/disk-io.c | 29 +- fs/btrfs/extent_io.c | 278 +++-- fs/btrfs/fiemap.c | 4 +- fs/btrfs/file.c | 104 +- fs/btrfs/qgroup.c | 18 +- fs/btrfs/relocation.c | 49 +- fs/btrfs/transaction.c | 8 +- fs/btrfs/transaction.h | 25 +- fs/btrfs/verity.c | 16 +- fs/btrfs/volumes.c | 37 +- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 48 + fs/dax.c | 12 +- fs/dcache.c | 7 +- fs/erofs/Kconfig | 8 +- fs/erofs/decompressor.c | 1 + fs/erofs/internal.h | 2 +- fs/erofs/zdata.c | 12 +- fs/erofs/zmap.c | 38 +- fs/exfat/exfat_fs.h | 2 +- fs/exfat/file.c | 180 ++- fs/exfat/iomap.c | 11 +- fs/ext4/dir.c | 20 +- fs/ext4/ext4.h | 6 +- fs/ext4/extents.c | 2 +- fs/ext4/file.c | 7 + fs/ext4/inline.c | 25 +- fs/ext4/inode.c | 131 +- fs/ext4/migrate.c | 3 +- fs/ext4/namei.c | 2 + fs/ext4/orphan.c | 10 +- fs/ext4/xattr.c | 2 +- fs/f2fs/f2fs.h | 22 +- fs/f2fs/file.c | 17 +- fs/f2fs/gc.c | 2 +- fs/f2fs/segment.c | 8 +- fs/f2fs/super.c | 4 +- fs/fat/nfs.c | 4 +- fs/fuse/cuse.c | 8 +- fs/fuse/dev.c | 14 +- fs/fuse/dev_uring.c | 29 +- fs/fuse/dir.c | 23 +- fs/fuse/file.c | 5 +- fs/fuse/fuse_i.h | 2 + fs/fuse/inode.c | 9 +- fs/fuse/readdir.c | 2 +- fs/hfsplus/catalog.c | 25 +- fs/hfsplus/hfsplus_fs.h | 6 + fs/hugetlbfs/inode.c | 3 +- fs/inode.c | 18 +- fs/iomap/bio.c | 1 + fs/iomap/iter.c | 130 +- fs/isofs/compress.c | 7 +- fs/lockd/nlm3xdr_gen.c | 2 +- fs/lockd/nlm3xdr_gen.h | 2 +- fs/lockd/nlm4xdr_gen.c | 47 +- fs/lockd/nlm4xdr_gen.h | 2 +- fs/nfs/blocklayout/dev.c | 21 +- fs/nfs/callback_xdr.c | 2 +- fs/nfs/client.c | 14 +- fs/nfs/delegation.c | 20 +- fs/nfs/dir.c | 7 + fs/nfs/filelayout/filelayoutdev.c | 3 +- fs/nfs/flexfilelayout/flexfilelayout.c | 3 +- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 3 +- fs/nfs/inode.c | 4 +- fs/nfs/internal.h | 1 + fs/nfs/nfs4client.c | 1 + fs/nfs/nfs4proc.c | 4 +- fs/nfs/nfs4session.c | 16 +- fs/nfs/pnfs.c | 35 +- fs/nfs/pnfs.h | 3 +- fs/nfs/pnfs_nfs.c | 14 +- fs/nfsd/nfs4state.c | 8 +- fs/nfsd/nfs4xdr_gen.c | 589 ++++++++- fs/nfsd/nfs4xdr_gen.h | 5 +- fs/nfsd/nfsd.h | 9 +- fs/nfsd/trace.h | 1 + fs/nilfs2/page.c | 17 +- fs/nilfs2/segment.c | 4 + fs/nilfs2/the_nilfs.c | 6 + fs/notify/fanotify/fanotify.c | 1 + fs/notify/fanotify/fanotify_user.c | 12 +- fs/ntfs/attrib.c | 7 +- fs/ntfs/compress.c | 94 +- fs/ntfs/ea.c | 120 +- fs/ntfs/ea.h | 3 +- fs/ntfs/file.c | 10 +- fs/ntfs/index.c | 96 +- fs/ntfs/inode.c | 79 +- fs/ntfs/inode.h | 1 + fs/ntfs/iomap.c | 62 +- fs/ntfs/mft.c | 12 +- fs/ntfs/namei.c | 10 +- fs/ntfs3/fslog.c | 13 +- fs/ntfs3/fsntfs.c | 8 +- fs/ntfs3/record.c | 34 +- fs/ntfs3/super.c | 13 +- fs/ntfs3/xattr.c | 25 +- fs/ocfs2/acl.c | 141 ++- fs/ocfs2/acl.h | 19 +- fs/ocfs2/cluster/heartbeat.c | 142 ++- fs/ocfs2/cluster/heartbeat.h | 5 + fs/ocfs2/cluster/nodemanager.c | 23 +- fs/ocfs2/cluster/nodemanager.h | 2 + fs/ocfs2/cluster/tcp.c | 186 ++- fs/ocfs2/cluster/tcp.h | 2 + fs/ocfs2/inode.c | 22 +- fs/ocfs2/namei.c | 17 +- fs/ocfs2/xattr.c | 301 ++++- fs/ocfs2/xattr.h | 11 +- fs/resctrl/monitor.c | 60 +- fs/resctrl/rdtgroup.c | 71 +- fs/smb/client/cifs_debug.c | 2 +- fs/smb/client/dir.c | 2 + fs/smb/client/inode.c | 14 - fs/smb/client/smb2inode.c | 9 +- fs/smb/client/smb2pdu.c | 18 +- fs/smb/common/smb2pdu.h | 4 +- fs/smb/common/smbglob.h | 1 + fs/smb/server/Kconfig | 1 - fs/smb/server/auth.c | 20 +- fs/smb/server/compress.c | 76 +- fs/smb/server/compress.h | 1 + fs/smb/server/connection.c | 59 +- fs/smb/server/connection.h | 8 +- fs/smb/server/ksmbd_netlink.h | 6 +- fs/smb/server/ksmbd_work.c | 5 + fs/smb/server/ksmbd_work.h | 14 + fs/smb/server/mgmt/share_config.c | 64 +- fs/smb/server/mgmt/share_config.h | 25 + fs/smb/server/mgmt/tree_connect.c | 10 + fs/smb/server/mgmt/user_config.c | 12 + fs/smb/server/mgmt/user_session.c | 92 +- fs/smb/server/mgmt/user_session.h | 4 + fs/smb/server/misc.h | 4 +- fs/smb/server/oplock.c | 202 +++- fs/smb/server/oplock.h | 4 +- fs/smb/server/proc.c | 13 +- fs/smb/server/server.c | 61 +- fs/smb/server/server.h | 2 + fs/smb/server/smb2ops.c | 15 +- fs/smb/server/smb2pdu.c | 1265 +++++++++++++++++--- fs/smb/server/smb2pdu.h | 60 + fs/smb/server/smbacl.c | 100 +- fs/smb/server/smbacl.h | 3 +- fs/smb/server/transport_ipc.c | 21 + fs/smb/server/transport_tcp.c | 6 + fs/smb/server/vfs.c | 3 - fs/smb/server/vfs_cache.c | 80 +- fs/smb/server/vfs_cache.h | 24 + fs/smb/smbdirect/accept.c | 16 +- fs/smb/smbdirect/connection.c | 13 +- fs/smb/smbdirect/socket.c | 98 +- fs/squashfs/cache.c | 2 +- fs/stat.c | 2 +- fs/super.c | 4 +- fs/udf/inode.c | 129 +- fs/udf/super.c | 23 +- fs/udf/symlink.c | 2 + include/acpi/acpi_bus.h | 6 + include/asm-generic/vmlinux.lds.h | 10 +- include/clocksource/samsung_pwm.h | 2 +- include/cxl/mailbox.h | 2 + include/drm/bridge/dw_dp.h | 1 + include/linux/bio-integrity.h | 3 + include/linux/bpf.h | 36 +- include/linux/cpuset.h | 1 + include/linux/efi.h | 4 +- include/linux/filter.h | 55 + include/linux/fs.h | 20 +- include/linux/fsl/ntmp.h | 2 + include/linux/i3c/master.h | 3 + include/linux/iomap.h | 111 +- include/linux/irqchip/arm-gic-v5.h | 2 + include/linux/leds.h | 2 + include/linux/libnvdimm.h | 9 + include/linux/liveupdate.h | 11 +- include/linux/maple_tree.h | 2 +- include/linux/memcontrol.h | 9 +- include/linux/memory_hotplug.h | 2 +- include/linux/mlx5/vport.h | 3 +- include/linux/nfs4.h | 127 -- include/linux/nfs_xdr.h | 2 +- include/linux/pci.h | 1 + include/linux/remoteproc.h | 15 +- include/linux/rsc_table.h | 17 +- include/linux/rtsx_usb.h | 3 + include/linux/soc/qcom/ubwc.h | 1 + include/linux/sunrpc/xdrgen/_defs.h | 2 + include/linux/sunrpc/xdrgen/nfs4_1.h | 279 ++++- include/linux/sunrpc/xdrgen/nlm3.h | 2 +- include/linux/sunrpc/xdrgen/nlm4.h | 2 +- include/linux/uprobes.h | 5 - include/linux/usb.h | 3 +- include/linux/usb/pd.h | 2 +- include/linux/virtio.h | 1 + include/linux/virtio_net.h | 4 + include/media/rc-map.h | 2 - include/net/bluetooth/hci_core.h | 2 +- include/net/bluetooth/l2cap.h | 5 + include/net/inetpeer.h | 4 + include/net/libeth/xsk.h | 2 +- include/net/netfilter/nf_conntrack_helper.h | 1 + include/net/netfilter/nf_tables.h | 2 - include/net/pkt_sched.h | 1 + include/net/xdp_sock_drv.h | 22 +- include/net/xsk_buff_pool.h | 3 +- include/rdma/uverbs_ioctl.h | 20 + include/sound/sdca_fdl.h | 4 + include/uapi/drm/panthor_drm.h | 12 + include/uapi/drm/xe_drm.h | 11 +- include/uapi/linux/if_xdp.h | 1 + include/uapi/linux/nfs4.h | 2 - include/uapi/linux/time_types.h | 2 +- kernel/Kconfig.preempt | 1 + kernel/bpf/arena.c | 10 +- kernel/bpf/bpf_lsm.c | 1 - kernel/bpf/bpf_struct_ops.c | 12 + kernel/bpf/btf.c | 47 +- kernel/bpf/cgroup.c | 27 +- kernel/bpf/const_fold.c | 11 +- kernel/bpf/core.c | 7 +- kernel/bpf/cpumask.c | 6 +- kernel/bpf/fixups.c | 25 +- kernel/bpf/helpers.c | 17 +- kernel/bpf/liveness.c | 9 +- kernel/bpf/mmap_unlock_work.h | 51 +- kernel/bpf/net_namespace.c | 17 +- kernel/bpf/queue_stack_maps.c | 8 +- kernel/bpf/ringbuf.c | 2 +- kernel/bpf/stackmap.c | 148 ++- kernel/bpf/states.c | 3 +- kernel/bpf/syscall.c | 23 +- kernel/bpf/task_iter.c | 48 +- kernel/bpf/trampoline.c | 20 +- kernel/bpf/verifier.c | 160 ++- kernel/cgroup/cpuset-internal.h | 2 +- kernel/cgroup/cpuset.c | 79 +- kernel/crash_dump_dm_crypt.c | 15 +- kernel/dma/swiotlb.c | 31 +- kernel/events/uprobes.c | 10 - kernel/fork.c | 1 - kernel/kcsan/core.c | 12 +- kernel/liveupdate/luo_flb.c | 20 +- kernel/liveupdate/luo_session.c | 6 +- kernel/locking/lockdep.c | 2 + kernel/module/dups.c | 99 +- kernel/module/stats.c | 2 +- kernel/power/snapshot.c | 5 +- kernel/power/wakelock.c | 2 +- kernel/printk/printk.c | 11 +- kernel/rcu/tree_plugin.h | 10 +- kernel/sched/cpufreq_schedutil.c | 2 +- kernel/sched/deadline.c | 6 +- kernel/sched/ext/ext.c | 59 +- kernel/sched/ext/internal.h | 2 - kernel/sched/fair.c | 34 +- kernel/sched/isolation.c | 16 +- kernel/sched/rt.c | 3 +- kernel/sys.c | 2 +- kernel/time/clocksource.c | 8 +- kernel/time/hrtimer.c | 4 +- kernel/time/namespace.c | 6 +- kernel/time/timekeeping.c | 27 +- kernel/time/timer_migration.c | 4 +- kernel/trace/ring_buffer.c | 2 - kernel/trace/trace.c | 2 +- kernel/trace/trace.h | 4 +- kernel/trace/trace_btf.c | 19 +- kernel/trace/trace_btf.h | 3 +- kernel/trace/trace_events.c | 6 +- kernel/trace/trace_probe.c | 18 +- kernel/workqueue.c | 38 +- lib/interval_tree_test.c | 4 +- lib/maple_tree.c | 43 +- lib/string.c | 3 +- lib/test_bitmap.c | 1 + lib/test_hmm.c | 2 +- mm/damon/core.c | 21 +- mm/damon/tests/core-kunit.h | 2 +- mm/memory_hotplug.c | 3 +- mm/mm_init.c | 19 +- mm/mremap.c | 21 +- mm/swap.c | 9 + mm/vmscan.c | 5 + net/batman-adv/bridge_loop_avoidance.c | 65 +- net/batman-adv/distributed-arp-table.c | 58 +- net/batman-adv/types.h | 2 +- net/bluetooth/hci_conn.c | 20 +- net/bluetooth/hci_sync.c | 26 +- net/bluetooth/l2cap_core.c | 23 +- net/bluetooth/l2cap_sock.c | 100 +- net/bluetooth/mgmt.c | 40 +- net/bluetooth/msft.c | 5 + net/bluetooth/rfcomm/core.c | 4 + net/bridge/br_arp_nd_proxy.c | 24 +- net/bridge/br_netlink_tunnel.c | 3 +- net/bridge/br_vlan.c | 4 +- net/ceph/messenger_v2.c | 5 + net/core/dev.c | 60 +- net/core/filter.c | 4 - net/core/lwt_bpf.c | 15 +- net/core/net_namespace.c | 25 +- net/core/page_pool.c | 71 +- net/core/skbuff.c | 6 +- net/hsr/hsr_device.c | 2 + net/ife/ife.c | 14 +- net/ipv4/inetpeer.c | 38 +- net/ipv4/tcp.c | 6 +- net/ipv4/tcp_output.c | 2 +- net/ipv6/ip6mr.c | 3 +- net/ipv6/route.c | 2 +- net/ipv6/xfrm6_input.c | 2 +- net/kcm/kcmsock.c | 3 + net/mac80211/link.c | 3 +- net/mac80211/mlme.c | 2 +- net/mac80211/s1g.c | 2 +- net/mac80211/spectmgmt.c | 11 +- net/mac80211/tx.c | 3 +- net/netfilter/ipset/ip_set_hash_gen.h | 174 ++- net/netfilter/ipset/ip_set_hash_netiface.c | 1 - net/netfilter/ipset/ip_set_hash_netportnet.c | 1 - net/netfilter/ipvs/ip_vs_ftp.c | 10 +- net/netfilter/nf_conntrack_helper.c | 14 +- net/netfilter/nf_conntrack_netlink.c | 2 +- net/netfilter/nf_nat_sip.c | 5 + net/netfilter/nf_tables_api.c | 70 +- net/netfilter/nft_ct.c | 168 ++- net/netfilter/nft_dynset.c | 25 +- net/netfilter/xt_cgroup.c | 12 +- net/netfilter/xt_hl.c | 4 +- net/nfc/digital_core.c | 2 +- net/nfc/llcp_core.c | 29 +- net/nfc/llcp_sock.c | 14 +- net/nfc/nci/data.c | 10 +- net/nfc/nci/rsp.c | 41 +- net/phonet/pep.c | 2 +- net/rds/cong.c | 4 +- net/sched/act_api.c | 5 +- net/sched/act_bpf.c | 26 + net/sched/act_ct.c | 46 + net/sched/act_ctinfo.c | 11 + net/sched/act_ife.c | 55 +- net/sched/act_pedit.c | 24 + net/sched/act_police.c | 12 + net/sched/act_sample.c | 9 + net/sched/act_skbmod.c | 12 +- net/sched/act_tunnel_key.c | 80 ++ net/sched/cls_api.c | 21 +- net/sched/cls_basic.c | 6 +- net/sched/cls_bpf.c | 6 +- net/sched/cls_cgroup.c | 2 +- net/sched/cls_flow.c | 2 +- net/sched/cls_flower.c | 4 +- net/sched/cls_fw.c | 4 +- net/sched/cls_matchall.c | 4 +- net/sched/cls_route.c | 4 +- net/sched/cls_u32.c | 11 +- net/sched/sch_api.c | 7 +- net/sched/sch_cake.c | 1 + net/sched/sch_codel.c | 2 +- net/sched/sch_fifo.c | 2 +- net/sched/sch_fq.c | 26 +- net/sched/sch_fq_codel.c | 6 +- net/sched/sch_fq_pie.c | 3 +- net/sched/sch_gred.c | 4 +- net/sched/sch_hhf.c | 4 + net/sched/sch_htb.c | 7 +- net/sched/sch_plug.c | 2 +- net/sched/sch_sfq.c | 3 +- net/sched/sch_teql.c | 1 + net/smc/af_smc.c | 2 +- net/smc/smc_inet.c | 16 + net/smc/smc_llc.c | 3 + net/sunrpc/rpcb_clnt.c | 4 + net/sunrpc/xprtsock.c | 20 +- net/tls/tls_strp.c | 16 +- net/vmw_vsock/af_vsock.c | 16 +- net/wireless/core.c | 3 + net/wireless/nl80211.c | 10 +- net/xdp/xsk.c | 30 +- net/xdp/xsk_buff_pool.c | 7 +- net/xfrm/xfrm_output.c | 4 +- rust/helpers/helpers.c | 2 + rust/kernel/cpufreq.rs | 24 +- rust/kernel/device.rs | 10 +- rust/kernel/drm/gpuvm/mod.rs | 32 +- rust/uapi/uapi_helper.h | 2 +- samples/ftrace/ftrace-direct-modify.c | 12 +- samples/ftrace/ftrace-direct-multi-modify.c | 12 +- samples/rust/rust_debugfs.rs | 4 +- samples/rust/rust_debugfs_scoped.rs | 5 +- scripts/Makefile.vmlinux_o | 3 + scripts/livepatch/klp-build | 9 + scripts/mod/modpost.c | 7 +- scripts/tags.sh | 2 +- security/apparmor/domain.c | 106 +- security/apparmor/include/policy.h | 3 + security/apparmor/lib.c | 4 +- security/apparmor/policy.c | 22 +- security/apparmor/policy_unpack.c | 2 +- security/smack/smack.h | 5 +- security/smack/smack_lsm.c | 67 +- security/smack/smackfs.c | 222 +--- sound/core/control_led.c | 2 + sound/core/init.c | 4 +- sound/core/seq/seq_clientmgr.c | 16 +- sound/core/seq/seq_midi.c | 61 +- sound/drivers/mtpav.c | 4 +- sound/hda/codecs/realtek/alc269.c | 13 +- sound/hda/common/proc.c | 2 +- sound/hda/controllers/Kconfig | 1 + sound/pci/asihpi/hpi6000.c | 5 + sound/pci/ice1712/ice1712.c | 7 +- sound/pci/via82xx_modem.c | 26 +- sound/soc/amd/acp-config.c | 2 +- sound/soc/apple/mca.c | 6 +- sound/soc/codecs/rt700-sdw.c | 6 +- sound/soc/codecs/tas2783-sdw.c | 26 +- sound/soc/codecs/tas675x.c | 18 +- sound/soc/fsl/Kconfig | 4 +- sound/soc/fsl/efika-audio-fabric.c | 2 - sound/soc/fsl/fsl-asoc-card.c | 4 +- sound/soc/fsl/fsl_audmix.c | 24 +- sound/soc/fsl/pcm030-audio-fabric.c | 2 - sound/soc/meson/meson-card-utils.c | 17 +- sound/soc/pxa/pxa-ssp.c | 7 +- sound/soc/qcom/qdsp6/q6apm.c | 12 +- sound/soc/samsung/i2s.c | 25 +- sound/soc/soc-dapm.c | 2 +- sound/soc/sof/ipc4-topology.c | 2 + sound/soc/sof/topology.c | 18 +- sound/soc/spacemit/k1_i2s.c | 36 +- sound/soc/ti/j721e-evm.c | 4 +- sound/soc/xilinx/xlnx_formatter_pcm.c | 14 +- tools/bpf/bpftool/Makefile | 2 +- tools/bpf/bpftool/map.c | 16 +- tools/bpf/bpftool/sign.c | 7 +- tools/bpf/bpftool/struct_ops.c | 4 + tools/build/Makefile.feature | 2 - tools/build/feature/Makefile | 14 - tools/include/linux/filter.h | 1 + tools/include/nolibc/arch-powerpc.h | 2 +- tools/include/nolibc/arch-sparc.h | 2 +- tools/include/uapi/linux/if_xdp.h | 1 + tools/lib/api/fd/array.c | 12 +- tools/lib/bpf/features.c | 4 +- tools/lib/bpf/libbpf.c | 3 +- tools/lib/bpf/usdt.c | 16 +- .../xdrgen/templates/C/enum/declaration/enum.j2 | 1 + .../xdrgen/templates/C/pointer/encoder/string.j2 | 2 + .../C/pointer/encoder/variable_length_opaque.j2 | 2 + .../xdrgen/templates/C/struct/encoder/string.j2 | 2 + .../C/struct/encoder/variable_length_opaque.j2 | 2 + .../xdrgen/templates/C/union/definition/close.j2 | 6 - tools/objtool/Build | 4 +- tools/objtool/arch/x86/special.c | 27 + tools/objtool/builtin-check.c | 7 + tools/objtool/check.c | 7 + tools/objtool/elf.c | 13 + tools/objtool/include/objtool/builtin.h | 1 + tools/objtool/include/objtool/elf.h | 1 + tools/objtool/include/objtool/klp.h | 33 +- tools/objtool/include/objtool/special.h | 7 + tools/objtool/klp-diff.c | 233 ++-- tools/objtool/klp-post-link.c | 53 +- tools/objtool/klp-symid.c | 119 ++ tools/objtool/klp-sympos.c | 411 +++++++ tools/perf/arch/arm/util/cs-etm.c | 10 +- tools/perf/arch/arm64/util/arm-spe.c | 8 +- tools/perf/arch/arm64/util/hisi-ptt.c | 2 +- tools/perf/arch/x86/tests/amd-ibs-period.c | 20 +- tools/perf/arch/x86/tests/hybrid.c | 22 +- tools/perf/arch/x86/tests/topdown.c | 4 +- tools/perf/arch/x86/util/auxtrace.c | 2 +- tools/perf/arch/x86/util/intel-bts.c | 6 +- tools/perf/arch/x86/util/intel-pt.c | 9 +- tools/perf/arch/x86/util/iostat.c | 14 +- tools/perf/bench/evlist-open-close.c | 29 +- tools/perf/builtin-annotate.c | 7 +- tools/perf/builtin-c2c.c | 106 +- tools/perf/builtin-ftrace.c | 27 +- tools/perf/builtin-inject.c | 4 +- tools/perf/builtin-kvm.c | 14 +- tools/perf/builtin-kwork.c | 8 +- tools/perf/builtin-lock.c | 4 +- tools/perf/builtin-record.c | 148 ++- tools/perf/builtin-report.c | 6 +- tools/perf/builtin-sched.c | 132 +- tools/perf/builtin-script.c | 16 +- tools/perf/builtin-stat.c | 112 +- tools/perf/builtin-top.c | 106 +- tools/perf/builtin-trace.c | 129 +- .../pmu-events/arch/arm64/nvidia/t410/metrics.json | 28 +- .../pmu-events/arch/arm64/nvidia/t410/misc.json | 6 +- .../arch/x86/amdzen5/floating-point.json | 160 ++- .../pmu-events/arch/x86/amdzen5/load-store.json | 8 +- .../arch/x86/amdzen6/floating-point.json | 34 +- tools/perf/pmu-events/jevents.py | 5 +- tools/perf/pmu-events/metric.py | 6 +- tools/perf/scripts/python/arm-cs-trace-disasm.py | 9 +- tools/perf/tests/backward-ring-buffer.c | 26 +- tools/perf/tests/builtin-test.c | 180 +-- tools/perf/tests/code-reading.c | 14 +- tools/perf/tests/event-times.c | 6 +- tools/perf/tests/event_update.c | 4 +- tools/perf/tests/evsel-roundtrip-name.c | 8 +- tools/perf/tests/evsel-tp-sched.c | 4 +- tools/perf/tests/expand-cgroup.c | 15 +- tools/perf/tests/hists_cumulate.c | 2 +- tools/perf/tests/hists_filter.c | 2 +- tools/perf/tests/hists_link.c | 2 +- tools/perf/tests/hists_output.c | 2 +- tools/perf/tests/hwmon_pmu.c | 7 +- tools/perf/tests/keep-tracking.c | 10 +- tools/perf/tests/mmap-basic.c | 24 +- tools/perf/tests/openat-syscall-all-cpus.c | 6 +- tools/perf/tests/openat-syscall-tp-fields.c | 26 +- tools/perf/tests/openat-syscall.c | 6 +- tools/perf/tests/parse-events.c | 150 +-- tools/perf/tests/parse-metric.c | 11 +- tools/perf/tests/parse-no-sample-id-all.c | 2 +- tools/perf/tests/perf-record.c | 38 +- tools/perf/tests/perf-time-to-tsc.c | 12 +- tools/perf/tests/pfm.c | 12 +- tools/perf/tests/pmu-events.c | 21 +- tools/perf/tests/pmu.c | 4 +- tools/perf/tests/sample-parsing.c | 45 +- .../shell/coresight/test_arm_coresight_disasm.sh | 4 +- tools/perf/tests/shell/inject_aslr.sh | 10 +- tools/perf/tests/shell/jitdump-python.sh | 69 +- tools/perf/tests/shell/kvm.sh | 61 +- .../perf/tests/shell/lib/perf_metric_validation.py | 11 +- tools/perf/tests/shell/lib/perf_record.sh | 58 + tools/perf/tests/shell/pipe_test.sh | 4 +- .../shell/record+zstd_comp_decomp_multi_record.sh | 63 + tools/perf/tests/shell/record.sh | 173 +-- tools/perf/tests/shell/record_lbr.sh | 50 +- tools/perf/tests/shell/stat_all_metrics.sh | 75 +- tools/perf/tests/shell/stat_bpf_counters.sh | 28 +- tools/perf/tests/shell/stat_metrics_values.sh | 7 + tools/perf/tests/shell/test_brstack.sh | 99 +- .../tests/shell/test_dwarf_unwind_multithreaded.sh | 65 + tools/perf/tests/shell/trace_record_replay.sh | 38 +- tools/perf/tests/sw-clock.c | 20 +- tools/perf/tests/switch-tracking.c | 11 +- tools/perf/tests/task-exit.c | 20 +- tools/perf/tests/time-utils-test.c | 14 +- tools/perf/tests/tool_pmu.c | 7 +- tools/perf/tests/topology.c | 4 +- tools/perf/tests/uncore-event-sorting.c | 6 +- tools/perf/ui/browsers/annotate.c | 4 +- tools/perf/ui/browsers/hists.c | 163 ++- tools/perf/util/amd-sample-raw.c | 2 +- tools/perf/util/annotate-data.c | 2 +- tools/perf/util/annotate.c | 61 +- tools/perf/util/annotate.h | 3 +- tools/perf/util/arm-spe.c | 4 + tools/perf/util/auxtrace.c | 29 +- tools/perf/util/block-info.c | 4 +- tools/perf/util/bpf-event.c | 3 +- tools/perf/util/bpf-filter.c | 22 +- tools/perf/util/bpf_counter.c | 2 +- tools/perf/util/bpf_counter_cgroup.c | 14 +- tools/perf/util/bpf_ftrace.c | 9 +- tools/perf/util/bpf_lock_contention.c | 12 +- tools/perf/util/bpf_off_cpu.c | 44 +- tools/perf/util/bpf_trace_augment.c | 8 +- tools/perf/util/cap.c | 4 +- tools/perf/util/cap.h | 3 +- tools/perf/util/capstone.c | 62 +- tools/perf/util/cgroup.c | 26 +- tools/perf/util/compress.h | 6 +- tools/perf/util/cs-etm.c | 105 +- tools/perf/util/data-convert-bt.c | 2 +- tools/perf/util/data-convert-json.c | 1 + tools/perf/util/dso.c | 48 +- tools/perf/util/dso.h | 57 +- tools/perf/util/evlist.c | 494 ++++---- tools/perf/util/evlist.h | 258 +++- tools/perf/util/evsel.c | 135 ++- tools/perf/util/evsel.h | 21 +- tools/perf/util/expr.c | 2 +- tools/perf/util/header.c | 74 +- tools/perf/util/header.h | 2 +- tools/perf/util/intel-bts.c | 2 +- tools/perf/util/intel-pt.c | 2 +- tools/perf/util/intel-tpebs.c | 7 +- tools/perf/util/iostat.c | 2 +- tools/perf/util/iostat.h | 2 +- tools/perf/util/kvm-stat.h | 2 +- tools/perf/util/libbfd.c | 23 +- tools/perf/util/libdw.c | 32 +- tools/perf/util/machine.c | 43 +- tools/perf/util/map.h | 9 +- tools/perf/util/metricgroup.c | 45 +- tools/perf/util/metricgroup.h | 4 +- tools/perf/util/parse-events.c | 40 +- tools/perf/util/parse-events.h | 17 +- tools/perf/util/parse-events.y | 2 +- tools/perf/util/perf_api_probe.c | 20 +- tools/perf/util/pfm.c | 4 +- tools/perf/util/pmu.c | 6 +- tools/perf/util/pmus.c | 2 + tools/perf/util/print-events.c | 2 +- tools/perf/util/python.c | 761 ++++++++---- tools/perf/util/record.c | 11 +- tools/perf/util/s390-sample-raw.c | 21 +- tools/perf/util/sample-raw.c | 4 +- tools/perf/util/session.c | 48 +- tools/perf/util/sideband_evlist.c | 54 +- tools/perf/util/sort.c | 78 +- tools/perf/util/stat-display.c | 6 +- tools/perf/util/stat-shadow.c | 24 +- tools/perf/util/stat.c | 22 +- tools/perf/util/stream.c | 4 +- tools/perf/util/symbol.c | 3 +- tools/perf/util/synthetic-events.c | 17 +- tools/perf/util/thread-stack.c | 2 +- tools/perf/util/time-utils.c | 12 +- tools/perf/util/top.c | 4 +- tools/perf/util/trace-event-read.c | 33 +- tools/perf/util/unwind-libdw.c | 24 +- tools/perf/util/util.c | 12 +- tools/perf/util/zstd.c | 25 +- tools/sched_ext/include/scx/compat.bpf.h | 2 +- tools/sched_ext/scx_flatcg.bpf.c | 19 +- tools/sched_ext/scx_flatcg.c | 4 +- tools/sched_ext/scx_qmap.bpf.c | 2 +- tools/scripts/Makefile.include | 37 +- tools/testing/cxl/test/cxl.c | 541 +++++++-- tools/testing/cxl/test/hmem_test.c | 3 +- tools/testing/cxl/test/mock.h | 2 + tools/testing/kunit/kunit.py | 2 +- tools/testing/kunit/kunit_tool_test.py | 12 + tools/testing/selftests/arm64/fp/fp-ptrace.c | 47 +- tools/testing/selftests/arm64/fp/sve-test.S | 7 +- .../selftests/arm64/mte/check_buffer_fill.c | 2 + .../selftests/arm64/mte/check_child_memory.c | 2 + .../selftests/arm64/mte/check_gcr_el1_cswitch.c | 1 + .../selftests/arm64/mte/check_hugetlb_options.c | 2 + .../selftests/arm64/mte/check_ksm_options.c | 31 +- .../selftests/arm64/mte/check_mmap_options.c | 2 + tools/testing/selftests/arm64/mte/check_prctl.c | 2 +- .../selftests/arm64/mte/check_tags_inclusion.c | 2 + tools/testing/selftests/arm64/mte/check_user_mem.c | 2 + tools/testing/selftests/bpf/Makefile | 9 +- tools/testing/selftests/bpf/README.rst | 4 +- .../bpf/libarena/include/libarena/userspace.h | 2 +- .../selftests/bpf/libarena/src/common.bpf.c | 6 + tools/testing/selftests/bpf/network_helpers.c | 4 +- tools/testing/selftests/bpf/network_helpers.h | 5 + .../selftests/bpf/prog_tests/cgroup_iter_memcg.c | 43 + .../selftests/bpf/prog_tests/global_map_resize.c | 8 +- tools/testing/selftests/bpf/prog_tests/libarena.c | 8 +- .../selftests/bpf/prog_tests/libarena_asan.c | 8 +- tools/testing/selftests/bpf/prog_tests/lsm_bdev.c | 3 +- .../selftests/bpf/prog_tests/lwt_ip_encap.c | 11 +- tools/testing/selftests/bpf/prog_tests/mptcp.c | 13 +- tools/testing/selftests/bpf/prog_tests/sha256.c | 4 +- .../selftests/bpf/prog_tests/uprobe_syscall.c | 2 +- .../testing/selftests/bpf/progs/bpf_tracing_net.h | 3 + tools/testing/selftests/bpf/progs/mptcpify.c | 2 +- tools/testing/selftests/bpf/test_loader.c | 2 +- tools/testing/selftests/bpf/test_progs.c | 22 +- tools/testing/selftests/bpf/test_sockmap.c | 3 +- tools/testing/selftests/bpf/veristat.c | 76 +- tools/testing/selftests/bpf/vmtest.sh | 13 +- tools/testing/selftests/cgroup/test_cpuset_prs.sh | 18 +- .../testing/selftests/cgroup/test_cpuset_v1_hp.sh | 2 +- tools/testing/selftests/drivers/net/config | 5 + tools/testing/selftests/drivers/net/lib/py/env.py | 11 +- .../testing/selftests/drivers/net/ring_reconfig.py | 255 +++- tools/testing/selftests/drivers/net/so_txtime.py | 21 +- tools/testing/selftests/kselftest_harness.h | 2 +- tools/testing/selftests/lsm/common.c | 4 +- tools/testing/selftests/mm/cow.c | 9 +- tools/testing/selftests/mm/hmm-tests.c | 21 +- tools/testing/selftests/mm/hugepage_settings.c | 2 +- tools/testing/selftests/mm/khugepaged.c | 4 +- tools/testing/selftests/mm/ksm_tests.c | 28 +- tools/testing/selftests/mm/memory-failure.c | 44 +- tools/testing/selftests/mm/thuge-gen.c | 15 +- tools/testing/selftests/mm/vm_util.c | 28 +- tools/testing/selftests/mm/vm_util.h | 1 + tools/testing/selftests/namespaces/nsid_test.c | 4 - tools/testing/selftests/proc/proc-maps-race.c | 3 +- tools/testing/selftests/proc/proc-pidns.c | 1 + .../selftests/rseq/rseq-x86-thread-pointer.h | 4 +- .../selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c | 20 +- .../selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c | 13 +- tools/testing/selftests/sched_ext/exit.c | 1 + tools/testing/selftests/sched_ext/prog_run.c | 36 +- tools/testing/selftests/timers/leap-a-day.c | 19 +- tools/testing/selftests/vfio/lib/vfio_pci_device.c | 26 +- tools/testing/selftests/zram/zram_lib.sh | 2 +- 1767 files changed, 31794 insertions(+), 14006 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/1815 drm/amd/display: Scale custom brightness curve from full range
7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Akhmed Zhitaev <[email protected]>
[ Upstream commit 6fd83a1c2cdea48c396f600795217fbdfb8124f6 ]
Custom brightness curves use an 8-bit input signal. After exporting the full PWM range to userspace, the curve normalizer still divides requests by the physical PWM span. On panels with a nonzero minimum PWM level, this can produce a curve input greater than 255 and send an invalid backlight level to DC.
Scale the userspace [0..max] range to the curve's [0..255] range instead. This retains the full advertised range and keeps the reverse readback conversion unchanged.
(Move to amdgpu_dm_backlight.c)
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -4
@@ -5271,10 +5271,10 @@ static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps,return 1 ; } -/* Rescale from [min..max] to [0..AMDGPU_MAX_BL_LEVEL] */ -static inline u32 scale_input_to_fw (int min,int max,u64 input) +/* Rescale userspace [0..max] to the firmware curve's [0..255]. */ +static inline u32 scale_input_to_fw (int max,u64 input) { -return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max - min); +return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max); }/* Rescale from [0..AMDGPU_MAX_BL_LEVEL] to [min..max] */
@@ -5287,7 +5287,7 @@ static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *cap unsigned int min, unsigned int max, uint32_t *user_brightness) { - u32 brightness = scale_input_to_fw(min, max, *user_brightness); + u32 brightness = scale_input_to_fw(max, *user_brightness);u8 lower_signal, upper_signal, upper_lum, lower_lum, lum;int left, right;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 2/1815 batman-adv: dat: atomically update mac addresses
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sven Eckelmann <[email protected]>
commit e6de568d3eda3e3c01c868fabd7a9535d5ee4a73 upstream.
When a MAC address is updated in batadv_dat_entry_add(), it is done using a simple copy function. A parallel reader might only see parts of this update. In worst case, the reader is transporting the half updated MAC address over the network or is creating an ARP response using it - poisoning the ARP cache.
atomic64_t can be used to store the 48 bit of a mac address. A reader will then either see the old mac address or the new one - never a mixture of both.
--- net/batman-adv/distributed-arp-table.c | 58 +++++++++++++++++--------- net/batman-adv/types.h | 2 +- 2 files changed, 40 insertions(+), 20 deletions(-)
net/batman-adv/distributed-arp-table.c +39 -19
@@ -376,18 +376,19 @@ batadv_dat_entry_hash_find(struct batadv_priv *bat_priv, __be32 ip,static void batadv_dat_entry_add (struct batadv_priv *bat_priv,__be32 ip,u8 *mac_addr,unsigned short vid) { +u64 u64_mac =ether_addr_to_u64 (mac_addr);struct batadv_dat_entry *dat_entry;int hash_added; dat_entry =batadv_dat_entry_hash_find (bat_priv, ip, vid);/* if this entry is already known, just update it */ if (dat_entry) { -if (!batadv_compare_eth (dat_entry->mac_addr, mac_addr)) -ether_addr_copy (dat_entry->mac_addr, mac_addr); +atomic64_set (&dat_entry->mac_addr, u64_mac); + dat_entry->last_update = jiffies;batadv_dbg (BATADV_DBG_DAT , bat_priv,"Entry updated: %pI4 %pM (vid: %d)\n" , - &dat_entry->ip, dat_entry->mac_addr, + &dat_entry->ip, mac_addr,batadv_print_vid (vid)); goto out; }
@@ -398,7 +399,7 @@ static void batadv_dat_entry_add(struct batadv_priv *bat_priv, __be32 ip, dat_entry->ip = ip; dat_entry->vid = vid; -ether_addr_copy (dat_entry->mac_addr, mac_addr); +atomic64_set (&dat_entry->mac_addr, u64_mac); dat_entry->last_update = jiffies;kref_init (&dat_entry->refcount);
@@ -414,7 +415,7 @@ static void batadv_dat_entry_add(struct batadv_priv *bat_priv, __be32 ip, }batadv_dbg (BATADV_DBG_DAT , bat_priv,"New entry added: %pI4 %pM (vid: %d)\n" , - &dat_entry->ip, dat_entry->mac_addr,batadv_print_vid (vid)); + &dat_entry->ip, mac_addr,batadv_print_vid (vid)); out:batadv_dat_entry_put (dat_entry);
@@ -868,6 +869,8 @@ batadv_dat_cache_dump_entry(struct sk_buff *msg, u32 portid,struct netlink_callback *cb, struct batadv_dat_entry *dat_entry) { + u8 mac[ETH_ALEN]; +u64 u64_mac;int msecs;void *hdr;
@@ -880,11 +883,12 @@ batadv_dat_cache_dump_entry(struct sk_buff *msg, u32 portid,genl_dump_check_consistent (cb, hdr); msecs =jiffies_to_msecs (jiffies - dat_entry->last_update); + u64_mac =atomic64_read (&dat_entry->mac_addr); +u64_to_ether_addr (u64_mac, mac);if (nla_put_in_addr (msg,BATADV_ATTR_DAT_CACHE_IP4ADDRESS , dat_entry->ip) || -nla_put (msg,BATADV_ATTR_DAT_CACHE_HWADDRESS ,ETH_ALEN , - dat_entry->mac_addr) || +nla_put (msg,BATADV_ATTR_DAT_CACHE_HWADDRESS ,ETH_ALEN , mac) ||nla_put_u16 (msg,BATADV_ATTR_DAT_CACHE_VID , dat_entry->vid) ||nla_put_u32 (msg,BATADV_ATTR_LAST_SEEN_MSECS , msecs)) {genlmsg_cancel (msg, hdr);
@@ -1151,6 +1155,8 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,struct net_device *mesh_iface = bat_priv->mesh_iface;int hdr_size =0 ;unsigned short vid; +u8 mac[ETH_ALEN ]; +u64 u64_mac;if (!READ_ONCE (bat_priv->distributed_arp_table)) goto out;
@@ -1178,6 +1184,9 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv, dat_entry =batadv_dat_entry_hash_find (bat_priv, ip_dst, vid);if (dat_entry) { + u64_mac =atomic64_read (&dat_entry->mac_addr); +u64_to_ether_addr (u64_mac, mac); +/* If the ARP request is destined for a local client the local * client will answer itself. DAT would only generate a * duplicate packet.
@@ -1186,7 +1195,7 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,* additional DAT answer may trigger kernel warnings about * a packet coming from the wrong port. */ -if (batadv_is_my_client (bat_priv, dat_entry->mac_addr, vid)) { +if (batadv_is_my_client (bat_priv, mac, vid)) { ret = true; goto out; }
@@ -1196,18 +1205,16 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,* the backbone gws belonging to our backbone has claimed the * destination. */ -if (!batadv_bla_check_claim (bat_priv, - dat_entry->mac_addr, vid)) { +if (!batadv_bla_check_claim (bat_priv, mac, vid)) {batadv_dbg (BATADV_DBG_DAT , bat_priv,"Device %pM claimed by another backbone gw. Don't send ARP reply!" , - dat_entry->mac_addr); + mac); ret = true; goto out; } skb_new =batadv_dat_arp_create_reply (bat_priv, ip_dst, ip_src, - dat_entry->mac_addr, - hw_src, vid); + mac, hw_src, vid);if (!skb_new) goto out;
@@ -1249,6 +1256,8 @@ bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,struct batadv_dat_entry *dat_entry =NULL ;bool ret = false;unsigned short vid; +u8 mac[ETH_ALEN ]; +u64 u64_mac;int err;if (!READ_ONCE (bat_priv->distributed_arp_table))
@@ -1276,8 +1285,11 @@ bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,if (!dat_entry) goto out; + u64_mac =atomic64_read (&dat_entry->mac_addr); +u64_to_ether_addr (u64_mac, mac); + skb_new =batadv_dat_arp_create_reply (bat_priv, ip_dst, ip_src, - dat_entry->mac_addr, hw_src, vid); + mac, hw_src, vid);if (!skb_new) goto out;
@@ -1368,6 +1380,8 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,u8 *hw_src, *hw_dst;bool dropped = false;unsigned short vid; +u8 mac[ETH_ALEN ]; +u64 u64_mac;if (!READ_ONCE (bat_priv->distributed_arp_table)) goto out;
@@ -1396,11 +1410,17 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,* this frame would lead to doubled receive of an ARP reply. */ dat_entry =batadv_dat_entry_hash_find (bat_priv, ip_src, vid); -if (dat_entry &&batadv_compare_eth (hw_src, dat_entry->mac_addr)) { -batadv_dbg (BATADV_DBG_DAT , bat_priv,"Doubled ARP reply removed: ARP MSG = [src: %pM-%pI4 dst: %pM-%pI4]; dat_entry: %pM-%pI4\n" , - hw_src, &ip_src, hw_dst, &ip_dst, - dat_entry->mac_addr, &dat_entry->ip); - dropped = true; +if (dat_entry) { + u64_mac =atomic64_read (&dat_entry->mac_addr); +u64_to_ether_addr (u64_mac, mac); + +if (batadv_compare_eth (hw_src, mac)) { +batadv_dbg (BATADV_DBG_DAT , bat_priv, +"Doubled ARP reply removed: ARP MSG = [src: %pM-%pI4 dst: %pM-%pI4]; dat_entry: %pM-%pI4\n" , + hw_src, &ip_src, hw_dst, &ip_dst, + mac, &dat_entry->ip); + dropped = true; + } }/* Update our internal cache with both the IP addresses the node got
net/batman-adv/types.h +1 -1
@@ -2176,7 +2176,7 @@ struct batadv_dat_entry {__be32 ip;/** @mac_addr: the MAC address associated to the stored IPv4 */ -u8 mac_addr[ETH_ALEN ]; +atomic64_t mac_addr;/** @vid: the vlan ID associated to this entry */ unsigned short vid;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 3/1815 batman-adv: bla: avoid CRC corruption due to parallel claim add
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sven Eckelmann <[email protected]>
commit 08645ab95768b88e2ff85a89211994651710465b upstream.
batadv_bla_add_claim() is used to add claims and modify the backbone of claims for CLAIM frames from remote backbones and local packets. When it handles a claim, it needs to either
* add the new claim's CRC to the backbone CRC
* remove the already existing claim's CRC from the old backbone and add it to the new backbone
But when the "new" claim code was running in parallel to the "change backbone" code, it can happen that the CRC was invalid because the backbone_gw of the claim was changed twice in the "new" claim code path:
* CPU0 creates the claim for gateway A and publishes it in the claim hash. The crc16 of the address has not yet been added to A's crc at this point.
* CPU1 processes a claim frame of gateway B for the same client, finds the just published claim, and performs the ownership change: it switches the pointer to B, removes the crc16 from A's crc - which never contained it - and adds it to B's crc.
* CPU0 continues behind the creation branch, unconditionally switches the pointer back to A without compensating B's crc (its remove_crc is false for the creation path), and finally adds the crc16 to A's crc
The CRC is then wrong for both:
* claim belongs to A: but CRC is not part of backbone A's CRC
* claim doesn't belong to B: CRC is still part of backbone B's CRC
This wrong CRC is never recomputated from the stored claims. For local backbone claims, this can also not recovered using syncs.
To avoid this, split the functionality in clear separate parts:
* new claim which always adds claim CRC to the backbone CRC (but never changes the already set backbone_gw of the claim back)
* update of existing claim which automatically changes the backbone_gw entry and only updates both backbone CRCs when there was an actual change
--- net/batman-adv/bridge_loop_avoidance.c | 63 ++++++++++++++++---------- 1 file changed, 39 insertions(+), 24 deletions(-)
net/batman-adv/bridge_loop_avoidance.c +39 -24
@@ -694,12 +694,14 @@ static void batadv_bla_add_claim(struct batadv_priv *bat_priv,struct batadv_bla_backbone_gw *old_backbone_gw;struct batadv_bla_claim *claim;struct batadv_bla_claim search_claim; -bool remove_crc = false;int hash_added; +u16 claim_crc; +bool changed;ether_addr_copy (search_claim.addr, mac); search_claim.vid = vid; claim =batadv_claim_hash_find (bat_priv, &search_claim); + claim_crc =crc16 (0 , mac,ETH_ALEN );/* create a new claim entry if it does not exist yet. */ if (!claim) {
@@ -731,43 +733,56 @@ static void batadv_bla_add_claim(struct batadv_priv *bat_priv,kfree (claim);return ; } + +spin_lock_bh (&backbone_gw->crc_lock); + backbone_gw->crc ^= claim_crc; +spin_unlock_bh (&backbone_gw->crc_lock); + +WRITE_ONCE (backbone_gw->lasttime, jiffies); + +batadv_claim_put (claim); +return ; + } + +WRITE_ONCE (claim->lasttime, jiffies); + +/* replace backbone_gw atomically and adjust reference counters */ +spin_lock_bh (&claim->backbone_lock); +if (claim->backbone_gw != backbone_gw) { + changed = true; + + old_backbone_gw = claim->backbone_gw; +kref_get (&backbone_gw->refcount); + claim->backbone_gw = backbone_gw; }else { -WRITE_ONCE (claim->lasttime, jiffies); -if (claim->backbone_gw == backbone_gw) -/* no need to register a new backbone */ - goto claim_free_ref; + old_backbone_gw =NULL ; + changed = false; + } +spin_unlock_bh (&claim->backbone_lock); +if (changed) {batadv_dbg (BATADV_DBG_BLA , bat_priv,"%s(): changing ownership for %pM, vid %d to gw %pM\n" , __func__, mac,batadv_print_vid (vid), backbone_gw->orig); - remove_crc = true; - } +/* add claim address to new backbone_gw */ +spin_lock_bh (&backbone_gw->crc_lock); + backbone_gw->crc ^= claim_crc; +spin_unlock_bh (&backbone_gw->crc_lock); -/* replace backbone_gw atomically and adjust reference counters */ -spin_lock_bh (&claim->backbone_lock); - old_backbone_gw = claim->backbone_gw; -kref_get (&backbone_gw->refcount); - claim->backbone_gw = backbone_gw; -spin_unlock_bh (&claim->backbone_lock); +WRITE_ONCE (backbone_gw->lasttime, jiffies); + } -if (remove_crc) { +if (old_backbone_gw) {/* remove claim address from old backbone_gw */ spin_lock_bh (&old_backbone_gw->crc_lock); - old_backbone_gw->crc ^=crc16 (0 , claim->addr,ETH_ALEN ); + old_backbone_gw->crc ^= claim_crc;spin_unlock_bh (&old_backbone_gw->crc_lock); - } - -batadv_backbone_gw_put (old_backbone_gw); -/* add claim address to new backbone_gw */ -spin_lock_bh (&backbone_gw->crc_lock); - backbone_gw->crc ^=crc16 (0 , claim->addr,ETH_ALEN ); -spin_unlock_bh (&backbone_gw->crc_lock); -WRITE_ONCE (backbone_gw->lasttime, jiffies); +batadv_backbone_gw_put (old_backbone_gw); + } -claim_free_ref:batadv_claim_put (claim); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 4/1815 mm/damon/core: skip aging from repeated aggressive merging
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: SJ Park <[email protected]>
[ Upstream commit 0250dbe08c730d003ef9f484da56ae09a1ea0c4c ]
The number of DAMON regions could temporarily exceed the user-defined maximum number of regions limit for corner cases. For example, users could lower the limit via runtime parameters update. For such a case, kdamond_merge_regions() repeats merging regions in the case doubling the merge threshold. The repeated merge operation could update the age of regions multiple times. This corrupts the monitoring results. Fix the issue by asking the merge operation to skip aging for the corner case.
The user impact is degradation of the monitoring quality. The impact should be mild, since the degradation is only temporal, and it is not common to happen in realistic setups.
The issue was discovered [1,2] by Sashiko.
--- mm/damon/core.c | 21 +++++++++++++-------- mm/damon/tests/core-kunit.h | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-)
mm/damon/core.c +13 -8
@@ -3118,18 +3118,20 @@ static void damon_verify_merge_regions_of(struct damon_region *r)* sz_limit size upper limit of each region */ static void damon_merge_regions_of (struct damon_target *t,unsigned int thres, -unsigned long sz_limit) +unsigned long sz_limit,bool count_age) {struct damon_region *r, *prev =NULL , *next;damon_for_each_region_safe (r, next, t) {damon_verify_merge_regions_of (r); -if (abs (r->nr_accesses - r->last_nr_accesses) > thres) - r->age =0 ; -else if ((r->nr_accesses ==0 ) != (r->last_nr_accesses ==0 )) - r->age =0 ; -else - r->age++; +if (count_age) { +if (abs (r->nr_accesses - r->last_nr_accesses) > thres) + r->age =0 ; +else if ((r->nr_accesses ==0 ) != (r->last_nr_accesses ==0 )) + r->age =0 ; +else + r->age++; + } if (prev && prev->ar.end == r->ar.start && abs(prev->nr_accesses - r->nr_accesses) <= thres &&
@@ -3163,15 +3165,18 @@ static void kdamond_merge_regions(struct damon_ctx *c, unsigned int threshold,struct damon_target *t;unsigned int nr_regions;unsigned int max_thres; +bool count_age = true; max_thres = c->attrs.aggr_interval / (c->attrs.sample_interval ? c->attrs.sample_interval :1 );while (true) { nr_regions =0 ;damon_for_each_target (t, c) { -damon_merge_regions_of (t, threshold, sz_limit); +damon_merge_regions_of (t, threshold, sz_limit, + count_age); nr_regions +=damon_nr_regions (t); } + count_age = false;if (nr_regions <= c->attrs.max_nr_regions || max_thres <= threshold)break ;
mm/damon/tests/core-kunit.h +1 -1
@@ -261,7 +261,7 @@ static void damon_test_merge_regions_of(struct kunit *test)damon_add_region (r, t); } -damon_merge_regions_of (t,9 ,9999 ); +damon_merge_regions_of (t,9 ,9999 , true);/* 0-112, 114-130, 130-156, 156-170, 170-230, 230-10170 */ KUNIT_EXPECT_EQ (test,damon_nr_regions (t),6u );if (damon_nr_regions (t) !=6 )
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 5/1815 i3c: master: Fix device_register() error path
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Hunter <[email protected]>
[ Upstream commit 74be657d98a8d684c0475f3cbd450ef2a30ffc73 ]
When device_register() fails in i3c_master_register_new_i3c_devs(), put_device() is called to drop the reference taken by device_register(). That drops the last reference, so the device's release callback i3c_device_release() runs and frees the i3c_device.
Two problems follow from that:
i3c_device_release() does WARN_ON(i3cdev->desc), so it warns because desc->dev->desc still points back at the descriptor. Clear it before calling put_device().
After put_device() frees the i3c_device, desc->dev is left pointing at freed memory, so clear desc->dev as well. That prevents, for example, i3c_master_unregister_i3c_devs() seeing desc->dev as non-NULL and dereferencing it.
Stable-dep-of: 456f832e5fc2 ("i3c: master: Fix recursive locking during device registration")
--- drivers/i3c/master.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/i3c/master.c +2 -0
@@ -1928,7 +1928,9 @@ i3c_master_register_new_i3c_devs(structif (ret) {dev_err (&master->dev,"Failed to add I3C device (err = %d)\n" , ret); + desc->dev->desc =NULL ;put_device (&desc->dev->dev); + desc->dev =NULL ; } } }
Greg Kroah-Hartman
maintainerPATCH 6/1815 i3c: master: Fix recursive locking during device registration
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Hunter <[email protected]>
[ Upstream commit 456f832e5fc26fbfd3b8200fd4553eee520cc377 ]
i3c_master_register_new_i3c_devs() registers newly discovered devices while holding i3c_bus_normaluse_lock(), a down_read(). device_register() can immediately probe the device, and probe callbacks typically invoke I3C helpers that take i3c_bus_normaluse_lock() again, leading to a recursive acquisition of the same rwsem. rwsems do not support recursive read locking and can deadlock when a writer is waiting. See the "Recursive read locks" section of Documentation/locking/lockdep-design.rst.
For example, with Intel LPSS I3C, LOCKDEP generates a WARNING like:
# echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/unbind
# echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/bind
WARNING: possible recursive locking detected
kworker/5:1/94 is trying to acquire lock:
ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_device_match_id+0x45/0x370
but task is already holding lock:
ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_master_reg_work_fn+0x21/0x5f0Fix this by separating device creation from device registration. Populate desc->dev under the maintenance lock, collect the devices that still need registration into a local list, then release the lock before calling device_register(). Finally retake the lock and clean up any devices that failed to register.
Use the maintenance lock rather than the normal-use lock while adding device objects. A write-side maintenance lock prevents readers from observing a partially initialized desc->dev during initial device population, or desc->dev disappearing if registration fails.
The local list requires a list node, so add a list node member to struct i3c_device.
--- drivers/i3c/master.c | 45 +++++++++++++++++++++++++++++++++------------ include/linux/i3c/master.h | 3 +++ 2 files changed, 36 insertions(+), 12 deletions(-)
drivers/i3c/master.c +33 -12
@@ -1898,12 +1898,21 @@ err_free_dev:static void i3c_master_register_new_i3c_devs (struct i3c_master_controller *master) { +struct i3c_device *i3cdev, *tmp;struct i3c_dev_desc *desc; +LIST_HEAD (i3c_unreg_devs);int ret;if (!master->init_done)return ; +i3c_bus_maintenance_lock (&master->bus); + +if (master->shutting_down) { +i3c_bus_maintenance_unlock (&master->bus); +return ; + } +i3c_bus_for_each_i3cdev (&master->bus, desc) {if (desc->dev || !desc->info.dyn_addr || desc == master->this)continue ;
@@ -1924,25 +1933,37 @@ i3c_master_register_new_i3c_devs(structif (desc->boardinfo) desc->dev->dev.of_node = desc->boardinfo->of_node; - ret =device_register (&desc->dev->dev); -if (ret) { -dev_err (&master->dev, -"Failed to add I3C device (err = %d)\n" , ret); - desc->dev->desc =NULL ; -put_device (&desc->dev->dev); - desc->dev =NULL ; - } +list_add_tail (&desc->dev->node, &i3c_unreg_devs); } + +i3c_bus_maintenance_unlock (&master->bus); + +list_for_each_entry_safe (i3cdev, tmp, &i3c_unreg_devs, node) { + ret =device_register (&i3cdev->dev); +if (ret) +dev_err (&master->dev,"Failed to add I3C device (err = %d)\n" , ret); +else +list_del_init (&i3cdev->node); + } + +i3c_bus_maintenance_lock (&master->bus); + +list_for_each_entry_safe (i3cdev, tmp, &i3c_unreg_devs, node) { +list_del (&i3cdev->node); + desc = i3cdev->desc; + i3cdev->desc =NULL ; +put_device (&i3cdev->dev); + desc->dev =NULL ; + } + +i3c_bus_maintenance_unlock (&master->bus); }static void i3c_master_reg_work_fn (struct work_struct *work) {struct i3c_master_controller *master =container_of (work,typeof (*master), reg_work); -i3c_bus_normaluse_lock (&master->bus); -if (!master->shutting_down) -i3c_master_register_new_i3c_devs (master); -i3c_bus_normaluse_unlock (&master->bus); +i3c_master_register_new_i3c_devs (master); }/**
include/linux/i3c/master.h +3 -0
@@ -228,6 +228,8 @@ struct i3c_dev_desc {* every time the I3C device is rediscovered with a different dynamic * address assigned * @bus: I3C bus this device is attached to +* @node: unregistered device list node, only for use by +* i3c_master_register_new_i3c_devs(), it is not protected by a lock * * I3C device object exposed to I3C device drivers. The takes care of linking * this object to the relevant &struct_i3c_dev_desc one.
@@ -238,6 +240,7 @@ struct i3c_device {struct device dev;struct i3c_dev_desc *desc;struct i3c_bus *bus; +struct list_head node; };/*
Greg Kroah-Hartman
maintainerPATCH 7/1815 dm-pcache: validate seg_id fields from persistent memory
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bryam Vargas <[email protected]>
[ Upstream commit 90c990a68460d7b5720e5634cf650eccdf0f4098 ]
cache_pos_decode(), cache_key_decode() and the last-kset branches of cache_replay(), the writeback worker and the GC worker take a cache segment id from the cache device metadata and index cache->segments[] with it without checking it against cache->n_segs. That metadata is only CRC-protected with a fixed public seed, so whoever supplies the cache device on a table load (CAP_SYS_ADMIN) controls the id; an out-of-range value forms a wild pcache_cache_segment pointer that is dereferenced and written through -- an out-of-bounds read and write driven by on-disk data.
Add cache_seg_id_valid() and reject an out-of-range id at each decode site, failing the operation with -EIO instead of indexing past the array. Bound the id against the initialized-segment count (cache_info.n_segs) rather than the physical device total. A forged cache_info.n_segs below seg_num otherwise leaves segments[cache_info.n_segs..seg_num) as zeroed structs whose data pointer is NULL, so a forged id in that window would still be dereferenced. A later patch guarantees cache_info.n_segs <= seg_num, and a driver-created cache sets the two equal, so valid images are unaffected.
--- drivers/md/dm-pcache/cache.c | 4 ++++ drivers/md/dm-pcache/cache.h | 15 +++++++++++++++ drivers/md/dm-pcache/cache_gc.c | 16 ++++++++++++++-- drivers/md/dm-pcache/cache_key.c | 11 +++++++++++ drivers/md/dm-pcache/cache_writeback.c | 23 +++++++++++++++++++---- 5 files changed, 63 insertions(+), 6 deletions(-)
drivers/md/dm-pcache/cache.c +4 -0
@@ -118,6 +118,9 @@ int cache_pos_decode(struct pcache_cacheif (!latest_addr)return -EIO ; +if (!cache_seg_id_valid (cache, latest.cache_seg_id)) +return -EIO ; + pos->cache_seg = &cache->segments[latest.cache_seg_id];if (latest.seg_off >= pos->cache_seg->segment.data_size)
@@ -159,6 +162,7 @@ static int cache_init(struct dm_pcache * cache->cache_dev = &pcache->cache_dev; cache->n_segs = cache_dev->seg_num;atomic_set (&cache->gc_errors,0 ); +atomic_set (&cache->writeback_errors,0 );spin_lock_init (&cache->seg_map_lock);spin_lock_init (&cache->key_head_lock);
drivers/md/dm-pcache/cache.h +15 -0
@@ -180,6 +180,7 @@ struct pcache_cache {u32 advance;int ret; } writeback_ctx; +atomic_t writeback_errors;char gc_kset_onmedia_buf[PCACHE_KSET_ONMEDIA_SIZE_MAX ];struct delayed_work gc_work;
@@ -421,6 +422,20 @@ static inline bool cache_seg_is_ctrl_seg }/** +* cache_seg_id_valid - Validate a cache segment id read from the cache device. +* @cache: Pointer to the pcache_cache structure. +* @cache_seg_id: Segment id decoded from on-media metadata. +* +* On-media segment ids are only protected by a CRC, which an attacker who can +* format the cache device computes over their chosen value. Reject any id that +* would index cache->segments[] out of bounds before it is dereferenced. +*/ +static inline bool cache_seg_id_valid (struct pcache_cache *cache,u32 cache_seg_id) +{ +return cache_seg_id < cache->cache_info.n_segs; +} + +/** * cache_key_cutfront - Cuts a specified length from the front of a cache key. * @key: Pointer to pcache_cache_key structure. * @cut_len: Length to cut from the front.
drivers/md/dm-pcache/cache_gc.c +14 -2
@@ -74,11 +74,17 @@ static bool need_gc(struct pcache_cache* @cache: Pointer to the pcache_cache structure. * @kset_onmedia: Pointer to the kset_onmedia structure for the last kset. */ -static void last_kset_gc (struct pcache_cache *cache,struct pcache_cache_kset_onmedia *kset_onmedia) +static int last_kset_gc (struct pcache_cache *cache,struct pcache_cache_kset_onmedia *kset_onmedia) {struct dm_pcache *pcache =CACHE_TO_PCACHE (cache);struct pcache_cache_segment *cur_seg, *next_seg; +if (!cache_seg_id_valid (cache, kset_onmedia->next_cache_seg_id)) { +pcache_dev_err (pcache,"invalid next_cache_seg_id %u in gc (n_segs %u)\n" , + kset_onmedia->next_cache_seg_id, cache->n_segs); +return -EIO ; + } + cur_seg = cache->key_tail.cache_seg; next_seg = &cache->segments[kset_onmedia->next_cache_seg_id];
@@ -94,6 +100,8 @@ static void last_kset_gc(struct pcache_cspin_lock (&cache->seg_map_lock);__clear_bit (cur_seg->cache_seg_id, cache->seg_map);spin_unlock (&cache->seg_map_lock); + +return 0 ; }void pcache_cache_gc_fn (struct work_struct *work)
@@ -130,7 +138,11 @@ void pcache_cache_gc_fn(struct work_struif (dirty_tail.cache_seg == key_tail.cache_seg)break ; -last_kset_gc (cache, kset_onmedia); + ret =last_kset_gc (cache, kset_onmedia); +if (ret) { +atomic_inc (&cache->gc_errors); +return ; + }continue ; }
drivers/md/dm-pcache/cache_key.c +11 -0
@@ -94,6 +94,12 @@ int cache_key_decode(struct pcache_cache key->off = key_onmedia->off; key->len = key_onmedia->len; +if (!cache_seg_id_valid (cache, key_onmedia->cache_seg_id)) { +pcache_dev_err (pcache,"invalid cache_seg_id %u in cache key (n_segs %u)\n" , + key_onmedia->cache_seg_id, cache->n_segs); +return -EIO ; + } + key->cache_pos.cache_seg = &cache->segments[key_onmedia->cache_seg_id]; key->cache_pos.seg_off = key_onmedia->cache_seg_off;
@@ -800,6 +806,11 @@ int cache_replay(struct pcache_cache *ca ret = -EIO ; goto out; } + +if (!cache_seg_id_valid (cache, kset_onmedia->next_cache_seg_id)) { + ret = -EIO ; + goto out; + } next_seg = &cache->segments[kset_onmedia->next_cache_seg_id];
drivers/md/dm-pcache/cache_writeback.c +19 -4
@@ -196,12 +196,18 @@ clear_tree:return ret; } -static void last_kset_writeback (struct pcache_cache *cache, +static int last_kset_writeback (struct pcache_cache *cache,struct pcache_cache_kset_onmedia *last_kset_onmedia) {struct dm_pcache *pcache =CACHE_TO_PCACHE (cache);struct pcache_cache_segment *next_seg; +if (!cache_seg_id_valid (cache, last_kset_onmedia->next_cache_seg_id)) { +pcache_dev_err (pcache,"invalid next_cache_seg_id %u in writeback (n_segs %u)\n" , + last_kset_onmedia->next_cache_seg_id, cache->n_segs); +return -EIO ; + } +pcache_dev_debug (pcache,"last kset, next: %u\n" , last_kset_onmedia->next_cache_seg_id); next_seg = &cache->segments[last_kset_onmedia->next_cache_seg_id];
@@ -211,6 +217,8 @@ static void last_kset_writeback(struct p cache->dirty_tail.seg_off =0 ;cache_encode_dirty_tail (cache);mutex_unlock (&cache->dirty_tail_lock); + +return 0 ; }void cache_writeback_fn (struct work_struct *work)
@@ -229,6 +237,9 @@ void cache_writeback_fn(struct work_struif (pcache_is_stopping (pcache)) goto unlock; +if (atomic_read (&cache->writeback_errors)) + goto unlock; + kset_onmedia = (struct pcache_cache_kset_onmedia *)cache->wb_kset_onmedia_buf;mutex_lock (&cache->dirty_tail_lock);
@@ -241,15 +252,19 @@ void cache_writeback_fn(struct work_stru }if (kset_onmedia->flags &PCACHE_KSET_FLAGS_LAST ) { -last_kset_writeback (cache, kset_onmedia); + ret =last_kset_writeback (cache, kset_onmedia); +if (ret) { +atomic_inc (&cache->writeback_errors); + goto unlock; + } delay =0 ; goto queue_work; } ret =cache_kset_insert_tree (cache, kset_onmedia);if (ret) { - delay =PCACHE_CACHE_WRITEBACK_INTERVAL ; - goto queue_work; +atomic_inc (&cache->writeback_errors); + goto unlock; }cache_wb_tree_writeback (cache,get_kset_onmedia_size (kset_onmedia));
Greg Kroah-Hartman
maintainerPATCH 8/1815 i3c: master: Fix use-after-free of master->this
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Hunter <[email protected]>
[ Upstream commit feb0ed76601f3c2f91f08688c5a7d8b9d382f720 ]
sysfs attribute callbacks for the master controller device dereference master->this. However, master->this is freed in i3c_master_detach_free_devs() before the master device itself is released.
As a result, sysfs accesses can dereference a freed master->this pointer, leading to a use-after-free.
Keep master->this alive until i3c_masterdev_release(), which is called after the master device and its sysfs state are being torn down. Do not free master->this as part of the normal device detach path.
On the error path in i3c_master_set_info(), reset master->this and bus.cur_master to NULL before freeing the allocated device.
--- drivers/i3c/master.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
drivers/i3c/master.c +11 -6
@@ -820,6 +820,11 @@ static struct attribute *i3c_masterdev_a };ATTRIBUTE_GROUPS (i3c_masterdev); +static void i3c_master_free_i3c_dev (struct i3c_dev_desc *dev) +{ +kfree (dev); +} +static void i3c_masterdev_release (struct device *dev) {struct i3c_master_controller *master =dev_to_i3cmaster (dev);
@@ -832,6 +837,8 @@ static void i3c_masterdev_release(structi3c_bus_cleanup (bus);of_node_put (dev->of_node); + +i3c_master_free_i3c_dev (master->this); }static const struct device_type i3c_masterdev_type = {
@@ -1042,11 +1049,6 @@ static void i3c_device_release(struct dekfree (i3cdev); } -static void i3c_master_free_i3c_dev (struct i3c_dev_desc *dev) -{ -kfree (dev); -} -static struct i3c_dev_desc *i3c_master_alloc_i3c_dev (struct i3c_master_controller *master,const struct i3c_device_info *info)
@@ -2092,6 +2094,8 @@ int i3c_master_set_info(struct i3c_mastereturn 0 ; err_free_dev: + master->bus.cur_master =NULL ; + master->this =NULL ;i3c_master_free_i3c_dev (i3cdev);return ret;
@@ -2112,7 +2116,8 @@ static void i3c_master_detach_free_devs( i3cdev->boardinfo->init_dyn_addr, I3C_ADDR_SLOT_FREE); -i3c_master_free_i3c_dev (i3cdev); +if (i3cdev != master->this) +i3c_master_free_i3c_dev (i3cdev); } list_for_each_entry_safe(i2cdev, i2ctmp, &master->bus.devs.i2c,
Greg Kroah-Hartman
maintainerPATCH 9/1815 i3c: master: Do not treat master device as a duplicate target
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrian Hunter <[email protected]>
[ Upstream commit 4dc1b3eeba7991905a5b5b8129ebea51be7d87b7 ]
i3c_master_search_i3c_dev_duplicate() searches the bus for another I3C device with the same PID as the reference device. The search can match master->this, causing the controller itself to be returned as a duplicate.
Since the controller is not a target device, it cannot be a duplicate of one. Exclude master->this from matching so that the function only returns real duplicate target devices.
--- drivers/i3c/master.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/i3c/master.c +2 -1
@@ -2349,7 +2349,8 @@ i3c_master_search_i3c_dev_duplicate(strustruct i3c_dev_desc *i3cdev;i3c_bus_for_each_i3cdev (&master->bus, i3cdev) { -if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid) +if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid && + i3cdev != master->this)return i3cdev; }
Greg Kroah-Hartman
maintainerPATCH 10/1815 dm-pcache: validate the persisted dirty_tail chain at load
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bryam Vargas <[email protected]>
[ Upstream commit 58d620ee9e01d4bdbceaf2ae1450d307a2a9d58b ]
The writeback worker follows the persisted dirty_tail chain, which is decoded from the cache device independently of the key_tail chain that cache_replay() walks and bounds. A crafted image, whose on-media fields are authenticated only by a crc32c with a fixed seed, can aim dirty_tail at a chain of last ksets that never terminates, so cache_writeback_fn() re-arms itself with no delay forever.
Walk the dirty_tail chain once at load with the same hop cap cache_replay() uses and fail the table load with -EIO if it does not reach an end within n_segs hops.
--- drivers/md/dm-pcache/cache.c | 7 +++ drivers/md/dm-pcache/cache.h | 2 + drivers/md/dm-pcache/cache_key.c | 69 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+)
drivers/md/dm-pcache/cache.c +7 -0
@@ -202,6 +202,7 @@ static int cache_tail_init(struct pcache {struct dm_pcache *pcache =CACHE_TO_PCACHE (cache);bool new_cache = !(cache->cache_info.flags &PCACHE_CACHE_FLAGS_INIT_DONE ); +int ret;if (new_cache) {__set_bit (0 , cache->seg_map);
@@ -218,6 +219,12 @@ static int cache_tail_init(struct pcachepcache_dev_err (pcache,"Corrupted key tail or dirty tail.\n" );return -EIO ; } + + ret =cache_verify_dirty_tail (cache); +if (ret) { +pcache_dev_err (pcache,"dirty tail chain does not terminate (crafted cache image?)\n" ); +return ret; + } }return 0 ;
drivers/md/dm-pcache/cache.h +2 -0
@@ -666,6 +666,8 @@ static inline int cache_decode_dirty_tai &cache->dirty_tail_index); } +int cache_verify_dirty_tail (struct pcache_cache *cache); +int pcache_cache_init (void );void pcache_cache_exit (void );#endif /* _PCACHE_CACHE_H */
drivers/md/dm-pcache/cache_key.c +69 -0
75 lines not on this page · raw message
Greg Kroah-Hartman
maintainerPATCH 11/1815 udf: Move udf_map_block() up
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <[email protected]>
[ Upstream commit 97e9d759a4193eabe4d8b6ecac093aac664c16e3 ]
Move udf_map_block() in the file to avoid forward declarations.
Stable-dep-of: 62333e480d12 ("udf: Fix data loss when converting inline inodes to out of line")
--- fs/udf/inode.c | 118 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 59 insertions(+), 59 deletions(-)
fs/udf/inode.c +59 -59
@@ -336,65 +336,6 @@ const struct address_space_operations ud .migrate_folio = buffer_migrate_folio, }; -/* -* Expand file stored in ICB to a normal one-block-file -* -* This function requires i_mutex held -*/ -int udf_expand_file_adinicb (struct inode *inode) -{ -struct folio *folio; -struct udf_inode_info *iinfo =UDF_I (inode); -int err; - -WARN_ON_ONCE (!inode_is_locked (inode)); -if (!iinfo->i_lenAlloc) { -down_write (&iinfo->i_data_sem); -if (UDF_QUERY_FLAG (inode->i_sb,UDF_FLAG_USE_SHORT_AD )) - iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; -else - iinfo->i_alloc_type =ICBTAG_FLAG_AD_LONG ; -up_write (&iinfo->i_data_sem); -mark_inode_dirty (inode); -return 0 ; - } - - folio =__filemap_get_folio (inode->i_mapping,0 , -FGP_LOCK |FGP_ACCESSED |FGP_CREAT ,GFP_KERNEL ); -if (IS_ERR (folio)) -return PTR_ERR (folio); - -if (!folio_test_uptodate (folio)) -udf_adinicb_read_folio (folio); -down_write (&iinfo->i_data_sem); -memset (iinfo->i_data + iinfo->i_lenEAttr,0x00 , - iinfo->i_lenAlloc); - iinfo->i_lenAlloc =0 ; -if (UDF_QUERY_FLAG (inode->i_sb,UDF_FLAG_USE_SHORT_AD )) - iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; -else - iinfo->i_alloc_type =ICBTAG_FLAG_AD_LONG ; -folio_mark_dirty (folio); -folio_unlock (folio); -up_write (&iinfo->i_data_sem); - err =filemap_fdatawrite (inode->i_mapping); -if (err) { -/* Restore everything back so that we don't lose data... */ -folio_lock (folio); -down_write (&iinfo->i_data_sem); -memcpy_from_folio (iinfo->i_data + iinfo->i_lenEAttr, - folio,0 , inode->i_size); -folio_unlock (folio); - iinfo->i_alloc_type =ICBTAG_FLAG_AD_IN_ICB ; - iinfo->i_lenAlloc = inode->i_size; -up_write (&iinfo->i_data_sem); - } -folio_put (folio); -mark_inode_dirty (inode); - -return err; -} -#define UDF_MAP_CREATE 0x01/* Mapping can allocate new blocks */ #define UDF_MAP_NOPREALLOC 0x02/* Do not preallocate blocks */
@@ -455,6 +396,65 @@ out_read:return ret; } +/* +* Expand file stored in ICB to a normal one-block-file +* +* This function requires i_mutex held +*/ +int udf_expand_file_adinicb (struct inode *inode) +{ +struct folio *folio; +struct udf_inode_info *iinfo =UDF_I (inode); +int err; + +WARN_ON_ONCE (!inode_is_locked (inode)); +if (!iinfo->i_lenAlloc) { +down_write (&iinfo->i_data_sem); +if (UDF_QUERY_FLAG (inode->i_sb,UDF_FLAG_USE_SHORT_AD )) + iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; +else + iinfo->i_alloc_type =ICBTAG_FLAG_AD_LONG ; +up_write (&iinfo->i_data_sem); +mark_inode_dirty (inode); +return 0 ; + } + + folio =__filemap_get_folio (inode->i_mapping,0 , +FGP_LOCK |FGP_ACCESSED |FGP_CREAT ,GFP_KERNEL ); +if (IS_ERR (folio)) +return PTR_ERR (folio); + +if (!folio_test_uptodate (folio)) +udf_adinicb_read_folio (folio); +down_write (&iinfo->i_data_sem); +memset (iinfo->i_data + iinfo->i_lenEAttr,0x00 , + iinfo->i_lenAlloc); + iinfo->i_lenAlloc =0 ; +if (UDF_QUERY_FLAG (inode->i_sb,UDF_FLAG_USE_SHORT_AD )) + iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; +else + iinfo->i_alloc_type =ICBTAG_FLAG_AD_LONG ; +folio_mark_dirty (folio); +folio_unlock (folio); +up_write (&iinfo->i_data_sem); + err =filemap_fdatawrite (inode->i_mapping); +if (err) { +/* Restore everything back so that we don't lose data... */ +folio_lock (folio); +down_write (&iinfo->i_data_sem); +memcpy_from_folio (iinfo->i_data + iinfo->i_lenEAttr, + folio,0 , inode->i_size); +folio_unlock (folio); + iinfo->i_alloc_type =ICBTAG_FLAG_AD_IN_ICB ; + iinfo->i_lenAlloc = inode->i_size; +up_write (&iinfo->i_data_sem); + } +folio_put (folio); +mark_inode_dirty (inode); + +return err; +} +static int __udf_get_block (struct inode *inode,sector_t block,struct buffer_head *bh_result,int flags) {
Greg Kroah-Hartman
maintainerPATCH 12/1815 udf: Fix data loss when converting inline inodes to out of line
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <[email protected]>
[ Upstream commit 62333e480d12ab186f89fe2725b372d12f72d5eb ]
When udf_expand_file_adinicb() converts file from inline format to out of line, we use filemap_fdatawrite() to writeout the data to the new blocks. However since 36580ed08776 ("udf: Do not allocate blocks on page writeback") the writeback actually doesn't allocate the new block and the folio dirty bit is just silently cleared. Thus unless the file is written to after the conversion (as it can easily happen in case of truncate up), the data is just lost. Fix the problem by explicitely allocating the block underlying the data before starting writeback.
--- fs/udf/inode.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
fs/udf/inode.c +13 -2
@@ -405,6 +405,10 @@ int udf_expand_file_adinicb(struct inode {struct folio *folio;struct udf_inode_info *iinfo =UDF_I (inode); +struct udf_map_rq map = { + .lblk =0 , + .iflags =UDF_MAP_CREATE , + };int err;WARN_ON_ONCE (!inode_is_locked (inode));
@@ -434,20 +438,27 @@ int udf_expand_file_adinicb(struct inode iinfo->i_alloc_type =ICBTAG_FLAG_AD_SHORT ; else iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; +up_write (&iinfo->i_data_sem); + +/* Allocate the block underlying the data */ + err =udf_map_block (inode, &map); +if (err <0 ) + goto restore; +folio_mark_dirty (folio);folio_unlock (folio); -up_write (&iinfo->i_data_sem); err =filemap_fdatawrite (inode->i_mapping);if (err) {/* Restore everything back so that we don't lose data... */ folio_lock (folio); +restore:down_write (&iinfo->i_data_sem);memcpy_from_folio (iinfo->i_data + iinfo->i_lenEAttr, folio,0 , inode->i_size); -folio_unlock (folio); iinfo->i_alloc_type =ICBTAG_FLAG_AD_IN_ICB ; iinfo->i_lenAlloc = inode->i_size;up_write (&iinfo->i_data_sem); +folio_unlock (folio); }folio_put (folio);mark_inode_dirty (inode);
Greg Kroah-Hartman
maintainerPATCH 13/1815 staging: sm750fb: fix mono image source stride mismatch in lynxfb_ops_imageblit()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Muhammad Bilal <[email protected]>
[ Upstream commit cc7cd2a9228175c975f62ad56ed7c767701cb4fa ]
sm750_hw_imageblit() advances its monochrome source pointer by src_delta per scanline, and computes the correct rounded-up stride internally as:
bytes_per_scan = (width + start_bit + 7) / 8;
Its only caller, lynxfb_ops_imageblit(), instead passed src_delta as image->width >> 3. For widths not a multiple of 8 this under-counted the stride, so the source pointer fell further behind the real per-scanline layout on every line, corrupting the rendered image.
Rather than just fixing the caller's calculation, remove src_delta as a parameter entirely and have sm750_hw_imageblit() advance by the bytes_per_scan it already computes for itself. There has only ever been one caller, and that caller was passing an out-of-sync derivative of the same width/start_bit values sm750_hw_imageblit() already has, so keeping stride as a separate parameter served no purpose beyond letting the two calculations drift apart, which is exactly what happened here.
Rounding up, rather than down, is the direction consistent with the rest of the fbdev core: struct fb_image mono bitmap data (the same image->data this driver receives) is walked elsewhere with byte strides derived from a ceiling division of width by 8. The generic mono bit iterator in drivers/video/fbdev/core/fb_imageblit.h advances scanlines with "iter->data += BITS_TO_BYTES(iter->width)", and BITS_TO_BYTES() (include/linux/bitops.h) is a ceiling division. sm750_hw_imageblit()'s own "(width + start_bit + 7) / 8" is that same ceiling division with an added start_bit offset, so the caller's ">> 3" (floor) was the one calculation out of step with how this data layout is handled everywhere else.
Found by code review of sm750_hw_imageblit()'s internal stride calculation against what its only caller was passing in, and confirmed with a clean -Werror build. I do not have this hardware, so this has not been exercised at runtime on real sm750 silicon.
--- drivers/staging/sm750fb/sm750.c | 2 +- drivers/staging/sm750fb/sm750.h | 2 +- drivers/staging/sm750fb/sm750_accel.c | 6 ++---- drivers/staging/sm750fb/sm750_accel.h | 4 +--- 4 files changed, 5 insertions(+), 9 deletions(-)
drivers/staging/sm750fb/sm750.c +1 -1
@@ -261,7 +261,7 @@ static void lynxfb_ops_imageblit(structspin_lock (&sm750_dev->slock); sm750_dev->accel.de_imageblit(&sm750_dev->accel, - image->data, image->width >> 3, 0, + image->data, 0, base, pitch, bpp, image->dx, image->dy, image->width, image->height,
drivers/staging/sm750fb/sm750.h +1 -1
@@ -73,7 +73,7 @@ struct lynx_accel { u32 rop2);int (*de_imageblit)(struct lynx_accel *accel,const char *p_srcbuf, -u32 src_delta,u32 start_bit,u32 d_base,u32 d_pitch, +u32 start_bit,u32 d_base,u32 d_pitch,u32 byte_per_pixel,u32 dx,u32 dy,u32 width,u32 height,u32 f_color,u32 b_color,u32 rop2);
drivers/staging/sm750fb/sm750_accel.c +2 -4
@@ -288,8 +288,6 @@ static unsigned int de_get_transparency(* sm750_hw_imageblit * @accel: Acceleration device data * @src_buf: pointer to start of source buffer in system memory -* @src_delta: Pitch value (in bytes) of the source buffer, +ive means top down -* and -ive mean button up * @start_bit: Mono data can start at any bit in a byte, this value should be * 0 to 7 * @dest_base: Address of destination: offset in frame buffer
@@ -304,7 +302,7 @@ static unsigned int de_get_transparency(* @rop2: ROP value */ int sm750_hw_imageblit (struct lynx_accel *accel,const char *src_buf, -u32 src_delta,u32 start_bit,u32 dest_base,u32 dest_pitch, +u32 start_bit,u32 dest_base,u32 dest_pitch,u32 byte_per_pixel,u32 dx,u32 dy,u32 width,u32 height,u32 fg_color,u32 bg_color,u32 rop2) {
@@ -395,7 +393,7 @@ int sm750_hw_imageblit(struct lynx_accelwrite_dp_port (accel, *(unsigned int *)remain); } - src_buf += src_delta; + src_buf += bytes_per_scan; }return 0 ;
drivers/staging/sm750fb/sm750_accel.h +1 -3
@@ -220,8 +220,6 @@ int sm750_hw_copyarea(struct lynx_accel/** * sm750_hw_imageblit * @pSrcbuf: pointer to start of source buffer in system memory -* @srcDelta: Pitch value (in bytes) of the source buffer, +ive means top down -*>----- and -ive mean button up * @startBit: Mono data can start at any bit in a byte, this value should be *>----- 0 to 7 * @dBase: Address of destination: offset in frame buffer
@@ -236,7 +234,7 @@ int sm750_hw_copyarea(struct lynx_accel* @rop2: ROP value */ int sm750_hw_imageblit (struct lynx_accel *accel,const char *pSrcbuf, -u32 srcDelta,u32 startBit,u32 dBase,u32 dPitch, +u32 startBit,u32 dBase,u32 dPitch,u32 bytePerPixel,u32 dx,u32 dy,u32 width,u32 height,u32 fColor,u32 bColor,u32 rop2);
Greg Kroah-Hartman
maintainerPATCH 14/1815 tracing/probes: ignore id update from btf_type_skip_modifiers
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martin Kaiser <[email protected]>
[ Upstream commit 823b37855829bc328d46102a56e4d0b2f7a3d0d1 ]
We can pass NULL as id pointer to btf_type_skip_modifiers if we do not need the id of the returned btf_type.
Stable-dep-of: 47e93045a2db ("tracing/probes: Fix BTF kflag check for anonymous struct member access")
--- kernel/trace/trace_probe.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
kernel/trace/trace_probe.c +5 -8
@@ -356,9 +356,8 @@ static bool btf_type_is_char_ptr(struct {const struct btf_type *real_type;u32 intdata; -s32 tid; - real_type =btf_type_skip_modifiers (btf, type->type, &tid); + real_type =btf_type_skip_modifiers (btf, type->type,NULL );if (!real_type)return false;
@@ -375,14 +374,13 @@ static bool btf_type_is_char_array(strucconst struct btf_type *real_type;const struct btf_array *array;u32 intdata; -s32 tid;if (BTF_INFO_KIND (type->info) !=BTF_KIND_ARRAY )return false; array = (const struct btf_array *)(type +1 ); - real_type =btf_type_skip_modifiers (btf, array->type, &tid); + real_type =btf_type_skip_modifiers (btf, array->type,NULL ); intdata =btf_type_int (real_type);return !(BTF_INT_ENCODING (intdata) &BTF_INT_SIGNED )
@@ -585,7 +583,6 @@ static int parse_btf_field(char *fieldnastruct btf *btf =ctx_btf (ctx);char *next;int is_ptr; -s32 tid; do { if (!is_struct) {
@@ -596,7 +593,7 @@ static int parse_btf_field(char *fieldna }/* Convert a struct pointer type to a struct type */ - type =btf_type_skip_modifiers (btf, type->type, &tid); + type =btf_type_skip_modifiers (btf, type->type,NULL );if (!type) {trace_probe_log_err (ctx->offset,BAD_BTF_TID );return -EINVAL ;
@@ -636,7 +633,7 @@ static int parse_btf_field(char *fieldna ctx->last_bitsize =0 ; } - type =btf_type_skip_modifiers (btf, field->type, &tid); + type =btf_type_skip_modifiers (btf, field->type,NULL );if (!type) {trace_probe_log_err (ctx->offset,BAD_BTF_TID );return -EINVAL ;
@@ -755,7 +752,7 @@ static int parse_btf_arg(char *varname,return -ENOENT ; found: - type =btf_type_skip_modifiers (ctx->btf, tid, &tid); + type =btf_type_skip_modifiers (ctx->btf, tid,NULL ); found_type:if (!type) {trace_probe_log_err (ctx->offset,BAD_BTF_TID );
Greg Kroah-Hartman
maintainerPATCH 15/1815 tracing/probes: Fix BTF kflag check for anonymous struct member access
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Masami Hiramatsu (Google)" <[email protected]>
[ Upstream commit 47e93045a2db80d24f5fef65adecc6b2b32efa23 ]
btf_find_struct_member() traverses into nested anonymous structures and unions to find a struct member. However, get_bitoffset_of_field() in trace_probe.c checked btf_type_kflag(type) using the outer parent type instead of the actual anonymous structure/union that directly contains the found member.
If the parent structure and anonymous structure have mismatched kflags (e.g., the parent has kflag=0 while the anonymous structure has kflag=1 because it contains bitfields), the bitfield size encoded in the upper 8 bits of member->offset is erroneously treated as part of the byte/bit offset, corrupting the resolved offset and failing to set last_bitsize. Similarly, btf_find_struct_member() pushed anonymous member offsets onto anon_stack without masking BTF_MEMBER_BIT_OFFSET() when kflag is set.
To fix this problem, update btf_find_struct_member() to return actual containing structure/union type via member_type, use appropriate __btf_member_bit_offset() to get bit offset, and use member_type for btf_type_kflag() in get_bitoffset_of_field().
--- kernel/trace/trace_btf.c | 19 +++++++++++-------- kernel/trace/trace_btf.h | 3 ++- kernel/trace/trace_probe.c | 5 +++-- 3 files changed, 16 insertions(+), 11 deletions(-)
kernel/trace/trace_btf.c +11 -8
@@ -61,16 +61,17 @@ struct btf_anon_stack {/* * Find a member of data structure/union by name and return it. -* Return NULL if not found, or -EINVAL if parameter is invalid. -* If the member is an member of anonymous union/structure, the offset -* of that anonymous union/structure is stored into @anon_offset. Caller -* can calculate the correct offset from the root data structure by -* adding anon_offset to the member's offset. +* Return NULL if not found, or ERR_PTR(-EINVAL) if parameter is invalid. +* If the member is a member of an anonymous union/structure, the bit offset +* of that anonymous union/structure is stored into @anon_offset. +* If @member_type is non-NULL, the actual containing structure/union type +* of the found member is stored into @member_type. */ const struct btf_member *btf_find_struct_member (struct btf *btf,const struct btf_type *type,const char *member_name, -u32 *anon_offset) +u32 *anon_offset, +const struct btf_type **member_type) {struct btf_anon_stack *anon_stack;const struct btf_member *member;
@@ -94,14 +95,16 @@ retry:if (mtype &&btf_type_is_struct (mtype) && top <BTF_ANON_STACK_MAX ) { anon_stack[top].tid = tid; - anon_stack[top++].offset = - cur_offset + member->offset; + anon_stack[top++].offset = cur_offset + +__btf_member_bit_offset (type, member); } }else { name =btf_name_by_offset (btf, member->name_off);if (name && !strcmp (member_name, name)) {if (anon_offset) *anon_offset = cur_offset; +if (member_type) + *member_type = type; goto out; } }
kernel/trace/trace_btf.h +2 -1
@@ -8,4 +8,5 @@ const struct btf_param *btf_get_func_parconst struct btf_member *btf_find_struct_member (struct btf *btf,const struct btf_type *type,const char *member_name, -u32 *anon_offset); +u32 *anon_offset, +const struct btf_type **member_type);
kernel/trace/trace_probe.c +3 -2
@@ -578,6 +578,7 @@ static int parse_btf_field(char *fieldna {struct fetch_insn *code = *pcode;const struct btf_member *field; +const struct btf_type *mtype;u32 bitoffs, anon_offs;bool is_struct = ctx->struct_btf !=NULL ;struct btf *btf =ctx_btf (ctx);
@@ -612,7 +613,7 @@ static int parse_btf_field(char *fieldna anon_offs =0 ; field =btf_find_struct_member (btf, type, fieldname, - &anon_offs); + &anon_offs, &mtype);if (IS_ERR (field)) {trace_probe_log_err (ctx->offset,BAD_BTF_TID );return PTR_ERR (field);
@@ -625,7 +626,7 @@ static int parse_btf_field(char *fieldna bitoffs += anon_offs;/* Accumulate the bit-offsets of the dot-connected fields */ -if (btf_type_kflag (type)) { +if (btf_type_kflag (mtype)) { bitoffs +=BTF_MEMBER_BIT_OFFSET (field->offset); ctx->last_bitsize =BTF_MEMBER_BITFIELD_SIZE (field->offset); }else {
Greg Kroah-Hartman
maintainerPATCH 16/1815 btrfs: abort transaction before releasing tree_log_mutex on commit failure
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leo Martins <[email protected]>
[ Upstream commit 529c01c3dc0d322c103611c35b01d71ea04562b2 ]
When transaction metadata writeout fails in btrfs_commit_transaction(), the current code only logs the error, drops tree_log_mutex and then goes through cleanup_transaction(), which aborts the transaction and records the fs error.
That is too late for the tree log side. A log sync can already be waiting on tree_log_mutex, because the committing transaction is moved to TRANS_STATE_UNBLOCKED while that mutex is held, which lets fsyncs join the next transaction and queue up in btrfs_sync_log(). Once the failed commit drops tree_log_mutex, such a log sync acquires it, sees BTRFS_FS_ERROR() still clear, and writes super_for_commit. That superblock holds the roots prepared for the transaction that has just failed to write out its metadata, so it can point at tree blocks that never reached the disk, and the next mount fails with a parent transid mismatch.
Commit 165ea85f1483 ("btrfs: do not write supers if we have an fs error") fixed this class of problem by making btrfs_sync_log() check for an fs error right after taking tree_log_mutex. That check only works if the commit path publishes the fs error before it releases the same mutex, and commit 68d4ece9c30e ("btrfs: don't call btrfs_handle_fs_error() in btrfs_commit_transaction()") removed the only thing that did so.
Restore the ordering by aborting the transaction while tree_log_mutex is still held. We have a transaction handle here, so this does not need to bring back the btrfs_handle_fs_error() call: __btrfs_abort_transaction() records the fs error itself, which is all btrfs_sync_log() looks at, and the error message put in its place is kept.
This is what commit 3810ab40afa5 ("btrfs: abort transaction on error in write_all_supers()") already does for the next call in this function.
This is reproducible on an unmodified kernel by failing the first couple of bios of a transaction commit with fail_make_request while a concurrent fsync workload keeps log syncs queued on tree_log_mutex.
--- fs/btrfs/transaction.c | 6 ++++++ 1 file changed, 6 insertions(+)
fs/btrfs/transaction.c +6 -0
@@ -2589,6 +2589,12 @@ int btrfs_commit_transaction(struct btrf ret =btrfs_write_and_wait_transaction (trans);if (unlikely (ret)) {btrfs_err (fs_info,"error while writing out transaction: %d" , ret); +/* +* Abort before releasing tree_log_mutex, so a log sync waiting +* on it sees the fs error and skips writing super_for_commit +* for this failed transaction. See btrfs_sync_log(). +*/ +btrfs_abort_transaction (trans, ret);mutex_unlock (&fs_info->tree_log_mutex); goto scrub_continue; }
Greg Kroah-Hartman
maintainerPATCH 17/1815 ksmbd: fix maximum allowed access checks
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <[email protected]>
[ Upstream commit cc2f133e80eb2c4a04bfa77a2f207749fe2f516a ]
The DACL permission check looks for an ACE matching the current user and falls back to the Everyone ACE. It does not consider an Authenticated Users ACE, even though an authenticated session is a member of that well-known group.
As a result, opening a file whose access is granted through S-1-5-11 can incorrectly fail with STATUS_ACCESS_DENIED. Treat an Authenticated Users ACE as a fallback entry alongside Everyone.
The maximal access calculation also combines access masks from every ACE, regardless of whether its SID applies to the current user. This can grant rights belonging to an unrelated principal. Process only ACEs applying to the user, Everyone, or Authenticated Users, and accumulate allowed and denied masks in ACL order. Preserve explicitly requested access bits so they are validated against the resulting maximal mask.
When ACCESS_SYSTEM_SECURITY is denied, report STATUS_PRIVILEGE_NOT_HELD instead of the generic STATUS_ACCESS_DENIED. Access to the system ACL requires a security privilege that ksmbd does not grant.
For regular files, include FILE_EXECUTE in maximal access when the client requested GENERIC_EXECUTE and the DACL grants the complete file-read set. Keep a direct FILE_EXECUTE request subject to the explicit DACL bit. This matches the POSIX file ACL mapping without broadening specific execute requests.
Do not replace rights from an applicable NT ACE with a POSIX ACL entry. The POSIX ACL is only a fallback when no user, Everyone, or Authenticated Users ACE applies; otherwise it can incorrectly broaden the stored DACL.
This fixes smb2.maximum_allowed.maximum_allowed.
Stable-dep-of: b5ec6c462aab ("ksmbd: fix tree connection use-after-free in smb2_tree_connect()")
--- fs/smb/server/smb2pdu.c | 9 ++++- fs/smb/server/smbacl.c | 83 ++++++++++++++++++++++++++++++------------------ fs/smb/server/smbacl.h | 2 - 3 files changed, 61 insertions(+), 33 deletions(-)
fs/smb/server/smb2pdu.c +7 -2
@@ -3601,6 +3601,7 @@ int smb2_open(struct ksmbd_work *work)if (file_present && !(req->CreateOptions &FILE_DELETE_ON_CLOSE_LE )) { rc =smb_check_perm_dacl (conn, &path, &daccess, + req->DesiredAccess, sess->user->uid);if (rc) goto err_out;
@@ -4173,8 +4174,12 @@ err_out2: rsp->hdr.Status =STATUS_INVALID_PARAMETER ; else if (rc == -EOPNOTSUPP) rsp->hdr.Status = STATUS_NOT_SUPPORTED; - else if (rc == -EACCES || rc == -ESTALE || rc == -EXDEV) - rsp->hdr.Status =STATUS_ACCESS_DENIED ; + else if (rc == -EACCES || rc == -ESTALE || rc == -EXDEV) { +if (req->DesiredAccess &FILE_ACCESS_SYSTEM_SECURITY_LE ) + rsp->hdr.Status =STATUS_PRIVILEGE_NOT_HELD ; +else + rsp->hdr.Status =STATUS_ACCESS_DENIED ; + } else if (rc == -ENOENT) rsp->hdr.Status = STATUS_OBJECT_NAME_INVALID; else if (rc == -EPERM)
fs/smb/server/smbacl.c +53 -30
134 lines not on this page · raw message
fs/smb/server/smbacl.h +1 -1
@@ -95,7 +95,7 @@ bool smb_inherit_flags(int flags, bool iint smb_inherit_dacl (struct ksmbd_conn *conn,const struct path *path,unsigned int uid,unsigned int gid);int smb_check_perm_dacl (struct ksmbd_conn *conn,const struct path *path, -__le32 *pdaccess,int uid); +__le32 *pdaccess,__le32 raw_daccess,int uid);int set_info_sec (struct ksmbd_conn *conn,struct ksmbd_tree_connect *tcon,const struct path *path,struct smb_ntsd *pntsd,int ntsd_len,bool type_check,bool get_write);
Greg Kroah-Hartman
maintainerPATCH 18/1815 smb/server: fix tree connection leak in smb2_tree_connect()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ze Tan <[email protected]>
[ Upstream commit 39f2032096715daae5f6fd0f587ca7a474b019df ]
See the procedure below:
smb2_tree_connect
ksmbd_tree_conn_connect
xa_store(&sess->tree_conns, tree_conn->id, tree_conn) ksmbd_counter_inc(KSMBD_COUNTER_TREE_CONNS) ksmbd_share_tree_conn_inc(sc)
ksmbd_iov_pin_rsp // fail
status.ret = KSMBD_TREE_CONN_STATUS_NOMEM
// do not disconnect tree_conn
Disconnect the new tree connection if ksmbd_iov_pin_rsp() fails.
Stable-dep-of: b5ec6c462aab ("ksmbd: fix tree connection use-after-free in smb2_tree_connect()")
--- fs/smb/server/smb2pdu.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
fs/smb/server/smb2pdu.c +9 -1
@@ -2330,8 +2330,16 @@ out_err1: rsp->ShareFlags |=cpu_to_le32 (SMB2_SHAREFLAG_COMPRESS_DATA ); rc =ksmbd_iov_pin_rsp (work, rsp,sizeof (struct smb2_tree_connect_rsp )); -if (rc) +if (rc) { +if (status.ret ==KSMBD_TREE_CONN_STATUS_OK ) { +down_write (&sess->tree_conns_lock); + status.tree_conn->t_state =TREE_DISCONNECTED ; +up_write (&sess->tree_conns_lock); +ksmbd_tree_conn_disconnect (sess, status.tree_conn); + status.tree_conn =NULL ; + } status.ret =KSMBD_TREE_CONN_STATUS_NOMEM ; + }if (!IS_ERR (treename))kfree (treename);
Greg Kroah-Hartman
maintainerPATCH 19/1815 ksmbd: fix tree connection use-after-free in smb2_tree_connect()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Cen Zhang (Microsoft Security FORGE Labs)" <[email protected]>
[ Upstream commit b5ec6c462aab1062cf5d1e667ba7c6442f737055 ]
ksmbd_tree_conn_connect() publishes a new tree connection in sess->tree_conns with a single reference and returns its pointer to smb2_tree_connect(). The handler continues to initialize the object and build the response after publication. A concurrent session logoff can erase the connection and drop that reference, freeing the object while the handler still uses it.
BUG: KASAN: slab-use-after-free in smb2_tree_connect+0xe3d/0xf90 smb2_tree_connect (fs/smb/server/smb2pdu.c:2872) handle_ksmbd_work process_one_work worker_thread kthread
After xa_store() succeeds, take a second reference before releasing tree_conns_lock. The original reference belongs to the xarray entry and the second belongs to the creating smb2_tree_connect() handler.
Keep the references balanced in every path:
- On normal exit or an error after publication, smb2_tree_connect() drops its creator reference. Error cleanup also calls ksmbd_tree_conn_disconnect(), which drops the xarray reference only if it removes the exact entry.
- SMB2 TREE_DISCONNECT uses the same helper to remove the entry and drop its xarray reference. The request's existing lookup reference remains owned by the request and is released by the existing cleanup.
- Session LOGOFF removes each entry and drops its xarray reference. If it wins the race, later cleanup sees that the entry is gone and does not drop that reference again.
To enforce this ownership, claim the disconnected state and erase the exact entry atomically under tree_conns_lock. This guarantees one drop for the xarray reference and one drop by each in-flight user, regardless of which teardown path wins. If logoff removes the entry before initialization completes, fail the connect instead of marking the detached object TREE_CONNECTED.
--- fs/smb/server/mgmt/tree_connect.c | 8 ++++++++ fs/smb/server/smb2pdu.c | 32 +++++++++++++++----------------- 2 files changed, 23 insertions(+), 17 deletions(-)
fs/smb/server/mgmt/tree_connect.c +8 -0
@@ -82,6 +82,8 @@ ksmbd_tree_conn_connect(struct ksmbd_wordown_write (&sess->tree_conns_lock); ret =xa_err (xa_store (&sess->tree_conns, tree_conn->id, tree_conn,KSMBD_DEFAULT_GFP )); +if (!ret) +atomic_inc (&tree_conn->refcount);up_write (&sess->tree_conns_lock);if (ret) { status.ret = -ENOMEM ;
@@ -127,6 +129,12 @@ int ksmbd_tree_conn_disconnect(struct ks struct ksmbd_tree_connect *tree_conn) {down_write (&sess->tree_conns_lock); +if (tree_conn->t_state ==TREE_DISCONNECTED || +xa_load (&sess->tree_conns, tree_conn->id) != tree_conn) { +up_write (&sess->tree_conns_lock); +return -ENOENT ; + } + tree_conn->t_state =TREE_DISCONNECTED ;xa_erase (&sess->tree_conns, tree_conn->id);up_write (&sess->tree_conns_lock);
fs/smb/server/smb2pdu.c +15 -17
@@ -2251,6 +2251,7 @@ int smb2_tree_connect(struct ksmbd_workstruct ksmbd_session *sess = work->sess;char *treename =NULL , *name =NULL ;struct ksmbd_tree_conn_status status; +struct ksmbd_tree_connect *tree_conn =NULL ;struct ksmbd_share_config *share =NULL ;int rc = -EINVAL ;
@@ -2277,9 +2278,10 @@ int smb2_tree_connect(struct ksmbd_work name, treename); status =ksmbd_tree_conn_connect (work, name); -if (status.ret ==KSMBD_TREE_CONN_STATUS_OK ) +if (status.ret ==KSMBD_TREE_CONN_STATUS_OK ) { + tree_conn = status.tree_conn; rsp->hdr.Id.SyncId.TreeId =cpu_to_le32 (status.tree_conn->id); -else + }else goto out_err1; share = status.tree_conn->share_conf;
@@ -2311,8 +2313,15 @@ int smb2_tree_connect(struct ksmbd_work status.tree_conn->posix_extensions = true;down_write (&sess->tree_conns_lock); - status.tree_conn->t_state =TREE_CONNECTED ; +if (status.tree_conn->t_state ==TREE_DISCONNECTED ) { + status.ret =KSMBD_TREE_CONN_STATUS_ERROR ; + share =NULL ; + }else { + status.tree_conn->t_state =TREE_CONNECTED ; + }up_write (&sess->tree_conns_lock); +if (status.ret !=KSMBD_TREE_CONN_STATUS_OK ) + goto out_err1; rsp->StructureSize =cpu_to_le16 (16 ); out_err1: if (server_conf.flags & KSMBD_GLOBAL_FLAG_DURABLE_HANDLE && share &&
@@ -2332,9 +2341,6 @@ out_err1: rc =ksmbd_iov_pin_rsp (work, rsp,sizeof (struct smb2_tree_connect_rsp ));if (rc) {if (status.ret ==KSMBD_TREE_CONN_STATUS_OK ) { -down_write (&sess->tree_conns_lock); - status.tree_conn->t_state =TREE_DISCONNECTED ; -up_write (&sess->tree_conns_lock);ksmbd_tree_conn_disconnect (sess, status.tree_conn); status.tree_conn =NULL ; }
@@ -2375,6 +2381,9 @@ out_err1:if (status.ret !=KSMBD_TREE_CONN_STATUS_OK )smb2_set_err_rsp (work); +if (tree_conn) +ksmbd_tree_connect_put (tree_conn); +return rc; }
@@ -2478,17 +2487,6 @@ int smb2_tree_disconnect(struct ksmbd_woksmbd_close_tree_conn_fds (work); -down_write (&sess->tree_conns_lock); -if (tcon->t_state ==TREE_DISCONNECTED ) { -up_write (&sess->tree_conns_lock); - rsp->hdr.Status =STATUS_NETWORK_NAME_DELETED ; - err = -ENOENT ; - goto err_out; - } - - tcon->t_state =TREE_DISCONNECTED ; -up_write (&sess->tree_conns_lock); - err =ksmbd_tree_conn_disconnect (sess, tcon);if (err) { rsp->hdr.Status =STATUS_NETWORK_NAME_DELETED ;
Greg Kroah-Hartman
maintainerPATCH 20/1815 memcg: move LRU size accounting on reparenting instead of copying it
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shakeel Butt <[email protected]>
[ Upstream commit 0e0ac326c511d514817cc7b6d7741afd59098ce2 ]
When a memory cgroup is offlined its LRU folios are reparented to the parent. lruvec_reparent_lru() splices the child's lists into the parent's and credits the parent with the child's per-zone lru_zone_size[], but never clears the child's copy, so the size is copied rather than moved. lru_gen_reparent_memcg() does the same for MGLRU.
The parent is left correct, credited with exactly the folios it took over. The stale value sits on the child and nothing will correct it:folio->memcg_data now resolves to the parent, so every later update_lru_size() for those folios goes there.
Dying cgroups are not freed immediately and mem_cgroup_iter() still walks them, so shrink_lruvec() keeps being called on them. get_scan_count() reads the phantom counter through lruvec_lru_size() and the scan loop then grinds through nr[] in SWAP_CLUSTER_MAX steps against an empty list, for as long as the dead cgroup lives. Under MGLRU the MGLRU scanner runs instead, but count_shadow_nodes() sums all of NR_LRU_LISTS through lruvec_lru_size() and over-budgets the shadow node limit just the same.
On one 251 GiB host a sweep of every mz->lru_zone_size[] found 380 counters describing folios on no list at all: 124777314 pages, 476 GiB, 1.89x the machine's RAM, across 57 cgroups. All were on memcgs with CSS_DYING set and CSS_ONLINE clear, and parent/child pairs reported byte-identical sizes.
LRU_UNEVICTABLE needs its size moved too. Its list is deliberately not spliced because lruvec_init() poisons the head - the unevictable LRU is imaginary and folios are never threaded on it - but the size is kept by lruvec_add_folio()/lruvec_del_folio() and those folios account to the parent from here on.
This depends on commit bf4ade7dbd76 ("memcg: keep folio's objcg same as its node") and must not be backported ahead of it. Without that invariant a folio's objcg can belong to another node, so a folio already spliced onto the parent's list can still resolve to the child's lruvec until the objcg's node is reparented in a later iteration of memcg_reparent_objcgs(); clearing the child's counter early then lets lruvec_del_folio() underflow it and trip the WARN_ONCE()/VM_BUG_ON() in mem_cgroup_update_lru_size().
--- mm/swap.c | 9 +++++++++ mm/vmscan.c | 5 +++++ 2 files changed, 14 insertions(+)
mm/swap.c +9 -0
@@ -1153,7 +1153,16 @@ static void lruvec_reparent_lru(struct lfor_each_managed_zone_pgdat (zone,NODE_DATA (nid), zid,MAX_NR_ZONES -1 ) {unsigned long size =mem_cgroup_get_zone_lru_size (child_lruvec, lru, zid); +if (!size) +continue ; + +/* +* The folios are accounted to the parent from now on, so the +* size has to be moved, not just copied. Leaving it behind +* makes the dying child describe folios it no longer owns. +*/ mem_cgroup_update_lru_size (parent_lruvec, lru, zid, size); +mem_cgroup_update_lru_size (child_lruvec, lru, zid, -(long )size); } }
mm/vmscan.c +5 -0
@@ -4554,7 +4554,12 @@ void lru_gen_reparent_memcg(struct mem_cfor_each_managed_zone_pgdat (zone,NODE_DATA (nid), zid,MAX_NR_ZONES -1 ) {unsigned long size =mem_cgroup_get_zone_lru_size (child_lruvec, lru, zid); +if (!size) +continue ; + +/* Move the accounting, do not duplicate it. */ mem_cgroup_update_lru_size (parent_lruvec, lru, zid, size); +mem_cgroup_update_lru_size (child_lruvec, lru, zid, -(long )size); } } }
Greg Kroah-Hartman
maintainerPATCH 21/1815 nvdimm: preserve flush callback -ENOMEM
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit 6b7108712a4b1c37cac69815aede1dde202b3187 ]
nvdimm_flush() maps provider flush failures to -EIO. Keep that default because provider callbacks can report host-side or backend failures that should remain generic I/O errors to the guest.
Guest-side allocation failures should not be reported as I/O errors. In the virtio-pmem path, the flush request allocation can fail with -ENOMEM before any request is submitted to the host. Mapping that to -EIO makes resource pressure look like media failure.
Preserve -ENOMEM from provider callbacks and continue to map other non-zero provider failures to -EIO. The generic flush path still returns 0, and pmem_submit_bio() already converts errno values to block status for bio completion.
Message-ID: <[email protected]>
Stable-dep-of: e57140944b5a ("nvdimm: virtio_pmem: refcount requests for token lifetime")
--- drivers/nvdimm/region_devs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/nvdimm/region_devs.c +2 -1
@@ -1093,7 +1093,8 @@ int nvdimm_flush(struct nd_region *nd_reif (!nd_region->flush) rc =generic_nvdimm_flush (nd_region);else { -if (nd_region->flush (nd_region, bio)) + rc = nd_region->flush (nd_region, bio); +if (rc && rc != -ENOMEM ) rc = -EIO ; }
Greg Kroah-Hartman
maintainerPATCH 22/1815 nvdimm: pmem: keep PREFLUSH before data writes
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit c644a2f8fef5618fcf453c591177700fd07dd024 ]
pmem_submit_bio() records a REQ_PREFLUSH error, but continues to copy the bio data and can later overwrite the error with a successful REQ_FUA flush. That lets data writes run after a failed preflush and can complete the bio successfully despite the failed ordering barrier.
Run the REQ_PREFLUSH flush synchronously before touching the bio data and complete the bio with the flush error if it fails. Keep asynchronous flush chaining for REQ_FUA. At that point, data copy has completed and the parent bio can wait for the chained flush bio.
Message-ID: <[email protected]>
Stable-dep-of: e57140944b5a ("nvdimm: virtio_pmem: refcount requests for token lifetime")
--- drivers/nvdimm/pmem.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/nvdimm/pmem.c +9 -3
@@ -208,8 +208,14 @@ static void pmem_submit_bio(struct bio *struct pmem_device *pmem = bio->bi_bdev->bd_disk->private_data;struct nd_region *nd_region =to_region (pmem); -if (bio->bi_opf &REQ_PREFLUSH ) - ret =nvdimm_flush (nd_region, bio); +if (bio->bi_opf &REQ_PREFLUSH ) { + ret =nvdimm_flush (nd_region,NULL ); +if (ret) { + bio->bi_status =errno_to_blk_status (ret); +bio_endio (bio); +return ; + } + } do_acct =blk_queue_io_stat (bio->bi_bdev->bd_disk->queue);if (do_acct)
@@ -229,7 +235,7 @@ static void pmem_submit_bio(struct bio *if (do_acct)bio_end_io_acct (bio, start); -if (bio->bi_opf &REQ_FUA ) +if ((bio->bi_opf &REQ_FUA ) && !bio->bi_status) ret =nvdimm_flush (nd_region, bio);if (ret)
Greg Kroah-Hartman
maintainerPATCH 23/1815 nvdimm: virtio_pmem: stop allocating child flush bio
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit 40f356e610df95728074b1fc2e2ccb54ca1b5659 ]
pmem_submit_bio() passes the parent bio to nvdimm_flush() for REQ_FUA. For virtio-pmem this makes async_pmem_flush() allocate and submit a child PREFLUSH bio chained to the parent.
That child allocation is in the block submit path. Making it blocking with GFP_NOIO can consume the same global bio mempool that submit_bio() uses, while making it GFP_ATOMIC can fail under pressure. A forced failure of the child allocation produced:
virtio_pmem: forcing child bio allocation failure for test Buffer I/O error on dev pmem0, logical block 0, lost sync page write EXT4-fs (pmem0): I/O error while writing superblock EXT4-fs (pmem0): mount failed
Avoid the child bio without turning REQ_FUA into a synchronous submit-path wait. Let provider flush callbacks return NVDIMM_FLUSH_ASYNC after taking ownership of parent bio completion. pmem_submit_bio() returns in that case, and virtio-pmem queues an ordered WQ_MEM_RECLAIM work item that runs the existing host flush path and completes the parent bio.
This keeps the asynchronous completion model of the child-bio path while removing the child bio allocation from the submit path.
Message-ID: <[email protected]>
Stable-dep-of: e57140944b5a ("nvdimm: virtio_pmem: refcount requests for token lifetime")
--- drivers/nvdimm/nd_virtio.c | 54 ++++++++++++++++++++++++++++++------------- drivers/nvdimm/pmem.c | 5 +++ drivers/nvdimm/region_devs.c | 2 + drivers/nvdimm/virtio_pmem.c | 17 ++++++++++++- drivers/nvdimm/virtio_pmem.h | 4 +++ include/linux/libnvdimm.h | 9 +++++++ 6 files changed, 73 insertions(+), 18 deletions(-)
drivers/nvdimm/nd_virtio.c +38 -16
@@ -9,6 +9,12 @@#include "virtio_pmem.h" #include "nd.h" +struct virtio_pmem_flush_work { +struct work_struct work; +struct nd_region *nd_region; +struct bio *bio; +}; +/* The interrupt handler */ void virtio_pmem_host_ack (struct virtqueue *vq) {
@@ -107,30 +113,46 @@ static int virtio_pmem_flush(struct nd_rreturn err; }; +static void virtio_pmem_flush_work (struct work_struct *work) +{ +struct virtio_pmem_flush_work *flush; +int err; + + flush = container_of(work, struct virtio_pmem_flush_work, work); + err =virtio_pmem_flush (flush->nd_region); +if (err >0 ) + err = -EIO ; +if (err) + flush->bio->bi_status =errno_to_blk_status (err); +bio_endio (flush->bio); +kfree (flush); +} +/* The asynchronous flush callback function */ int async_pmem_flush (struct nd_region *nd_region,struct bio *bio) { -/* -* Create child bio for asynchronous flush and chain with -* parent bio. Otherwise directly call nd_region flush. -*/ -if (bio && bio->bi_iter.bi_sector !=-1 ) { -struct bio *child =bio_alloc (bio->bi_bdev,0 , -REQ_OP_WRITE |REQ_PREFLUSH , -GFP_ATOMIC ); +struct virtio_device *vdev = nd_region->provider_data; +struct virtio_pmem *vpmem = vdev->priv; +struct virtio_pmem_flush_work *flush; +int err; -if (!child) +if (bio && bio->bi_iter.bi_sector !=-1 ) { + flush =kmalloc_obj (*flush,GFP_NOIO ); +if (!flush)return -ENOMEM ; -bio_clone_blkg_association (child, bio); - child->bi_iter.bi_sector =-1 ; -bio_chain (child, bio); -submit_bio (child); -return 0 ; + +INIT_WORK (&flush->work, virtio_pmem_flush_work); + flush->nd_region = nd_region; + flush->bio = bio; +queue_work (vpmem->flush_wq, &flush->work); +return NVDIMM_FLUSH_ASYNC ; } -if (virtio_pmem_flush (nd_region)) + + err =virtio_pmem_flush (nd_region); +if (err >0 )return -EIO ; -return 0 ; +return err; };EXPORT_SYMBOL_GPL (async_pmem_flush);MODULE_DESCRIPTION ("Virtio Persistent Memory Driver" );
drivers/nvdimm/pmem.c +4 -1
@@ -235,8 +235,11 @@ static void pmem_submit_bio(struct bio *if (do_acct)bio_end_io_acct (bio, start); -if ((bio->bi_opf &REQ_FUA ) && !bio->bi_status) +if ((bio->bi_opf &REQ_FUA ) && !bio->bi_status) { ret =nvdimm_flush (nd_region, bio); +if (ret ==NVDIMM_FLUSH_ASYNC ) +return ; + }if (ret) bio->bi_status =errno_to_blk_status (ret);
drivers/nvdimm/region_devs.c +2 -0
@@ -1094,6 +1094,8 @@ int nvdimm_flush(struct nd_region *nd_re rc =generic_nvdimm_flush (nd_region); else { rc = nd_region->flush (nd_region, bio); +if (rc >0 ) +return rc;if (rc && rc != -ENOMEM ) rc = -EIO ; }
drivers/nvdimm/virtio_pmem.c +16 -1
@@ -67,10 +67,17 @@ static int virtio_pmem_probe(struct virtmutex_init (&vpmem->flush_lock); vpmem->vdev = vdev; vdev->priv = vpmem; + vpmem->flush_wq =alloc_ordered_workqueue ("virtio-pmem-flush" , +WQ_MEM_RECLAIM ); +if (!vpmem->flush_wq) { + err = -ENOMEM ; + goto out_err; + } + err =init_vq (vpmem);if (err) {dev_err (&vdev->dev,"failed to initialize virtio pmem vq's\n" ); - goto out_err; + goto out_wq; }if (virtio_has_feature (vdev,VIRTIO_PMEM_F_SHMEM_REGION )) {
@@ -131,6 +138,8 @@ out_nd:nvdimm_bus_unregister (vpmem->nvdimm_bus); out_vq: vdev->config->del_vqs (vdev); +out_wq: +destroy_workqueue (vpmem->flush_wq); out_err:return err; }
@@ -138,14 +147,20 @@ out_err:static void virtio_pmem_remove (struct virtio_device *vdev) {struct nvdimm_bus *nvdimm_bus =dev_get_drvdata (&vdev->dev); +struct virtio_pmem *vpmem = vdev->priv;nvdimm_bus_unregister (nvdimm_bus); +drain_workqueue (vpmem->flush_wq); vdev->config->del_vqs (vdev);virtio_reset_device (vdev); +destroy_workqueue (vpmem->flush_wq); }static int virtio_pmem_freeze (struct virtio_device *vdev) { +struct virtio_pmem *vpmem = vdev->priv; + +drain_workqueue (vpmem->flush_wq); vdev->config->del_vqs (vdev);virtio_reset_device (vdev);
drivers/nvdimm/virtio_pmem.h +4 -0
@@ -15,6 +15,7 @@#include <linux/libnvdimm.h> #include <linux/mutex.h> #include <linux/spinlock.h> +#include <linux/workqueue.h> struct virtio_pmem_request {struct virtio_pmem_req req;
@@ -39,6 +40,9 @@ struct virtio_pmem {/* Serialize flush requests to the device. */ struct mutex flush_lock; +/* Complete asynchronous FUA flushes outside the submit path. */ +struct workqueue_struct *flush_wq; +/* nvdimm bus registers virtio pmem device */ struct nvdimm_bus *nvdimm_bus;struct nvdimm_bus_descriptor nd_desc;
include/linux/libnvdimm.h +9 -0
@@ -126,6 +126,15 @@ struct nd_mapping_desc {struct bio ;struct resource ;struct nd_region ; + +/* +* Provider flush callback return values: +* 0: flush completed synchronously +* <0: flush failed +* >0: flush completion was queued and @bio will be completed later +*/ +#define NVDIMM_FLUSH_ASYNC 1 +struct nd_region_desc {struct resource *res;struct nd_mapping_desc *mapping;
Greg Kroah-Hartman
maintainerPATCH 24/1815 nvdimm: virtio_pmem: always wake -ENOSPC waiters
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit 811808761e19fdea1c25b7c76734b8945f758f27 ]
virtio_pmem_host_ack() reclaims virtqueue descriptors with virtqueue_get_buf(). The -ENOSPC waiter wakeup is tied to completing the returned token. If token completion is skipped for any reason, reclaimed descriptors may not wake a waiter and the submitter may sleep forever waiting for a free slot. Always wake one -ENOSPC waiter for each virtqueue completion before touching the returned token.
Message-ID: <[email protected]>
Stable-dep-of: e57140944b5a ("nvdimm: virtio_pmem: refcount requests for token lifetime")
--- drivers/nvdimm/nd_virtio.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
drivers/nvdimm/nd_virtio.c +16 -9
@@ -15,26 +15,33 @@ struct virtio_pmem_flush_work {struct bio *bio; }; +static void virtio_pmem_wake_one_waiter (struct virtio_pmem *vpmem) +{ +struct virtio_pmem_request *req_buf; + +if (list_empty (&vpmem->req_list)) +return ; + + req_buf =list_first_entry (&vpmem->req_list, + struct virtio_pmem_request, list); + req_buf->wq_buf_avail = true; +wake_up (&req_buf->wq_buf); +list_del (&req_buf->list); +} +/* The interrupt handler */ void virtio_pmem_host_ack (struct virtqueue *vq) {struct virtio_pmem *vpmem = vq->vdev->priv; -struct virtio_pmem_request *req_data, *req_buf; +struct virtio_pmem_request *req_data;unsigned long flags;unsigned int len;spin_lock_irqsave (&vpmem->pmem_lock, flags);while ((req_data =virtqueue_get_buf (vq, &len)) !=NULL ) { +virtio_pmem_wake_one_waiter (vpmem); req_data->done = true;wake_up (&req_data->host_acked); - -if (!list_empty (&vpmem->req_list)) { - req_buf =list_first_entry (&vpmem->req_list, - struct virtio_pmem_request, list); - req_buf->wq_buf_avail = true; -wake_up (&req_buf->wq_buf); -list_del (&req_buf->list); - } }spin_unlock_irqrestore (&vpmem->pmem_lock, flags); }
Greg Kroah-Hartman
maintainerPATCH 25/1815 nvdimm: virtio_pmem: use READ_ONCE()/WRITE_ONCE() for wait flags
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit 08e72a5ba1ab9dc0adf993ff0f4d606a1e3445a8 ]
Use READ_ONCE()/WRITE_ONCE() for the wait_event() flags (done and wq_buf_avail). They are observed by waiters without pmem_lock, so make the accesses explicit single loads/stores and avoid compiler reordering/caching across the wait/wake paths.
Message-ID: <[email protected]>
Stable-dep-of: e57140944b5a ("nvdimm: virtio_pmem: refcount requests for token lifetime")
--- drivers/nvdimm/nd_virtio.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/nvdimm/nd_virtio.c +7 -7
@@ -24,9 +24,9 @@ static void virtio_pmem_wake_one_waiter( req_buf =list_first_entry (&vpmem->req_list, struct virtio_pmem_request, list); - req_buf->wq_buf_avail = true; +list_del_init (&req_buf->list); +WRITE_ONCE (req_buf->wq_buf_avail, true);wake_up (&req_buf->wq_buf); -list_del (&req_buf->list); }/* The interrupt handler */
@@ -40,7 +40,7 @@ void virtio_pmem_host_ack(struct virtquespin_lock_irqsave (&vpmem->pmem_lock, flags);while ((req_data =virtqueue_get_buf (vq, &len)) !=NULL ) {virtio_pmem_wake_one_waiter (vpmem); - req_data->done = true; +WRITE_ONCE (req_data->done, true);wake_up (&req_data->host_acked); }spin_unlock_irqrestore (&vpmem->pmem_lock, flags);
@@ -72,7 +72,7 @@ static int virtio_pmem_flush(struct nd_rif (!req_data)return -ENOMEM ; - req_data->done = false; +WRITE_ONCE (req_data->done, false);init_waitqueue_head (&req_data->host_acked);init_waitqueue_head (&req_data->wq_buf);INIT_LIST_HEAD (&req_data->list);
@@ -93,12 +93,12 @@ static int virtio_pmem_flush(struct nd_r GFP_ATOMIC)) == -ENOSPC) {dev_info (&vdev->dev,"failed to send command to virtio pmem device, no free slots in the virtqueue\n" ); - req_data->wq_buf_avail = false; +WRITE_ONCE (req_data->wq_buf_avail, false);list_add_tail (&req_data->list, &vpmem->req_list);spin_unlock_irqrestore (&vpmem->pmem_lock, flags);/* A host response results in "host_ack" getting called */ -wait_event (req_data->wq_buf, req_data->wq_buf_avail); +wait_event (req_data->wq_buf,READ_ONCE (req_data->wq_buf_avail));spin_lock_irqsave (&vpmem->pmem_lock, flags); } err1 =virtqueue_kick (vpmem->req_vq);
@@ -112,7 +112,7 @@ static int virtio_pmem_flush(struct nd_r err = -EIO ; }else {/* A host response results in "host_ack" getting called */ -wait_event (req_data->host_acked, req_data->done); +wait_event (req_data->host_acked,READ_ONCE (req_data->done)); err =le32_to_cpu (req_data->resp.ret); }
Greg Kroah-Hartman
maintainerPATCH 26/1815 nvdimm: virtio_pmem: refcount requests for token lifetime
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Chen <[email protected]>
[ Upstream commit e57140944b5a47a7fd5a142faab29a02af040bc8 ]
KASAN reports slab-use-after-free in __wake_up_common():
BUG: KASAN: slab-use-after-free in __wake_up_common+0x114/0x160 Read of size 8 at addr ffff88810fdcb710 by task swapper/0/0 CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.19.0-next-20260220-00006-g1eae5f204ec3 #4 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.17.0-2-2 04/01/2014 Call Trace: <IRQ> dump_stack_lvl+0x6d/0xb0 print_report+0x170/0x4e2 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? __virt_addr_valid+0x1dc/0x380 kasan_report+0xbc/0xf0 ? __wake_up_common+0x114/0x160 ? __wake_up_common+0x114/0x160 __wake_up_common+0x114/0x160 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 __wake_up+0x36/0x60 virtio_pmem_host_ack+0x11d/0x3b0 ? sched_balance_domains+0x29f/0xb00 ? __pfx_virtio_pmem_host_ack+0x10/0x10 ? _raw_spin_lock_irqsave+0x98/0x100 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 vring_interrupt+0x1c9/0x5e0 ? __pfx_vp_interrupt+0x10/0x10 vp_vring_interrupt+0x87/0x100 ? __pfx_vp_interrupt+0x10/0x10 __handle_irq_event_percpu+0x17f/0x550 ? __pfx__raw_spin_lock+0x10/0x10 handle_irq_event+0xab/0x1c0 handle_fasteoi_irq+0x276/0xae0 __common_interrupt+0x65/0x130 common_interrupt+0x78/0xa0 </IRQ>
virtio_pmem_host_ack() wakes a request that has already been freed by the submitter.
This happens when the request token is still reachable via the virtqueue, but virtio_pmem_flush() returns and frees it.
Fix the token lifetime by refcounting struct virtio_pmem_request. virtio_pmem_flush() holds a submitter reference, and the virtqueue holds an extra reference once the request is queued. The completion path drops the virtqueue reference, and the submitter drops its reference before returning.
Message-ID: <[email protected]>
--- drivers/nvdimm/nd_virtio.c | 32 ++++++++++++++++++++++++++++---- drivers/nvdimm/virtio_pmem.h | 2 ++ 2 files changed, 30 insertions(+), 4 deletions(-)
drivers/nvdimm/nd_virtio.c +28 -4
@@ -15,6 +15,14 @@ struct virtio_pmem_flush_work {struct bio *bio; }; +static void virtio_pmem_req_release (struct kref *kref) +{ +struct virtio_pmem_request *req; + + req = container_of(kref, struct virtio_pmem_request, kref); +kfree (req); +} +static void virtio_pmem_wake_one_waiter (struct virtio_pmem *vpmem) {struct virtio_pmem_request *req_buf;
@@ -42,6 +50,7 @@ void virtio_pmem_host_ack(struct virtquevirtio_pmem_wake_one_waiter (vpmem);WRITE_ONCE (req_data->done, true);wake_up (&req_data->host_acked); +kref_put (&req_data->kref, virtio_pmem_req_release); }spin_unlock_irqrestore (&vpmem->pmem_lock, flags); }
@@ -72,6 +81,7 @@ static int virtio_pmem_flush(struct nd_rif (!req_data)return -ENOMEM ; +kref_init (&req_data->kref);WRITE_ONCE (req_data->done, false);init_waitqueue_head (&req_data->host_acked);init_waitqueue_head (&req_data->wq_buf);
@@ -89,10 +99,23 @@ static int virtio_pmem_flush(struct nd_r* to req_list and wait for host_ack to wake us up when free * slots are available. */ -while ((err =virtqueue_add_sgs (vpmem->req_vq, sgs,1 ,1 , req_data, -GFP_ATOMIC )) == -ENOSPC ) { +for (;;) { + err =virtqueue_add_sgs (vpmem->req_vq, sgs,1 ,1 , req_data, +GFP_ATOMIC ); +if (!err) { +/* +* Take the virtqueue reference while @pmem_lock is +* held so completion cannot run concurrently. +*/ +kref_get (&req_data->kref); +break ; + } + +if (err != -ENOSPC ) +break ; -dev_info (&vdev->dev,"failed to send command to virtio pmem device, no free slots in the virtqueue\n" ); +dev_info_ratelimited (&vdev->dev, +"failed to send command to virtio pmem device, no free slots in the virtqueue\n" );WRITE_ONCE (req_data->wq_buf_avail, false);list_add_tail (&req_data->list, &vpmem->req_list);spin_unlock_irqrestore (&vpmem->pmem_lock, flags);
@@ -101,6 +124,7 @@ static int virtio_pmem_flush(struct nd_rwait_event (req_data->wq_buf,READ_ONCE (req_data->wq_buf_avail));spin_lock_irqsave (&vpmem->pmem_lock, flags); } + err1 =virtqueue_kick (vpmem->req_vq);spin_unlock_irqrestore (&vpmem->pmem_lock, flags);/*
@@ -116,7 +140,7 @@ static int virtio_pmem_flush(struct nd_r err =le32_to_cpu (req_data->resp.ret); } -kfree (req_data); +kref_put (&req_data->kref, virtio_pmem_req_release);return err; };
drivers/nvdimm/virtio_pmem.h +2 -0
@@ -12,12 +12,14 @@#include <linux/module.h> #include <uapi/linux/virtio_pmem.h> +#include <linux/kref.h> #include <linux/libnvdimm.h> #include <linux/mutex.h> #include <linux/spinlock.h> #include <linux/workqueue.h> struct virtio_pmem_request { +struct kref kref;struct virtio_pmem_req req;struct virtio_pmem_resp resp;
Greg Kroah-Hartman
maintainerPATCH 27/1815 mm/mremap: reset unfaulted VMA page offset for MREMAP_DONTUNMAP
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Lorenzo Stoakes (ARM)" <[email protected]>
[ Upstream commit 35b0fb391b0df57383bc15985bb769f4555c97ba ]
Uniquely an mremap() invocation using the MREMAP_DONTUNMAP flag can reset a faulted VMA into an unfaulted one.
It does so after the page tables have been moved to the copied VMA with MREMAP_DONTUNMAP leaving the old VMA in place which is naturally unfaulted as the page tables it had are no longer present.
However, in doing so, it violates the invariant that the anonymous page offset of an unfaulted VMA is vma->vm_start >> PAGE_SHIFT.
This is because a VMA may have been faulted in, mremap()'d (causing a delta between its page offset and vma->vm_start >> PAGE_SHIFT), and then mremap()'d again with MREMAP_DONTUNMAP resulting in the unfaulting.
This condition is a violation of a fundamental assumption in mm, but now also triggers an assert in assert_sane_pgoff() which explicitly checks for this condition.
Correct it by resetting the VMA's page offset at the point of completing the MREMAP_DONTUNMAP operation.
--- mm/mremap.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)
mm/mremap.c +16 -5
@@ -1321,18 +1321,29 @@ static void dontunmap_complete(struct vm {unsigned long start = vrm->addr;unsigned long end = vrm->addr + vrm->old_len; -unsigned long old_start = vrm->vma->vm_start; -unsigned long old_end = vrm->vma->vm_end; +struct vm_area_struct *vma = vrm->vma; +unsigned long old_start = vma->vm_start; +unsigned long old_end = vma->vm_end;/* We always clear VM_LOCKED[ONFAULT] on the old VMA. */ -vm_flags_clear (vrm->vma,VM_LOCKED_MASK ); +vm_flags_clear (vma,VM_LOCKED_MASK );/* * anon_vma links of the old vma is no longer needed after its page * table has been moved. */ -if (new_vma != vrm->vma && start == old_start && end == old_end) -unlink_anon_vmas (vrm->vma); +if (new_vma != vma && start == old_start && end == old_end) { +const pgoff_t pgoff_unfaulted = vma->vm_start >>PAGE_SHIFT ; + +unlink_anon_vmas (vma); +/* +* The VMA is now unfaulted and it is an invariant that +* unfaulted anonymous VMAs have page offset equal to +* vma->vm_start >> PAGE_SHIFT. +*/ +if (vma_is_anonymous (vma) && !vma->vm_file) + vma->vm_pgoff = pgoff_unfaulted; + }/* Because we won't unmap we don't need to touch locked_vm. */ }
Greg Kroah-Hartman
maintainerPATCH 28/1815 clk: qcom: Fix test_ctl_hi field for DEFAULT_EVO PLLs
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Imran Shaik <[email protected]>
[ Upstream commit 830ead322c39c99bf972425b3c35323ec56c29de ]
CLK_ALPHA_PLL_TYPE_DEFAULT_EVO type PLLs do not have the PLL_TEST_CTL_U1 register, so clk_alpha_pll_configure() does not program test_ctl_hi1_val for this PLL type.
The GCC PLL configurations for QCM2290, Shikra and SM6115 wrongly use test_ctl_hi1_val instead of test_ctl_hi_val, deviating from the hardware recommended settings. Fix them to use test_ctl_hi_val.
--- drivers/clk/qcom/gcc-qcm2290.c | 6 +++--- drivers/clk/qcom/gcc-sm6115.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)
drivers/clk/qcom/gcc-qcm2290.c +3 -3
@@ -116,7 +116,7 @@ static const struct alpha_pll_config gpl .vco_mask = GENMASK(21, 20), .main_output_mask = BIT(0), .config_ctl_val = 0x4001055B, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, };static struct clk_alpha_pll gpll10 = {
@@ -148,7 +148,7 @@ static const struct alpha_pll_config gpl .vco_mask = GENMASK(21, 20), .main_output_mask = BIT(0), .config_ctl_val = 0x4001055B, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, };static struct clk_alpha_pll gpll11 = {
@@ -309,7 +309,7 @@ static const struct alpha_pll_config gpl .post_div_val = 0x1 << 8, .post_div_mask = GENMASK(11, 8), .config_ctl_val = 0x4001055B, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, };static struct clk_alpha_pll gpll8 = {
drivers/clk/qcom/gcc-sm6115.c +3 -3
@@ -120,7 +120,7 @@ static const struct alpha_pll_config gpl .vco_mask = GENMASK(21, 20), .main_output_mask = BIT(0), .config_ctl_val = 0x4001055b, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, .test_ctl_hi_mask = 0x1, };
@@ -173,7 +173,7 @@ static const struct alpha_pll_config gpl .vco_val = 0x2 << 20, .vco_mask = GENMASK(21, 20), .config_ctl_val = 0x4001055b, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, .test_ctl_hi_mask = 0x1, };
@@ -367,7 +367,7 @@ static const struct alpha_pll_config gpl .post_div_val = 0x1 << 8, .post_div_mask = GENMASK(11, 8), .config_ctl_val = 0x4001055b, - .test_ctl_hi1_val = 0x1, + .test_ctl_hi_val = 0x1, .test_ctl_hi_mask = 0x1, };
Greg Kroah-Hartman
maintainerPATCH 29/1815 KVM: x86: Extract REGS and SREGS runtime sync code to helpers
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <[email protected]>
[ Upstream commit 6a8a98aa9c147eb63f5a360f157f207bf46c05ee ]
Extract the REGS and SREGS portions of {store,sync}_regs() into separate helpers in anticipation of moving the register specific code out of x86.c and into regs.c.
No functional change intended.
Message-ID: <[email protected]>
Stable-dep-of: 184bd464bdb6 ("KVM: x86: Check EFER validity on KVM_SET_SREGS*")
--- arch/x86/kvm/x86.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
arch/x86/kvm/x86.c +15 -2
@@ -12696,7 +12696,7 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kreturn 0 ; } -static void store_regs (struct kvm_vcpu *vcpu) +static void kvm_run_sync_regs_to_user (struct kvm_vcpu *vcpu) {BUILD_BUG_ON (sizeof (struct kvm_sync_regs ) >SYNC_REGS_SIZE_BYTES );
@@ -12705,13 +12705,18 @@ static void store_regs(struct kvm_vcpu *if (vcpu->run->kvm_valid_regs &KVM_SYNC_X86_SREGS )__get_sregs (vcpu, &vcpu->run->s.regs.sregs); +} + +static void store_regs (struct kvm_vcpu *vcpu) +{ +kvm_run_sync_regs_to_user (vcpu);if (vcpu->run->kvm_valid_regs &KVM_SYNC_X86_EVENTS )kvm_vcpu_ioctl_x86_get_vcpu_events ( vcpu, &vcpu->run->s.regs.events); } -static int sync_regs (struct kvm_vcpu *vcpu) +static int kvm_run_sync_regs_from_user (struct kvm_vcpu *vcpu) {if (vcpu->run->kvm_dirty_regs &KVM_SYNC_X86_REGS ) {__set_regs (vcpu, &vcpu->run->s.regs.regs);
@@ -12727,6 +12732,14 @@ static int sync_regs(struct kvm_vcpu *vc vcpu->run->kvm_dirty_regs &= ~KVM_SYNC_X86_SREGS ; } +return 0 ; +} + +static int sync_regs (struct kvm_vcpu *vcpu) +{ +if (kvm_run_sync_regs_from_user (vcpu)) +return -EINVAL ; +if (vcpu->run->kvm_dirty_regs &KVM_SYNC_X86_EVENTS ) {struct kvm_vcpu_events events = vcpu->run->s.regs.events;
Greg Kroah-Hartman
maintainerPATCH 30/1815 KVM: x86: Move get_segment_base() to regs.h, as kvm_get_segment_base()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <[email protected]>
[ Upstream commit 0217de73439caf56db74da95b3bbad8c1cb066c4 ]
Move get_segment_base() to regs.h, as kvm_get_segment_base(), so that the bulk of the register code can be moved from x86.c to a new regs.c, without simultaneously needing to rename "public" helpers to explicitly scope them to KVM.
No functional change intended.
Message-ID: <[email protected]>
Stable-dep-of: 184bd464bdb6 ("KVM: x86: Check EFER validity on KVM_SET_SREGS*")
--- arch/x86/kvm/regs.h | 5 +++++ arch/x86/kvm/x86.c | 9 ++------- 2 files changed, 7 insertions(+), 7 deletions(-)
arch/x86/kvm/regs.h +5 -0
@@ -420,4 +420,9 @@ static inline bool is_guest_mode(struct return vcpu->arch.hflags & HF_GUEST_MASK; } +static inline unsigned long kvm_get_segment_base (struct kvm_vcpu *vcpu,int seg) +{ +return kvm_x86_call (get_segment_base)(vcpu, seg); +} +#endif
arch/x86/kvm/x86.c +2 -7
@@ -8495,11 +8495,6 @@ static int emulator_pio_out_emulated(strreturn emulator_pio_out (emul_to_vcpu (ctxt), size, port, val, count); } -static unsigned long get_segment_base (struct kvm_vcpu *vcpu,int seg) -{ -return kvm_x86_call (get_segment_base)(vcpu, seg); -} -static void emulator_invlpg (struct x86_emulate_ctxt *ctxt,ulong address) {kvm_mmu_invlpg (emul_to_vcpu (ctxt), address);
@@ -8644,7 +8639,7 @@ static void emulator_set_idt(struct x86_static unsigned long emulator_get_cached_segment_base (struct x86_emulate_ctxt *ctxt,int seg) { -return get_segment_base (emul_to_vcpu (ctxt), seg); +return kvm_get_segment_base (emul_to_vcpu (ctxt), seg); } static bool emulator_get_segment(struct x86_emulate_ctxt *ctxt, u16 *selector,
@@ -13854,7 +13849,7 @@ unsigned long kvm_get_linear_rip(structif (is_64_bit_mode (vcpu))return kvm_rip_read (vcpu); -return (u32)(get_segment_base (vcpu,VCPU_SREG_CS ) + +return (u32)(kvm_get_segment_base (vcpu,VCPU_SREG_CS ) +kvm_rip_read (vcpu)); }EXPORT_SYMBOL_FOR_KVM_INTERNAL (kvm_get_linear_rip);
Greg Kroah-Hartman
maintainerPATCH 31/1815 KVM: x86: Rename __{g,s}et_sregs2() => kvm_vcpu_ioctl_x86_{g,s}et_sregs2()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <[email protected]>
[ Upstream commit bd130c8d72a1c7dde5523b3f3fae9867eafaa1dc ]
Rename the KVM_{G,S}ET_SREGS2 helpers in anticipation of moving them out of x86.c (while leaving the ioctl dispatch behind). Having globally visible APIs named __{g,s}et_sregs2() would be "fine", but ugly, given that __{g,s}et_sregs() will NOT be globally visible. As a bonus, this makes it a bit more obvious that the helpers implement newer versions of kvm_arch_vcpu_ioctl_set_sregs().
No functional change intended.
Message-ID: <[email protected]>
Stable-dep-of: 184bd464bdb6 ("KVM: x86: Check EFER validity on KVM_SET_SREGS*")
--- arch/x86/kvm/x86.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
arch/x86/kvm/x86.c +10 -6
@@ -133,8 +133,10 @@ static void __kvm_set_rflags(struct kvm_static void store_regs (struct kvm_vcpu *vcpu);static int sync_regs (struct kvm_vcpu *vcpu); -static int __set_sregs2 (struct kvm_vcpu *vcpu,struct kvm_sregs2 *sregs2); -static void __get_sregs2 (struct kvm_vcpu *vcpu,struct kvm_sregs2 *sregs2); +static int kvm_vcpu_ioctl_x86_set_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2); +static void kvm_vcpu_ioctl_x86_get_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2);static DEFINE_MUTEX (vendor_module_lock);static void kvm_load_guest_fpu (struct kvm_vcpu *vcpu);
@@ -6623,7 +6625,7 @@ long kvm_arch_vcpu_ioctl(struct file *fi r = -ENOMEM ;if (!u.sregs2) goto out; -__get_sregs2 (vcpu, u.sregs2); +kvm_vcpu_ioctl_x86_get_sregs2 (vcpu, u.sregs2); r = -EFAULT ;if (copy_to_user (argp, u.sregs2,sizeof (struct kvm_sregs2 ))) goto out;
@@ -6642,7 +6644,7 @@ long kvm_arch_vcpu_ioctl(struct file *fi u.sregs2 =NULL ; goto out; } - r =__set_sregs2 (vcpu, u.sregs2); + r =kvm_vcpu_ioctl_x86_set_sregs2 (vcpu, u.sregs2);break ; }case KVM_HAS_DEVICE_ATTR :
@@ -12221,7 +12223,8 @@ static void __get_sregs(struct kvm_vcpu (unsigned long *)sregs->interrupt_bitmap); } -static void __get_sregs2 (struct kvm_vcpu *vcpu,struct kvm_sregs2 *sregs2) +static void kvm_vcpu_ioctl_x86_get_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2) {int i;
@@ -12489,7 +12492,8 @@ static int __set_sregs(struct kvm_vcpu *return 0 ; } -static int __set_sregs2 (struct kvm_vcpu *vcpu,struct kvm_sregs2 *sregs2) +static int kvm_vcpu_ioctl_x86_set_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2) {int mmu_reset_needed =0 ;bool valid_pdptrs = sregs2->flags &KVM_SREGS2_FLAGS_PDPTRS_VALID ;
Greg Kroah-Hartman
maintainerPATCH 32/1815 KVM: x86: Move the bulk of register specific code from x86.c to regs.c
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <[email protected]>
[ Upstream commit 2f5bb3fe583510cf20f9d64aa73089577be3dc36 ]
Introduce regs.c, and move the vast majority of register specific code out of x86.c and into regs.c. Deliberately leave behind MSR code, as KVM's MSR support is complex enough to warrant its own compilation unit, and doesn't have much in common with the other register code.
Note, "struct kvm_sregs" has fields for EFER and MSR_IA32_APICBASE, and so the {G,S}ET_REGS flows technically contain a tiny amount of MSR code. MSR_IA32_APICBASE is already managed by lapic.c, and so doesn't require a "placement decision". As for EFER, leave all other EFER handling in x86.c (later to be moved to msrs.c). The primary interface to EFER, set_efer(), is very much MSR specific, even though EFER is arguably more of a Control Register than an MSR.
No functional change intended.
Message-ID: <[email protected]>
Stable-dep-of: 184bd464bdb6 ("KVM: x86: Check EFER validity on KVM_SET_SREGS*")
--- arch/x86/kvm/Makefile | 4 arch/x86/kvm/regs.c | 873 +++++++++++++++++++++++++++++++++++++++++++++++++ arch/x86/kvm/regs.h | 25 + arch/x86/kvm/x86.c | 885 -------------------------------------------------- arch/x86/kvm/x86.h | 2 5 files changed, 904 insertions(+), 885 deletions(-) create mode 100644 arch/x86/kvm/regs.c
arch/x86/kvm/Makefile +2 -2
@@ -5,8 +5,8 @@ ccflags-$(CONFIG_KVM_WERROR) += -Werror include $(srctree)/virt/kvm/Makefile.kvm -kvm-y += x86.o emulate.o irq.o lapic.o cpuid.o pmu.o mtrr.o \ - debugfs.o mmu/mmu.o mmu/page_track.o mmu/spte.o +kvm-y += x86.o emulate.o irq.o lapic.o cpuid.o pmu.o regs.o \ + mtrr.o debugfs.o mmu/mmu.o mmu/page_track.o mmu/spte.o kvm-$(CONFIG_X86_64) += mmu/tdp_iter.o mmu/tdp_mmu.o kvm-$(CONFIG_KVM_IOAPIC) += i8259.o i8254.o ioapic.o
arch/x86/kvm/regs.c new file +873 -0
873 lines not on this page · raw message
arch/x86/kvm/regs.h +25 -0
@@ -397,6 +397,14 @@ static inline bool kvm_dr6_valid(u64 datreturn !(data >>32 ); } +static inline unsigned long kvm_get_effective_dr7 (struct kvm_vcpu *vcpu) +{ +if (vcpu->guest_debug &KVM_GUESTDBG_USE_HW_BP ) +return vcpu->arch.guest_debug_dr7; + +return vcpu->arch.dr7; +} +static inline void enter_guest_mode (struct kvm_vcpu *vcpu) { vcpu->arch.hflags |=HF_GUEST_MASK ;
@@ -425,4 +433,21 @@ static inline unsigned long kvm_get_segm return kvm_x86_call(get_segment_base)(vcpu, seg); } +void __kvm_set_rflags (struct kvm_vcpu *vcpu,unsigned long rflags); + +void kvm_vcpu_ioctl_x86_get_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2); +int kvm_vcpu_ioctl_x86_set_sregs2 (struct kvm_vcpu *vcpu, +struct kvm_sregs2 *sregs2); + +void kvm_run_sync_regs_to_user (struct kvm_vcpu *vcpu); +int kvm_run_sync_regs_from_user (struct kvm_vcpu *vcpu); + +void kvm_update_dr0123 (struct kvm_vcpu *vcpu); +int kvm_vcpu_ioctl_x86_get_debugregs (struct kvm_vcpu *vcpu, +struct kvm_debugregs *dbgregs); +int kvm_vcpu_ioctl_x86_set_debugregs (struct kvm_vcpu *vcpu, +struct kvm_debugregs *dbgregs); + +#endif
arch/x86/kvm/x86.c +2 -883
954 lines not on this page · raw message
arch/x86/kvm/x86.h +2 -0
@@ -403,6 +403,7 @@ int handle_ud(struct kvm_vcpu *vcpu);void kvm_deliver_exception_payload (struct kvm_vcpu *vcpu,struct kvm_queued_exception *ex); +void kvm_handle_exception_payload_quirk (struct kvm_vcpu *vcpu);int kvm_mtrr_set_msr (struct kvm_vcpu *vcpu,u32 msr,u64 data);int kvm_mtrr_get_msr (struct kvm_vcpu *vcpu,u32 msr,u64 *pdata);
@@ -597,6 +598,7 @@ static inline void kvm_machine_check(voiint kvm_spec_ctrl_test_value (u64 value);int kvm_handle_memory_failure (struct kvm_vcpu *vcpu,int r,struct x86_exception *e); +void kvm_invalidate_pcid (struct kvm_vcpu *vcpu,unsigned long pcid);int kvm_handle_invpcid (struct kvm_vcpu *vcpu,unsigned long type,gva_t gva);bool kvm_msr_allowed (struct kvm_vcpu *vcpu,u32 index,u32 type);
Greg Kroah-Hartman
maintainerPATCH 33/1815 KVM: x86: Check EFER validity on KVM_SET_SREGS*
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yosry Ahmed <[email protected]>
[ Upstream commit 184bd464bdb66daa9173670904f24c29c7b7f7d4 ]
When handling userspace SREGS writes, check the validity of EFER (i.e. allowed bits) before writing the new value of EFER through the per-vendor set_efer callbacks. This prevents userspace from writing bogus values (e.g. EFER.SVME=1 with nested=0).
Note: on KVM_SET_MSRS, KVM only checks EFER validity in terms of KVM caps, not guest caps, so it is possible to set EFER bits that are supported by KVM but not by the guest CPUID. Potentially allowing userspace to set msrs before CPUID.
However, for KVM_SET_SREGS*, check the validity of the set bits against both KVM and guest caps. This is consistent with other validity checks (e.g. for CR4) that check validity against guest caps, which already imposes the need to set CPUID before SREGS.
--- arch/x86/kvm/regs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/x86/kvm/regs.c +2 -1
@@ -563,7 +563,8 @@ static bool kvm_is_valid_sregs(struct kv }return kvm_is_valid_cr4 (vcpu, sregs->cr4) && -kvm_is_valid_cr0 (vcpu, sregs->cr0); +kvm_is_valid_cr0 (vcpu, sregs->cr0) && +kvm_valid_efer (vcpu, sregs->efer); } static int __set_sregs_common(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs,
Greg Kroah-Hartman
maintainerPATCH 34/1815 Smack: Fix error in capability bypass
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Casey Schaufler <[email protected]>
[ Upstream commit b2faddc13112489f8f11eb40b9456db8c1b58362 ]
A bug in smack_inode_xattr_skipcap() was introduced in the inode capability handling. The strncmp guard at the top of the function is coded backwards, resulting in consistently incorrect results. Correct the check, and the code functions as it should. The error manifests as requiring CAP_SYS_ADMIN as well as CAP_MAC_ADMIN to change an inode's MAC attributes.
--- security/smack/smack_lsm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
security/smack/smack_lsm.c +1 -1
@@ -1312,7 +1312,7 @@ static int smack_inode_getattr(const struct path *path)*/ static int smack_inode_xattr_skipcap (const char *name) { -if (strncmp (name,XATTR_SMACK_SUFFIX ,strlen (XATTR_SMACK_SUFFIX ))) +if (strncmp (name,XATTR_SMACK_SUFFIX ,strlen (XATTR_SMACK_SUFFIX )) ==0 )return 0 ; if (strcmp(name, XATTR_NAME_SMACK) == 0 ||
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 35/1815 drm: Remove unused header in drm_dumb_buffers.c
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yicong Hui <[email protected]>
[ Upstream commit 38b4ce17ef3421fb0e5e6dbdab1974282bde1165 ]
Remove the header #include "drm_internal.h" from drm_dumb_buffers.c, which is included but not used.
Header was introduced in commit 47f10854ca89 ("drm: Don't export the drm_gem_dumb_destroy() function") when moving functions, but was not removed in commit 96a7b60f6ddb ("drm: remove dumb_destroy callback") when the drm_gem_dumb_destroy function was removed.
Compiles successfully with DRM enabled, pass kunit tests and IGT-tests in a vng virtual machine.
--- drivers/gpu/drm/drm_dumb_buffers.c | 1 - 1 file changed, 1 deletion(-)
drivers/gpu/drm/drm_dumb_buffers.c +0 -1
@@ -32,7 +32,6 @@#include <drm/drm_print.h> #include "drm_crtc_internal.h" -#include "drm_internal.h" /** * DOC: overview
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 36/1815 drm/atomic: Drop drm_private_obj.state assignment from create_state
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maxime Ripard <[email protected]>
[ Upstream commit dcf0292f4828341474428d016661b6c292d7211c ]
The initial intent of the atomic_create_state hook was to simply allocate a proper drm_private_state and return it, without any side effect.
However, __drm_atomic_helper_private_obj_create_state(), which most atomic_create_state implementations call, introduces a side effect by setting drm_private_obj.state to the newly allocated state.
This assignment defeats the purpose, but is also redundant since drm_atomic_private_obj_init(), the only call site for the atomic_create_state hook, will also set this pointer to the newly allocated state.
Drop the assignment in __drm_atomic_helper_private_obj_create_state().
--- drivers/gpu/drm/drm_atomic_state_helper.c | 2 -- 1 file changed, 2 deletions(-)
drivers/gpu/drm/drm_atomic_state_helper.c +0 -2
@@ -731,8 +731,6 @@ void __drm_atomic_helper_private_obj_create_state(struct drm_private_obj *obj, {if (state) state->obj = obj; - - obj->state = state; }EXPORT_SYMBOL (__drm_atomic_helper_private_obj_create_state);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 37/1815 drm/tegra: dsi: Re-add clear enable register if DSI was powered by bootloader
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Svyatoslav Ryhel <[email protected]>
[ Upstream commit 27a58cc1a9c7bbe92a43fb5045bd17e148c8a022 ]
Original commit b22fd0b9639e ("drm/tegra: dsi: Clear enable register if powered by bootloader") was added to address the issue of DSI being in an unknown state after the bootloader, ensuring correct panel configuration. This worked fairly well under the assumption that the bootloader had set up DSI; however, in cases where it did not, the device would hang because a DSI read was called before the DSI hardware was ready.
Removing this workaround results in the issue described in the original
fix: the panel initialization sequence fails and the panel gets stuck in an undefined state. This is especially noticeable with command mode panels
In order to properly address this issue, the original workaround is restored and placed after the DSI hardware is prepared for R/W operations. This fixes behavior for both cases: where DSI is set by the bootloader and where DSI is untouched.
I have tested this change on Tegra20 (Motorola Atrix 4G), Tegra114 (NVIDIA Tegra Note 7 and ASUS Transformer Pad TF701T), and Tegra124 (Xiaomi Mi Pad) with U-Boot, using both bootloader-initialized DSI and untouched DSI.
--- drivers/gpu/drm/tegra/dsi.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/gpu/drm/tegra/dsi.c +9 -0
@@ -922,6 +922,15 @@ static void tegra_dsi_encoder_enable(struct drm_encoder *encoder)return ; } +/* If the bootloader enabled DSI it needs to be disabled +* in order for the panel initialization commands to be +* properly sent. +*/ + value =tegra_dsi_readl (dsi,DSI_POWER_CONTROL ); + +if (value &DSI_POWER_CONTROL_ENABLE ) +tegra_dsi_disable (dsi); + state =tegra_dsi_get_state (dsi);tegra_dsi_set_timeout (dsi, state->bclk, state->vrefresh);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 38/1815 drm: lcdif: Wait for vblank before disabling DMA
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Kocialkowski <[email protected]>
[ Upstream commit 351af554edd994898db12217c3be39979e168d35 ]
It is necessary to wait for the full frame to finish streaming through the DMA engine before we can safely disable it by removing the DISP_PARA_DISP_ON bit. Disabling it in-flight can leave the hardware confused and unable to resume streaming for the next frame.
This causes the FIFO underrun and empty status bits to be set and a single solid color to be shown on the display, coming from one of the pixels of the previous frame. The issue occurs sporadically when a new mode is set, which triggers the crtc disable and enable paths.
Setting the shadow load bit and waiting for it to be cleared by the DMA engine allows waiting for completion.
The NXP BSP driver addresses this issue with a hardcoded 25 ms sleep.
--- drivers/gpu/drm/mxsfb/lcdif_kms.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
drivers/gpu/drm/mxsfb/lcdif_kms.c +12 -3
@@ -374,14 +374,23 @@ static void lcdif_disable_controller(struct lcdif_drm_private *lcdif)int ret; reg =readl (lcdif->base +LCDC_V8_CTRLDESCL0_5 ); +/* Disable the layer for DMA. */ reg &= ~CTRLDESCL0_5_EN ; +/* +* It is necessary to wait for the full frame to finish streaming +* through the DMA engine before we can safely disable it by removing +* the DISP_PARA_DISP_ON bit. Disabling it in-flight can leave the +* hardware confused and unable to resume streaming for the next frame. +*/ + reg |=CTRLDESCL0_5_SHADOW_LOAD_EN ;writel (reg, lcdif->base +LCDC_V8_CTRLDESCL0_5 ); +/* Wait for the frame to finish or timeout after 50 ms. */ ret =readl_poll_timeout (lcdif->base +LCDC_V8_CTRLDESCL0_5 , - reg, !(reg &CTRLDESCL0_5_EN ), -0 ,36000 );/* Wait ~2 frame times max */ + reg, !(reg &CTRLDESCL0_5_SHADOW_LOAD_EN ), +200 ,50000 );if (ret) -drm_err (lcdif->drm,"Failed to disable controller!\n" ); +drm_err (lcdif->drm,"Timed out waiting for final vblank!\n" ); reg =readl (lcdif->base +LCDC_V8_DISP_PARA ); reg &= ~DISP_PARA_DISP_ON ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 39/1815 drm/bridge: synopsys: dw-dp: Support unregistering the AUX channel
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cristian Ciocaltea <[email protected]>
[ Upstream commit ed04e8e2307f35b3d8d49a554faf5e72d3d224e6 ]
The DisplayPort AUX channel gets initialized and registered during dw_dp_bind(), but it is never unregistered, which may lead to resource leaks and/or use-after-free.
Add the missing dw_dp_unbind() function to allow the users of the library to handle the required cleanup, i.e. unregister the AUX adapter.
--- drivers/gpu/drm/bridge/synopsys/dw-dp.c | 6 ++++++ include/drm/bridge/dw_dp.h | 1 + 2 files changed, 7 insertions(+)
drivers/gpu/drm/bridge/synopsys/dw-dp.c +6 -0
@@ -2093,6 +2093,12 @@ struct dw_dp *dw_dp_bind(struct device *dev, struct drm_encoder *encoder, }EXPORT_SYMBOL_GPL (dw_dp_bind); +void dw_dp_unbind (struct dw_dp *dp) +{ +drm_dp_aux_unregister (&dp->aux); +} +EXPORT_SYMBOL_GPL (dw_dp_unbind); +MODULE_AUTHOR ("Andy Yan <[email protected]>" );MODULE_DESCRIPTION ("DW DP Core Library" );MODULE_LICENSE ("GPL" );
include/drm/bridge/dw_dp.h +1 -0
@@ -24,4 +24,5 @@ struct dw_dp_plat_data {struct dw_dp *dw_dp_bind (struct device *dev,struct drm_encoder *encoder,const struct dw_dp_plat_data *plat_data); +void dw_dp_unbind (struct dw_dp *dp);#endif /* __DW_DP__ */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 40/1815 drm/rockchip: dw_dp: Add missing newline in dev_err_probe() message
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cristian Ciocaltea <[email protected]>
[ Upstream commit 0a01412178047bf3ff351c7e75d373e411072a87 ]
Add the missing trailing newline to dev_err_probe() call in dw_dp_rockchip_bind().
--- drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/rockchip/dw_dp-rockchip.c +1 -1
@@ -109,7 +109,7 @@ static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void * connector =drm_bridge_connector_init (drm_dev, encoder);if (IS_ERR (connector))return dev_err_probe (dev,PTR_ERR (connector), -"Failed to init bridge connector" ); +"Failed to init bridge connector\n" );return 0 ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 41/1815 drm/rockchip: dw_dp: Release core resources
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cristian Ciocaltea <[email protected]>
[ Upstream commit cc6d7aca2f37a1525a94ef97eb3ce361732c876c ]
Core resources such as the DisplayPort AUX channel get initialized and registered during dw_dp_bind(), but are never unregistered, which may lead to memory leaks and/or use-after-free:
[ 224.661371] BUG: KASAN: slab-use-after-free in device_is_dependent+0xe0/0x2b0 [ 224.662015] Read of size 8 at addr ffff00011aee8550 by task modprobe/658 [ 224.662612] [ 224.662752] CPU: 7 UID: 0 PID: 658 Comm: modprobe Not tainted 7.0.0-rc2-next-20260305 #14 PREEMPT [ 224.662759] Hardware name: Radxa ROCK 5B (DT) [ 224.662762] Call trace: [ 224.662764] show_stack+0x20/0x38 (C) [ 224.662772] dump_stack_lvl+0x6c/0x98 [ 224.662777] print_report+0x160/0x4b8 [ 224.662783] kasan_report+0xb4/0xe0 [ 224.662790] __asan_report_load8_noabort+0x20/0x30 [ 224.662796] device_is_dependent+0xe0/0x2b0 [ 224.662802] device_is_dependent+0x108/0x2b0 [ 224.662808] device_link_add+0x1f8/0x10b0 [ 224.662813] devm_of_phy_get_by_index+0x120/0x200 [ 224.662819] dw_dp_bind+0x34c/0xb10 [dw_dp] [ 224.662830] dw_dp_rockchip_bind+0x194/0x250 [rockchipdrm] [ 224.662864] component_bind_all+0x3a8/0x720 [ 224.662869] rockchip_drm_bind+0x120/0x390 [rockchipdrm] [ 224.662899] try_to_bring_up_aggregate_device+0x76c/0x838 [ 224.662904] component_master_add_with_match+0x1f4/0x230 [ 224.662909] rockchip_drm_platform_probe+0x420/0x538 [rockchipdrm] [ 224.662939] platform_probe+0xe8/0x168 [ 224.662945] really_probe+0x340/0x828 [ 224.662950] __driver_probe_device+0x2e0/0x350 [ 224.662954] driver_probe_device+0x80/0x140 [ 224.662959] __driver_attach+0x398/0x460 [ 224.662964] bus_for_each_dev+0xe0/0x198 [ 224.662968] driver_attach+0x50/0x68 [ 224.662972] bus_add_driver+0x2a0/0x4c0 [ 224.662977] driver_register+0x294/0x360 [ 224.662982] __platform_driver_register+0x7c/0x98 [ 224.662987] rockchip_drm_init+0xc4/0xff8 [rockchipdrm]
Since a previous commit exported dw_dp_unbind() function in DW DP core library to take care of the necessary cleanup, use this in the component's unbind() callback, as well as in its bind() error path.
--- drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
drivers/gpu/drm/rockchip/dw_dp-rockchip.c +12 -1
@@ -107,15 +107,26 @@ static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *return PTR_ERR (dp->base); connector =drm_bridge_connector_init (drm_dev, encoder); -if (IS_ERR (connector)) +if (IS_ERR (connector)) { +dw_dp_unbind (dp->base);return dev_err_probe (dev,PTR_ERR (connector),"Failed to init bridge connector\n" ); + }return 0 ; } +static void dw_dp_rockchip_unbind (struct device *dev,struct device *master, +void *data) +{ +struct rockchip_dw_dp *dp =dev_get_drvdata (dev); + +dw_dp_unbind (dp->base); +} +static const struct component_ops dw_dp_rockchip_component_ops = { .bind = dw_dp_rockchip_bind, + .unbind = dw_dp_rockchip_unbind, };static int dw_dp_probe (struct platform_device *pdev)
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 42/1815 drm/rockchip: vop2: Fix wrong wait target in layer cfg done check
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cristian Ciocaltea <[email protected]>
[ Upstream commit 9f5670802df085ad343146561e69bac43e9905d2 ]
rk3568_vop2_setup_layer_mixer() waits for the previous Video Port (VP) layer configuration to take effect before writing a new one to the shared RK3568_OVL_LAYER_SEL shadow register. However, it passes vop2->old_layer_sel to rk3568_vop2_wait_for_layer_cfg_done() as the expected value, which at that point already contains the new VP layer.
This causes the wait to poll for a value that has not been written to the shadow register yet, resulting in spurious timeouts when two non-blocking atomic commits race:
rockchip-drm display-subsystem: [drm] *ERROR* wait layer cfg done timeout [...]
Pass the local old_layer_sel instead, which still holds the value captured from vop2->old_layer_sel before it was overwritten, i.e. the previous VP target that the hardware is expected to latch.
--- drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +1 -1
@@ -2306,7 +2306,7 @@ static void rk3568_vop2_setup_layer_mixer(struct vop2_video_port *vp)* Changes of other VPs' overlays have not taken effect */ if (cfg_done) -rk3568_vop2_wait_for_layer_cfg_done (vop2, vop2->old_layer_sel); +rk3568_vop2_wait_for_layer_cfg_done (vop2, old_layer_sel); }vop2_writel (vop2,RK3568_OVL_LAYER_SEL , layer_sel);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 43/1815 drm/rockchip: vop2: Wait for layer cfg done before switching LAYERSEL_REGDONE_SEL
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cristian Ciocaltea <[email protected]>
[ Upstream commit d1ad644e572c0647ad8428439eafea0aacfccf9e ]
LAYERSEL_REGDONE_SEL mask of RK3568_OVL_CTRL register controls which Video Port (VP) vsync latches the shared RK3568_OVL_{LAYER|PORT}_SEL shadow registers into the active configuration.
rk3568_vop2_setup_layer_mixer() overwrites LAYERSEL_REGDONE_SEL to the current VP ID before waiting for the previous VP layer configuration to take effect. As a consequence, the previous VP vsync can no longer trigger the latch, so the wait polls a value that might never appear.
Move the layer cfg done wait before the RK3568_OVL_CTRL write so the previous VP vsync can still commit the pending configuration.
--- drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +10 -9
@@ -2288,15 +2288,6 @@ static void rk3568_vop2_setup_layer_mixer(struct vop2_video_port *vp)* lead to the configuration of the previous VP being take effect along with the VSYNC * of the new VP. */ -if (layer_sel != old_layer_sel || port_sel != old_port_sel) - ovl_ctrl |=FIELD_PREP (RK3568_OVL_CTRL__LAYERSEL_REGDONE_SEL , vp->id); -vop2_writel (vop2,RK3568_OVL_CTRL , ovl_ctrl); - -if (port_sel != old_port_sel) { -vop2_writel (vop2,RK3568_OVL_PORT_SEL , port_sel); -vop2_cfg_done (vp); -rk3568_vop2_wait_for_port_mux_done (vop2); - }if (layer_sel != old_layer_sel && atv_layer_sel != old_layer_sel) { cfg_done =vop2_readl (vop2,RK3568_REG_CFG_DONE );
@@ -2309,6 +2300,16 @@ static void rk3568_vop2_setup_layer_mixer(struct vop2_video_port *vp)rk3568_vop2_wait_for_layer_cfg_done (vop2, old_layer_sel); } +if (layer_sel != old_layer_sel || port_sel != old_port_sel) + ovl_ctrl |=FIELD_PREP (RK3568_OVL_CTRL__LAYERSEL_REGDONE_SEL , vp->id); +vop2_writel (vop2,RK3568_OVL_CTRL , ovl_ctrl); + +if (port_sel != old_port_sel) { +vop2_writel (vop2,RK3568_OVL_PORT_SEL , port_sel); +vop2_cfg_done (vp); +rk3568_vop2_wait_for_port_mux_done (vop2); + } +vop2_writel (vop2,RK3568_OVL_LAYER_SEL , layer_sel);mutex_unlock (&vop2->ovl_lock); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 44/1815 drm/rockchip: analogix_dp: Enable hclk for RK3588
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Damon Ding <[email protected]>
[ Upstream commit 104f20616d72825fdcf56cfdc5f89f4e96fd8dbe ]
Acquire and enable the HCLK_VO1 bus clock explicitly for RK3588 eDP controller to guarantee register and datapath access.
The clock was previously enabled implicitly via rockchip,vo-grf phandle reference, which relies on side effect and is fragile.
Fetch optional "hclk" clock in driver to align with updated device tree binding and keep consistent with hardware clock dependency.
--- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +6 -0
@@ -311,6 +311,7 @@ static int rockchip_dp_of_probe(struct rockchip_dp_device *dp) {struct device *dev = dp->dev;struct device_node *np = dev->of_node; +struct clk *clk; dp->grf =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (dp->grf))
@@ -327,6 +328,11 @@ static int rockchip_dp_of_probe(struct rockchip_dp_device *dp)return dev_err_probe (dev,PTR_ERR (dp->pclk),"failed to get pclk property\n" ); + clk =devm_clk_get_optional_enabled (dev,"hclk" ); +if (IS_ERR (clk)) +return dev_err_probe (dev,PTR_ERR (clk), +"failed to get hclk property\n" ); + dp->rst =devm_reset_control_get (dev,"dp" );if (IS_ERR (dp->rst)) return dev_err_probe(dev, PTR_ERR(dp->rst),
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 45/1815 drm/rockchip: analogix_dp: Fix OF node reference leak via auto cleanup
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Damon Ding <[email protected]>
[ Upstream commit 87e060521371257ddbb77964b66e60d80afcc7b2 ]
Sashiko reported a reference leak in rockchip_dp_drm_encoder_enable(), the of_get_child_by_name() function does not call of_node_put() in a symmetrical way [1].
Fix the device node reference leak by using __free(device_node) to automatically manage of_node_put() for all device nodes.
--- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +10 -6
@@ -8,6 +8,7 @@* Jeff Chen <[email protected]> */ +#include <linux/cleanup.h> #include <linux/component.h> #include <linux/mfd/syscon.h> #include <linux/of.h>
@@ -206,7 +207,6 @@ static void rockchip_dp_drm_encoder_enable(struct drm_encoder *encoder,struct drm_crtc *crtc;struct drm_crtc_state *old_crtc_state;struct of_endpoint endpoint; -struct device_node *remote_port, *remote_port_parent;char name[32 ];u32 port_id;int ret;
@@ -230,18 +230,22 @@ static void rockchip_dp_drm_encoder_enable(struct drm_encoder *encoder,if (ret <0 )return ; - remote_port_parent =of_graph_get_remote_port_parent (endpoint.local_node); + struct device_node *remote_port_parent __free(device_node) = +of_graph_get_remote_port_parent (endpoint.local_node);if (remote_port_parent) { -if (of_get_child_by_name (remote_port_parent,"ports" )) { - remote_port =of_graph_get_remote_port (endpoint.local_node); + struct device_node *ports __free(device_node) = +of_get_child_by_name (remote_port_parent,"ports" ); + +if (ports) { + struct device_node *remote_port __free(device_node) = +of_graph_get_remote_port (endpoint.local_node); +of_property_read_u32 (remote_port,"reg" , &port_id); -of_node_put (remote_port);sprintf (name,"%s vp%d" , remote_port_parent->full_name, port_id); }else {sprintf (name,"%s %s" , remote_port_parent->full_name, endpoint.id ?"vopl" :"vopb" ); } -of_node_put (remote_port_parent);DRM_DEV_DEBUG (dp->dev,"vop %s output to dp\n" , (ret) ?"LIT" :"BIG" ); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 46/1815 drm/bridge: display-connector: dont autoenable HPD IRQ
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <[email protected]>
[ Upstream commit 8e9c475060bff87077cfa3bd42011edcb7fb3b0d ]
If HPD IRQ is enabled in the display_connector's probe, it can be triggered too early, before the DRM connector is completely setup. Use the enable_hpd / disable_hpd callbacks to control enablement of the HPD IRQ.
--- drivers/gpu/drm/bridge/display-connector.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
drivers/gpu/drm/bridge/display-connector.c +17 -0
@@ -94,6 +94,20 @@ display_connector_bridge_detect(struct drm_bridge *bridge, struct drm_connectorreturn display_connector_detect (bridge); } +static void display_connector_hpd_enable (struct drm_bridge *bridge) +{ +struct display_connector *conn =to_display_connector (bridge); + +enable_irq (conn->hpd_irq); +} + +static void display_connector_hpd_disable (struct drm_bridge *bridge) +{ +struct display_connector *conn =to_display_connector (bridge); + +disable_irq (conn->hpd_irq); +} +static const struct drm_edid *display_connector_edid_read (struct drm_bridge *bridge,struct drm_connector *connector) {
@@ -186,6 +200,8 @@ static const struct drm_bridge_funcs display_connector_bridge_funcs = { .attach = display_connector_attach, .destroy = display_connector_destroy, .detect = display_connector_bridge_detect, + .hpd_enable = display_connector_hpd_enable, + .hpd_disable = display_connector_hpd_disable, .edid_read = display_connector_edid_read, .atomic_get_output_bus_fmts = display_connector_get_output_bus_fmts, .atomic_get_input_bus_fmts = display_connector_get_input_bus_fmts,
@@ -315,6 +331,7 @@ static int display_connector_probe(struct platform_device *pdev)NULL , display_connector_hpd_irq,IRQF_TRIGGER_RISING |IRQF_TRIGGER_FALLING | +IRQF_NO_AUTOEN |IRQF_ONESHOT , "HPD", conn);if (ret) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 47/1815 drm/bridge: display-connector: trigger initial HPD event for DP
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <[email protected]>
[ Upstream commit 60dc0946bbad3eef8bc66a5a8b09b98dbc6e09c0 ]
If the DisplayPort drivers use display-connector for the HPD detection, the internal HPD state machine might be not active and thus the hardware might be not able to handle cable detection correctly. Instead it will depend on the external HPD notifications to set the cable state, bypassing the internal HPD state machine (for example this is the case for the msm DP driver).
However if the cable has been plugged before the HPD IRQ has been enabled, there will be no HPD event coming. The drivers might fail detection in such a case. Trigger the HPD notification after enabling the HPD IRQ, propagating the cable insertion state.
Note, this issue only affects drivers which set OP_HPD but not OP_DETECT (like dp-connector). Here DP differs from HDMI. For HDMI there is no additional state or extra "bridge with no sinks plugged" cases. The HPD pin state is equal to the display plugged state. Nor do we have an AUX bus with timeouts, etc.
--- drivers/gpu/drm/bridge/display-connector.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
drivers/gpu/drm/bridge/display-connector.c +19 -0
@@ -12,6 +12,7 @@#include <linux/of.h> #include <linux/platform_device.h> #include <linux/regulator/consumer.h> +#include <linux/workqueue.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_bridge.h>
@@ -25,6 +26,8 @@ struct display_connector {struct regulator *supply;struct gpio_desc *ddc_en; + +struct work_struct hpd_work; }; static inline struct display_connector *
@@ -99,15 +102,29 @@ static void display_connector_hpd_enable(struct drm_bridge *bridge)struct display_connector *conn =to_display_connector (bridge);enable_irq (conn->hpd_irq); + +if (conn->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) +schedule_work (&conn->hpd_work); }static void display_connector_hpd_disable (struct drm_bridge *bridge) {struct display_connector *conn =to_display_connector (bridge); +if (conn->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) +cancel_work_sync (&conn->hpd_work); +disable_irq (conn->hpd_irq); } +static void display_connector_hpd_work (struct work_struct *work) +{ + struct display_connector *conn = container_of(work, struct display_connector, hpd_work); +struct drm_bridge *bridge = &conn->bridge; + +drm_bridge_hpd_notify (bridge,display_connector_detect (bridge)); +} +static const struct drm_edid *display_connector_edid_read (struct drm_bridge *bridge,struct drm_connector *connector) {
@@ -403,6 +420,8 @@ static int display_connector_probe(struct platform_device *pdev) conn->bridge.ops |=DRM_BRIDGE_OP_DETECT ;if (conn->hpd_irq >=0 ) conn->bridge.ops |=DRM_BRIDGE_OP_HPD ; +if (conn->hpd_irq >=0 && type == DRM_MODE_CONNECTOR_DisplayPort) +INIT_WORK (&conn->hpd_work, display_connector_hpd_work); dev_dbg(&pdev->dev, "Found %s display connector '%s' %s DDC bus and %s HPD GPIO (ops 0x%x)\n",
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 48/1815 gpu: nova-core: gsp: tu102: keep unloading if FWSEC-SB fails
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexandre Courbot <[email protected]>
[ Upstream commit 9eaff547805f8556992a9474465001c3e128b7bd ]
On Turing and Ampere, resetting the GSP involves running two firmware
images: FWSEC-SB and Booter Unloader. They are independent from one another, and we should do whatever is possible to restore the GSP's unloaded state even if a failure occurs along the way.
Thus, keep going and run Booter Unloader even if the execution of FWSEC-SB failed.
--- drivers/gpu/nova-core/gsp/hal/tu102.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
drivers/gpu/nova-core/gsp/hal/tu102.rs +15 -4
@@ -134,11 +134,19 @@ impl UnloadBundle for Sec2UnloadBundle { sec2_falcon: &Falcon<Sec2>, ) -> Result { // Run FWSEC-SB to reset the GSP falcon to its pre-libos state. - self.fwsec_sb.run(dev, bar, gsp_falcon)?; + // Log errors but keep going if it fails. + let fwsec_sb_res = self + .fwsec_sb + .run (dev, bar, gsp_falcon) + .inspect_err (|e|dev_err! (dev,"FWSEC-SB failed to run: {:?}\n" , e));// Remove WPR2 region if set. let wpr2_hi = bar.read (regs::NV_PFB_PRI_MMU_WPR2_ADDR_HI ); -if wpr2_hi.is_wpr2_set () { + let booter_unloader_res = (|| { + if !wpr2_hi.is_wpr2_set() { + return Ok(()); + } + sec2_falcon.reset(bar)?; sec2_falcon.load(dev, bar, &self.booter_unloader)?;
@@ -160,9 +168,12 @@ impl UnloadBundle for Sec2UnloadBundle { );return Err (EBUSY ); } - } -Ok (()) +Ok (()) + })() + .inspect_err (|e|dev_err! (dev,"Booter Unloader failed to run: {:?}\n" , e)); + + fwsec_sb_res.and (booter_unloader_res) } }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 49/1815 drm/v3d: Clear queue->active_job when v3d_fence_create() fails
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maíra Canal <[email protected]>
[ Upstream commit 25a1669907512e927fab9ad4d4fb74ff57f63cd9 ]
The run_job() callbacks for BIN, RENDER, TFU and CSD assign the incoming job to queue->active_job before calling v3d_fence_create(). If v3d_fence_create() fails, the callback returns NULL without clearing active_job, leaving a dangling pointer.
Create a failure path in all run_job() callbacks that clears the active job before returning NULL. The BIN path takes queue->queue_lock around the clear as it races against v3d_overflow_mem_work(); RENDER, TFU and CSD paths have no concurrent reader, so the clear is lock-free.
--- drivers/gpu/drm/v3d/v3d_sched.c | 60 +++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 26 deletions(-)
drivers/gpu/drm/v3d/v3d_sched.c +34 -26
@@ -189,15 +189,11 @@ static struct dma_fence *v3d_bin_job_run(struct drm_sched_job *sched_job)struct v3d_dev *v3d = job->base.v3d;struct v3d_queue_state *queue = &v3d->queue[V3D_BIN ];struct drm_device *dev = &v3d->drm; -struct dma_fence *fence; +struct dma_fence *fence =NULL ;unsigned long irqflags; -if (unlikely (job->base.base.s_fence->finished.error)) { -spin_lock_irqsave (&queue->queue_lock, irqflags); - queue->active_job =NULL ; -spin_unlock_irqrestore (&queue->queue_lock, irqflags); -return NULL ; - } +if (unlikely (job->base.base.s_fence->finished.error)) + goto out_clean_job;/* Lock required around bin_job update vs * v3d_overflow_mem_work().
@@ -214,7 +210,7 @@ static struct dma_fence *v3d_bin_job_run(struct drm_sched_job *sched_job) fence =v3d_fence_create (v3d,V3D_BIN );if (IS_ERR (fence)) -return NULL ; + goto out_clean_job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence);
@@ -242,6 +238,12 @@ static struct dma_fence *v3d_bin_job_run(struct drm_sched_job *sched_job)V3D_CORE_WRITE (0 ,V3D_CLE_CT0QEA , job->end);return fence; + +out_clean_job: +spin_lock_irqsave (&queue->queue_lock, irqflags); + queue->active_job =NULL ; +spin_unlock_irqrestore (&queue->queue_lock, irqflags); +return fence; }static struct dma_fence *v3d_render_job_run (struct drm_sched_job *sched_job)
@@ -249,12 +251,10 @@ static struct dma_fence *v3d_render_job_run(struct drm_sched_job *sched_job)struct v3d_render_job *job =to_render_job (sched_job);struct v3d_dev *v3d = job->base.v3d;struct drm_device *dev = &v3d->drm; -struct dma_fence *fence; +struct dma_fence *fence =NULL ; -if (unlikely (job->base.base.s_fence->finished.error)) { - v3d->queue[V3D_RENDER ].active_job =NULL ; -return NULL ; - } +if (unlikely (job->base.base.s_fence->finished.error)) + goto out_clean_job; v3d->queue[V3D_RENDER ].active_job = &job->base;
@@ -268,7 +268,7 @@ static struct dma_fence *v3d_render_job_run(struct drm_sched_job *sched_job) fence =v3d_fence_create (v3d,V3D_RENDER );if (IS_ERR (fence)) -return NULL ; + goto out_clean_job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence);
@@ -289,6 +289,10 @@ static struct dma_fence *v3d_render_job_run(struct drm_sched_job *sched_job)V3D_CORE_WRITE (0 ,V3D_CLE_CT1QEA , job->end);return fence; + +out_clean_job: + v3d->queue[V3D_RENDER ].active_job =NULL ; +return fence; } static struct dma_fence *
@@ -297,18 +301,16 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job)struct v3d_tfu_job *job =to_tfu_job (sched_job);struct v3d_dev *v3d = job->base.v3d;struct drm_device *dev = &v3d->drm; -struct dma_fence *fence; +struct dma_fence *fence =NULL ; -if (unlikely (job->base.base.s_fence->finished.error)) { - v3d->queue[V3D_TFU ].active_job =NULL ; -return NULL ; - } +if (unlikely (job->base.base.s_fence->finished.error)) + goto out_clean_job; v3d->queue[V3D_TFU ].active_job = &job->base; fence =v3d_fence_create (v3d,V3D_TFU );if (IS_ERR (fence)) -return NULL ; + goto out_clean_job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence);
@@ -336,6 +338,10 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job)V3D_WRITE (V3D_TFU_ICFG (v3d->ver), job->args.icfg |V3D_TFU_ICFG_IOC );return fence; + +out_clean_job: + v3d->queue[V3D_TFU ].active_job =NULL ; +return fence; } static struct dma_fence *
@@ -344,13 +350,11 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)struct v3d_csd_job *job =to_csd_job (sched_job);struct v3d_dev *v3d = job->base.v3d;struct drm_device *dev = &v3d->drm; -struct dma_fence *fence; +struct dma_fence *fence =NULL ;int i, csd_cfg0_reg; -if (unlikely (job->base.base.s_fence->finished.error)) { - v3d->queue[V3D_CSD ].active_job =NULL ; -return NULL ; - } +if (unlikely (job->base.base.s_fence->finished.error)) + goto out_clean_job;/* The HW interprets a workgroup size of 0 as 65536; however, the * user-space driver exposes a maximum of 65535. Therefore, a 0 in
@@ -368,7 +372,7 @@ v3d_csd_job_run(struct drm_sched_job *sched_job) fence =v3d_fence_create (v3d,V3D_CSD );if (IS_ERR (fence)) -return NULL ; + goto out_clean_job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence);
@@ -395,6 +399,10 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)V3D_CORE_WRITE (0 , csd_cfg0_reg, job->args.cfg[0 ]);return fence; + +out_clean_job: + v3d->queue[V3D_CSD ].active_job =NULL ; +return fence; } static void
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 50/1815 drm/display: hdmi-state-helper: Try subsampling in mode_valid
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicolas Frattaroli <[email protected]>
[ Upstream commit f532dc0ea55a25dd24a79442fd0348da09b04b72 ]
drm_hdmi_connector_mode_valid assumes modes are only valid if they work with RGB. The reality is more complex however: YCbCr 4:2:0 chroma-subsampled modes only require half the pixel clock that the same mode would require in RGB.
This leads to drm_hdmi_connector_mode_valid rejecting perfectly valid 420-only or 420-also modes.
Fix this by checking whether the mode is 420-capable first. If so, then proceed by checking it with DRM_OUTPUT_COLOR_FORMAT_YCBCR420 so long as the connector has legalized 420, otherwise error out. If the mode is not 420-capable, check with RGB as was previously always the case.
--- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
drivers/gpu/drm/display/drm_hdmi_state_helper.c +14 -1
@@ -910,8 +910,21 @@ drm_hdmi_connector_mode_valid(struct drm_connector *connector, const struct drm_display_mode *mode) {unsigned long long clock; +enum drm_output_color_format fmt; + +if (drm_mode_is_420_only (&connector->display_info, mode)) { +if (connector->ycbcr_420_allowed) + fmt =DRM_OUTPUT_COLOR_FORMAT_YCBCR420 ; +else +return MODE_NO_420 ; + }else if (drm_mode_is_420_also (&connector->display_info, mode) && + connector->ycbcr_420_allowed) { + fmt =DRM_OUTPUT_COLOR_FORMAT_YCBCR420 ; + }else { + fmt =DRM_OUTPUT_COLOR_FORMAT_RGB444 ; + } - clock =drm_hdmi_compute_mode_clock (mode,8 ,DRM_OUTPUT_COLOR_FORMAT_RGB444 ); + clock =drm_hdmi_compute_mode_clock (mode,8 , fmt);if (!clock)return MODE_ERROR ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 51/1815 drm/rockchip: vop2: Add RK3576 to the RG swap special case
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicolas Frattaroli <[email protected]>
[ Upstream commit ae4a4e69389d576941522c3c2e01a2254fd00d10 ]
Much like RK3588, RK3576 requires an RG swap to be performed for YUV444 8-bit and YUV444 10-bit bus formats.
Add its version to the already existing check for RK3588, so that YUV444 output is correct on this platform.
--- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +2 -1
@@ -337,7 +337,8 @@ static bool vop2_output_uv_swap(u32 bus_format, u32 output_mode)static bool vop2_output_rg_swap (struct vop2 *vop2,u32 bus_format) { -if (vop2->version ==VOP_VERSION_RK3588 ) { +if (vop2->version ==VOP_VERSION_RK3588 || + vop2->version ==VOP_VERSION_RK3576 ) {if (bus_format ==MEDIA_BUS_FMT_YUV8_1X24 || bus_format ==MEDIA_BUS_FMT_YUV10_1X30 )return true;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 52/1815 drm/rockchip: vop2: Recognise 10-bit YUV422 as YUV format
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicolas Frattaroli <[email protected]>
[ Upstream commit c1bfe8dac0a79d47eed313b9bcaa2658898684ec ]
The Rockchip VOP2 video output driver has a "is_yuv_output" function, which returns true when a given bus format is a YUV format, and false otherwise.
This switch statement is lacking the bus format used for YUV422 10-bit.
Add the two component orderings of the YUV422 10-bit bus formats to the switch statement.
--- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +2 -0
@@ -352,6 +352,8 @@ static bool is_yuv_output(u32 bus_format)switch (bus_format) {case MEDIA_BUS_FMT_YUV8_1X24 :case MEDIA_BUS_FMT_YUV10_1X30 : +case MEDIA_BUS_FMT_YUYV10_1X20 : +case MEDIA_BUS_FMT_UYVY10_1X20 :case MEDIA_BUS_FMT_UYYVYY8_0_5X24 :case MEDIA_BUS_FMT_UYYVYY10_0_5X30 :case MEDIA_BUS_FMT_YUYV8_2X8 :
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 53/1815 rust: drm: gpuvm: update DriverGpuVm for DeviceContext
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Deborah Brouwer <[email protected]>
[ Upstream commit 20003c1a1fd80ae1b1742ff54297b67f7f21b77f ]
Since the introduction of DeviceContext, there is no longer a single driver object type to equate with the GPUVM object type.
Instead of threading DeviceContext through GPUVM, remove the strict identity between DriverGpuVm::Object and drm::Driver::Object and instead tighten the requirement that the DriverGpuVm::Object be an allocatable GEM object associated with the same DRM driver.
Also, make GpuVm::new() generic over DeviceContext so it can accept a drm::Device<T::Driver, Ctx>.
--- rust/kernel/drm/gpuvm/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
rust/kernel/drm/gpuvm/mod.rs +4 -4
@@ -116,9 +116,9 @@ impl<T: DriverGpuVm> GpuVm<T> {/// Creates a GPUVM instance. #[expect(clippy::new_ret_no_self)] -pub fn new <E >( +pub fn new <E ,Ctx : drm::DeviceContext >( name: &'staticCStr , - dev: &drm::Device <T ::Driver >, + dev: &drm::Device <T ::Driver ,Ctx >, r_obj: &T ::Object , range:Range <u64 >, reserve_range: Range<u64>,
@@ -252,10 +252,10 @@ impl<T: DriverGpuVm> GpuVm<T> {/// The manager for a GPUVM. pub trait DriverGpuVm :Sized +Send {/// Parent `Driver` for this object. -type Driver : drm::Driver <Object =Self ::Object >; +type Driver : drm::Driver ;/// The kind of GEM object stored in this GPUVM. -type Object :IntoGEMObject ; +type Object : drm::driver::AllocImpl <Driver =Self ::Driver >;/// Data stored with each [`struct drm_gpuva`](struct@GpuVa). type VaData ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 54/1815 drm/bridge: cdns-dsi: Return an error pointer on allocation failure
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maxime Ripard <[email protected]>
[ Upstream commit 79ac5c68f1a49a9fdec596ee47577d5a1d52738f ]
The drm_bridge_funcs.atomic_reset documentation states that the hook must return either a valid drm_bridge_state object or an ERR_PTR().
The cdns_dsi_bridge_atomic_reset() callback returns NULL when the allocation of its state fails, violating this contract.
Return ERR_PTR(-ENOMEM) instead.
--- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +1 -1
@@ -1015,7 +1015,7 @@ cdns_dsi_bridge_atomic_reset(struct drm_bridge *bridge) dsi_state =kzalloc_obj (*dsi_state);if (!dsi_state) -return NULL ; +return ERR_PTR (-ENOMEM );memset (dsi_state,0 ,sizeof (*dsi_state)); dsi_state->base.bridge = bridge;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 55/1815 drm/bridge: cdns-mhdp8546: Return an error pointer on allocation failure
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maxime Ripard <[email protected]>
[ Upstream commit 30ac1d403438a6c6039f0af5bb2df3d021f96036 ]
The drm_bridge_funcs.atomic_reset documentation states that the hook must return either a valid drm_bridge_state object or an ERR_PTR().
The cdns_mhdp_bridge_atomic_reset() callback returns NULL when the allocation of its state fails, violating this contract.
Return ERR_PTR(-ENOMEM) instead.
--- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +1 -1
@@ -1927,7 +1927,7 @@ cdns_mhdp_bridge_atomic_reset(struct drm_bridge *bridge) cdns_mhdp_state =kzalloc_obj (*cdns_mhdp_state);if (!cdns_mhdp_state) -return NULL ; +return ERR_PTR (-ENOMEM );__drm_atomic_helper_bridge_reset (bridge, &cdns_mhdp_state->base);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 56/1815 smack: fix incorrect task context in smack_msg_queue_msgrcv
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Andreev <[email protected]>
[ Upstream commit fba3d32825f4bbc8e20f0cdc3b14df57965b8fe5 ]
The smack_msg_queue_msgrcv() function incorrectly checks the permissions of the 'current' task instead of the 'target' task.
In the msgsnd() syscall path, if a receiver is already waiting, the pipelined_send() optimization is used to push the message directly to the receiver task:
ipc/msg.c`pipelined_send():
` smp_store_release(&msr->r_msg, msg)In this case, the 'sender' (current) task performs the check on behalf of the 'receiver' task (msr->r_tsk, passed as the 'target' parameter):
ipc/msg.c`pipelined_send():
` security_msg_queue_msgrcv(,, target := msr->r_tsk,,)
However, smack_msg_queue_msgrcv() ignores the 'target' and checks 'current':
smack_msg_queue_msgrcv(…)
` smk_curacc_msq(isp, MAY_READWRITE); // current task
'current' MAY satisfy smack_msg_queue_msgrcv r/w requirement, but 'target' (the receiver task) might NOT;
as a result, an unauthorized receiver gets the message, violating MAC policy.
Test:
1) create a sysv message queue with label “foo”
2) echo "bar foo r" >/smack/load2
3) msgrcv(,,,0,MSG_NOERROR) in "bar"-labeled task. The task is waiting for the messages ...
4) msgsnd() from a "foo"-labeled task:
"bar"-labeled task gets the message.
This patch fixes the issue by checking permission on the 'target' task instead of 'current'.
(2008-02-04, Casey Schaufler)
--- security/smack/smack_lsm.c | 65 +++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 18 deletions(-)
security/smack/smack_lsm.c +47 -18
@@ -130,12 +130,13 @@ static int smk_bu_note(char *note, struct smack_known *sskp,#define smk_bu_note (note, sskp, oskp, mode,RC ) (RC)#endif -#ifdef CONFIG_SECURITY_SMACK_BRINGUP -static int smk_bu_current (char *note,struct smack_known *oskp, -int mode,int rc) +static int +smk_bu_tsk_to_obj (struct task_struct *tsk,const struct task_smack *tsp, +char *note,struct smack_known *oskp,int mode,int rc) { -struct task_smack *tsp =smack_cred (current_cred ()); +#ifdef CONFIG_SECURITY_SMACK_BRINGUP char acc[SMK_NUM_ACCESS_TYPE +1 ]; +char comm[TASK_COMM_LEN ];if (rc <=0 )return rc;
@@ -143,14 +144,22 @@ static int smk_bu_current(char *note, struct smack_known *oskp, rc =0 ;smk_bu_mode (mode, acc); +pr_info ("Smack %s: (%s %s %s) %s %s\n" , smk_bu_mess[rc], - tsp->smk_task->smk_known, oskp->smk_known, - acc, current->comm, note); +smk_of_task (tsp)->smk_known, oskp->smk_known, + acc,get_task_comm (comm, tsk), note);return 0 ; -}#else -#define smk_bu_current (note, oskp, mode,RC ) (RC) +return rc;#endif +} + +static int smk_bu_current (char *note,struct smack_known *oskp, +int mode,int rc) +{ +return smk_bu_tsk_to_obj (current,smack_cred (current_cred ()), + note, oskp, mode, rc); +}#ifdef CONFIG_SECURITY_SMACK_BRINGUP static int smk_bu_task (struct task_struct *otp,int mode,int rc)
@@ -3348,14 +3357,20 @@ static int smack_sem_semop(struct kern_ipc_perm *isp, struct sembuf *sops, }/** -* smk_curacc_msq : helper to check if current has access on msq -* @isp : the msq +* smk_tskacc_msq : helper to check if tsk has access on msq +* @tsk: the task that requests access +* @isp : the sysv msg queue permissions * @access : access requested * -* return 0 if current has access, error otherwise +* return 0 if tsk has access, error otherwise */ -static int smk_curacc_msq (struct kern_ipc_perm *isp,int access) +static int +smk_tskacc_msq (struct task_struct *tsk,struct kern_ipc_perm *isp,int access) { +const bool tsk_is_current = (tsk == current); +const struct cred *const tsk_cred = + (tsk_is_current ?current_cred () :get_task_cred (tsk)); +struct task_smack *const tsp =smack_cred (tsk_cred);struct smack_known *msp =smack_of_ipc (isp);struct smk_audit_info ad;int rc;
@@ -3364,11 +3379,25 @@ static int smk_curacc_msq(struct kern_ipc_perm *isp, int access)smk_ad_init (&ad, __func__,LSM_AUDIT_DATA_IPC ); ad.a.u.ipc_id = isp->id;#endif - rc =smk_curacc (msp, access, &ad); - rc =smk_bu_current ("msq" , msp, access, rc); + rc =smk_tskacc (tsp, msp, access, &ad); + rc =smk_bu_tsk_to_obj (tsk, tsp,"msq" , msp, access, rc); +if (!tsk_is_current) +put_cred (tsk_cred);return rc; } +/** +* smk_curacc_msq : helper to check if current has access on msq +* @isp : the sysv msg queue permissions +* @access : access requested +* +* return 0 if current has access, error otherwise +*/ +static int smk_curacc_msq (struct kern_ipc_perm *isp,int access) +{ +return smk_tskacc_msq (current, isp, access); +} +/** * smack_msg_queue_associate - Smack access check for msg_queue * @isp: the object
@@ -3436,21 +3465,21 @@ static int smack_msg_queue_msgsnd(struct kern_ipc_perm *isp, struct msg_msg *msg }/** -* smack_msg_queue_msgrcv - Smack access check for msg_queue +* smack_msg_queue_msgrcv - check it target has r/w access to msg_queue * @isp: the object * @msg: unused -* @target: unused +* @target: the task that msgrcv() from the queue * @type: unused * @mode: unused * -* Returns 0 if current has read and write access, error code otherwise +* Returns 0 if target has read and write access, error code otherwise */ static int smack_msg_queue_msgrcv (struct kern_ipc_perm *isp,struct msg_msg *msg,struct task_struct *target,long type,int mode) { -return smk_curacc_msq (isp,MAY_READWRITE ); +return smk_tskacc_msq (target, isp,MAY_READWRITE ); }/**
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 57/1815 smack: simplify write handlers of sysfs entries
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Antipov <[email protected]>
[ Upstream commit b78fede1c69a090d377bf80417ce1f7f7f314534 ]
Use the convenient 'kstrto{u,s}32_from_user()' to simplify write handlers of /smack/{doi,direct,mapped,logging,ptrace} sysfs entries.
Stable-dep-of: 577dc3b6a8cf ("smack: deduplicate smackfs/{direct,mapped} file_operations")
--- security/smack/smackfs.c | 81 +++++++++++----------------------------- 1 file changed, 22 insertions(+), 59 deletions(-)
security/smack/smackfs.c +22 -59
@@ -1598,24 +1598,17 @@ static ssize_t smk_read_doi(struct file *filp, char __user *buf,static ssize_t smk_write_doi (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -char temp[80 ]; -unsigned long u; +int ret; +u32 u;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; -if (count >=sizeof (temp) || count ==0 ) -return -EINVAL ; - -if (copy_from_user (temp, buf, count) !=0 ) -return -EFAULT ; - - temp[count] ='\0' ; + ret =kstrtou32_from_user (buf, count,10 , &u); +if (unlikely (ret)) +return ret; -if (kstrtoul (temp,10 , &u)) -return -EINVAL ; - -if (u ==CIPSO_V4_DOI_UNKNOWN || u >U32_MAX ) +if (u ==CIPSO_V4_DOI_UNKNOWN )return -EINVAL ;return smk_cipso_doi (u,GFP_KERNEL ) ? : count;
@@ -1664,22 +1657,14 @@ static ssize_t smk_write_direct(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { struct smack_known *skp; -char temp[80 ]; -int i; +int i, ret;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; -if (count >=sizeof (temp) || count ==0 ) -return -EINVAL ; - -if (copy_from_user (temp, buf, count) !=0 ) -return -EFAULT ; - - temp[count] ='\0' ; - -if (sscanf (temp,"%d" , &i) !=1 ) -return -EINVAL ; + ret =kstrtos32_from_user (buf, count,10 , &i); +if (unlikely (ret)) +return ret;/* * Don't do anything if the value hasn't actually changed.
@@ -1742,22 +1727,14 @@ static ssize_t smk_write_mapped(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { struct smack_known *skp; -char temp[80 ]; -int i; +int i, ret;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; -if (count >=sizeof (temp) || count ==0 ) -return -EINVAL ; - -if (copy_from_user (temp, buf, count) !=0 ) -return -EFAULT ; - - temp[count] ='\0' ; - -if (sscanf (temp,"%d" , &i) !=1 ) -return -EINVAL ; + ret =kstrtos32_from_user (buf, count,10 , &i); +if (unlikely (ret)) +return ret;/* * Don't do anything if the value hasn't actually changed.
@@ -2179,22 +2156,15 @@ static ssize_t smk_read_logging(struct file *filp, char __user *buf,static ssize_t smk_write_logging (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -char temp[32 ]; -int i; +int i, ret;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; -if (count >=sizeof (temp) || count ==0 ) -return -EINVAL ; - -if (copy_from_user (temp, buf, count) !=0 ) -return -EFAULT ; + ret =kstrtos32_from_user (buf, count,10 , &i); +if (unlikely (ret)) +return ret; - temp[count] ='\0' ; - -if (sscanf (temp,"%d" , &i) !=1 ) -return -EINVAL ;if (i <0 || i >3 )return -EINVAL ; log_policy = i;
@@ -2838,22 +2808,15 @@ static ssize_t smk_read_ptrace(struct file *filp, char __user *buf,static ssize_t smk_write_ptrace (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -char temp[32 ]; -int i; +int i, ret;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; -if (*ppos !=0 || count >=sizeof (temp) || count ==0 ) -return -EINVAL ; - -if (copy_from_user (temp, buf, count) !=0 ) -return -EFAULT ; + ret =kstrtos32_from_user (buf, count,10 , &i); +if (unlikely (ret)) +return ret; - temp[count] ='\0' ; - -if (sscanf (temp,"%d" , &i) !=1 ) -return -EINVAL ;if (i <SMACK_PTRACE_DEFAULT || i >SMACK_PTRACE_MAX )return -EINVAL ; smack_ptrace_rule = i;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 58/1815 smack: deduplicate smackfs/{direct,mapped} file_operations
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Andreev <[email protected]>
[ Upstream commit 577dc3b6a8cf200e6e27b2d9967cac14a1fed2f3 ]
The file_operations for smackfs/direct and smackfs/mapped are identical up to a textual replacement of "direct" with "mapped"
This patch combines two instances of file_operations into one, handling both files.
--- security/smack/smack.h | 5 +- security/smack/smackfs.c | 133 ++++++++++++--------------------------- 2 files changed, 42 insertions(+), 96 deletions(-)
security/smack/smack.h +3 -2
@@ -317,8 +317,9 @@ int smack_populate_secattr(struct smack_known *skp);* Shared data. */ extern int smack_enabled__initdata ; -extern int smack_cipso_direct; -extern int smack_cipso_mapped; +extern int smack_cipso_auto_level[2 ]; +#define smack_cipso_direct (+smack_cipso_auto_level[0]) +#define smack_cipso_mapped (+smack_cipso_auto_level[1])extern struct smack_known *smack_net_ambient;extern struct smack_known *smack_syslog_label;#ifdef CONFIG_SECURITY_SMACK_BRINGUP
security/smack/smackfs.c +39 -94
206 lines not on this page · raw message
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 59/1815 smack: restrict smackfs/{direct,mapped} values to 0-255
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Andreev <[email protected]>
[ Upstream commit a7c44fd9f80e37763acf9cd3c87a58058d206427 ]
Both smackfs/direct and smackfs/mapped incorrectly accept the full range of integer values. For example:
# cd /sys/fs/smackfs/
# cat direct ; echo
250 # cat cipso2
@ 250/2
_ 250/2,4,5,6,7,8
* 250/3,5,7
^ 250/2,4,5,6,7
? 250/3,4,5,6,7,8 # echo -1234 >direct ; cat direct ; echo
-1234
# cat cipso2
@ -1234/2
_ -1234/2,4,5,6,7,8
* -1234/3,5,7
^ -1234/2,4,5,6,7
? -1234/3,4,5,6,7,8
#I noticed two things regarding this:
1) sensitivity levels are truncated to 8 bits when labeling outgoing packets (0x2e = 46 for the -1234 example above)
2) the reverse process fails: incoming packets with sensitivity level 46 do not match these smackfs/cipso2 entries.
Even observation (1) on its own warrants a fix.
This patch restricts smackfs/direct and smackfs/mapped accepted values to the 0-255 range.
--- security/smack/smack.h | 2 +- security/smack/smackfs.c | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-)
security/smack/smack.h +1 -1
@@ -317,7 +317,7 @@ int smack_populate_secattr(struct smack_known *skp);* Shared data. */ extern int smack_enabled__initdata ; -extern int smack_cipso_auto_level[2 ]; +extern u8 smack_cipso_auto_level[2 ];#define smack_cipso_direct (+smack_cipso_auto_level[0])#define smack_cipso_mapped (+smack_cipso_auto_level[1])extern struct smack_known *smack_net_ambient;
security/smack/smackfs.c +14 -12
@@ -94,7 +94,7 @@ struct smack_known *smack_net_ambient;* secid is contained directly in the category set. * It can be reset via smackfs/mapped */ -int smack_cipso_auto_level[2 ] = { +u8 smack_cipso_auto_level[2 ] = {SMACK_CIPSO_DIRECT_DEFAULT ,SMACK_CIPSO_MAPPED_DEFAULT , };
@@ -1641,17 +1641,15 @@ static const struct file_operations smk_doi_ops = {static ssize_t smk_read_cipso_auto_level (struct file *filp,char __user *buf,size_t count,loff_t *ppos) { -char temp[80 ]; -ssize_t rc; +char temp[sizeof "255" ]; +int n;if (*ppos !=0 )return 0 ; -sprintf (temp,"%d" , smack_cipso_auto_level[ -smk_cipso_auto_level_idx (filp)]); - rc =simple_read_from_buffer (buf, count, ppos, temp,strlen (temp)); - -return rc; + n =sprintf (temp,"%u" , (unsigned int )smack_cipso_auto_level[ +smk_cipso_auto_level_idx (filp)]); +return simple_read_from_buffer (buf, count, ppos, temp, n); }/**
@@ -1667,13 +1665,16 @@ static ssize_t smk_write_cipso_auto_level(struct file *filp, const char __user *buf, size_t count, loff_t *ppos) { - struct smack_known *skp; -int i, ret, idx, old_lvl; + int ret, idx; +u8 i, old_lvl;if (!smack_privileged (CAP_MAC_ADMIN ))return -EPERM ; - - ret =kstrtos32_from_user (buf, count,10 , &i); +/* +* draft-ietf-cipso-ipsecurity-01 (CIPSO 2.2), 3.4.2.4: +* "Sensitivity Level is 1 octet in length. Its value is from 0 to 255" +*/ + ret =kstrtou8_from_user (buf, count,10 , &i);if (unlikely (ret))return ret;
@@ -1686,6 +1687,7 @@ smk_write_cipso_auto_level(struct file *filp, const char __user *buf, old_lvl = smack_cipso_auto_level[idx];if (old_lvl != i) { +struct smack_known *skp;mutex_lock (&smack_known_lock);list_for_each_entry_rcu (skp, &smack_known_list, list) if (skp->smk_netlabel.attr.mls.lvl ==
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 60/1815 cgroup/cpuset: Avoid unnecessary cpus & mems update in cpuset_hotplug_update_tasks()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Waiman Long <[email protected]>
[ Upstream commit 866f587e9c70566a0391bf402123555605a82f81 ]
As reported by sashiko [1], cpuset_hotplug_update_tasks() may perform unnecessary task iteration and updating of tasks' CPU and node masks when mems_allowed and/or cpus_allowed are not set in cpuset v2. It is due to the fact that the temporary new_cpus and new_mems masks do not inherit parent's effective_cpus/mems when they are empty which is the expected behavior for cpuset v2 since commit 4ec22e9c5a90 ("cpuset:
Enable cpuset controller in default hierarchy").
Fix that and avoid unnecessary work by enhancing compute_effective_cpumask() to add the empty cpumask check and inheriting the parent's versions if empty when in v2. A new compute_effective_nodemask() helper is also added to perform a similar function for new effective_mems.
Add new test_cpuset_prs.sh test cases to confirm that effective_cpus will inherit the parent's version if cpuset.cpus is empty.
[1] https://sashiko.dev/#/patchset/20260621032816.1806773-1-longman%40redhat.com
--- kernel/cgroup/cpuset.c | 45 +++++++++++-------- .../selftests/cgroup/test_cpuset_prs.sh | 11 ++++- 2 files changed, 35 insertions(+), 21 deletions(-)
kernel/cgroup/cpuset.c +26 -19
@@ -1089,12 +1089,35 @@ void cpuset_update_tasks_cpumask(struct cpuset *cs, struct cpumask *new_cpus)* @cs: the cpuset the need to recompute the new effective_cpus mask * @parent: the parent cpuset * +* For v2, the parent's effective_cpus is inherited if cpumask is empty. * The result is valid only if the given cpuset isn't a partition root. */ static void compute_effective_cpumask (struct cpumask *new_cpus,struct cpuset *cs,struct cpuset *parent) { -cpumask_and (new_cpus, cs->cpus_allowed, parent->effective_cpus); +bool has_cpus; + + has_cpus =cpumask_and (new_cpus, cs->cpus_allowed, parent->effective_cpus); +if (!has_cpus &&is_in_v2_mode ()) +cpumask_copy (new_cpus, parent->effective_cpus); +} + +/** +* compute_effective_nodemask - Compute the effective nodemask of the cpuset +* @new_mems: the temp variable for the new effective_mems mask +* @cs: the cpuset the need to recompute the new effective_mems mask +* @parent: the parent cpuset +* +* For v2, the parent's effective_mems is inherited if nodemask is empty. +*/ +static void compute_effective_nodemask (nodemask_t *new_mems, +struct cpuset *cs,struct cpuset *parent) +{ +bool has_mems; + + has_mems =nodes_and (*new_mems, cs->mems_allowed, parent->effective_mems); +if (!has_mems &&is_in_v2_mode ()) +nodes_copy (*new_mems, parent->effective_mems); }/*
@@ -2143,15 +2166,6 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp, goto update_parent_effective; } -/* -* If it becomes empty, inherit the effective mask of the -* parent, which is guaranteed to have some CPUs unless -* it is a partition root that has explicitly distributed -* out all its CPUs. -*/ -if (is_in_v2_mode () && !remote &&cpumask_empty (tmp->new_cpus)) -cpumask_copy (tmp->new_cpus, parent->effective_cpus); -/* * Skip the whole subtree if * 1) the cpumask remains the same,
@@ -2697,14 +2711,7 @@ static void update_nodemasks_hier(struct cpuset *cs, nodemask_t *new_mems)cpuset_for_each_descendant_pre (cp, pos_css, cs) {struct cpuset *parent =parent_cs (cp); -bool has_mems =nodes_and (*new_mems, cp->mems_allowed, parent->effective_mems); - -/* -* If it becomes empty, inherit the effective mask of the -* parent, which is guaranteed to have some MEMs. -*/ -if (is_in_v2_mode () && !has_mems) - *new_mems = parent->effective_mems; +compute_effective_nodemask (new_mems, cp, parent);/* Skip the whole subtree if the nodemask remains the same. */ if (nodes_equal (*new_mems, cp->effective_mems)) {
@@ -3778,7 +3785,7 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp) parent =parent_cs (cs);compute_effective_cpumask (&new_cpus, cs, parent); -nodes_and (new_mems, cs->mems_allowed, parent->effective_mems); +compute_effective_nodemask (&new_mems, cs, parent);if (!tmp || !cs->partition_root_state) goto update_tasks;
tools/testing/selftests/cgroup/test_cpuset_prs.sh +9 -2
@@ -495,13 +495,20 @@ REMOTE_TEST_MATRIX=( # Narrowing cpuset.cpus to previously sibling-excluded CPUs should # not return CPUs that were never actually owned. " C1-4:P1 . C1-2:P1 C1-3:P2 . . \ - . . . C3 . . p1:4|c11:1-2|c12:3 \ + . . . C3 . . p1:4|c11:1-2|c12:3 \ p1:P1|c11:P1|c12:P2 3" # Expanding cpuset.cpus to include a previously sibling-excluded CPU # after the sibling has become a member should correctly request it. " C1-4:P1 . C1-2:P1 C1-3:P2 . . \ - . . P0 C2-3 . . p1:1,4|c11:1|c12:2-3 \ + . . P0 C2-3 . . p1:1,4|c11:1|c12:2-3 \ p1:P1|c11:P0|c12:P2 2-3" + # Cpusets with empty cpuset.cpus should inherit parent's effective_cpus + " C1-4:P1 C5-6 C1-2 . C5 . \ + . P1 P1 . . . p1:3-4|p2:5-6|c11:1-2|c12:3-4|c21:5|c22:5-6 \ + p1:P1|p2:P1|c11:P1" + " C1-4:P1 C5-6 C1-2 . C5 . \ + . P1 P1 . O5=0 . p1:3-4|p2:6|c11:1-2|c12:3-4|c21:6|c22:6 \ + p1:P1|p2:P1|c11:P1" ) #
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 61/1815 sched_ext/scx_flatcg: Fix cvtime_delta race and add hweight scaling to bypass charging
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wanwu Li <[email protected]>
[ Upstream commit a5cc43414b38decd50bdd447e558358a6fbd5864 ]
1. cgrp_cap_budget() used __sync_fetch_and_sub(&cgc->cvtime_delta, cgc->cvtime_delta) to atomically read and clear cvtime_delta. However, this is not a true atomic read-clear operation: the second argument (cgc->cvtime_delta) is evaluated as a normal read before the atomic fetch_and_sub executes. If a concurrent __sync_fetch_and_add() happens between the read and the sub, the added value gets included in the returned delta AND remains in cvtime_delta, causing double charging.
Example:
CPU 0 runs cgrp_cap_budget(), CPU 1 runs fcg_stopping(). Assume cvtime_delta = 100 initially.
T1 CPU 0: sub_val = cvtime_delta = 100 cvtime_delta = 100
T2 CPU 1: __sync_fetch_and_add(&cvtime_delta, 10) cvtime_delta = 110
T3 CPU 0: __sync_fetch_and_sub(&cvtime_delta, sub_val) cvtime_delta = 10
returns old=110 delta = 110 (includes the 10 from CPU 1), but cvtime_delta = 10 (the 10 also remains). The 10 is charged twice: once in delta (applied to cgv_node->cvtime) and once in the residual cvtime_delta (fetched again next time).
Fix by using __sync_fetch_and_and(&cgc->cvtime_delta, 0). Disassembly comparison:
(1) delta = __sync_fetch_and_sub(&cgc->cvtime_delta, cgc->cvtime_delta); 228: (79) r7 = *(u64 *)(r9 +40)
229: (87) r7 = -r7
230: (db) r7 = atomic64_fetch_add((u64 *)(r9 +40), r7) //r9 may be changed
(2) delta = __sync_fetch_and_and(&cgc->cvtime_delta, 0); 228: (b7) r8 = 0 229: (db) r8 = atomic64_xchg((u64 *)(r9 +40), r8)
2. The bypass charging path in fcg_stopping() charges raw execution time to cvtime_delta without scaling by the inverse of the cgroup hweight. Since cvtime_delta is eventually applied to cgv_node->cvtime which is in vtime space (weight-scaled), the bypass path should also scale by FCG_HWEIGHT_ONE / hweight to match the units used by the dispatch path.
--- tools/sched_ext/scx_flatcg.bpf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
tools/sched_ext/scx_flatcg.bpf.c +3 -2
@@ -256,7 +256,7 @@ static void cgrp_cap_budget(struct cgv_node *cgv_node, struct fcg_cgrp_ctx *cgc)* and thus can't be updated and repositioned. Instead, we collect the * vtime deltas separately and apply it asynchronously here. */ - delta =__sync_fetch_and_sub (&cgc->cvtime_delta, cgc->cvtime_delta); + delta =__sync_fetch_and_and (&cgc->cvtime_delta,0 ); cvtime = cgv_node->cvtime + delta;/*
@@ -570,7 +570,8 @@ void BPF_STRUCT_OPS(fcg_stopping, struct task_struct *p, bool runnable) cgc =find_cgrp_ctx (cgrp);if (cgc) {__sync_fetch_and_add (&cgc->cvtime_delta, - p->se.sum_exec_runtime - taskc->bypassed_at); + (p->se.sum_exec_runtime - taskc->bypassed_at) * +FCG_HWEIGHT_ONE / (cgc->hweight ?:1 )); taskc->bypassed_at =0 ; }bpf_cgroup_release (cgrp);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 62/1815 drm/bridge: of-display-mode-bridge: Fix missing static const for the bridge funcs
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Damon Ding <[email protected]>
[ Upstream commit 6648301c5bb2ef23f0fb15bcb01d21ff66f36799 ]
Add static qualifier for of_display_mode_bridge_funcs to resolve the sparse warning:
drivers/gpu/drm/bridge/of-display-mode-bridge.c:54:25: sparse: sparse:
symbol 'of_display_mode_bridge_funcs' was not declared. Should it be static?
Also mark the structure const as required by devm_drm_bridge_alloc() parameter type constraints.
--- drivers/gpu/drm/bridge/of-display-mode-bridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/bridge/of-display-mode-bridge.c +1 -1
@@ -51,7 +51,7 @@ static int of_display_mode_bridge_get_modes(struct drm_bridge *bridge,return 0 ; } -struct drm_bridge_funcs of_display_mode_bridge_funcs = { +static const struct drm_bridge_funcs of_display_mode_bridge_funcs = { .attach = of_display_mode_bridge_attach, .get_modes = of_display_mode_bridge_get_modes, };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 63/1815 x86/cfi: Use symmetric SYM_START and SYM_END in __CFI_TYPE()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jens Remus <[email protected]>
[ Upstream commit 0cfdf974f133e0ff17ed80e7895adbe7889d9522 ]
Commit
ccace936eec7 ("x86: Add types to indirectly called assembly functions")
introduced a x86-specific implementation of __CFI_TYPE() using an asymmetric combination of SYM_START() and SYM_FUNC_END() to add a symbol to the KCFI type identifier that precedes a function.
This asymmetric combination is an issue if SYM_FUNC_END() ever gets extended in a way that requires it to be used symmetrically with SYM_FUNC_START*(). For instance to emit DWARF CFI directives that denote the start/end of a function. [1]
Use SYM_END() with SYM_T_FUNC instead. No functional change, as the generic implementation of SYM_FUNC_END(name) expands into SYM_END(name, SYM_T_FUNC).
--- arch/x86/include/asm/linkage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/include/asm/linkage.h +1 -1
@@ -103,7 +103,7 @@ .byte 0xb8 ASM_NL \ .long __kcfi_typeid_##name ASM_NL \ CFI_POST_PADDING \ - SYM_FUNC_END(__cfi_##name) + SYM_END(__cfi_##name, SYM_T_FUNC)/* UML needs to be able to override memcpy() and friends for KASAN. */ #ifdef CONFIG_UML
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 64/1815 platform/chrome: cros_ec_typec: Reject out-of-bounds PD cap count
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maoyi Xie <[email protected]>
[ Upstream commit a0a8cd9fc9c48b95095bcec4b146f7a99486f58e ]
cros_typec_register_partner_pdos() copies the partner PDOs from the EC TYPEC_STATUS response into the fixed caps_desc.pdo[PDO_MAX_OBJECTS] array.
memcpy(caps_desc.pdo, resp->source_cap_pdos, sizeof(u32) * resp->source_cap_count); ... memcpy(caps_desc.pdo, resp->sink_cap_pdos, sizeof(u32) * resp->sink_cap_count);
PDO_MAX_OBJECTS is 7. source_cap_count and sink_cap_count are u8 fields from the EC. The only check is that they are not both zero. If either is larger than 7, the memcpy writes past the end of the array on the stack. A count of 255 overflows it by about 1 KB. The EC source arrays are only seven entries wide. A larger count reads past them too.
The ChromeOS EC firmware caps these counts today, so a compliant setup does not hit this. The kernel should still validate these values rather than trust them.
Validate the counts in cros_typec_register_partner_pdos() next to the memcpy. Skip the PDO registration if either count is above PDO_MAX_OBJECTS. The rest of cros_typec_handle_status() still runs so events are handled and cleared.
--- drivers/platform/chrome/cros_ec_typec.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/platform/chrome/cros_ec_typec.c +6 -0
@@ -1119,6 +1119,12 @@ static void cros_typec_register_partner_pdos(struct cros_typec_data *typec,if (!resp->source_cap_count && !resp->sink_cap_count)return ; +if (resp->source_cap_count >PDO_MAX_OBJECTS || + resp->sink_cap_count >PDO_MAX_OBJECTS ) { +dev_warn (typec->dev,"Invalid PDO count from EC, port: %d\n" , port_num); +return ; + } + port->partner_pd =typec_partner_usb_power_delivery_register (port->partner, &desc);if (IS_ERR (port->partner_pd)) {dev_warn (typec->dev,"Failed to register partner PD device, port: %d\n" , port_num);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 65/1815 selftests: proc: include fcntl.h in proc-pidns
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Amin Vakil <[email protected]>
[ Upstream commit 879b3353d04d043a9e01525c520d9b81339421b2 ]
proc-pidns.c uses open() and O_* flags, but does not include <fcntl.h>. This breaks the proc selftests build with errors such as:
error: implicit declaration of function 'open'
error: 'O_WRONLY' undeclared
error: 'O_CREAT' undeclared
error: 'O_RDONLY' undeclared
Include <fcntl.h> to provide the declaration and flag definitions.
Tested with:
make -C tools/testing/selftests TARGETS=proc
--- tools/testing/selftests/proc/proc-pidns.c | 1 + 1 file changed, 1 insertion(+)
tools/testing/selftests/proc/proc-pidns.c +1 -0
@@ -6,6 +6,7 @@#include <assert.h> #include <errno.h> +#include <fcntl.h> #include <sched.h> #include <stdbool.h> #include <stdlib.h>
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 66/1815 HID: core: quiesce input in hid_hw_stop() to prevent use-after-free
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Philipp Weber <[email protected]>
[ Upstream commit a4bc41504690b7d7064931909874f5b98cd148b6 ]
A driver's probe calls hid_device_io_start() to enable input delivery, then fails at a later initialization step and unwinds via hid_hw_stop(). The unwind frees struct hidraw via hidraw_disconnect() while in-flight HID reports may still be running on another CPU, dereferencing the freed object through hidraw_report_event(). syzbot reports the resulting use-after-free for the corsair-psu HID driver.
Edward Adam Davis posted a per-driver fix for corsair-psu that adds an explicit hid_device_io_stop() before hid_hw_stop() in the probe error path ("hwmon: prevent packets from going to driver for probe", 2026-04-28). Auditing the tree shows 15 drivers call hid_device_io_start(); 7 also call hid_device_io_stop() and 8 do not:
drivers calling hid_device_io_start() without a matching hid_device_io_stop() before hid_hw_stop():
drivers/hwmon/corsair-psu.c (fix posted by Edward)
drivers/hwmon/corsair-cpro.c drivers/hwmon/nzxt-kraken3.c drivers/hwmon/nzxt-smart2.c drivers/hwmon/gigabyte_waterforce.c drivers/hid/hid-logitech-dj.c drivers/hid/hid-nintendo.c drivers/hid/hid-mcp2221.c
Roughly half of all callers of the API are exposed. Centralize the quiesce in hid_hw_stop() so callers do not have to remember the matching stop: if a driver has left hdev->io_started true on entry, call hid_device_io_stop() before hid_disconnect().
For the 7 drivers that already call hid_device_io_stop() correctly, hdev->io_started is false on entry, the guard short-circuits, and behavior is unchanged.
No Fixes: tag because the affected drivers gained their hid_device_io_start() calls independently over years; the bug is a class-wide API misuse rather than a regression from one commit.
--- drivers/hid/hid-core.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/hid/hid-core.c +7 -0
@@ -2454,9 +2454,16 @@ EXPORT_SYMBOL_GPL(hid_hw_start);* * This is usually called from remove function or from probe when something * failed and hid_hw_start was called already. +* +* If the caller enabled HID input via hid_device_io_start() and is unwinding +* without an explicit hid_device_io_stop(), quiesce input first so that +* in-flight reports cannot reach handlers (e.g. hidraw_report_event) whose +* backing objects hid_disconnect() is about to free. */ void hid_hw_stop (struct hid_device *hdev) { +if (hdev->io_started) +hid_device_io_stop (hdev);hid_disconnect (hdev); hdev->ll_driver->stop (hdev); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 67/1815 HID: nintendo: Fix imu_timestamp_us double increment per report
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christos Maragkos <[email protected]>
[ Upstream commit 1f9b25d3fb65b9384dec16d9db13a3e71abd9145 ]
Previously, the imu_timestamp_us variable was incremented twice per report, causing it to advance by two times the desired amount.
This resulted in incorrect jumps in IMU timestamps reported using MSC_TIMESTAMP, so userspace applications saw corrupted timing on functions such as gyroscope-based aim and motion controls.
This is fixed by removing the redundant increment at the start of the report handling so the remaining can account for the full report interval.
--- drivers/hid/hid-nintendo.c | 1 - 1 file changed, 1 deletion(-)
drivers/hid/hid-nintendo.c +0 -1
@@ -1474,7 +1474,6 @@ static void joycon_parse_imu_report(struct joycon_ctlr *ctlr, dropped_threshold = ctlr->imu_avg_delta_ms *3 /2 ; dropped_pkts = (delta -min (delta, dropped_threshold)) / ctlr->imu_avg_delta_ms; - ctlr->imu_timestamp_us +=1000 * ctlr->imu_avg_delta_ms;if (dropped_pkts >JC_IMU_DROPPED_PKT_WARNING ) { hid_warn_ratelimited(ctlr->hdev, "compensating for %u dropped IMU reports\n",
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 68/1815 HID: roccat: bound device-supplied profile index
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Bommarito <[email protected]>
[ Upstream commit 43fae42628a8c10fa8981773d7ec9f1a367821a7 ]
kone_keep_values_up_to_date() and kone_profile_activated() use an 8-bit, device-supplied profile value as an index into the 5-element kone->profiles[] array without a range check. A malicious USB device claiming the Roccat Kone id can send a switch-profile event (or a startup_profile read at probe) with an out-of-range value and make the driver read out of bounds; the result is exposed via the actual_dpi sysfs attribute.
Reject out-of-range indices in both paths.
This was found with static analysis and confirmed with the KUnit test added in the following patch (KASAN: slab-out-of-bounds).
--- drivers/hid/hid-roccat-kone.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/hid/hid-roccat-kone.c +6 -2
@@ -36,6 +36,8 @@ static uint profile_numbers[5] = {0, 1, 2, 3, 4};static void kone_profile_activated (struct kone_device *kone,uint new_profile) { +if (new_profile <1 || new_profile >ARRAY_SIZE (kone->profiles)) + new_profile =1 ; kone->actual_profile = new_profile; kone->actual_dpi = kone->profiles[new_profile -1 ].startup_dpi; }
@@ -793,8 +795,10 @@ static void kone_keep_values_up_to_date(struct kone_device *kone, {switch (event->event) {case kone_mouse_event_switch_profile: - kone->actual_dpi = kone->profiles[event->value -1 ]. - startup_dpi; +if (event->value >=1 && + event->value <=ARRAY_SIZE (kone->profiles)) + kone->actual_dpi = + kone->profiles[event->value -1 ].startup_dpi; fallthrough;case kone_mouse_event_osd_profile: kone->actual_profile = event->value;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 69/1815 soc: samsung: exynos-pmu: fix of_node refcount leak in exynos_get_pmu_regmap()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Weigang He <[email protected]>
[ Upstream commit fa476d53edd24e8105faace04e881b9c4179738f ]
exynos_get_pmu_regmap() obtains a device_node via of_find_matching_node() and passes it to exynos_get_pmu_regmap_by_phandle(np, NULL). With propname == NULL the callee uses np directly and does not drop a reference, so the reference taken by of_find_matching_node() is leaked on every call -- including on each -EPROBE_DEFER retry of the only in-tree caller, exynos_retention_init() in the Exynos pinctrl driver.
Annotate np with the __free(device_node) cleanup attribute so the reference is released when the function returns.
Found by static analysis tool CodeQL.
--- drivers/soc/samsung/exynos-pmu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/soc/samsung/exynos-pmu.c +2 -2
@@ -167,8 +167,8 @@ static const struct mfd_cell exynos_pmu_devs[] = {*/ struct regmap *exynos_get_pmu_regmap (void ) { -struct device_node *np =of_find_matching_node (NULL , - exynos_pmu_of_device_ids); + struct device_node *np __free(device_node) = +of_find_matching_node (NULL , exynos_pmu_of_device_ids);if (np)return exynos_get_pmu_regmap_by_phandle (np,NULL );return ERR_PTR (-ENODEV );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 70/1815 media: cec-pin: Fix event FIFO ordering
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gui-Dong Han <[email protected]>
[ Upstream commit a1d83d1b810665bd53ce8a7b7867e054d68676c7 ]
cec_pin_update() fills work_pin_events[] and work_pin_ts[], then increments work_pin_num_events. cec_pin_thread_func() uses that counter to decide when to read the FIFO entries.
Do not let the counter update be observed without the event update. Also do not let a freed slot be reused before the thread has finished reading it. Use release operations when publishing an entry and releasing a slot, and acquire operations when consuming those counter updates.
Leave the other work_pin_num_events users as they do not participate in this FIFO publication path.
--- drivers/media/cec/core/cec-pin.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/media/cec/core/cec-pin.c +4 -4
@@ -115,7 +115,7 @@ static void cec_pin_update(struct cec_pin *pin, bool v, bool force)return ; pin->adap->cec_pin_is_high = v; -if (atomic_read (&pin->work_pin_num_events) <CEC_NUM_PIN_EVENTS ) { +if (atomic_read_acquire (&pin->work_pin_num_events) <CEC_NUM_PIN_EVENTS ) {u8 ev = v;if (pin->work_pin_events_dropped) {
@@ -126,7 +126,7 @@ static void cec_pin_update(struct cec_pin *pin, bool v, bool force) pin->work_pin_ts[pin->work_pin_events_wr] =ktime_get (); pin->work_pin_events_wr = (pin->work_pin_events_wr +1 ) %CEC_NUM_PIN_EVENTS ; -atomic_inc (&pin->work_pin_num_events); +atomic_inc_return_release (&pin->work_pin_num_events); }else { pin->work_pin_events_dropped = true; pin->work_pin_events_dropped_cnt++;
@@ -1101,7 +1101,7 @@ static int cec_pin_thread_func(void *_adap) pin->work_tx_ts); } -while (atomic_read (&pin->work_pin_num_events)) { +while (atomic_read_acquire (&pin->work_pin_num_events)) {unsigned int idx = pin->work_pin_events_rd;u8 v = pin->work_pin_events[idx];
@@ -1110,7 +1110,7 @@ static int cec_pin_thread_func(void *_adap) v &CEC_PIN_EVENT_FL_DROPPED , pin->work_pin_ts[idx]); pin->work_pin_events_rd = (idx +1 ) %CEC_NUM_PIN_EVENTS ; -atomic_dec (&pin->work_pin_num_events); +atomic_dec_return_release (&pin->work_pin_num_events); } switch (atomic_xchg(&pin->work_irq_change,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 71/1815 mtd: rawnand: pl353: Fix debug prints
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miquel Raynal (DAVE) <[email protected]>
[ Upstream commit 2b7baaddf1bc3e39206a0354449fdc349945b86b ]
They are partially incorrect since "software" engine does not mean hamming, the "none" cae is also falling into this print, and on-die means there is some kind of hardware support; we prefer to use the wording on-host vs. on-die.
Fix all those prints.
--- drivers/mtd/nand/raw/pl35x-nand-controller.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/mtd/nand/raw/pl35x-nand-controller.c +5 -3
@@ -972,17 +972,19 @@ static int pl35x_nand_attach_chip(struct nand_chip *chip)switch (chip->ecc.engine_type) {case NAND_ECC_ENGINE_TYPE_ON_DIE : -dev_dbg (nfc->dev,"Using on-die ECC\n" ); +dev_dbg (nfc->dev,"Using on-die hardware ECC\n" );/* Keep these legacy BBT descriptors for ON_DIE situations */ chip->bbt_td = &bbt_main_descr; chip->bbt_md = &bbt_mirror_descr; fallthrough;case NAND_ECC_ENGINE_TYPE_NONE : +dev_dbg (nfc->dev,"Using no ECC engine\n" ); +break ;case NAND_ECC_ENGINE_TYPE_SOFT : -dev_dbg (nfc->dev,"Using software ECC (Hamming 1-bit/512B)\n" ); +dev_dbg (nfc->dev,"Using software ECC\n" );break ;case NAND_ECC_ENGINE_TYPE_ON_HOST : -dev_dbg (nfc->dev,"Using hardware ECC\n" ); +dev_dbg (nfc->dev,"Using on-host hardware ECC\n" ); ret =pl35x_nand_init_hw_ecc_controller (nfc, chip);if (ret)return ret;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 72/1815 ASoC: SOF: ipc4-topology: Return error for invalid number of formats
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mert Seftali <[email protected]>
[ Upstream commit 11e828cd6b0f283ebe9dc6b4cffd38e3321e7725 ]
When the number of input or output formats is zero, sof_ipc4_widget_setup_comp_src() and sof_ipc4_widget_setup_comp_asrc() print an error and jump to the cleanup label. At that point 'ret' is still 0, because the earlier sof_ipc4_get_audio_fmt() call succeeded, so the function returns success and the caller never finds out that the widget setup actually failed.
Set ret to -EINVAL before the goto so the error gets reported.
--- sound/soc/sof/ipc4-topology.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/sof/ipc4-topology.c +2 -0
@@ -1127,6 +1127,7 @@ static int sof_ipc4_widget_setup_comp_src(struct snd_sof_widget *swidget)"Invalid number of formats: input: %d, output: %d\n" , src->available_fmt.num_input_formats, src->available_fmt.num_output_formats); + ret = -EINVAL ; goto err; }
@@ -1179,6 +1180,7 @@ static int sof_ipc4_widget_setup_comp_asrc(struct snd_sof_widget *swidget)"Invalid number of formats: input: %d, output: %d\n" , asrc->available_fmt.num_input_formats, asrc->available_fmt.num_output_formats); + ret = -EINVAL ; goto err; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 73/1815 cxl/mbox: Clamp mailbox output allocation to the payload size
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Richard Cheng <[email protected]>
[ Upstream commit 8a13db9f899d149c3aab24abcb668121cfda5a4f ]
CXL_MEM_SEND_COMMAND bounds the user's in.size to the mailbox payload size but leaves out.size unbounded, then cxl_mbox_cmd_ctor() calls kvzalloc(out.size). A large out.size drives a huge allocation, above INT_MAX it WARNs and taints, and with panic_on_warn=1 it panics.
The transport __cxl_pci_mbox_send_cmd() already clamps the response copy to min(out.size, payload_size, device len), so the output buffer is never written beyond payload_size. Clamp the allocation to payload_size too, matching the RAW path.
--- drivers/cxl/core/mbox.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
drivers/cxl/core/mbox.c +1 -5
@@ -379,11 +379,7 @@ static int cxl_mbox_cmd_ctor(struct cxl_mbox_cmd *mbox_cmd, } } -/* Prepare to handle a full payload for variable sized output */ -if (out_size ==CXL_VARIABLE_PAYLOAD ) - mbox_cmd->size_out = cxl_mbox->payload_size; -else - mbox_cmd->size_out = out_size; + mbox_cmd->size_out =min_t (size_t, out_size, cxl_mbox->payload_size);if (mbox_cmd->size_out) { mbox_cmd->payload_out =kvzalloc (mbox_cmd->size_out,GFP_KERNEL );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 74/1815 arm64: dts: imx94: Correct PCIe outbound address space configuration
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Richard Zhu <[email protected]>
[ Upstream commit ffccbd6804e885f0fc23f0005f6bee7789a7a887 ]
Fix the PCIe outbound memory ranges for both pcie0 controllers on i.MX94.
The memory window size was incorrectly set to 256MB during initial bring-up, but the hardware supports up to 4GB of outbound address space per controller.
Additionally, the ECAM region cannot be mapped as I/O space. Use a memory-mapped region for I/O space instead, and relocate the 1MB I/O region to immediately follow the memory region at offset 0xf0000000 within each window.
Update the outbound address space layout per controller as follows:
- 3.5GB 64-bit prefetchable memory - 256MB 32-bit non-prefetchable memory - 1MB I/O
--- arch/arm64/boot/dts/freescale/imx94.dtsi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/freescale/imx94.dtsi +3 -2
@@ -1374,8 +1374,9 @@ pcie0: pcie@4c300000 { <0 0x4c360000 0 0x10000>, <0 0x4c340000 0 0x4000>; reg-names = "dbi", "config", "atu", "app"; - ranges = <0x81000000 0x0 0x00000000 0x0 0x6ff00000 0 0x00100000>, - <0x82000000 0x0 0x10000000 0x9 0x10000000 0 0x80000000>; + ranges = <0x43000000 0x9 0x00000000 0x9 0x00000000 0x0 0xe0000000>, + <0x82000000 0x0 0xe0000000 0x9 0xe0000000 0x0 0x10000000>, + <0x81000000 0x0 0x00000000 0x9 0xf0000000 0x0 0x00100000>; #address-cells = <3>; #size-cells = <2>; device_type = "pci";
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 75/1815 arm64: dts: imx943: Correct PCIe outbound address space configuration
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Richard Zhu <[email protected]>
[ Upstream commit 6de3a7d7a4f653be4901d07425719c4e55805167 ]
Fix the PCIe outbound memory ranges for both pcie1 controllers on i.MX943.
The memory window size was incorrectly set to 256MB during initial bring-up, but the hardware supports up to 4GB of outbound address space per controller.
Additionally, the ECAM region cannot be mapped as I/O space. Use a memory-mapped region for I/O space instead, and relocate the 1MB I/O region to immediately follow the memory region at offset 0xf0000000 within each window.
Update the outbound address space layout per controller as follows:
- 3.5GB 64-bit prefetchable memory - 256MB 32-bit non-prefetchable memory - 1MB I/O
--- arch/arm64/boot/dts/freescale/imx943.dtsi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/freescale/imx943.dtsi +3 -2
@@ -218,8 +218,9 @@ pcie1: pcie@4c380000 { <0 0x4c3e0000 0 0x10000>, <0 0x4c3c0000 0 0x4000>; reg-names = "dbi", "config", "atu", "app"; - ranges = <0x81000000 0 0x00000000 0x8 0x8ff00000 0 0x00100000>, - <0x82000000 0 0x10000000 0xa 0x10000000 0 0x80000000>; + ranges = <0x43000000 0xa 0x00000000 0xa 0x00000000 0x0 0xe0000000>, + <0x82000000 0x0 0xe0000000 0xa 0xe0000000 0x0 0x10000000>, + <0x81000000 0x0 0x00000000 0xa 0xf0000000 0x0 0x00100000>; #address-cells = <3>; #size-cells = <2>; device_type = "pci";
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 76/1815 cxl/pci: Remove incorrect mbox.valid check in cxl_pci_type3_init_mailbox()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wei Hou <[email protected]>
[ Upstream commit d79b81893d0cc93737e811a465b9ef9a00156fd5 ]
The driver's design intent is that missing or malformed component registers should not prevent mailbox initialization. cxl_pci_probe() already reflects this: the CXL_REGLOC_RBI_COMPONENT setup path only emits a dev_warn() and continues when component registers are absent, rather than returning an error.
The check 'if (!cxlds->reg_map.device_map.mbox.valid)' violates this intent and is also technically incorrect for two reasons:
1. Wrong struct: the MEMDEV register block is enumerated into a local variable 'map', not into 'cxlds->reg_map'. The device_map.mbox.valid field inside cxlds->reg_map is never written by the MEMDEV probe and will always read as zero regardless of actual hardware capability.
2. Already validated: cxl_pci_setup_regs(CXL_REGLOC_RBI_MEMDEV) calls cxl_probe_regs() which explicitly checks mbox.valid and returns -ENXIO if the mailbox is absent. If that check passes, the mailbox is guaranteed to be present by the time cxl_pci_type3_init_mailbox() is called.
The value that the check actually reads is component_map.ras.valid, which aliases device_map.mbox.valid in the union. This is populated by the COMPONENT probe, not the MEMDEV probe. On devices where the component register BAR does not implement a CXL Component Capability Array (e.g. certain DCD devices), cxl_probe_component_regs() returns early leaving ras.valid=false. Through the union, this makes mbox.valid read as false, causing cxl_pci_type3_init_mailbox() to return -ENODEV (-19) even though the mailbox hardware is fully functional.
Remove the check. Mailbox presence has already been validated by cxl_pci_setup_regs(CXL_REGLOC_RBI_MEMDEV). The presence or absence of component registers is irrelevant to mailbox initialization.
--- drivers/cxl/pci.c | 6 ------ 1 file changed, 6 deletions(-)
drivers/cxl/pci.c +0 -6
@@ -691,12 +691,6 @@ static int cxl_pci_type3_init_mailbox(struct cxl_dev_state *cxlds) {int rc; -/* -* Fail the init if there's no mailbox. For a type3 this is out of spec. -*/ -if (!cxlds->reg_map.device_map.mbox.valid) -return -ENODEV ; - rc =cxl_mailbox_init (&cxlds->cxl_mbox, cxlds->dev);if (rc)return rc;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 77/1815 ARM: imx: avic: Fix OF node reference leaks
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuho Choi <[email protected]>
[ Upstream commit b24c12e1bad863d27141e4e9c19d25eebd68c4a6 ]
of_find_compatible_node() returns a device node with its reference count incremented. mxc_init_irq() looks up the i.MX25 CCM node for of_iomap() and the AVIC node for irq_domain_create_legacy(), but does not release either temporary reference.
of_iomap() does not consume the node reference, and irq_domain_create_legacy() takes its own fwnode reference for the domain. Drop the temporary OF node references after each use.
--- arch/arm/mach-imx/avic.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/mach-imx/avic.c +2 -0
@@ -173,6 +173,7 @@ static void __init mxc_init_irq(void __iomem *irqbase) np =of_find_compatible_node (NULL ,NULL ,"fsl,imx25-ccm" ); mx25_ccm_base =of_iomap (np,0 ); +of_node_put (np);if (mx25_ccm_base) {/*
@@ -203,6 +204,7 @@ static void __init mxc_init_irq(void __iomem *irqbase) np =of_find_compatible_node (NULL ,NULL ,"fsl,avic" ); domain =irq_domain_create_legacy (of_fwnode_handle (np),AVIC_NUM_IRQS , irq_base,0 , &irq_domain_simple_ops,NULL ); +of_node_put (np);WARN_ON (!domain);for (i =0 ; i <AVIC_NUM_IRQS /32 ; i++, irq_base +=32 )
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 78/1815 clk: versaclock7: Fix APLL clock leak on probe failure
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Myeonghun Pak <[email protected]>
[ Upstream commit e25d8d35e8cbc1a4c04a8b86eed6aa7229f6449e ]
vc7_probe() registers the APLL with clk_register_fixed_rate(), which is not devm-managed and must be explicitly unregistered on probe failure.
Most later errors already unwind through err_clk, but a failure from vc7_get_bank_clk() in the output registration loop returned directly. That skipped clk_unregister_fixed_rate() and leaked the APLL clock.
Route that error through the existing err_clk label so the fixed-rate clock is released consistently with the other probe failure paths.
This issue was identified during our ongoing static-analysis research while reviewing kernel code.
--- drivers/clk/clk-versaclock7.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clk/clk-versaclock7.c +1 -1
@@ -1197,7 +1197,7 @@ static int vc7_probe(struct i2c_client *client)if (ret) {dev_err_probe (&client->dev, ret,"unable to register output %d\n" , i); -return ret; + goto err_clk; }switch (bank_src_map.type) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 79/1815 clk: canaan: Clear rate fields before reprogramming dividers
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Carlier <[email protected]>
[ Upstream commit 804bac4a2654ac69e328d68e1961eb984fb18a01 ]
The rate set_rate helpers perform a read-modify-write on the divider and multiplier registers but only ever OR the new value in, without first masking off the existing field. The first write after reset lands on a zeroed field and looks correct, but any later reprogramming leaves the old bits set: the field becomes the bitwise OR of the previous and new encodings, corrupting the divider or multiplier.
Mask off each field before writing the new value so reprogramming a clock to a different rate produces the intended register contents.
--- drivers/clk/clk-k230.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/clk/clk-k230.c +4 -0
@@ -2227,6 +2227,7 @@ static int k230_clk_set_rate_mul(struct clk_hw *hw, unsigned long rate,guard (spinlock)(rate_self->lock); mul_reg =readl (rate_self->reg + clk->mul_reg_off); + mul_reg &= ~(rate_self->mul_mask << rate_self->mul_shift); mul_reg |= ((mul -1 ) & rate_self->mul_mask) << (rate_self->mul_shift); mul_reg |=BIT (rate_self->write_enable_bit);writel (mul_reg, rate_self->reg + clk->mul_reg_off);
@@ -2257,6 +2258,7 @@ static int k230_clk_set_rate_div(struct clk_hw *hw, unsigned long rate,guard (spinlock)(rate_self->lock); div_reg =readl (rate_self->reg + clk->div_reg_off); + div_reg &= ~(rate_self->div_mask << rate_self->div_shift); div_reg |= ((div -1 ) & rate_self->div_mask) << (rate_self->div_shift); div_reg |=BIT (rate_self->write_enable_bit);writel (div_reg, rate_self->reg + clk->div_reg_off);
@@ -2287,11 +2289,13 @@ static int k230_clk_set_rate_mul_div(struct clk_hw *hw, unsigned long rate,guard (spinlock)(rate_self->lock); div_reg =readl (rate_self->reg + clk->div_reg_off); + div_reg &= ~(rate_self->div_mask << rate_self->div_shift); div_reg |= ((div -1 ) & rate_self->div_mask) << (rate_self->div_shift); div_reg |=BIT (rate_self->write_enable_bit);writel (div_reg, rate_self->reg + clk->div_reg_off); mul_reg =readl (rate_self->reg + clk->mul_reg_off); + mul_reg &= ~(rate_self->mul_mask << rate_self->mul_shift); mul_reg |= ((mul -1 ) & rate_self->mul_mask) << (rate_self->mul_shift); mul_reg |=BIT (rate_self->write_enable_bit);writel (mul_reg, rate_self->reg + clk->mul_reg_off);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 80/1815 clk: eswin: Add CLK_IGNORE_UNUSED to NoC clock
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xuyang Dong <[email protected]>
[ Upstream commit 22109b7329f9b3bf2fee73087c73ce46e9bf3751 ]
The gate_noc_nsp_clk provides the essential clock source for NPU, DSP, and PCIe subsystems. During kernel init, the clock framework attempts to disable unused clocks when clk_ignore_unused kernel parameter is not set.
However, gate_noc_nsp_clk is required to remain enabled for these critical subsystems to function properly, causing PCIe boot failures when auto-disabled.
Add CLK_IGNORE_UNUSED flag to gate_noc_nsp_clk to ensure it stays enabled even when clk_ignore_unused is not specified in kernel command line.
--- drivers/clk/eswin/clk-eic7700.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/clk/eswin/clk-eic7700.c +2 -1
@@ -791,7 +791,8 @@ static struct eswin_clk_info eic7700_clks[] = { EIC7700_CLK_MUX_CPU_ROOT_3MUX1_GFREE, CLK_SET_RATE_PARENT, EIC7700_REG_OFFSET_U84, 27, 0),ESWIN_GATE_TYPE (EIC7700_CLK_GATE_NOC_NSP_CLK ,"gate_noc_nsp_clk" , -EIC7700_CLK_DIV_NOC_NSP_DYNM ,CLK_SET_RATE_PARENT , +EIC7700_CLK_DIV_NOC_NSP_DYNM , +CLK_SET_RATE_PARENT |CLK_IGNORE_UNUSED ,EIC7700_REG_OFFSET_NOC ,31 ,0 ), ESWIN_GATE_TYPE(EIC7700_CLK_GATE_BOOTSPI, "gate_clk_bootspi", EIC7700_CLK_MUX_BOOTSPI_CLK_2MUX1_GFREE,
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 81/1815 clk: moxart: remove unused variables, fix refcount leak
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander A. Klimov <[email protected]>
[ Upstream commit 9f275f2ee9ca60ea4c092bdc0195987945ad8ad8 ]
Not only these error checks are redundand,
those of_clk_get() return values weren't cleaned up via clk_put().
--- drivers/clk/clk-moxart.c | 14 -------------- 1 file changed, 14 deletions(-)
drivers/clk/clk-moxart.c +0 -14
@@ -17,7 +17,6 @@ static void __init moxart_of_pll_clk_init(struct device_node *node) {void __iomem *base;struct clk_hw *hw; -struct clk *ref_clk;unsigned int mul;const char *name = node->name;const char *parent_name;
@@ -34,12 +33,6 @@ static void __init moxart_of_pll_clk_init(struct device_node *node) mul =readl (base +0x30 ) >>3 &0x3f ;iounmap (base); - ref_clk =of_clk_get (node,0 ); -if (IS_ERR (ref_clk)) { -pr_err ("%pOF: of_clk_get failed\n" , node); -return ; - } - hw =clk_hw_register_fixed_factor (NULL , name, parent_name,0 , mul,1 );if (IS_ERR (hw)) {pr_err ("%pOF: failed to register clock\n" , node);
@@ -56,7 +49,6 @@ static void __init moxart_of_apb_clk_init(struct device_node *node) {void __iomem *base;struct clk_hw *hw; -struct clk *pll_clk;unsigned int div, val;unsigned int div_idx[] = {2 ,3 ,4 ,6 ,8 };const char *name = node->name;
@@ -78,12 +70,6 @@ static void __init moxart_of_apb_clk_init(struct device_node *node) val =0 ; div = div_idx[val] *2 ; - pll_clk =of_clk_get (node,0 ); -if (IS_ERR (pll_clk)) { -pr_err ("%pOF: of_clk_get failed\n" , node); -return ; - } - hw =clk_hw_register_fixed_factor (NULL , name, parent_name,0 ,1 , div);if (IS_ERR (hw)) {pr_err ("%pOF: failed to register clock\n" , node);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 82/1815 clk: nuvoton: ma35d1: fix ignored div_u64 return values in PLL freq calculation
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joey Lu <[email protected]>
[ Upstream commit b3a2223a7805c7e6759a32a5d6ca574ad07e2710 ]
div_u64() does not modify its argument in place; the return value must be assigned. Both ma35d1_calc_smic_pll_freq() and ma35d1_calc_pll_freq() called div_u64() and discarded the result, leaving pll_freq holding the undivided product and thus returning a frequency orders of magnitude too high.
--- drivers/clk/nuvoton/clk-ma35d1-pll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/clk/nuvoton/clk-ma35d1-pll.c +2 -2
@@ -92,7 +92,7 @@ static unsigned long ma35d1_calc_smic_pll_freq(u32 pll0_ctl0, p =FIELD_GET (SPLL0_CTL0_OUTDIV , pll0_ctl0); outdiv =1 << p; pll_freq = (u64 )parent_rate * n; -div_u64 (pll_freq, m * outdiv); + pll_freq =div_u64 (pll_freq, m * outdiv);return pll_freq; }
@@ -110,7 +110,7 @@ static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 *reg_ctl, unsigned long pif (mode ==PLL_MODE_INT ) { pll_freq = (u64 )parent_rate * n; -div_u64 (pll_freq, m * p); + pll_freq =div_u64 (pll_freq, m * p); }else { x =FIELD_GET (PLL_CTL1_FRAC , reg_ctl[1 ]);/* 2 decimal places floating to integer (ex. 1.23 to 123) */
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 83/1815 clk: nuvoton: ma35d1: fix PLL_CTL1_FRAC bit field width and fractional calc
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joey Lu <[email protected]>
[ Upstream commit 26de5aed72d80bd8aec2583134aca3597c64fda9 ]
PLL_CTL1_FRAC was defined as GENMASK(31, 24), covering only 8 bits. The hardware fractional field occupies bits [31:8] (24 bits), so the mask must be GENMASK(31, 8).
The previous fractional-mode calculation used FIELD_MAX(PLL_CTL1_FRAC) as the denominator to obtain 2 decimal places. With the corrected 24-bit mask the old divisor is wrong; replace the arithmetic with a proper 24-bit fixed-point rounding to 3 decimal places using the kernel's DIV_ROUND_CLOSEST_ULL helper:
n_frac = n * 1000 + DIV_ROUND_CLOSEST_ULL(x * 1000, 1 << 24)
--- drivers/clk/nuvoton/clk-ma35d1-pll.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/clk/nuvoton/clk-ma35d1-pll.c +4 -4
@@ -48,7 +48,7 @@#define PLL_CTL1_PD BIT(0)#define PLL_CTL1_BP BIT(1)#define PLL_CTL1_OUTDIV GENMASK(6, 4) -#define PLL_CTL1_FRAC GENMASK(31, 24) +#define PLL_CTL1_FRAC GENMASK(31, 8)#define PLL_CTL2_SLOPE GENMASK(23, 0)#define INDIV_MIN 1
@@ -113,9 +113,9 @@ static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 *reg_ctl, unsigned long p pll_freq =div_u64 (pll_freq, m * p); }else { x =FIELD_GET (PLL_CTL1_FRAC , reg_ctl[1 ]); -/* 2 decimal places floating to integer (ex. 1.23 to 123) */ - n = n *100 + ((x *100 ) /FIELD_MAX (PLL_CTL1_FRAC )); - pll_freq =div_u64 (parent_rate * n,100 * m * p); +/* convert 24-bit fraction to 3 decimal digits, rounding to closest */ + n = n *1000 +DIV_ROUND_CLOSEST_ULL ((u64 )x *1000 ,1ULL <<24 ); + pll_freq =div_u64 ((u64 )parent_rate * n,1000 * m * p); }return pll_freq; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 84/1815 clk: nuvoton: ma35d1: fix ma35d1_clk_pll_determine_rate logic
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joey Lu <[email protected]>
[ Upstream commit e1311954cb600d5f95cd9e2fe9a7376edc2ac3c5 ]
ma35d1_clk_pll_determine_rate() called ma35d1_pll_find_closest() unconditionally before the switch statement, and then every case branch overwrote pll_freq by reading the current hardware registers. For CAPLL and DDRPLL this means find_closest() ran unnecessarily (and incorrectly, since those PLLs are read-only) and its result was silently discarded.
Fix by moving the find_closest() call inside the APLL/EPLL/VPLL branch where it belongs. Group CAPLL and DDRPLL together as read-only PLLs that simply report their current rate; handle them with an explicit if/else to keep the CAPLL (SMIC design) and DDRPLL (standard design) paths distinct.
--- drivers/clk/nuvoton/clk-ma35d1-pll.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-)
drivers/clk/nuvoton/clk-ma35d1-pll.c +13 -13
@@ -255,32 +255,32 @@ static int ma35d1_clk_pll_determine_rate(struct clk_hw *hw,if (req->best_parent_rate <PLL_FREF_MIN_FREQ || req->best_parent_rate >PLL_FREF_MAX_FREQ )return -EINVAL ; - ret =ma35d1_pll_find_closest (pll, req->rate, req->best_parent_rate, - reg_ctl, &pll_freq); -if (ret <0 ) -return ret; -switch (pll->id) {case CAPLL : +case DDRPLL : +/* Read-only PLLs: return current rate */ reg_ctl[0 ] =readl_relaxed (pll->ctl0_base); - pll_freq =ma35d1_calc_smic_pll_freq (reg_ctl[0 ], req->best_parent_rate); +if (pll->id ==CAPLL ) { + pll_freq =ma35d1_calc_smic_pll_freq (reg_ctl[0 ], req->best_parent_rate); + }else { + reg_ctl[1 ] =readl_relaxed (pll->ctl1_base); + pll_freq =ma35d1_calc_pll_freq (pll->mode, reg_ctl, req->best_parent_rate); + } req->rate = pll_freq; -return 0 ; -case DDRPLL :case APLL :case EPLL :case VPLL : - reg_ctl[0 ] =readl_relaxed (pll->ctl0_base); - reg_ctl[1 ] =readl_relaxed (pll->ctl1_base); - pll_freq =ma35d1_calc_pll_freq (pll->mode, reg_ctl, req->best_parent_rate); +/* Configurable PLLs: find closest achievable rate */ + ret =ma35d1_pll_find_closest (pll, req->rate, req->best_parent_rate, + reg_ctl, &pll_freq); +if (ret <0 ) +return ret; req->rate = pll_freq; -return 0 ; } req->rate =0 ; -return 0 ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 85/1815 clk: stm32: add missing bitfield.h header
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rosen Penev <[email protected]>
[ Upstream commit 0bf68e8dcb843f094ed73c2c54e9fe58a7a4f774 ]
It seems some ARM header includes this and the build passes there, but nowhere else. Note that the driver has COMPILE_TEST in depends.
--- drivers/clk/stm32/clk-stm32mp21.c | 1 + drivers/clk/stm32/clk-stm32mp25.c | 1 + 2 files changed, 2 insertions(+)
drivers/clk/stm32/clk-stm32mp21.c +1 -0
@@ -4,6 +4,7 @@* Author: Gabriel Fernandez <[email protected]> for STMicroelectronics. */ +#include <linux/bitfield.h> #include <linux/bus/stm32_firewall_device.h> #include <linux/clk-provider.h> #include <linux/io.h>
drivers/clk/stm32/clk-stm32mp25.c +1 -0
@@ -4,6 +4,7 @@* Author: Gabriel Fernandez <[email protected]> for STMicroelectronics. */ +#include <linux/bitfield.h> #include <linux/bus/stm32_firewall_device.h> #include <linux/clk-provider.h> #include <linux/io.h>
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 86/1815 ASoC: rt700-sdw: always drain jack work on remove
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Runyu Xiao <[email protected]>
[ Upstream commit 612ccf42acd14bb2685fa60c3495ca13e63e8989 ]
rt700_sdw_remove() drains jack_detect_work and jack_btn_check_work only when rt700->hw_init is true. That state bit is cleared by rt700_update_status() when the SoundWire slave becomes UNATTACHED, but a jack work item can already have been queued by rt700_interrupt_callback() or rt700_jack_init() while the device was initialized.
Do not use hw_init as the remove-time guard for draining these work objects. The delayed works are initialized during rt700_init(), so remove can cancel them unconditionally and pair the object lifetime with the codec-private data lifetime instead of a mutable hardware state bit.
This issue was found by our static analysis tool and then confirmed by manual review of the SoundWire status, interrupt and remove paths. The remove path should drain work based on whether the work object exists, not on a runtime hardware state bit that can change after the work was queued.
A QEMU PoC queued jack_detect_work, simulated SDW_SLAVE_UNATTACHED, and then entered remove. DEBUG_OBJECTS reported an active timer/work object associated with the rt700 jack work path after remove skipped the cancel.
This is sent as an RFC because the practical trigger depends on SoundWire core remove ordering after an UNATTACHED status update. If remove cannot run after hw_init has been cleared while jack work is still pending, this is a defensive lifecycle cleanup rather than a reachable race on current systems.
--- sound/soc/codecs/rt700-sdw.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
sound/soc/codecs/rt700-sdw.c +2 -4
@@ -458,10 +458,8 @@ static void rt700_sdw_remove(struct sdw_slave *slave) {struct rt700_priv *rt700 =dev_get_drvdata (&slave->dev); -if (rt700->hw_init) { -cancel_delayed_work_sync (&rt700->jack_detect_work); -cancel_delayed_work_sync (&rt700->jack_btn_check_work); - } +cancel_delayed_work_sync (&rt700->jack_detect_work); +cancel_delayed_work_sync (&rt700->jack_btn_check_work);pm_runtime_disable (&slave->dev); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 87/1815 ASoC: fsl_audmix: rework runtime PM handling in probe
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shengjiu Wang <[email protected]>
[ Upstream commit 3359ba93d01a23b2e4249e9e44ccfe48eb9c5d71 ]
After pm_runtime_enable() the AUDMIX block is powered off and stays suspended until the first runtime resume. Register writes issued between probe() and the first resume (e.g. from DAPM or ALSA control paths) target unpowered hardware and cause a system hang.
Fix this by calling pm_runtime_resume_and_get() immediately after pm_runtime_enable() to power the hardware up and enable its clocks. Release the reference afterwards with pm_runtime_put() to allow the runtime PM framework to suspend the device and switch the regmap to cache-only mode when idle.
When CONFIG_PM is disabled or runtime PM is not enabled, pm_runtime_* calls are stubs that do not power up the hardware. Handle this case explicitly by calling fsl_audmix_runtime_resume() directly so the hardware is always initialised and its clocks are enabled, ensuring register accesses succeed regardless of PM configuration.
--- sound/soc/fsl/fsl_audmix.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-)
sound/soc/fsl/fsl_audmix.c +22 -2
@@ -457,6 +457,9 @@ static const struct of_device_id fsl_audmix_ids[] = { };MODULE_DEVICE_TABLE (of, fsl_audmix_ids); +static int fsl_audmix_runtime_resume (struct device *dev); +static int fsl_audmix_runtime_suspend (struct device *dev); +static int fsl_audmix_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -488,13 +491,25 @@ static int fsl_audmix_probe(struct platform_device *pdev)spin_lock_init (&priv->lock);platform_set_drvdata (pdev, priv);pm_runtime_enable (dev); +if (!pm_runtime_enabled (dev)) { + ret =fsl_audmix_runtime_resume (dev); +if (ret) + goto err_disable_pm; + } + + ret =pm_runtime_resume_and_get (dev); +if (ret <0 ) + goto err_pm_get_sync; + +/* To enable regmap cache only when runtime PM enabled */ +pm_runtime_put (dev); ret =devm_snd_soc_register_component (dev, &fsl_audmix_component, fsl_audmix_dai,ARRAY_SIZE (fsl_audmix_dai));if (ret) {dev_err (dev,"failed to register ASoC DAI\n" ); - goto err_disable_pm; + goto err_pm_get_sync; }/*
@@ -506,12 +521,15 @@ static int fsl_audmix_probe(struct platform_device *pdev)if (IS_ERR (priv->pdev)) { ret =PTR_ERR (priv->pdev);dev_err (dev,"failed to register platform: %d\n" , ret); - goto err_disable_pm; + goto err_pm_get_sync; } }return 0 ; +err_pm_get_sync: +if (!pm_runtime_status_suspended (dev)) +fsl_audmix_runtime_suspend (dev); err_disable_pm:pm_runtime_disable (dev);return ret;
@@ -522,6 +540,8 @@ static void fsl_audmix_remove(struct platform_device *pdev)struct fsl_audmix *priv =dev_get_drvdata (&pdev->dev);pm_runtime_disable (&pdev->dev); +if (!pm_runtime_status_suspended (&pdev->dev)) +fsl_audmix_runtime_suspend (&pdev->dev);if (priv->pdev)platform_device_unregister (priv->pdev);
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 88/1815 arm64: dts: imx8mp-frdm: Add missing HDMI DDC pinctrl
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Philipp Zabel <[email protected]>
[ Upstream commit c33b03ac7ff7ca0267ae7a4284a2b9258483614d ]
Configure HDMI DDC SCL/SDA pins to support reading EDID.
--- arch/arm64/boot/dts/freescale/imx8mp-frdm.dts | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/freescale/imx8mp-frdm.dts +2 -0
@@ -562,6 +562,8 @@ MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02 0x10 pinctrl_hdmi: hdmigrp { fsl,pins = < + MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL 0x1c2 + MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA 0x1c2 MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC 0x10 >; };
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 89/1815 clk: hisilicon: reset: Use devm_kzalloc to initialize hisi_reset_controller
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Min zhang <[email protected]>
[ Upstream commit a8036f4591542de4b38ec81d3e2ba47bc0b2652b ]
Using devm_kmalloc() does not zero-initialize the allocated structure. Uninitialized members in struct hisi_reset_controller may contain garbage data, which can cause reset_controller_register() to fail unexpectedly.
Replace devm_kmalloc() with devm_kzalloc() to ensure all structure fields are properly zero-initialized.
--- drivers/clk/hisilicon/reset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clk/hisilicon/reset.c +1 -1
@@ -91,7 +91,7 @@ struct hisi_reset_controller *hisi_reset_init(struct platform_device *pdev) {struct hisi_reset_controller *rstc; - rstc =devm_kmalloc (&pdev->dev,sizeof (*rstc),GFP_KERNEL ); + rstc =devm_kzalloc (&pdev->dev,sizeof (*rstc),GFP_KERNEL );if (!rstc)return NULL ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 90/1815 ARM: imx: fix device_node refcount leak in imx_src_init()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Weigang He <[email protected]>
[ Upstream commit 936407c3563ac745cbbb9953c0cf2472128a22f4 ]
imx_src_init() obtains a device_node reference via of_find_compatible_node() matching "fsl,imx51-src" and uses it only to call of_iomap(). It never releases that reference: on the success path the function returns at the end without of_node_put(np), leaking one device_node refcount on every boot of an i.MX5/6 platform.
Release the reference right after of_iomap(). of_iomap() maps the node's registers but does not retain a reference to the device_node, so the node can be put once the mapping is done. The early return on a NULL np needs no put.
Found by static analysis tool CodeQL.
--- arch/arm/mach-imx/src.c | 1 + 1 file changed, 1 insertion(+)
arch/arm/mach-imx/src.c +1 -0
@@ -171,6 +171,7 @@ void __init imx_src_init(void)if (!np)return ; src_base =of_iomap (np,0 ); +of_node_put (np);WARN_ON (!src_base);/*
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 91/1815 ARM: imx: fix device_node refcount leaks in imx7_src_init()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Weigang He <[email protected]>
[ Upstream commit 3de939b2ac843d56d88e2ab1e1b1f667cba9e1d4 ]
imx7_src_init() obtains two device_node references via of_find_compatible_node() - one for "fsl,imx7d-src" and one for "fsl,imx7d-gpc" - reusing the same np variable, but never calls of_node_put() on either. On every i.MX7D boot up to two device_node refcounts are leaked:
- The "fsl,imx7d-src" node is leaked both when of_iomap() fails (the early return after the mapping) and when it succeeds, because np is then overwritten by the second of_find_compatible_node() call without releasing the prior reference.
- The "fsl,imx7d-gpc" node is leaked on every path leaving the function after it is acquired.
Release each reference immediately after of_iomap() consumes the node. of_iomap() maps the node's registers but does not retain a reference to the device_node, so it is safe to put the node once mapped; this also drops the first reference before np is reused for the second lookup.
Found by static analysis tool CodeQL.
--- arch/arm/mach-imx/src.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/mach-imx/src.c +2 -0
@@ -196,6 +196,7 @@ void __init imx7_src_init(void)return ; src_base =of_iomap (np,0 ); +of_node_put (np);if (!src_base)return ;
@@ -204,6 +205,7 @@ void __init imx7_src_init(void)return ; gpc_base =of_iomap (np,0 ); +of_node_put (np);if (!gpc_base)return ; }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 92/1815 ARM: OMAP2+: Fix OF node reference leaks in omap_hwmod
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuho Choi <[email protected]>
[ Upstream commit 76103814279724e5c98b1c16a730f56ebede9f74 ]
The OF helpers that return device nodes acquire references that must be released by the caller.
_init() leaks the "ocp" bus node returned by of_find_node_by_name() on all paths after lookup, and also leaks the child returned by of_get_next_child() when parsing module flags. Route the post-lookup returns through a common cleanup path and release the child after use.
omap_hwmod_setup_earlycon_flags() leaks the /chosen node and the UART node resolved from stdout-path. Track them separately and drop both references after use.
--- arch/arm/mach-omap2/omap_hwmod.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-)
arch/arm/mach-omap2/omap_hwmod.c +18 -8
@@ -2331,13 +2331,15 @@ static int __init _init(struct omap_hwmod *oh, void *data)if (r <0 ) {WARN (1 ,"omap_hwmod: %s: doesn't have mpu register target base\n" , oh->name); -return 0 ; + r =0 ; + goto out_put_node; } r =_init_clocks (oh, np);if (r <0 ) {WARN (1 ,"omap_hwmod: %s: couldn't init clocks\n" , oh->name); -return -EINVAL ; + r = -EINVAL ; + goto out_put_node; }if (np) {
@@ -2345,13 +2347,19 @@ static int __init _init(struct omap_hwmod *oh, void *data)parse_module_flags (oh, np); child =of_get_next_child (np,NULL ); -if (child) +if (child) {parse_module_flags (oh, child); +of_node_put (child); + } } oh->_state = _HWMOD_STATE_INITIALIZED; -return 0 ; + r =0 ; + +out_put_node: +of_node_put (bus); +return r; }/**
@@ -3608,13 +3616,13 @@ int omap_hwmod_init_module(struct device *dev,#ifdef CONFIG_SERIAL_EARLYCON static void __init omap_hwmod_setup_earlycon_flags (void ) { -struct device_node *np; +struct device_node *np, *chosen;struct omap_hwmod *oh;const char *uart; - np =of_find_node_by_path ("/chosen" ); -if (np) { - uart =of_get_property (np,"stdout-path" ,NULL ); + chosen =of_find_node_by_path ("/chosen" ); +if (chosen) { + uart =of_get_property (chosen,"stdout-path" ,NULL );if (uart) { np =of_find_node_by_path (uart);if (np) {
@@ -3629,8 +3637,10 @@ static void __init omap_hwmod_setup_earlycon_flags(void)if (oh) oh->flags |= DEBUG_OMAPUART_FLAGS; } +of_node_put (np); } } +of_node_put (chosen); }#endif
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 93/1815 firmware: imx: sm-misc: Add NULL check for kmalloc in syslog_show
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Jun <[email protected]>
[ Upstream commit 4cf26bc2e7e099c86127d63ed7272753da45737e ]
Add a proper NULL check for the kmalloc() return value in syslog_show(). If memory allocation fails, syslog would be NULL and passing it to misc_syslog() could lead to a NULL pointer dereference.
--- drivers/firmware/imx/sm-misc.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/firmware/imx/sm-misc.c +3 -0
@@ -79,6 +79,9 @@ static int syslog_show(struct seq_file *file, void *priv)u16 size =SZ_4K /4 ;int ret; +if (!syslog) +return -ENOMEM ; +if (!ph)return -ENODEV ;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 94/1815 arm64: dts: imx93-kontron: set memory node to 0x80000000/1GiB
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Frieder Schrempf <[email protected]>
[ Upstream commit 9c269fe7eae8cb60d8d6c326dd8955818722fae9 ]
The start address of the DRAM area is 0x80000000. The minimal size of the DDR on the SoM is 1 GiB.
--- arch/arm64/boot/dts/freescale/imx93-kontron-osm-s.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/freescale/imx93-kontron-osm-s.dtsi +2 -2
@@ -15,9 +15,9 @@ aliases { rtc1 = &bbnsm_rtc; }; - memory@40000000 { + memory@80000000 { device_type = "memory"; - reg = <0x0 0x40000000 0 0x80000000>; + reg = <0x0 0x80000000 0 0x40000000>; }; chosen {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 95/1815 arm64: dts: freescale: imx95-toradex-smarc: add alias for lpuart5
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Francesco Dolcini <[email protected]>
[ Upstream commit 3385e2f77182469940c136b9eeedf01f27b7441f ]
Add alias for lpuart5 so the UART gets a stable line number. Without this alias, the lpuart driver fails:
fsl-lpuart 42590000.serial: failed to get alias id, errno -19
This prevents the Bluetooth controller connected to this UART from working.
--- arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi +1 -0
@@ -24,6 +24,7 @@ aliases { serial1 = &lpuart1; serial2 = &lpuart6; serial3 = &lpuart3; + serial4 = &lpuart5; }; chosen {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 96/1815 arm64: dts: imx8mp-ab2: Enable MU2 for DSP communication
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shengjiu Wang <[email protected]>
[ Upstream commit b1b6c1c4d3c63d8097c933009bdb618d1be18305 ]
Enable the MU2 (Message Unit 2) node on the i.MX8MP Audio Board v2. MU2 is required for inter-processor communication between the application CPU and the HiFi4 DSP, allowing DSP firmware to exchange control and status messages with the Linux host.
Without this change, the DSP driver cannot establish the message channel and DSP audio processing is non-functional.
--- arch/arm64/boot/dts/freescale/imx8mp-ab2.dts | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/freescale/imx8mp-ab2.dts +4 -0
@@ -775,6 +775,10 @@ &micfil { status = "okay"; }; +&mu2 { + status = "okay"; +}; + &pwm1 { pinctrl-0 = <&pinctrl_pwm1>; pinctrl-names = "default";
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 97/1815 clk: imx: scu: drop redundant init.ops variable assignment
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brian Masney <[email protected]>
[ Upstream commit 5f2db1ce201216e81333ecc2ab51494410b2fe0d ]
The init.ops is assigned a default value, however right below it is an if, else if, and else where all of them also assign a value to init.ops. Drop the redundant init.ops assignment at the top.
--- drivers/clk/imx/clk-scu.c | 1 - 1 file changed, 1 deletion(-)
drivers/clk/imx/clk-scu.c +0 -1
@@ -475,7 +475,6 @@ struct clk_hw *__imx_clk_scu(struct device *dev, const char *name, clk->clk_type = clk_type; init.name = name; - init.ops = &clk_scu_ops;if (rsrc_id ==IMX_SC_R_A35 || rsrc_id ==IMX_SC_R_A53 || rsrc_id ==IMX_SC_R_A72 ) init.ops = &clk_scu_cpu_ops;else if (rsrc_id ==IMX_SC_R_PI_0_PLL )
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 98/1815 drm/lima: call drm_mm_init() with a valid allocation range
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Henrik Grimler <[email protected]>
[ Upstream commit 3b3bce4a692ac60d9f4a341e6b597dd1fd0a28f9 ]
lima_vm_create() is currently run before va_start and va_end are set up, meaning they are both 0. lima_vm_create() runs drm_mm_init() with them as arguments for the allocator, and if DRM_DEBUG_MM is enabled the DRM_MM_BUG_ON check in drm_mm_init then fires, as seen here on exynos4412-odroid-u2:
[ 1.736297] ------------[ cut here ]------------ [ 1.740370] kernel BUG at drivers/gpu/drm/drm_mm.c:931! [ 1.745574] Internal error: Oops - BUG: 0 [#1] SMP ARM [ 1.750697] Modules linked in: [ 1.753734] CPU: 0 UID: 0 PID: 41 Comm: kworker/u16:1 Not tainted 7.0.10-postmarketos-exynos4 #11 PREEMPT [ 1.763372] Hardware name: Samsung Exynos (Flattened Device Tree) [ 1.769446] Workqueue: events_unbound deferred_probe_work_func [ 1.775261] PC is at drm_mm_init+0x9c/0xa4 [ 1.779339] LR is at lima_vm_create+0x144/0x17c
[ ... ]
Fix the issue by moving the lima_vm_create() call after va_start and va_end are set up.
--- drivers/gpu/drm/lima/lima_device.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/gpu/drm/lima/lima_device.c +6 -6
@@ -368,12 +368,6 @@ int lima_device_init(struct lima_device *ldev)if (err) goto err_out0; - ldev->empty_vm =lima_vm_create (ldev); -if (!ldev->empty_vm) { - err = -ENOMEM ; - goto err_out1; - } - ldev->va_start =0 ;if (ldev->id == lima_gpu_mali450) { ldev->va_end =LIMA_VA_RESERVE_START ;
@@ -387,6 +381,12 @@ int lima_device_init(struct lima_device *ldev) }else ldev->va_end =LIMA_VA_RESERVE_END ; + ldev->empty_vm =lima_vm_create (ldev); +if (!ldev->empty_vm) { + err = -ENOMEM ; + goto err_out1; + } + ldev->iomem =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (ldev->iomem)) {dev_err (ldev->dev,"fail to ioremap iomem\n" );
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 99/1815 mm/mm_init: fix incorrect node_spanned_pages
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wei Yang <[email protected]>
[ Upstream commit 7783dcd79ae9c4aa48bc47bd4275772445dc4b2a ]
Current node_spanned_pages is got as a summation of all zone's spanned page in calculate_node_totalpages(). Generally this is good, but if we use kernelcore=mirror, it is would be wrong.
Without kernelcore=mirror:
The test machine has below memory layout:
memory[0x0] [0x0000000000001000-0x000000000009efff], 0x000000000009e000 bytes on node 0 flags: 0x0
memory[0x1] [0x0000000000100000-0x00000000bffdefff], 0x00000000bfedf000 bytes on node 0 flags: 0x0
memory[0x2] [0x0000000100000000-0x00000001bfffffff], 0x00000000c0000000 bytes on node 0 flags: 0x0
And the Zone range is:
DMA [mem 0x0000000000001000-0x0000000000ffffff]
DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
Normal [mem 0x0000000100000000-0x00000001bfffffff]
Then we see, with spanned_pages printed:
On node 0 spanned_pages: 1835007 totalpages: 1572733With kernelcore=mirror:
The test machine has below memory layout:
memory[0x0] [0x0000000000001000-0x000000000009efff], 0x000000000009e000 bytes on node 0 flags: 0x2
memory[0x1] [0x0000000000100000-0x00000000bffdefff], 0x00000000bfedf000 bytes on node 0 flags: 0x2
memory[0x2] [0x0000000100000000-0x000000013fffffff], 0x0000000040000000 bytes on node 0 flags: 0x2
memory[0x3] [0x0000000140000000-0x00000001bfffffff], 0x0000000080000000 bytes on node 0 flags: 0x0
And the Zone range is:
DMA [mem 0x0000000000001000-0x0000000000ffffff]
DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
Normal [mem 0x0000000100000000-0x00000001bfffffff]
Device empty
Movable zone start for each node
Node 0: 0x0000000140000000
Then we see, with spanned_pages printed:
On node 0 spanned_pages: 2359295 totalpages: 1572733The total range of memory on node 0 doesn't change, but the spanned_pages becomes much larger.
The reason is when kernelcore=mirror is specified, the range of Zone Normal and Zone Movable would overlap. So the overlapped range would be calculated twice.
A wrong node_spanned_pages would effect defer_init(), since each zone_end_pfn is less than pgdat_end_pfn().
As we already passed in node_start_pfn and node_end_pfn, fix this by get it from (node_start_pfn - node_end_pfn) directly.
--- mm/mm_init.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
mm/mm_init.c +2 -3
@@ -1338,7 +1338,7 @@ static void __init calculate_node_totalpages(struct pglist_data *pgdat,unsigned long node_start_pfn, unsigned long node_end_pfn) { - unsigned long realtotalpages = 0, totalpages = 0; + unsigned long realtotalpages = 0;enum zone_type i;for (i =0 ; i <MAX_NR_ZONES ; i++) {
@@ -1368,11 +1368,10 @@ static void __init calculate_node_totalpages(struct pglist_data *pgdat, zone->present_early_pages = real_size;#endif - totalpages += spanned; realtotalpages += real_size; } - pgdat->node_spanned_pages = totalpages; + pgdat->node_spanned_pages = node_end_pfn - node_start_pfn; pgdat->node_present_pages = realtotalpages;pr_debug ("On node %d totalpages: %lu\n" , pgdat->node_id, realtotalpages); }
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 100/1815 sched/core: Fix inter-class wakeup_preempt()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <[email protected]>
[ Upstream commit fa02b2868420d9f33d64ddcb15ef0f96880b2a6d ]
The way wakeup_preempt() works since commit 704069649b5b ("sched/core: Rework sched_class::wakeup_preempt() and rq_modified_*()") is that it will call rq->next_class->wakeup_preempt(rq, p) when p is of an equal or higher class, and raise ->next_class when higher.
This means that:
running idle task
wakeup fair-A
(next_class == idle)
if (sched_class_above(fair, idle)) {
wakeup_preempt_idle(fair-A);
resched_curr(rq);
next_class = fair;
}
wakeup fair-B
(next_class == fair)
if (fair == fair)
wakeup_preempt_fair(fair-B);
(but current is idle)All wakeup_preempt_$class() methods, except for wakeup_preempt_scx() (for whoem this was build) ignore cross-class wakeups by testing if @p is of the right class, but per the above case, it also should check current.
This is mostly harmless in the current form, but will lead to trouble with later patches.
--- kernel/sched/deadline.c | 6 ++++-- kernel/sched/fair.c | 3 ++- kernel/sched/rt.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-)
kernel/sched/deadline.c +4 -2
@@ -2734,15 +2734,17 @@ static int balance_dl(struct rq *rq, struct rq_flags *rf)*/ static void wakeup_preempt_dl (struct rq *rq,struct task_struct *p,int flags) { +struct task_struct *donor = rq->donor;/* * Can only get preempted by stop-class, and those should be * few and short lived, doesn't really make sense to push * anything away for that. */ -if (p->sched_class != &dl_sched_class) +if (p->sched_class != &dl_sched_class || + donor->sched_class != &dl_sched_class)return ; -if (dl_entity_preempt (&p->dl, &rq->donor->dl)) { +if (dl_entity_preempt (&p->dl, &donor->dl)) {resched_curr (rq);return ; }
kernel/sched/fair.c +2 -1
@@ -9780,7 +9780,8 @@ static void wakeup_preempt_fair(struct rq *rq, struct task_struct *p, int wake_f/* * XXX Getting preempted by higher class, try and find idle CPU? */ -if (p->sched_class != &fair_sched_class) +if (p->sched_class != &fair_sched_class || + donor->sched_class != &fair_sched_class)return ;if (unlikely (se == pse))
kernel/sched/rt.c +2 -1
@@ -1629,7 +1629,8 @@ static void wakeup_preempt_rt(struct rq *rq, struct task_struct *p, int flags)/* * XXX If we're preempted by DL, queue a push? */ -if (p->sched_class != &rt_sched_class) +if (p->sched_class != &rt_sched_class || + donor->sched_class != &rt_sched_class)return ;if (p->prio < donor->prio) {
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 101/1815 sched/fair: Fix overflow in update_tg_cfs_runnable()
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen, Yu C <[email protected]>
[ Upstream commit 4f166adb5cb0525d9e32d45729fd8f28c80acbee ]
A divide-by-zero crash is observed when running hackbench:
[14697.488452] CPU: 112 UID: 0 PID: 124791 Comm: hackbench Not tainted 7.1.0-rc2+ [14697.492627] RIP: 0010:propagate_entity_load_avg+0x35f/0x3e0 [14697.506799] <TASK> [14697.507411] __dequeue_task+0x2b4/0xc70 [14697.508677] dequeue_task_fair+0x36/0x370 [14697.509047] dequeue_task+0x101/0x2f0 [14697.509426] __schedule+0x1b1/0x1a00 [14697.510868] anon_pipe_read+0x3da/0x450 [14697.511400] vfs_read+0x361/0x390 [14697.512053] __x64_sys_read+0x19/0x30
The divide-by-zero happens here:
if (scale_load_down(gcfs_rq->load.weight)) {
load_sum = div_u64(gcfs_rq->avg.load_sum,
scale_load_down(gcfs_rq->load.weight));
}gcfs_rq->load.weight is an insane large value and is truncated to the lower 32 bits by div_u64, which happen to be 0.
Using AI for investigation, the cause is a u32 overflow in update_tg_cfs_runnable(), and flat pickup became a victim when using tg_tasks():
u32 new_sum, divider;
...
new_sum = se->avg.runnable_avg * divider; <-- boom
The following sequence shows how this triggers the crash:
propagate_entity_load_avg()
update_tg_cfs_runnable() # u32 overflow corrupts runnable_sum
__update_load_avg_cfs_rq()
___update_load_avg() # computes insane runnable_avg
update_tg_load_avg() # propagates to tg->runnable_avg
update_cfs_group()
calc_concur_shares()
tg_tasks() # long-to-int truncation, negative nr
reweight_entity() # corrupted se->load.weight
update_load_add() # corrupted cfs_rq->load.weight propagate_entity_load_avg()
update_tg_cfs_load()
div_u64() # divide-by-zero
Fix by widening new_sum from u32 to u64 (no need to force tg_tasks() to return unsigned long after this fix)
--- kernel/sched/fair.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
kernel/sched/fair.c +3 -2
@@ -5174,7 +5174,8 @@ static inline void update_tg_cfs_runnable(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq *gcfs_rq) { long delta_sum, delta_avg = gcfs_rq->avg.runnable_avg - se->avg.runnable_avg; -u32 new_sum, divider; +u64 new_sum; +u32 divider;/* Nothing to update */ if (!delta_avg)
@@ -5188,7 +5189,7 @@ update_tg_cfs_runnable(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cf/* Set new sched_entity's runnable */ se->avg.runnable_avg = gcfs_rq->avg.runnable_avg; - new_sum = se->avg.runnable_avg * divider; + new_sum = (u64 )se->avg.runnable_avg * divider; delta_sum = (long )new_sum - (long )se->avg.runnable_sum; se->avg.runnable_sum = new_sum;
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 102/1815 perf/x86/intel/uncore: Keep PCI PMUs working when MMIO/MSR setup fails
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zide Chen <[email protected]>
[ Upstream commit 3012af7df3430788eddd30b3c6654d0a0a5f06c6 ]
uncore_event_cpu_online() returns -ENOMEM early when both the MSR and MMIO box allocations fail. This also aborts PCI uncore setup, even though PCI PMUs are independent of the MSR/MMIO paths.
Remove the early return so PCI uncore setup always runs regardless of whether MSR or MMIO box allocation succeeds.
--- arch/x86/events/intel/uncore.c | 2 -- 1 file changed, 2 deletions(-)
arch/x86/events/intel/uncore.c +0 -2
@@ -1631,8 +1631,6 @@ static int uncore_event_cpu_online(unsigned int cpu) die =topology_logical_die_id (cpu); msr_ret =uncore_box_ref (uncore_msr_uncores, die, cpu); mmio_ret =uncore_box_ref (uncore_mmio_uncores, die, cpu); -if (msr_ret && mmio_ret) -return -ENOMEM ;/* * Check if there is an online cpu in the package
Signature · 1 line
2.53.0
Greg Kroah-Hartman
maintainerPATCH 103/1815 perf/x86/intel/uncore: Fix PCI PMU cleanup on setup failure
In reply to Greg Kroah-Hartman7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zide Chen <[email protected]>
[ Upstream commit 003267cb94e21d762eb72d6977d84f44f1705bb7 ]
When uncore_pci_pmu_register() fails, pmu->boxes[die] is set to NULL before returning. In the uncore_pci_remove() path, this causes uncore_pci_pmu_unregister() to be skipped entirely, leaking pmu->activeboxes. In the uncore_bus_notify() path, uncore_pci_pmu_unregister() may still be called and must exit early when pmu->boxes[die] is NULL to avoid a NULL pointer dereference, and to ensure activeboxes is only decremented for a previously active box.
Additionally, since pci_get_drvdata() returns NULL on registration failure, uncore_pci_remove() can no longer treat NULL drvdata as an indicator of an auxiliary PCI device. Remove the associated WARN_ON_ONCE().
Stable-dep-of: 174f0582e38a ("perf/x86/intel/uncore: Fix uncore_box ref/unref ordering")
--- arch/x86/events/intel/uncore.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
arch/x86/events/intel/uncore.c +4 -1
@@ -1183,6 +1183,7 @@ static int uncore_pci_pmu_register(struct pci_dev *pdev,/* First active box registers the pmu */ ret =uncore_pmu_register (pmu);if (ret) { +atomic_dec (&pmu->activeboxes); pmu->boxes[die] =NULL ;uncore_box_exit (box);kfree (box);
@@ -1248,6 +1249,9 @@ static void uncore_pci_pmu_unregister(struct intel_uncore_pmu *pmu, int die) {struct intel_uncore_box *box = pmu->boxes[die]; +if (!box) +return ; + pmu->boxes[die] =NULL ;if (atomic_dec_return (&pmu->activeboxes) ==0 )uncore_pmu_unregister (pmu);
@@ -1272,7 +1276,6 @@ static void uncore_pci_remove(struct pci_dev *pdev)break ; } } -WARN_ON_ONCE (i >=UNCORE_EXTRA_PCI_DEV_MAX );return ; }
Signature · 1 line
2.53.0