summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
31 hoursMerge tag 'driver-core-7.4-rc1-3' of ↵HEADmasterLinus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core Pull more driver core fixes from Danilo Krummrich: - Revert TAINT_FORCED_BIND, introduced to flag manual sysfs bind/unbind operations associated with misleading fuzzing reports. It also taints established workflows, including VFIO device passthrough; a more targeted approach will be revisited after 7.4. - Rate limit synthetic uevent failure messages to prevent log flooding from repeated invalid writes to sysfs uevent files * tag 'driver-core-7.4-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core: Revert "driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers" driver core: Limit the messages on a refused uevent
32 hoursMerge tag 'fsverity-for-linus' of git://git.kernel.org/pub/scm/fs/fsverity/linuxLinus Torvalds
Pull fsverity fixes from Eric Biggers: "Fixes for several bugs found by LLMs: - Fix bypass of IPE's fsverity support, and a use-after-free in certain cases, when FS_IOC_ENABLE_VERITY fails when almost done - Fix FS_IOC_MEASURE_VERITY and FS_IOC_READ_VERITY_METADATA to no longer bypass Landlock and AppArmor's read permission checks - Be robust against the filesystem returning different values for a file's verity descriptor length in two successive queries" * tag 'fsverity-for-linus' of git://git.kernel.org/pub/scm/fs/fsverity/linux: fsverity: Set S_VERITY only after rollback is no longer possible fsverity: Tell LSMs about signature only after verity is enabled fsverity: Be more careful with return value of ->get_verity_descriptor() fsverity: Explicitly require FMODE_READ to retrieve hashes
32 hoursMerge tag 'pm-7.4-rc1-2' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull power management fixes from Rafael Wysocki: "These address assorted issues in the power management code and update documentation: - Fix potential out-of-bounds access in deferred reset in the cpufreq statistics code (Zhongqiu Han) - Cancel HWP notify work in the intel_pstate driver cleanup to prevent possible use-after-free from occurring (Tristan Madani) - Adjust state names and descriptions for ACPI _LPI idle states in the intel_idle driver to make them follow the driver's idle state naming convention (Rafael Wysocki) - Document the new pm_runtime_use_autosuspend() undo mechanism that triggers automatically on driver exit (Joshua Crofts) - Do not call suspend_ops->begin()/end() for suspend-to-idle to avoid driver confusion (Ovidiu Panait) - Make the energy model management code allocate the cpumask for non-CPU perf domains to prevent out-of-bounds reads from occurring in the EM netlink interface (Karl Mehltretter)" * tag 'pm-7.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: PM: runtime: clarify pm_runtime_use_autosuspend() undo mechanism cpufreq: stats: Fix potential out-of-bounds access in deferred reset PM: suspend: Do not call suspend_ops->begin()/end() for s2idle intel_idle: Adjust state names and descriptions for _LPI states PM: EM: allocate the cpumask for every perf domain cpufreq: intel_pstate: cancel HWP notify work in driver cleanup
33 hoursMerge tag 'acpi-7.4-rc1-2' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull ACPI support fixes from Rafael Wysocki: "These address assorted issues in ACPI support code and work around concurrency-related issues in AML on some platforms: - Separate handler locking from sysfs lifetime in the ACPI platform profile driver to avoid possible deadlocks due to sysfs accesses during driver removal (Daniel Lezcano) - Introduce additional locking around the evaluation of selected ACPI control methods in a few places to work around issues related to concurrency in AML on some platforms (Ali Ahmet Memiş) - Address two issues reported by Sashiko in the ACPI table data sysfs interface (Jamie Nguyen) - Initialize parser_state.aml_end in acpi_install_method() properly to avoid out-of-bounds accesses during control method installation (Ivan Hu)" * tag 'acpi-7.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI: sysfs: Finish sysfs init when creating a table file fails ACPI: sysfs: Map only the requested range in acpi_data_show() ACPICA: Initialize parser_state.aml_end in acpi_install_method() ACPI: platform_profile: Separate handler locking from sysfs lifetime platform/x86: ideapad-laptop: Evaluate ACPI methods exclusively thermal: intel: int340x: Evaluate _TMP exclusively ACPI: battery: Evaluate battery methods exclusively ACPI: utils: Add exclusive AML evaluation helpers
36 hoursMerge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvmLinus Torvalds
Pull more KVM updates from Paolo Bonzini: "ARM64: - Fix a couple of embarrassing merge mistakes in kvmarm-7.4 - Cleanup the HCR_EL2 bit fields to exclusively use the generated definitions, fixings a nasty regression introduced in 6.16, where barriers were not upgraded from NSH to ISH anymore - Fix publication of state when a vcpu is forced out of the guest - Let vcpu pausing nest correctly - Sanitise ID_AA64MMFR3_EL1.S1P[IO]E to follow the rules of the architecture - Don't warn on SMCCC filter reserved range allocation failure - Prevent GICv5 and TLBI hypercalls to be used from the host when pKVM is active - Enforce that only GICv3 guests are supported for pKVM - Don't try to access GICv5 EL2 sysregs from EL1 - Compute architectrally correct values for ID_AA64MMFR3_EL1.S1P[IO]E by checking the feature dependencies - Require matching VGIC and ITS model - Cleanup TRACE_REMOTE dependencies - Fix random comments ARM64 selftests: - selftests: Skip unwritable ID fields in the failed-run test - Move pkvm_selftests() after all CPUs have initialized EL2 RISC-V: - Allow Zicclsm, Ziccamoa, Ziccif, Za64rs for KVM guest - Implement KVM_PRE_FAULT_MEMORY ioctl() - Replace imsic switch-case macros with range checks RISC-V fixes: - Avoid redundant interrupt check for pending timers - Reject vCPU creation after AIA initialization - Fix build with vector support disabled - Fix IPI delivery for out-of-order vcpu_id - Use a raw lock for IMSIC wakeup state - Reject vCPU creation after AIA initialization RISC-V selftests: - Lazy V-extension enablement for KVM selftests - Show sepc/scause/stval CSRs in KVM selftests vcpu dump" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (42 commits) KVM: selftests: Reject GICv3 ITS with a GICv5 VGIC KVM: arm64: vgic: Require matching VGIC and ITS models KVM: arm64: gic-v5: Drop unused addr variable KVM: arm64: Sanitise ID_AA64MMFR3_EL1.S1P[IO]E KVM: arm64: selftests: Skip unwritable ID fields in the failed-run test tracing/remotes: Fix TRACE_REMOTE build when TRACING=n KVM: arm64: Move pkvm_selftests() after all CPUs have initialized EL2 KVM: arm64: Get rid of compatibility HCR_EL2 aliases KVM: arm64: Convert HCR_xyz to HCR_EL2_xyz KVM: arm64: Set HCR_EL2.BSU to Inner Shareable for guests KVM: arm64: Fix stale VGICv3 comments in the nVHE world switch KVM: arm64: vgic: Do not access the GICv5 CPU interface from EL1 KVM: arm64: Validate the host-provided vgic model in pKVM KVM: arm64: Reject the stage-2 flush hypercalls under pKVM KVM: arm64: Return on kvm_gmem_get_pfn() failure in gmem_abort() KVM: riscv: selftest: add Zicclsm, Ziccamoa, Ziccif, Za64rs RISC-V: KVM: Allow Zicclsm, Ziccamoa, Ziccif, Za64rs in guest MAINTAINERS: name the kvm-riscv/linux riscv_kvm_next branch RISC-V: KVM: Don't write MMIO load result to x0 RISC-V: KVM: Use a raw lock for IMSIC wakeup state ...
36 hoursMerge tag 'loongarch-7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson Pull LoongArch updates from Huacai Chen: - Add LoongArch-specific ACPI initialization - Set NX compat flag in PE/COFF efi header - Use pa_to_nid()/nid_to_addrbase() rather than hard-code - Detect and expose LAMCAS/DIV32 feature existence - Fix and improve perf hardware breakpoints - Fix and improve BPF JIT (trampoline and 32-bit operations) - Add arch_crash_save_vmcoreinfo() support - Some bug fixes and other small changes * tag 'loongarch-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: (24 commits) soc: loongson: loongson2_guts: Use of_root instead of own reference soc: loongson: loongson2_pm: Fix build warnings for 32BIT LoongArch: dts: loongson-2k0500: Drop unsupported bus_id in DWMAC LoongArch: BPF: Optimize 32-bit operations using native instructions LoongArch: BPF: Clean up and decouple is32 parameter from move_imm() LoongArch: BPF: Fix stack arguments for indirect trampolines LoongArch: Add arch_crash_save_vmcoreinfo() support LoongArch: Fix one-shot limitation for perf hardware breakpoints LoongArch: Fix perf hardware breakpoint failure via installation LoongArch: Only send SIGTRAP signal if necessary in do_watch() LoongArch: Fix architectural naming typo for CSR_FWPS_SKIP LoongArch: Fix bitmask corruption in update_bp_registers() LoongArch: Remove redundant call in update_bp_registers() LoongArch: Remove arch-specific __smp_mb__{before,after}_atomic() LoongArch: Detect and expose DIV32 feature existence LoongArch: Detect and expose LAMCAS feature existence LoongArch: Use pa_to_nid()/nid_to_addrbase() rather than hard-code LoongArch: Don't init & online empty nodes LoongArch: Call cpu_final_simd() with pure_initcall() LoongArch: Use assign_bit() API where applicable ...
36 hoursMerge tag 'ceph-for-7.4-rc1' of https://github.com/ceph/ceph-clientLinus Torvalds
Pull ceph updates from Ilya Dryomov: "The two things of note here are the disablement of inline data support and a new lazyio mount option to enable LAZYIO behavior globally (instead of via an ioctl on a per-file basis), both from Xiubo. Despite being over a decade old, the inline data feature never lost its experimental status -- it has always been off by default and required passing --yes-i-really-mean-it flag to be turned on. It was officially deprecated in 2020 and is now in the process of being removed on the MDS side. For now it's still possible to re-enable it in Kconfig, but the code will eventually be dropped from the kernel client entirely. Outside of that we have a number of bug fixes, a series from Tal to help phase out older page APIs, some cleanups from Max and a large pile of LLM-based hardening patches. Xiubo is also back in a maintainer role, replacing Slava" * tag 'ceph-for-7.4-rc1' of https://github.com/ceph/ceph-client: (66 commits) ceph: fix uninitialized err in ceph_netfs_issue_read() MAINTAINERS: update ceph and libceph maintainers ceph: validate encoded xattr name lengths ceph: validate MDS reply fragtree split array length ceph: bound name skips in ceph_mdsmap_decode() by the message end ceph: validate fscrypt auth blob length ceph: check the caps of a closed file after caps_wanted_delay_min ceph: don't fail write_begin with -EAGAIN after flushing old snapc ceph: fail readdir when the MDS reply carries no dirfrag ceph: clamp MDS reply result code to the errno range libceph: initialize CRUSH choose argument weights libceph: fix out-of-bounds reads from repeated CRUSH bucket entries ceph: fix 32-bit overflow in readdir reply count check libceph: reject bad connect_seq in msgr1 READY reply ceph: Fix mds session leak in __open_export_target_session() ceph: Fix xattr buffer leak in __send_cap() ceph: fix integer overflow in the snap trace bounds check libceph: bound mon_command ack decode to front len ceph: use alloc_page() in fill_fscrypt_truncate() libceph: use alloc_page() in ceph_alloc_page_vector() ...
36 hoursMerge tag 'vfs-7.4-rc1.fixes' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs Pull vfs fixes from Christian Brauner: - writeback: - Update dirtied_when instead of dirtied_time_when when a wb switch puts an inode at the newest end of the target b_dirty list. The list was left out of order so move_expired_inodes() could stop before older inodes, and the lazytime expiration timestamp was reset - Clear the old wb's dirty-I/O state and bandwidth contribution when a batch of inode switches leaves its dirty lists empty. An empty wb stayed scheduled for periodic writeback and inflated bdi->tot_write_bandwidth - Take wb_switch_rwsem across the inode scan of cleanup_offline_cgwb(). The v7.3-rc5 fix that rotates scanned inodes let a scan racing a sync()'s queue_io() move lazytime inodes past the sync's cutoff, so sync() returned without persisting their timestamps - Don't kick writeback for an IOCB_DONTCACHE write on an inode that has no wb yet. With cgroup writeback an O_DIRECT RWF_DONTCACHE write to a block device dereferenced NULL - statmount/listmount/listns: - Refuse statmount() string requests with a buffer that isn't larger than struct statmount - Don't wrap around with a U64_MAX cursor in listmount() and listns() - Don't end listns() at an inactive namespace - Only add init_ipc_ns and init_net to the namespace trees if CONFIG_IPC_NS and CONFIG_NET_NS are enabled - iomap: - Only mark blocks uptodate in __iomap_write_begin() after reading them and let __iomap_write_end() mark the zeroed blocks uptodate once the copy from userspace succeeded - Check a chunk against max_integrity_io_size() on its own before the bio size check - Only enforce block alignment for direct I/O into holes and unwritten extents if IOMAP_DIO_FSBLOCK_ALIGNED is set - backing-file: - Check S_APPEND and S_IMMUTABLE on the backing inode. FUSE passthrough opens the backing file with vfs_open() which skips may_open(), so anyone who may open the FUSE file for writing could overwrite an append-only backing file anywhere or write to an immutable one. Open, mmap and writes now check the backing inode the way may_open() and do_mmap() do - Always call kiocb_end_write() for a queued write - Let backing files inherit FMODE_NONOTIFY from the user file. The event fds fanotify creates for permission events on a stacked filesystem raised FS_OPEN_PERM on the real path from inside the listener's read() and deadlocked listeners with marks on both layers - pidfs: - Look the task up before checking for exit information in PIDFD_GET_INFO and start over if the task no longer owns the pid once all fields have been read. A caller racing release_task() got neither PIDFD_INFO_PID nor PIDFD_INFO_EXIT or ESRCH although the exit information was available, and a caller racing a sub-thread's exec reported that thread's tid as the pid - Clear the mask bits of fields that lie beyond the struct size the caller passed. The uapi header promises that the mask names no such field but a caller passing PIDFD_INFO_SIZE_VER0 got the coredump and supported mask bits set for fields that were never written - aio: - Give the aio ring a ->read_folio that fails with EIO so a fault on a ring whose file was truncated gets SIGBUS instead of jumping to NULL - Check nr_events against the ring size before doubling it in ioctx_alloc() - splice: - Only write back an implicit file position in do_splice() when the splice helper succeeded. splice doesn't take f_pos_lock so a failed splice restored a stale snapshot over a position that a concurrent getdents() had moved. On ext2 the next readdir then trusted an offset inside a directory entry - Retry tee() when the input pipe was emptied or the output pipe filled between the prep steps and link_pipe() instead of returning 0 while the input pipe still has writers, as splice_pipe_to_pipe() does - ucount: - Take the reference that pins a ucounts level on the 0 -> 1 transition before checking the rlimit - Read the parent ucounts before dropping the rlimit count in do_dec_rlimit_put_ucounts() - inode: - Rotate inodes whose page cache couldn't be dropped to the tail of the LRU - Skip inodes that another LRU walker is isolating - setns: - Set nsset->flags before anything in prepare_nsset() can fail so the error path drops the cred prepared for CLONE_NEWUSER. A failing setns() with CLONE_NEWUSER and CLONE_NEWNS leaked it together with its user namespace - Refuse setns(CLONE_NEWNS) for a task that shares its fs_struct again when more namespaces are requested - minix: - Restore uptodate on the pinned bitmap buffers before redirtying them after a failed writeback instead of tripping the warning in mark_buffer_dirty(), as ext2 and ext4 do for their superblock buffers - Reject rmdir() of a directory with a corrupted link count with EFSCORRUPTED instead of hitting the drop_nlink() warning - userns: Keep the exec securebits and their locks when creating or joining a user namespace. set_cred_user_ns() reset all securebits to SECUREBITS_DEFAULT so anyone who may create a user namespace could shed SECBIT_EXEC_RESTRICT_FILE and SECBIT_EXEC_DENY_INTERACTIVE with a single unshare(CLONE_NEWUSER) - fs: Honor FOP_UNSIGNED_OFFSET in sys_llseek() and in the pread64(), pwrite64(), preadv() and pwritev() wrappers - proc/kcore: Advance the vmalloc retry in read_kcore_iter() by the last vread_iter() copy instead of the running total - eventpoll: Return the error when the wakeup source for EPOLLWAKEUP can't be created in EPOLL_CTL_MOD instead of reporting success without suspend protection - coredump: Mark do_coredump() noinline_for_stack - nsfs: Check the trailing bytes of a namespace file handle in bytes instead of words - netfs: Restore the per-level and per-point decoding of the debug mask - exportfs: Release the directory file get_name() opened with __fput_sync(). From nfsd's kernel threads the deferred fputs arrived faster than delayed_fput retired them and each pinned the directory's readdir state, growing unreclaimable slab by about 90 MB per second under a parallel tree walk - fs: Call ramfs_kill_sb() for a ramfs rootfs. Since rootfs can be unmounted as of v7.0 its struct ramfs_fs_info was leaked - signal: Check the blocked mask for every entry dequeue_synchronous_signal() looks at. The scan could select a blocked synchronous signal and deliver it while blocked - super: Convert the superblock device table from an rhltable to a plain hashtable under a spinlock. This fixes a bug from v7.3 where fs_bdev_freeze() froze a btrfs filesystem through a stale member that open_ctree() had already released while the freeze was waiting for SB_BORN - fork: Leave rcu_users at zero until copy_process() can't fail anymore. bpf_task_acquire() handed out trusted references to the new task from the task_alloc LSM hook and sched_ext's ops.init_task() and a failing fork freed the task behind them - xattr: Always run cap_convert_nscap() for a security.capability write. A zero-length setxattr() skipped it and let an unprivileged caller without CAP_SETFCAP or write permission on the file plant an empty security.capability xattr that made every execve() of the binary fail with EINVAL - namei: Skip the S_ISDIR assertion in - proc: Refuse to mount on entries below /proc/<pid>/net like fd/, fdinfo/ and map_files/. proc_net_d_revalidate() always fails so the first lookup by anyone with search permission ran d_invalidate() on the dentry and detached every mount on it, locked mounts included - libfs: Hold one mount reference for all pins instead of one per pin. The pin count is what keeps the mount alive, so the per-pin reference only cost a mntget() and a mntput() through mntput_no_expire_slowpath() for every debugfs, tracefs, securityfs or configfs file that comes and goes - iov_iter: Return 0 from iov_iter_alignment() for an empty iterator of any type - watch_queue: Give info_id its own storage instead of overlaying it with rcu_head - filelock: Take an active superblock reference while waiting for a delegation break. After a lazy umount closing the delegation holder could shut down the superblock under the waiter whose final iput() then ran shmem_evict_inode() on freed state - fs: Skip the copy_file_range() write limit checks when there is no data to copy - bpf: Allow bpf_d_path() from fentry on filp_close_sync(). Since close_range() became synchronous this cycle close(), close_range() and the closes on exec and exit no longer go through filp_close(). fexit stays rejected since the file may be gone by then - fs_pin: Dequeue the wait entry unconditionally in pin_kill(). A spuriously woken waiter kept its on-stack entry queued, took that as proof that the pin was alive and used the freed acct structure when umount() of the accounting file raced acct(2) - dcache: Don't fail __d_obtain_alias() for an inode without links and aliases. The ESTALE check added this cycle broke open_by_handle_at() and nfsd file handle decoding on NFS and FUSE where i_nlink is just what the server last reported and the handle may well still be valid - selftests/ovl: Fix the mountinfo expectations of the detached layer test which has failed since it was added * tag 'vfs-7.4-rc1.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (60 commits) fs: don't fail __d_obtain_alias() for unlinked inodes ns: don't add init_ipc_ns and init_net without namespace support aio: avoid request count overflow in ioctx_alloc() selftests/ovl: fix detached layer mountinfo expectations bpf: Allow bpf_d_path() from filp_close_sync() fs: skip copy_file_range write limits when there is no data minix: reject rmdir of a directory with a corrupted link count fs_pin: do not trust the pin after a spurious wakeup in pin_kill() ucount: read the parent ucounts before dropping the rlimit count splice: retry tee() instead of returning 0 when it races selftests/pidfd: test that fields beyond the struct size are not reported pidfs: do not report fields that do not fit into the caller's struct fs: let backing files inherit FMODE_NONOTIFY from the user file splice: avoid stale f_pos writeback on error backing-file: always end a queued write filelock: keep superblock active through delegation wait watch_queue: keep info_id separate from rcu_head iomap: only follow dio alignment requirement if specified iov_iter: fix NULL deref in iov_iter_alignment() backing-file: enforce append-only and immutable backing inodes ...
38 hoursMerge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsiLinus Torvalds
Pull more SCSI updates from James Bottomley: "A couple of late arriving driver updates (lpfc, ufs) with the main addition being the lock context analysis update where clang static analysis coupled with annotations are used to verify driver guarantees about locks and warn on compile if they're inconsistent. This is mostly annotations with only a few code changes (except in scsi_debug which needed a fairly big rework to validate with locking context analysis)" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (103 commits) scsi: ufs: core: Do not release a reserved request in ufshcd_abort() scsi: ufs: core: Remove completed-without-interrupt path in ufshcd_abort() scsi: ufs: core: Fix double release in ufshcd_eh_timed_out() scsi: ufs: core: Fix double completion in ufshcd_clear_lu_cmds() scsi: ufs: core: Add a helper for clearing hba->outstanding_reqs scsi: ufs: core: Remove an always-false WARN_ONCE() scsi: fnic: Update module authors scsi: ufs: qcom: Power down UFS during system suspend on Milos scsi: MAINTAINERS: Update Marvell Ethernet storage maintainers scsi: handle out-of-range SG_SET_TIMEOUT values scsi: core: Update cdrom.h coments scsi: st: MAINTAINERS: Add Laurence Oberman and John Meneghini scsi: sd: Mark the disk dead if runtime resume fails in sd_remove() scsi: libiscsi_tcp: Prevent R2T range check overflow scsi: ufs: core: Fix stale comment in ufshcd_mcq_config_nr_queues() scsi: fnic: Annotate fnic_nvme functions with __must_hold() scsi: ufs: core: Fix a deadlock between clock scaling and device commands scsi: ufs: core: Clear stale UIC result byte before peer DME retries scsi: ufs: bsg: Reject UIC commands with a non-zero result byte scsi: ufs: bsg: Validate request_len before accessing request ...
39 hoursMerge tag 'block-7.4-20261029' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux Pull more block updates from Jens Axboe: "Bigger than usual for an end-of-merge-window pull request, main reason being that the MD side I had missed a pull on, and both NVMe and block got a good pile of LLM driven fixes where some of them may as well just go in now rather than wait a full cycle. This contains: - NVMe fixes via Keith: - nvme-tcp fallout from the parallel queue allocation: initialize pf_cache_lock and the header digest before requests are set up, and don't dereference a NULL queue->ctrl on reconnect - nvme-fabrics queue mapping fixes: reset io_queues on reconnect, limit each queue type to the online CPUs, and clear a poll map with no poll queues - nvme-tcp io_work priority inversion with send_mutex held (Seiji), error recovery on read_sock failure and skipping TLS control records while waiting for the ICResp (Martin B), TLS handshake timeout validation, and an address attribute race - nvme-rdma NULL metadata_sgl dereference with T10-PI - nvme-pci early boot hang with the quirks parameter - nvme-multipath ANA log bounds underflow, and an nvme-fc discovery reference leak - nvmet hardening: rdma inline SGL out-of-bounds write and short connect requests, fc use-after-free in LS create connection and teardown on admin queue failure, pci-epf transport error reporting and SGL length checks, zns NUMD wrap, fc stale read data, auth state and status fixes, ports list and qid_max locking, rdma double puts and irq-safe locking, and a double free on metadata SGL allocation failure - nvmet fixes from Josef: big discard length truncation, NULL derefs for PCI endpoint targets and debugfs host_traddr, stop listening when a tcp port is removed, and don't BUG() in nvme-loop when a scan runs beside a reset - MD fixes via Yu Kuai: - raid5 validation: reject too few disks, invalid reshape disks, a per-device size below one chunk, and an inconsistent reshape state from the superblock instead of BUG(), plus journal payload size checks - raid5 error path and lifetime fixes: extra_page leak and NULL derefs in free_conf/setup_conf, draining released_stripes before destroying the cache, RCU for the big_stripe_tree lookup, and per-array io_unit slab names - md core: reject v0.90 arrays with too many devices, validate bblog_size, take reconfig_mutex when enabling PPL, fix the mddev->private NULL deref when stopping an array under IO, and don't hand out the array before mddev->kobj is added - raid10 missing barrier wakeup, raid0 device count validation, a bogus mddev_unlock() in lbs_store(), and shared helpers - blk-mq fixes from Josef: - don't trust the bio cookie in blk_mq_poll() - keep tag sharing fair after a queue update - don't bring back flags of a completed request from the timeout handler - honor a restarted timer - initialize the dma state for P2P - quiesce a queue joining a quiesced tag set - set up and exit hctxs under tag_list_lock - free the tag bitmaps in the SRCU callback - blk-cgroup and friends from Josef: - keep the old blkg while reassociating a bio - free struct ioc after a grace period - don't truncate v1 iops limits - fix root io.stat on 32-bit - don't free a blkg with its punt work queued - flush iolatency enable_work after going offline - pass dead group I/O counts on and make reset_stats reset them - don't enter reclaim under rq_qos_mutex - Other core fixes from Josef: - a disk use-after-free in sync_bdevs() - don't losing the status of a failed flush request - 64-bit sector math for mac partitions - apply the segment size to the integrity buffer - blk-iocost: abort a weight transfer on invalid donation weights, and publish hweights as one atomic value - Fix a NULL deref and use-after-free in __blk_crypto_evict_key(), reachable via dm-inlinecrypt - Fix recursive i_rwsem locking in blkdev_write_iter(), from two fixes for the same race landing in the window - Advance the iterator after copy-in for SG_DXFER_TO_FROM_DEV, fixing an infinite loop in blk_rq_map_user_iov() - Check the open mode for LOOP_SET_STATUS in the compat ioctl - rnbd-srv use-after-free and kobject fixes - drbd timer and req_lock fixes - zloop cleanups and error path fixes - cdrom header and kernel-doc cleanups" * tag 'block-7.4-20261029' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: (109 commits) blk-crypto: fix NULL deref and UAF in __blk_crypto_evict_key() zloop: check that the zone backing file support ->{read,write}_iter zloop: fput file after failed zone init zloop: share more code for opening a zone backing file zloop: remove a duplicate call to zloop_get_block_size block: fix kernel-doc warnings in blk-map.c and blk-mq-dma.c blk-iocost: publish hweights as one atomic value blk-iocost: abort weight transfer on invalid donation weights rnbd-srv: publish the sess_dev at the end of OPEN rnbd-srv: fix use-after-free on two CLOSE messages block/rnbd-srv: drop the sess_dev kobject unlocked block/rnbd-srv: don't free the device on a sysfs error drbd: take req_lock to skip the initial sync as peer drbd: stop the start_resync timer of a dying device block: apply the segment size to the integrity buffer blk-mq: free the bitmaps of tags in the SRCU callback block: partitions/mac: compute the sectors in 64 bits blk-mq: set up a queue under tag_list_lock blk-mq: exit the hctxs of a queue under tag_list_lock blk-mq: quiesce a queue that joins a quiesced tag set ...
39 hoursMerge tag 'io_uring-7.4-20261029' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux Pull io_uring fixes from Jens Axboe: - A batch of fixes from Chris: - Charge registered buffer arrays, rsrc nodes, tctx nodes and personalities to memcg, and free the XArray nodes a failed store leaves behind. - Clear bpf_ctx while submitting SQEs from a bpf-ops program, as the socket code otherwise skips both the capability check and lock_sock() for a setsockopt from the SQ. - Free the task context after an RCU grace period, closing a UAF when a foreign task frees the last request. - Stop io_ring_exit_work() from waiting on an SQPOLL thread held in get_signal(), and drop sqd->lock while the thread waits for in-flight requests, as either one could pin every iou_exit slot - io-wq fixes: - Don't create new workers once the exit has begun, which could leave an exiting worker in the thread group under exec - save the worker type before dropping its reference (KASAN UAF) - Defer io-wq enqueues from a foreign task to task_work, as an IOPOLL reap by another task could race io_wq_put_and_exit() - Keep the drain active when the deferred request being started is itself a drain request, and don't attach a new ring to an SQPOLL thread that is already canceling - Fix the multishot recv length limit accounting, and count cancelled timeouts in cq_timeouts so an armed off timeout doesn't fire early - Advance the buffer ring head when a pickup empties it, and keep the recvmsg buffer select length within MAX_RW_COUNT - Mask the socket type in the bpf filter population so SOCK_CLOEXEC or SOCK_NONBLOCK can't bypass a type filter, and enforce the per-task register restrictions for blind registration - Complete a non-blocking connect() that fails with -EAGAIN rather than retrying it through poll and io-wq, matching connect(2) - napi list traversal cleanup, and remove a useless min_not_zero() * tag 'io_uring-7.4-20261029' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: (21 commits) io_uring/sqpoll: don't attach to a thread that is canceling io_uring/net: fix multishot recv length limit accounting io_uring/timeout: count cancelled timeouts in cq_timeouts io_uring/napi: clean up list traversal with list_for_each_entry_safe() io_uring: defer foreign io-wq enqueues to task_work io_uring/io-wq: save worker type before dropping its reference io_uring/cancel: drop sqd->lock while SQPOLL waits io_uring/sqpoll: don't wait for the thread to exit io_uring: free the task context after a grace period io_uring/bpf-ops: clear bpf_ctx while submitting SQEs io_uring: free XArray nodes left by a failed store io_uring: charge tctx nodes and personalities io_uring/rsrc: charge buffer arrays and nodes to memcg io_uring/io-wq: no new workers once the exit has begun io_uring: keep the drain active when a deferred drain request is started io_uring/net: don't retry a non-blocking connect() that fails with -EAGAIN io_uring/register: enforce per-task restrictions in io_uring_register_blind() io_uring/net: mask socket type with SOCK_TYPE_MASK in io_socket_bpf_populate() io_uring/net: Remove useless min_not_zero() usage io_uring/net: keep recvmsg buffer select length within MAX_RW_COUNT ...
39 hoursMerge tag 'fbdev-for-7.4-rc1-2' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev Pull more fbdev updates from Helge Deller: - atmel_lcdfb: avoid issues due to empty modelist in probe - simplify the console-blanking interface * tag 'fbdev-for-7.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: fbdev: atmel_lcdfb: fix list_first_entry() on possibly empty modelist in probe vt: Remove old-style con_blank vgacon: Implement struct consw.con_unblank sticon: Implement struct consw.con_unblank newport_con: Implement struct consw.con_unblank fbcon: Implement struct consw.con_unblank dummycon: Implement struct consw.con_unblank vt: Add con_unblank callback to struct consw
39 hoursMerge tag 'clk-for-linus' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux Pull clk updates from Stephen Boyd: "Here's the clk changes for the merge window which is dominated in the diffstat by Qualcomm churning out new SoCs that need clk drivers. Looking beyond the sheer amount of lines of mostly data there we have a clk nexus DT binding change in the core clk framework and a driver core patch to add a subsys driver macro. The clock nexus support is useful for devices that map clks internally or for connectors on a board that route clock signals to another board. I suspect the use of this will expand in the future, so we have unit tests to make sure it doesn't break. The driver core change adds subsys_driver() and subsys_platform_driver() so we can register early drivers without open-coding that all (module_platform_driver() is at device initcall level so it isn't be used). Beyond the core framework bits we have lots of changes all over the tree to initialize 'struct clk_init_data'. The potential risk here is that someone forgets to initialize all the members of that structure and either the clk flags cause weird behavior later on or the parents are pointing at junk and the clk is orphaned forever. The patches just initialize the thing with zeroes to be safe. Longer term we should probably move this struct out of 'struct clk_hw' and pass it during clk registration time. That's a much bigger change and would require restructuring entire drivers that rely on the pointer being there. Finally, we have the usual fixes like calculation updates for dividers, handling error paths during clk registration, or fixing clk data now that drivers are using them. Those patches are dwarfed by the amount of new SoC support and only affect those SoCs and the consumers of those clks. Overall I'm more concerned the clk_init_data patches are going to expose some latent bugs that we didn't notice before because something was relying on clks being orphaned and now they're not. Core: - subsys_driver() / subsys_platform_driver() macros - Clock nexus DT binding support (with KUnit tests) - Spread-spectrum configuration validation - Fully initialize struct clk_init_data across many drivers New Drivers: - Anlogic DR1V90 CRU - ZTE zx297520v3 top, matrix, and LSP clocks - Samsung Exynos5515 and ACPM driver extended to Exynos850. - Qualcomm Eliza camera, camera-BIST, GPU, and video clks - Qualcomm Hawi / Maili camera and GPU controllers - Qualcomm Kuno global, RPMh - Qualcomm MSM8952 global, RPM - Qualcomm Nord camera/video clocks, EMAC interconnect, PHY resets - Qualcomm IPQ5210 / IPQ9650 network clocks - i.MX93 350 MHz fractional-N GP-PLL for display - i.MX pll14xx spread-spectrum clock generation - Amlogic A9 SCMI clock controller - Allwinner single-divider "update bit" support - EN7523 Serdes port selection" * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (316 commits) clk: imx: pll14xx: support spread spectrum clock generation clk: cdce925: Size the PLL child name buffer for any int clk: stm32: fix clock array size for STM32MP21 dt-bindings: clock: Convert HiSilicon clocks to DT schema clk: lmk04832: Handle reset GPIO lookup errors dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional clk: tegra: bpmp: remove kcalloc clk: mmp2-audio: add missing PM_CLK dependency clk: zte: Introduce a driver for zx297520v3 LSP clocks clk: zte: Introduce a driver for zx297520v3 matrix clocks clk: zte: Introduce a driver for zx297520v3 top clocks clk: zte: Add zx PLL support infrastructure clk: zte: Add regmap-based clocks clk: zte: Add Clock registration infrastructure dt-bindings: clk: zte: Add zx297520v3 LSP clock and reset controller dt-bindings: clk: zte: Add zx297520v3 matrix clock and reset controller dt-bindings: clk: zte: Add zx297520v3 top clock and reset controller clk: nuvoton: ma35d1: Add missing WDT/WWDT parent clocks dt-bindings: clock: ma35d1: Add missing WDT/WWDT parent clocks dt-bindings: clock: ma35d1: Drop CLK_MAX_IDX define ...
41 hoursfilelock: keep superblock active through delegation waitZhao Gongyi
A caller may drop its path after try_break_deleg() returns a delegated inode but before break_deleg_wait() finishes. The extra inode reference held in struct delegated_inode does not keep the superblock active. After a lazy unmount, closing the delegation holder can release the last mount reference and shut down the superblock while another task waits for the delegation break. The waiter's final iput() can then enter the filesystem's eviction code after its superblock-private state was freed. This has been observed as a KASAN use-after-free in shmem_evict_inode(). When try_break_deleg() saves a delegated inode, take an active reference to its superblock while the caller still pins the mount. Keep that reference through break_deleg_wait() and the final iput(), then release it with deactivate_super(). This protects every caller of the helpers, including the mknod, mkdir, symlink and rmdir paths that drop their path before waiting. Fixes: e12d203b8c88 ("vfs: allow mkdir to wait for delegation break on parent") Fixes: 4fa76319cd0c ("vfs: allow rmdir to wait for delegation break on parent") Fixes: c826229c6a82 ("vfs: make vfs_create break delegations on parent directory") Fixes: e8960c1b2ee9 ("vfs: make vfs_mknod break delegations on parent directory") Fixes: 92bf53577f01 ("vfs: make vfs_symlink break delegations on parent dir") Link: https://lore.kernel.org/r/20261016093421.90725-1-zhaogongyi@bytedance.com Cc: stable@vger.kernel.org Signed-off-by: Zhao Gongyi <zhaogongyi@bytedance.com> Link: https://patch.msgid.link/20261023111250.17696-1-zhaogongyi@bytedance.com Reviewed-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
41 hourswatch_queue: keep info_id separate from rcu_headZhiyu Zhang
struct watch overlays info_id with rcu_head. A notification poster reads info_id under rcu_read_lock(), but a concurrent final put can enqueue the watch with call_rcu(). Enqueueing the callback writes rcu_head before the grace period has elapsed, so it can corrupt info_id while the object remains legally visible to the reader. __post_watch_notification() then merges that value into the notification info word without masking it. Pointer bits can corrupt WATCH_INFO_LENGTH and make post_one_notification() copy beyond the posting task's stack record. Give info_id storage separate from rcu_head so RCU enqueueing cannot modify it. Place it after the kref, which uses existing tail padding on x86-64. Mask info_id with WATCH_INFO_ID at the point of use as an additional invariant check. An unprivileged shell and keyctl reproducer was run for 30 seconds in QEMU. The vulnerable baseline produced malformed notification lengths, while this change completed with 288631 key notifications and no malformed record. Fixes: c73be61cede5 ("pipe: Add general notification queue support") Reported-by: Tong Liu <lyutoon@gmail.com> Reported-by: Qi Tang <tpluszz77@gmail.com> Reported-by: Zhiyu Zhang <zhiyuzhang999@gmail.com> Closes: https://lore.kernel.org/lkml/CALf2hKveij_sHgANY9Aktm1dPa4wfKjKNkHyp9yPbjORWFXagA@mail.gmail.com/ Link: https://lore.kernel.org/netdev/CALf2hKvp0NPVLwr=a3+jUHtPohxbra8gox+aYAfWathJnn-J+Q@mail.gmail.com/ Signed-off-by: Zhiyu Zhang <zhiyuzhang999@gmail.com> Link: https://patch.msgid.link/20261029054136.1174216-1-zhiyuzhang999@gmail.com Reviewed-by: Bradley Morgan <brads@mainlining.org> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
41 hoursiomap: only follow dio alignment requirement if specifiedQu Wenruo
After commit 4025185cf953 ("iomap: follow the alignment requirement for iomap_dio_hole_iter()"), generic/091 fails on both xfs and ext4. The reason is that ext4 and xfs (except COW write) do not require full block alignment for direct IO. They are totally fine reading a sub-block range. That commit fails any direct read of sub-block holes/prealloc, even those filesystems can handle it without any problem. Fix the regression by only follow the block alignment if the IOMAP_DIO_FSBLOCK_ALIGNED flag is set. Fixes: 4025185cf953 ("iomap: follow the alignment requirement for iomap_dio_hole_iter()") Reviewed-by: Pankaj Raghav(Samsung) <pankaj.raghav@linux.dev> Signed-off-by: Qu Wenruo <wqu@suse.com> Link: https://patch.msgid.link/0e89c49b6f7804081f4041007b81ac620a153830.1793307063.git.wqu@suse.com Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2 daysMerge tag 'ntfs3_for_7.4' of ↵Linus Torvalds
https://github.com/Paragon-Software-Group/linux-ntfs3 Pull ntfs3 updates from Konstantin Komarov: "The bulk of this cycle is hardening against corrupted or maliciously crafted volumes. Most of these fixes come from fuzzing and KASAN reports. The main areas are: - $LogFile replay, where several unchecked on-disk sizes could make mount write past the MFT record buffer - MFT record and index parsing - extended attributes, where a bad $EA entry could leak up to 64K of kernel heap to userspace through getxattr() Reading a damaged compressed file could also return uninitialized page cache contents to userspace; that is fixed too. A few fixes affect healthy volumes as well: a heap overflow in fallocate(INSERT_RANGE) on small files, a use-after-free when a WOF-compressed file is opened for writing during a concurrent read, a lock-order deadlock in readdir, and stale disk data showing up in newly allocated clusters of compressed files. On the feature side there are new tracepoints covering mount, log replay, lookup, directory index, allocation, iomap and file I/O. There is also a new 'ugm' mount option (on by default): with ugm=0, newly created files don't get the WSL uid/gid/mode extended attributes, which Windows doesn't use. The rest is smaller correctness fixes and cleanups" * tag 'ntfs3_for_7.4' of https://github.com/Paragon-Software-Group/linux-ntfs3: (52 commits) ntfs3: add file I/O tracepoints ntfs3: add iomap tracepoints ntfs3: add allocation tracepoints ntfs3: add directory index tracepoints ntfs3: add create inode tracepoint ntfs3: add namei tracepoints ntfs3: add mount and log replay tracepoints fs/ntfs3: validate the EA value length in ntfs_read_ea() fs/ntfs3: handle partial allocation in attr_data_get_block_locked() ntfs3: fix mapping pairs bounds check for alignment fs/ntfs3: bound DeleteAttribute asize against rec->used in do_action ntfs3: release ni_lock before dir_emit in ntfs_readdir to fix deadlocks fs/ntfs3: bound CreateAttribute asize against record_size in do_action fs/ntfs3: do not mark frame pages uptodate on read error fs/ntfs3: prevent positive E_NTFS_NONRESIDENT from reaching writeback error handling fs/ntfs3: fix ntfs_fnd leak when compare function is missing fs/ntfs3: fix stale attr_b in attr_allocate_frame() fs/ntfs3: reject unaligned hole punching on compressed files fs/ntfs3: take ni_lock() once in ntfs_readdir() fs/ntfs3: reserve a compression unit in maxbytes_sparse ...
2 daysMerge tag 'hyperv-next-signed-20261028' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux Pull hyperv updates from Wei Liu: - Update to documents and code comments (Michael Kelley) - Harden Vmbus (Kameron Carr) - Rework MSHV driver page deposit logic (Mukesh Rathor) - Vmbus kexec bug fix (Shradha Gupta) - Miscellaneous bug fixes (Daehyeon Ko, Jiale Yao, Sasha Levin) * tag 'hyperv-next-signed-20261028' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux: Drivers: hv: Remove leftover support for old Hyper-V versions mshv: Remove unused *_old memory deposit functions mshv: Redesign hypervisor memory deposit logic mshv: Rename memory deposit memory functions to _old mshv_vtl: reject poll files with multiple waitqueues mshv_vtl: detach poll waiter on POLLFREE mshv_vtl: initialize poll file mutex before device registration Documentation: hyperv: Update information on guest CPU offlining Documentation: hyperv: Remove support for guests on Hyper-V 2012/2012R2 Drivers: hv: Run VMBus kexec cleanup from syscore shutdown kexec: Add helper to report an active kexec reboot tools: hv: remove unused rte_smp_mb() Documentation: hyperv: Update documentation for sending VMBus packets Drivers: hv: vmbus: Check ACPI companion before use Documentation: hyperv: Describe validation of the ring buffer indices Drivers: hv: vmbus: Keep the ring byte counts sane for a bad index Drivers: hv: vmbus: Compute ring byte counts from a caller-held snapshot Drivers: hv: vmbus: Use *_ONCE() to access shared ring buffer indices Drivers: hv: vmbus: Bounds check the shared ring buffer indices
2 daysRevert "driver core: add TAINT_FORCED_BIND for when userspace manually ↵Greg Kroah-Hartman
messes with devices and drivers" This reverts commit fcbfaffee51a452cc8efcbaa3b88ec4595678424. Turns out that vfio is a crazy beast and people have been "relying" on the bind/unbind debugging feature as a way to handle passing through devices to guest instances. Because of this (https://xkcd.com/1172/), let's revert the feature for now until we can figure out a more agreeable way to handle this such that normal workflows do not taint the kernel. Odds are something like what Uwe proposes at: https://lore.kernel.org/lkml/cover.1790612298.git.u.kleine-koenig@baylibre.com/ will be the best way forward and will be revisited after for after 7.4. The feature was originally intended to stem the flow of unnecessary fuzzing reports of "broken" drivers where random devices were being bound to random drivers and of course things were going wrong. The main syzbot tool is now not doing this anymore, and hopefully no one else starts it up again (but in this madness of LLMs these days, you can't be sure.) Thanks to everyone for telling me just how wrong I was to implement this, I appreciated the feedback :) Link: https://lore.kernel.org/all/DLIL9H50MALI.3JROXYEEUM3KU@kernel.org/ To: Jonathan Corbet <corbet@lwn.net> To: Shuah Khan <skhan@linuxfoundation.org> To: Randy Dunlap <rdunlap@infradead.org> To: "Rafael J. Wysocki" <rafael@kernel.org> To: Danilo Krummrich <dakr@kernel.org> To: Johan Hovold <johan@kernel.org> To: Steven Rostedt <rostedt@goodmis.org> To: Masami Hiramatsu <mhiramat@kernel.org> To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Reported-by: Leon Romanovsky <leon@kernel.org> Reported-by: Jason Gunthorpe <jgg@ziepe.ca> Reported-by: Michal Pecio <michal.pecio@gmail.com> Reported-by: "Uwe Kleine-König" <u.kleine-koenig@baylibre.com> Link: https://patch.msgid.link/20261028-bind_taint-revert-v1-1-7c6b9cef30c9@linuxfoundation.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> [ Revert the change in Documentation/admin-guide/tainted-kernels.rst. - Danilo ] Signed-off-by: Danilo Krummrich <dakr@kernel.org>
3 daysMerge tag 'net-7.4-rc1' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net Pull networking fixes from Jakub Kicinski: "Current release - new code bugs: - mctp: usblib: fix assertion breaking esoteric builds Previous releases - regressions: - Revert advertising the TCP MSS from the configured MTU - netlink: check sk_rcvbuf before charging the dump skb - eth: - ti: am65-cpts: fix support for PTP_EXTTS_REQUEST2 ioctl - mlx4: always create the eth and ib auxiliary devices - tg3: invert restart quirk logic to restrict SNP power-down bypass - bnxt: recycle agg buffers when Rx head buffer allocation fails Previous releases - always broken: - net: fix frag_list leak in skb_segment_list() error path - sctp: reject forged cookie peer_addr with unknown address family - vxlan: keep reserved_bits across changelink - net: limit priority VLAN untag depth - inet: frags: prevent acceptance of partially authenticated reassembly - gro: do not GRO GSO packets with inconsistent payload - tcp: avoid double destroy in tcp_abort() of an unaccepted child" * tag 'net-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (137 commits) tun: drop batched packets while the device is down selftests: net: netlink-dumps: start a dump with a notification queued netlink: check sk_rcvbuf before charging the dump skb net/sched: act_ife: do not consume the inner header on egress openvswitch: use eth_type_trans_careful() in internal_dev_recv() net: use eth_type_trans_careful() in __dev_forward_skb2() loopback: use eth_type_trans_careful() net: add eth_type_trans_careful() tcp: initialize mapped children before route lookup tcp: fix reordering addition overflow in MTU probing tcp: avoid double destroy in tcp_abort() of an unaccepted child net: bgmac: fix TX DMA unmapping and slot cleanup gro: do not GRO GSO packets with inconsistent payload net/packet: check TX_RING fragments before memory accounting eth: bnxt: hand XDP frags over to the copybreak skb eth: bnxt: free XDP frags when xdp_do_redirect() fails eth: bnxt: don't leak buffers when XDP agg buffer allocation fails eth: bnxt: resize Rx head buffers when rx-copybreak changes eth: bnxt: recycle agg buffers when Rx head buffer allocation fails netdev-genl: ignore NETDEV_UNREGISTER rebroadcasts ...
3 daysMerge tag 'bpf-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpfLinus Torvalds
Pull bpf fixes from Alexei Starovoitov: - Remove BPF_F_ARENA_SCALAR flag and .arena.data section in libbpf that were added for rust-bpf in this merge window. We found a cleaner approach that does it on compiler side instead of kernel/libbpf. No released kernel has them (Alexei Starovoitov) - Fix bpf_send_signal_task() returning -EPERM when it is called from a kernel thread (Aditya Sharma) - Various fixes (Alexei Starovoitov): - Use emit_rsb_call() to call bpf_unwind_target() in x86 JIT to fix objtool warning during the build - Fix scalar evolution: clear delta of a widened register, don't widen a pointer to a buffer, don't clamp a register whose type changed in the loop, and reset the range of a clamped packet pointer - Finish the insn in the state that maybe_fork_scalars() splits off, so that pruning doesn't drop it at the head of a counted loop - Preserve the registers that carry stack arguments across arch_bpf_timed_may_goto() on x86-64, arm64 and riscv64 - Don't re-sort subprog_info[] for every new subprogram - Fix flaky map_kptr and rcu_reentry selftests - Use memmove() in bpf_skb_load_bytes(), bpf_skb_load_bytes_relative() and bpf_xdp_load_bytes(), since the destination can be a slice of the same packet (Ayushman Rout) - Fixes and follow-ups for scalar evolution: reject pointer operands in 32-bit recurrences and latches, don't intersect with the current register range on clamp to avoid a false 'verifier bug', avoid false infinite loop reports, and recognize a 32-bit copy of the induction variable (Eduard Zingerman) - Fix out-of-bounds write to btf->types[] for split BTF and propagate btf_add_type() errors in btf_check_all_metas() (Feng Yang) - Fix use-after-free in bpf_timer callback that fires after its inner map was freed (Mani Tofigh) - Fix x86 JIT stopping before jumps converge: size backward jumps by the insns they jump over (Mykyta Yatsenko) - Fix use-after-free of struct_ops trampoline: dissociate struct_ops progs before the grace period of the map (Qiliang Yuan) - Validate stack argument reads against the caller state to fix out-of-bounds read in the verifier, and reject callbacks with stack arguments (Weiming Shi) - Tie borrowed iterator results and pointers loaded from trusted fields to the lifetime of their source, so that iterator next, destroy and reference release invalidate them (Xu Yunxiang) * tag 'bpf-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf: (48 commits) bpf: Don't re-sort subprog_info[] for every new subprogram bpf: Fix out-of-bounds btf->types write for split BTF selftests/bpf: Test stack arguments across may_goto bpf: Keep stack arguments in arch_bpf_timed_may_goto() selftests/bpf: Test maybe_fork_scalars() at the head of a counted loop bpf: Finish the insn in the state that maybe_fork_scalars() splits off selftests/bpf: Test the clamp of pointers in scalar evolution bpf: Reset the range of a packet pointer that scalar evolution clamps bpf: Don't clamp a register whose type changed in the loop selftests/bpf: Test a loop that moves a pointer to a buffer bpf: Don't widen a pointer to a buffer in scalar evolution selftests/bpf: Avoid a page fault in rcu_reentry while the handler is armed selftests/bpf: Wait for the last maps of map_kptr to be freed selftests/bpf: Test that a widened register is not linked bpf: Clear delta of a register that scalar evolution widens bpf, x86: Remove r0_on_stack from fetching atomics in arena bpf: Remove BPF_F_ARENA_SCALAR selftests/bpf: Remove tests for arena access through numbers libbpf: Keep format strings of bpf_printk() in .rodata libbpf: Remove .arena.data ...
3 daysMerge tag 'docs-7.4-2' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/docs/linux Pull more documentation updates from Jonathan Corbet: "A handful of late-arriving changes, most of which were ready ahead of the merge window: - More Portuguese translation updates - Some docs-build and self-test fixes - Bring documentation for the user-space access primitives in include/linux/uaccess.h into the docs build. This revealed a number of malformed kerneldoc comments, which are fixed in a subsequent tweak to uaccess.h" * tag 'docs-7.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/docs/linux: uaccess: fix some erroneous kerneldoc comments docs/translations/pt_BR: admin-guide: add efi-stub.rst docs/translations/pt_BR: admin-guide: add kernel-parameters.rst docs/translations/pt_BR: admin-guide: add bootconfig.rst docs/translations/pt_BR: admin-guide: add perf-security.rst docs/translations/pt_BR: admin-guide: add LSM/index.rst docs/translations/pt_BR: admin-guide: add hw-vuln/index.rst docs/translations/pt_BR: admin-guide: add cputopology.rst docs/translations/pt_BR: admin-guide: add sysctl/index.rst docs/translations/pt_BR: admin-guide: add sysfs-rules.rst docs/translations/pt_BR: admin-guide: add features.rst docs: pt_BR: process: translate userspace debugging guide docs: kerneldoc.py: preserve headings in kernel-doc output docs: xforms_lists: Handle DECLARE_KHOSER_PTR() struct members docs: test_doc_build: don't select urllib3 yanked version docs: test_doc_build: address pylint warnings docs: test_doc_build: update it to support newer Sphinx versions docs: test_doc_build: better handle python version docs: admin-guide: Fix typo in kernel-parameters.txt docs: core-api: include documentation from linux/uaccess.h
3 daysMerge tag 'sched_ext-for-7.4-fixes' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext Pull sched_ext fixes from Tejun Heo: "This is a big pull for fixes, but much of it was in the works before the merge window. Most of these fixes are in sub-scheduler support, which nests BPF schedulers under a parent that hands them CPUs. It was heavily reworked over recent cycles and is now functionally complete. Porting real schedulers on it drove the latest additions and keeps finding corner cases. For example, once CPUs are shared and can be taken back, the kernel must keep every task moving when its scheduler can't run it or is failing, and those fallbacks interact subtly with each other and with other new core features. - The fallback paths meant to keep a task moving when its scheduler can't run it or is failing could themselves leave it stuck - The stall watchdog could blame a scheduler for time it wasn't responsible for, even taking down all of sched_ext - Sub-schedulers were told late, or not at all, which CPUs they could use - Deferred callbacks could stay queued or be dropped under core scheduling and proxy execution, with a sched/core fix to the duplicate check - Hardening: tracing programs can no longer call kfuncs that could deadlock the CPU" * tag 'sched_ext-for-7.4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext: (34 commits) sched_ext: Reject scx_bpf_sub_grant/revoke() in tracing programs sched_ext: Fix the rescue overload pick ejecting the wrong sub under bypass sched_ext: Fix use-after-free of a NONE rescuee leaving its sched while running sched_ext: Fix a lone IMMED task waiting behind a kept prev sched_ext: Fix queued bypassed tasks stalling when the host loses SCX_CAP_BASE sched_ext: Let the bypass load balancer move tasks homed on other cpus sched_ext: Factor out bypass_lb_move() and insert with the donor DSQ unlocked sched_ext: Fix the bypass load balancer stranding tasks on cpus where the host lacks SCX_CAP_BASE sched_ext: Fix bypassed tasks stalling when the host lacks SCX_CAP_BASE sched_ext: Expire prev's slice in dispatch_one() under bypass sched_ext: Fix a cpu idling after put_prev_task_scx() queues its task on the local DSQ sched_ext: Refuse extending a kernel slice sched_ext: Mark the rescue grant as a kernel slice with SCX_TASK_KERNEL_SLICE sched_ext: Fix a cpu idling with a runnable rescuee sched_ext: Restore a rescuee's slice after ops.stopping() sched_ext: Fix rescue served time disagreeing with the slice under proxy execution sched_ext: Move refill_task_slice_dfl() below apply_slice_vtime() sched_ext: Fix bypassed tasks looping on a host without SCX_CAP_ENQ sched_ext: Fix bypassed tasks stranded by the reenqueue limit sched_ext: Clear holding_cpu where the claim is confirmed ...
3 daysnet: add eth_type_trans_careful()Eric Dumazet
eth_type_trans() assumes ETH_HLEN bytes are present in skb->head. NIC drivers always provide this, and they should keep using the fast version. Devices looping skbs from their transmit path back to their receive path get skbs built by the stack instead. Their link-layer header might have been popped by tc actions (act_vlan pop_eth, act_ife decode) or OVS actions (pop_eth + pop_mpls / pop_nsh), leaving fewer than ETH_HLEN bytes in the linear part. eth_type_trans() then hits the BUG() in __skb_pull(). Add eth_type_trans_careful(), which first pulls the Ethernet header, and returns a drop reason on failure, so that the few devices exposed to this can drop such packets. Signed-off-by: Eric Dumazet <edumazet@kernel.org> Reviewed-by: Aaron Conole <aconole@redhat.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> Tested-by: Jamal Hadi Salim <jhs@mojatatu.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Link: https://patch.msgid.link/20261028122703.2093730-2-edumazet@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
3 daysblk-iocost: publish hweights as one atomic valueKunhai Dai
current_hweight() publishes the cache generation and both weights with separate stores. Refreshers running on different CPUs can interleave their stores and leave a new generation paired with weights from an older calculation. The compiler can also reorder the generation store before the weight stores, so a reader that sees the new generation can accept stale weights. A stale weight is not only a reporting artifact. It feeds the cost calculation and the donation logic, where an inconsistent combination can lead to a zero divisor in transfer_surpluses(). In addition, the slow path rereads iocg->hweight_active/inuse after publishing them, so the value it returns can be the one written by another refresher instead of the locally computed one. Pack the generation and both weights into a single atomic64_t and publish them with one atomic write. Readers take one atomic snapshot and return the local values. Weights are in [1, WEIGHT_ONE]; storing each minus one preserves the full range in 16 bits and leaves 32 bits for the generation. The two weight fields remain as the donation workspace used under ioc->lock. Tracepoints decode the packed cache without refreshing it and iocost_monitor.py is updated accordingly. Developed with assistance from Claude Code (Anthropic): the assistant drafted the packed representation, the helpers and the tracepoint/monitor changes, and ran the checks listed below. The author reviewed the result and remains responsible for it. Fixes: 7caa47151ab2 ("blkcg: implement blk-iocost") Signed-off-by: Kunhai Dai <daikunhai@didiglobal.com> Tested-by: Tao Cui <cuitao@kylinos.cn> Reviewed-by: Tao Cui <cuitao@kylinos.cn> Acked-by: Tejun Heo <tj@kernel.org> Link: https://patch.msgid.link/20261019125412.3123895-3-daikunhai@didiglobal.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
3 daysblock: apply the segment size to the integrity bufferJosef Bacik
The integrity buffer is a single segment and must not exceed max_segment_size. max_integrity_io_size() applies that limit to the data size instead, which is off by a factor of 64 for 8 bytes of PI per 512 bytes of data. A SCSI host that doesn't set a maximum segment size gets 64KiB, lpfc and qla2xxx among them, so a DIX disk behind one of those does no IO above 64KiB. Limit the buffer and derive the data size from that, which makes it 4MiB for that case. Fixes: ec7f31b2a2d3 ("block: make bio auto-integrity deadlock safe") Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20261028164415.1262013-45-axboe@kernel.dk Signed-off-by: Jens Axboe <axboe@kernel.dk>
3 daysblk-mq: quiesce a queue that joins a quiesced tag setJosef Bacik
blk_mq_quiesce_tagset() only quiesces the queues on the list at that moment. A queue added before blk_mq_unquiesce_tagset() runs unquiesced, and then gets unquiesced without ever having been quiesced, which trips the warning in blk_mq_unquiesce_queue(). NVMe gets there when a controller fails while its namespaces are being scanned. Count the quiesce calls in the tag set and quiesce a joining queue that many times, under a spinlock that also serializes the two functions. It can't be tag_list_lock, see commit 59e25ef2b413. Fixes: 414dd48e882c ("blk-mq: add tagset quiesce interface") Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20261028164415.1262013-37-axboe@kernel.dk Signed-off-by: Jens Axboe <axboe@kernel.dk>
3 daysppp: linearize and segment bridged packets when requiredEric Dumazet
PPP channel bridging hands packets received on one channel directly to the start_xmit() of another. Packets received by PPPoE can be non-linear, GSO since commit 55a5d8fca836 ("net: pppoe: implement GRO/GSO support"), or CHECKSUM_PARTIAL when injected with a virtio_net_hdr. The regular transmit path never sees such packets, and only PPPoE, which uses dev_queue_xmit(), handles them: - PPP Async reads the whole packet through skb->data, transmitting unrelated memory for non-linear packets. - PPP Async and Sync send GSO packets as single frames of up to 64KB, and CHECKSUM_PARTIAL packets with a bad L4 checksum. - PPTP and L2TP cannot segment a TCP GSO packet once their GRE or UDP header is pushed, and do not finish pending checksums. Add a xmit_offload flag to struct ppp_channel, set for PPPoE. For other channels, segment GSO packets in software, using the PPP protocol field as the L2 header, finish CHECKSUM_PARTIAL checksums (including SCTP CRC32c), and linearize packets for channels without direct_xmit, as ppp_push() does. Packets are dropped if any step fails, or if the channel is busy, as before. skb->dev is NULL at this point for PPPoE (cleared by __sk_receive_skb()), and tunnel and IPv6 UFO GSO handlers dereference it: only TCP, UDP L4 and fraglist GSO packets without encapsulation are segmented, others are dropped. Receive paths like L2TP pull headers without updating the checksum state, possibly leaving a CHECKSUM_PARTIAL state with csum_start before skb->data. Reset it to CHECKSUM_NONE, as skb_postpull_rcsum() does, so that skb_checksum_help() does not warn, and so that PPPoE does not offload a checksum at a wrong offset. Tested in a VM by bridging PPPoE (on a TAP with IFF_NAPI_FRAGS, or on veth) to PPP Async on a PTY, PPPoL2TP and PPPoE: non-linear packets no longer leak garbage, GSO packets (including fraglist GRO) are sent as valid segments for IPv4 and IPv6, CHECKSUM_PARTIAL packets get a valid checksum, and PPPoE still receives GSO packets unchanged. Fixes: 4cf476ced45d ("ppp: add PPPIOCBRIDGECHAN and PPPIOCUNBRIDGECHAN ioctls") Fixes: 55a5d8fca836 ("net: pppoe: implement GRO/GSO support") Reported-by: Sashiko <sashiko-bot@kernel.org> Closes: https://sashiko.dev/#/patchset/20260908072135.877364-1-qingfang.deng@linux.dev Co-developed-by: Qingfang Deng <qingfang.deng@linux.dev> Signed-off-by: Qingfang Deng <qingfang.deng@linux.dev> Signed-off-by: Eric Dumazet <edumazet@kernel.org> Cc: Felix Fietkau <nbd@nbd.name> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20261026155927.707655-1-edumazet@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
3 daysRevert "net: advertise TCP MSS from the configured MTU, not the learned PMTU"Yongjian Wang
This reverts commit 2640e6419594 ("net: advertise TCP MSS from the configured MTU, not the learned PMTU"). That commit stopped the learned PMTU from lowering the MSS we advertise in SYN and SYN-ACK. For symmetric paths it argued that "the peer runs its own PMTU discovery and usually already knows the real path MTU". That only holds if ICMP "fragmentation needed" can reach the peer. When the peer sits behind a firewall that drops inbound ICMP, its PMTU discovery is a black hole (RFC 2923, section 2.1), and the smaller MSS we advertised was the only thing keeping its full-size segments off the narrow hop. Inbound ICMP filtering is very common in enterprise and carrier networks, and it is pervasive in mainland China. We hit this in production after the commit was backported to 6.12.111: TCP connections that reach a server through a relay with a smaller-MTU hop complete the handshake, then stall as soon as the client sends full-size segments. Clients on networks that let ICMP through, and connections that bypass the relay, are unaffected, which made it hard to trace back to the kernel. Reproducer, network namespaces on a single host: cli --(1500)-- r1 --(1456)-- r2 --(1500)-- srv r1 drops ICMP frag-needed towards cli. srv has already learned PMTU 1456 towards cli, then cli uploads 1 MB to srv: kernel SYN-ACK MSS 1 MB upload 6.12.107 1416 OK 6.12.111 1460 stalls, times out 7.3-rc7 1460 stalls, times out 7.3-rc7 + this revert 1416 OK The asymmetric case the commit was written for does not need a new default: the advertised MSS can already be set per route with the advmss metric, which takes precedence over default_advmss(). With this revert applied, on an asymmetric path where srv learned PMTU 1456 towards cli while cli->srv is 1500 end to end: srv route to cli SYN-ACK MSS largest cli->srv segment default 1416 1404 advmss 1460 1460 1448 So DSR-style setups can opt in with "ip route ... advmss <mss>", while hosts whose peers cannot complete PMTU discovery keep working by default. Fixes: 2640e6419594 ("net: advertise TCP MSS from the configured MTU, not the learned PMTU") Closes: https://lore.kernel.org/regressions/4F0FAEB6-A13B-47F3-BFF1-C706686C6F64@gmail.com/ Cc: stable@vger.kernel.org Signed-off-by: Yongjian Wang <echoowall@gmail.com> Reviewed-by: Eric Dumazet <edumazet@kernel.org> Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev> Link: https://patch.msgid.link/20261026-advmss-revert-v1-2-272fa4b7ecb6@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysMerge tag 'kvmarm-fixes-7.4-1' of ↵Paolo Bonzini
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD KVM/arm64 fixes for 7.4, take #1 - Fix a couple of embarrassing merge mistakes in kvmarm-7.4 - Cleanup the HCR_EL2 bit fields to exclusively use the generated definitions, fixings a nasty regression introduced in 6.16, where barriers were not upgraded from NSH to ISH anymore - Fix publication of state when a vcpu is forced out of the guest - Let vcpu pausing nest correctly - Sanitise ID_AA64MMFR3_EL1.S1P[IO]E to follow the rules of the architecture - Don't warn on SMCCC filter reserved range allocation failure - Prevent GICv5 and TLBI hypercalls to be used from the host when pKVM is active - Enforce that only GICv3 guests are supported for pKVM - Don't try to access GICv5 EL2 sysregs from EL1 - Compute architectrally correct values for ID_AA64MMFR3_EL1.S1P[IO]E by checking the feature dependencies - Require matching VGIC and ITS model - Cleanup TRACE_REMOTE dependencies - selftests: Skip unwritable ID fields in the failed-run test - Move pkvm_selftests() after all CPUs have initialized EL2 - Fix random comments
4 daysfsverity: Set S_VERITY only after rollback is no longer possibleEric Biggers
Commit f77f281b6118 ("fsverity: use a hashtable to find the fsverity_info") changed the implementation of FS_IOC_ENABLE_VERITY to make concurrent reads start going through fsverity verification slightly earlier than they did before. Instead of it happening when enable_verity() calls fsverity_set_info(), it now happens when ->end_enable_verity() sets S_VERITY. However, ext4 and btrfs can roll back verity after they set S_VERITY, causing a use-after-free. Fix that by making ext4 and btrfs set S_VERITY only after rollback is no longer possible. On failure, don't roll back S_VERITY, but do roll back the filesystem-specific verity flag. Also update enable_verity() to handle any future instances of this bug more safely by warning and *not* freeing the fsverity_info. Finally, tweak some comments. Clarify one, and move information from another to its proper place in the comment for ->end_enable_verity(). Fixes: f77f281b6118 ("fsverity: use a hashtable to find the fsverity_info") Cc: stable@vger.kernel.org Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20261025204807.122875-1-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
4 daysMerge tag 'platform-drivers-x86-v7.4-1' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86 Pull x86 platform driver updates from Ilpo Järvinen: "The usual updates for laptop quirks from HP, ASUS, Acer, Dell etc: - new model names and recent CPU support - more special button / function key handling - battery and hardware monitoring quirks Tool updates to intel-speed-select WMI now supports non-x86 architectures Miscellaneous cleanups / refactoring / improvements" * tag 'platform-drivers-x86-v7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (237 commits) platform/x86: asus-wmi: name the TUF keyboard RGB state and speed codes platform/x86: asus-wmi: fix TUF keyboard power state shutdown naming platform/x86: asus-wmi: rename TUF RGB state DEVID to _CMD platform/x86: asus-armoury: add power limits quirk for GU605CM platform/x86: asus-armoury: add power limits quirk for G533QS platform/x86: asus-armoury: add power limits quirk for GA402NV platform/x86: asus-armoury: add power limits quirk for FA608UP platform/x86: asus-armoury: add power limits quirk for FA608UH platform/x86: asus-armoury: add power limits quirk for FA608PM platform/x86: asus-armoury: add power limits quirk for G713QR platform/x86: ibm_rtl: Fix potential OOB read at signature search platform/x86: acer-wmi: Add support for Acer Nitro AN16-41 platform/x86: acer-wmi: Cycle platform profile on mode key 0x4 platform/x86: hp-wmi: Disable hwmon attributes when no fans are usable platform/x86: gpd pocket fan: Cancel work before releasing GPIOs platform/x86: asus-armoury: Add XBOX ROG Ally X 20 Tunables platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd platform/x86: msi-wmi: Sort scancodes numerically platform: arm64: Add a driver for the EC found on ASUS Glymur machines MAINTAINERS: Add myself as a LENOVO drivers co-maintainer ...
4 daysMerge tag 'dmaengine-7.4-rc1' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine Pull dmaengine updates from Vinod Koul: "This consists of start of work for hiding dmaengine internals and adding new APIs for dmaengine calls. Also couple of drivers and device and lot of updates esp AI-assisted improvements to drivers. Core: - Better document descriptor flags and clarify ordering rules around cookie completion - New APIs to start hiding dmaengine guts so that we can start making them internal New Support: - Nord and Maili GPI DMAengine support - DW axi dma updates and support for UltraRISC DP1000 controller - Apple M3 generation ADMACs support - Amlogic A9 SoC DMA controller driver - Sun6i refactoring and support for Allwinner A733 DMA controller Updates: - Freescale device_prep_peripheral_dma_vec support and dynamic scatter/gather chaining - TI crossbar and cppi DT schema conversion - zynqmp driver updates for error patch handling - Link list handling improvements for DW edma driver - ST dma40 improvements and corner case handling" * tag 'dmaengine-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine: (149 commits) dmaengine: amlogic: Fix regmap error check issue dmaengine: ste_dma40: Preserve the LCPA I/O address space docs: dmaengine: clarify ordering rules around cookie completion dmaengine: move driver-private helpers out of include/linux/dmaengine.h dmaengine: add dmaengine_desc_set_callback() helper dmaengine: add dmaengine_get_provider_device() API dmaengine: add dmaengine_get_max_xor() helper dmaengine: add dmaengine_get_cap_mask() and dmaengine_has_cap() helpers dmaengine: add dmaengine_get_copy_align() and related alignment getter helpers dmaengine: add dmaengine_is_*_aligned() helpers for DMA consumers dmaengine: add dmaengine_prep_dma_(pq|pq_val|interrupt|xor)() API dmaengine: sh: rcar-dmac: Add support for R-Car Gen5 SoCs dt-bindings: renesas,rcar-dmac: Add support for R-Car X5H SoC dmaengine: sh: rcar-dmac: SMMU doesn't need IPMMU workaround dmaengine: sh: rcar-dmac: fix style in struct initialization dmaengine: qcom: bam_dma: free interrupt before the clock in error path dmaengine: ppc4xx: fix typo "contoller" in comment dmaengine: ste_dma40: Search all blocks for fixed logical channels dt-bindings: dma: dma40: Restore disabled-channels dmaengine: ste_dma40: Validate memcpy configuration ...
4 daysMerge tag 'phy-for-7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy Pull phy updates from Vinod Koul: "As usual bunch of new device and driver support and updates to existing drivers: New Support: - Rockchip rk3576 csi dphy support - Mediatek MT8195, MT8196 DisplayPort PHYs. MT8196 PCI-Express Gen4 S-PHY, MT8189 tphy support - Qualcomm Nord eUSB2, QMP USB PHY, QMP PCIe and Gen5x16 PHY support, M31 eUSB2 PHY, Maili QMP UFS & PCIe PHY, Shikra PCIe phy - New driver for Qualcomm CSI2 C-PHY/DPHY support and new APIs in core to parse phy nodes - Nvidia Tegra238 XUSB pad controller support, Tegra264 MPHY driver, Tegra264 xusb support - Thunderbolt phy support in core and Qualcomm driver support for USB4 for X1E platforms - Google Tensor SoC USB PHY driver - ASPEED AST2700 USB3 PHY driver - Microchip MCP2542 can phy support Updates: - FRL TxFFE config support and Samsumg driver support and runtime PM for dcphy driver - Mediatek optional repeater support for USB2 ports - Refactoring and improvements on rockchip usbdp driver - Apple USB4 pipehandler state support - Rockchip single-lane DP support" * tag 'phy-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy: (114 commits) phy: tegra: Add support for Tegra238 XUSB pad controller phy: tegra: xusb: Use dev_err_probe() dt-bindings: phy: tegra194: Add compatible for Tegra238 MAINTAINERS: Add ASPEED USB3 PHY driver phy: aspeed: Add AST2700 USB3.2 PHY driver dt-bindings: phy: aspeed: Document AST2700 USB3.2 PHY phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3576 variant dt-bindings: phy: rockchip-inno-csi-dphy: add rk3576 variant phy: mediatek: Add support for PCI-Express Gen4 S-PHY dt-bindings: phy: Document MT8196 MediaTek PCI-Express Gen4 S-PHY phy: tegra: Add Tegra264 MPHY driver dt-bindings: phy: Add nvidia,tegra264-mphy phy: rockchip: samsung-hdptx: Add support for FRL TxFFE level control phy: rockchip: samsung-hdptx: Handle PHY config after module reload phy: hdmi: Add optional FRL TxFFE config options phy: tegra: xusb: Add Tegra264 support phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock dt-bindings: phy: tegra-xusb: Add support for Tegra264 phy: freescale: fsl-samsung-hdmi: initialize default rate ...
4 daysMerge tag 'soundwire-7.4-rc1' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire Pull soundwire updates from Vinod Koul: - CLOCK_STOP_MODE1 support in bus and Intel driver - DMI quirks for disabling ghost on Lenovo Yoga 7 Pro, Lenovo Yoga Slim 7, Lenovo Pro 9, Lenovo Yoga Slim 7i 14IPH11. - Few more codecs as wake capable, tac5xx2 family, rt718, rt766/rt767 - Qualcomm Shikra SoC support * tag 'soundwire-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire: soundwire: intel_auxdevice: add rt766/rt767 codec to wake_capable_list soundwire: dmi-quirks: Disable ghost rt711 on Lenovo Yoga Slim 7 soundwire: dmi-quirks: Disable ghost Realtek on Lenovo Yoga 7 Pro soundwire: intel_auxdevice: add rt718 codec to wake_capable_list soundwire: dmi-quirks: drop the ghost RT1320 on the Surface Pro 11 (Intel) soundwire: qcom: add EE-aware register layout for Shikra dt-bindings: soundwire: qcom: add qcom,shikra-soundwire compatible soundwire: Intel: stop sdw clock in system suspend soundwire: Intel: add wake_enable parameter to stop_bus ops soundwire: bus: add CLOCK_STOP_MODE1 support back soundwire: dmi-quirks: Disable ghost Realtek on Lenovo Pro 9 soundwire: qcom: cache SCP_ADDRPAGE1/2 to preserve MBQ atomicity soundwire: bus: iterate DT compatibles for class-ID match soundwire: fix repeated words in log messages soundwire: intel_auxdevice: add tac5xx2 family to wake_capable_list soundwire: bus_type: Use devres to free slave IDA soundwire: dmi-quirks: add Lenovo Yoga Slim 7i 14IPH11 soundwire: intel: initialise quirk_mask before reading it
4 daysMerge tag 'rpmsg-v7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux Pull rpmsg updates from Bjorn Andersson: - Allow virtio rpmsg to use separate transmit and receive buffer counts based on the vring sizes, and obtain buffer sizes from virtio config space when the feature is negotiated. Document the configuration and report the MTU in the sample driver. - Fix signal interruption and timeout handling while waiting for a virtio transmit buffer. Release the device tree node reference on MediaTek channel teardown. - Convert the rpmsg control ioctl comments to kernel-doc format. * tag 'rpmsg-v7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux: rpmsg: virtio: fix error handling in TX buffer wait rpmsg: mtk: release channel OF node on device teardown samples: rpmsg: Fix mtu printk specifiers samples: rpmsg: Add MTU size info docs: rpmsg: Add virtio config space details rpmsg: virtio_rpmsg_bus: Get buffer size from config space rpmsg: virtio_rpmsg_bus: Allow different size of tx and rx bufs rpmsg: virtio_rpmsg_bus: Rename rbufs and sbufs rpmsg: ctrl: use kernel-doc format for ioctl macros
4 daysMerge tag 'rproc-v7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux Pull remoteproc updates from Bjorn Andersson: - Add Qualcomm QMI Thermal Mitigation Device support for PAS-managed remote processors, with cooling device bindings and configurations for Hamoa, Kodiak, Lemans, Talos, Monaco, and Shikra CDSP and modem subsystems as applicable. - Add per-power-domain proxy performance states for Hawi CDSP and update Hawi, Maili, and SDX75 PAS compatible bindings and the SDX75 device tree. Correct the Qualcomm ADSP startup timeout. - Fetch auto-boot firmware only once and synchronize boot work with device removal. Bound ELF section header accesses, improve trace diagnostics, and update coredump configuration documentation. - Set 48-bit DMA masks for TI K3 DSP and R5 remote processors, correct mailbox message types, and enable compile testing for more TI drivers. Fix i.MX address range boundary checks and DSP runtime PM ordering, and simplify mailbox notification handling. - Harden Xilinx mailbox setup and teardown and avoid sending notifications when the transmit queue is full. Propagate STM32 optional IRQ lookup errors and correct the MediaTek MT8188 SCP register binding. * tag 'rproc-v7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux: (33 commits) remoteproc: qcom_q6v5_pas: Add QMI TMD cooling support for Shikra remoteproc: virtio: Remove stray white space remoteproc: virtio: Replace kmemdup with kmemdup_array remoteproc: virtio: Add vdev_to_rsc() helper remoteproc: core: Fetch the auto-boot firmware only once remoteproc: xlnx: fix typecast warnings remoteproc: qcom_q6v5_pas: enable QMI TMD cooling support remoteproc: qcom: pas: add support for TMD thermal cooling devices soc: qcom: Add QMI TMD support for remote thermal mitigation dt-bindings: remoteproc: qcom,pas: add #cooling-cells property remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone arm64: dts: qcom: sdx75: Use SM8650 MPSS as fallback compatible dt-bindings: remoteproc: qcom,sm8550-pas: Make SDX75 MPSS fallback to SM8650 dt-bindings: remoteproc: qcom,sm8550-pas: Add Hawi and Maili MPSS as SM8650 fallback dt-bindings: remoteproc: Fix MT8188 SCP regs remoteproc: Use %p for pointer formatting remoteproc: Add compile testing for additional TI drivers remoteproc: k3-dsp: Fix usage of omap_mbox_message and mbox_msg_t remoteproc: k3: Include what we need and only what we need ...
4 daysMerge tag 'i3c/for-7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux Pull I3C updates from Alexandre Belloni: "This introduces the I3C hub support in the core with drivers still being worked on. Then we have the usual fixes and cleanups: Subsystem: - Add APIs for I3C hub support - Restrict HDR modes to those supported by the bus and target - Fix ACPI target enumeration on multi-instance controllers by extracting the bus-controller instance number and PID from the correct _ADR fields. - allocate IBI workqueue with WQ_HIGHPRI Drivers: - dw: Synaptics sl2610 support - mipi-i3c-hci: HDR-DDR support, cleanup and fixes" * tag 'i3c/for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux: (28 commits) dt-bindings: i3c: Add Synaptics sl2610 i3c i3c: dw: switch to array-based exclusive reset control dt-bindings: i3c: dw: support up to two reset lines i3c: hub: Add support for the I3C interface in the I3C hub dt-bindings: i3c: Add NXP P3H2x4x i3c-hub support i3c: master: Add controller-only device operation helpers i3c: master: Add APIs for I3C hub support i3c: master: use named initializers for acpi_device_id i3c: master: adi: free the IRQ before unregistering the master i3c: master: amd: Report direct CCC read length in payload.actual_len i3c: mipi-i3c-hci: Add HDR-DDR support i3c: Restrict HDR modes to those supported by the bus and target i3c: mipi-i3c-hci: Support configurable device NACK retries i3c: mipi-i3c-hci: Remove invalid HDR-BT and Fm/Fm+ definitions i3c: mipi-i3c-hci: Remove invalid transfer size limit i3c: mipi-i3c-hci: Correct RESP_DATA_LENGTH to bits 15:0 i3c: mipi-i3c-hci: Stop rings gracefully when suspending i3c: mipi-i3c-hci: Move DMA suspend/resume callbacks i3c: mipi-i3c-hci: Process multiple IBIs per interrupt i3c: mipi-i3c-hci: Fix runtime PM violation in i3c_hci_free_ibi() ...
4 daysMerge tag 'for-v7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply Pull power supply and reset updates from Sebastian Reichel: "Power-supply core: - introduce LOAD_SWITCH property - pack power_supply_desc to optimize memory - prevent power-supply device unregistration while callback runs - drop last CONFIG_OF build-time dependencies from the core - documentation fixes Power-supply drivers: - bq27xxx: add support for bq27z746, bq28z620 - ab8500: add AB8505 support - bq257xx: fix probe time configuration race condition - multiple: convert drivers with custom LOAD_SWITCH properties to the new standard one - cros_charge-control: restore EC state on resume - qcom_battmgr: fix USB type reporting, notify charger online state, report full batteries and correct capacity on X1E - gpio-charger: always report as discharging if input power is missing - bq24190_charger: don't reset registers across system suspend - qcom_smbx: a lot of independent fixes - lots of error and module removal path fixes - misc fixes Reset drivers - misc fixes" * tag 'for-v7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (77 commits) power: supply: gpio-charger: Report discharging without input power power: supply: qcom_battmgr: report full batteries power_supply: serialize property access with unregister power: supply: bq257xx: Describe the dev field in the driver data structure power: supply: qcom_battmgr: Notify charger supplies of online changes power: supply: generic-adc-battery: fix status with no supplier power: supply: qcom_battmgr: report the USB type from USB_ADAP_TYPE power: supply: sysfs: Ratelimit "unavailable enum value" warning power: supply: cros_charge-control: restore EC state on resume power: supply: qcom_smbx: set the charge enable after software control power: supply: generic-adc-battery: Propagate charged GPIO errors power: supply: sbs-battery: disable polling before supply teardown power: supply: pf1550: drain IRQ work before unregistering supplies power: supply: bq256xx: Expose VBUS state through extcon power: supply: ab8500_fg: Avoid reserved AB8505 CCConf bit power: supply: ab8500_fg: Finalize current measurements power: supply: ab8500_charger: Recover inactive AB8505 charger power: supply: ab8500_charger: Retry AB8505 USB detection power: supply: ab8500_charger: Skip absent AB8505 main charger power: supply: ab8500_charger: Handle detection errors ...
4 daysio_uring: free the task context after a grace periodChris Mason
A task other than the owner can free a request, io_ring_exit_work() running the local task_work of a DEFER_TASKRUN ring for example, or io_do_iopoll() reaping completions. io_put_task() then takes the else branch: percpu_counter_sub(&tctx->inflight, 1); if (unlikely(atomic_read(&tctx->in_cancel))) wake_up(&tctx->wait); put_task_struct(tctx->task); The first line is what lets the owner leave io_uring_cancel_generic(), and on exec it frees the tctx right after. Nothing holds that off for the remaining three lines, the task reference only covers a tctx freed along with the task_struct. It used to work out because io_uring_del_tctx_node() took the uring_lock that the freeing side holds across io_put_task(), until that moved to tctx_lock. Free the tctx with kfree_rcu(), and enter an RCU read section in io_put_task() before the count is dropped. Fixes: 5623eb1ed035 ("io_uring/tctx: add separate lock for list of tctx's in ctx") Signed-off-by: Chris Mason <mason@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
4 daysinet: frags: prevent acceptance of partially authenticated reassemblyJérémy Jean
A reassembled skb retains the secpath from its first fragment, which makes it possible for the final policy check to accept bytes that were not covered by the transform recorded on the skb. This can affect IPsec tunnel traffic, including AH and ESP, and allow a packet to be accepted even though only part of its payload was authenticated. Reject a fragment when its secpath differs from the fragments already in the queue, and keep overlap statistics limited to actual overlaps. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: stable@vger.kernel.org Signed-off-by: Jérémy Jean <Jeremy.Jean@oss.cyber.gouv.fr> Reviewed-by: Eric Dumazet <edumazet@kernel.org> Signed-off-by: Dave Miller <davem@davem-thinkpadp1gen8.ibmlond.csb>
4 daysntfs3: add file I/O tracepointsBaolin Liu
Add ntfs3 tracepoints for file I/O operations. This adds trace events for ntfs_file_read_iter() and ntfs_file_write_iter() to help observe file read and write activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add iomap tracepointsBaolin Liu
Add ntfs3 tracepoints for iomap operations. This adds trace events for ntfs_iomap_begin() and ntfs_iomap_end() to help observe iomap mapping activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add allocation tracepointsBaolin Liu
Add ntfs3 tracepoints for allocation operations. This adds trace events for attr_allocate_clusters(), attr_set_size_ex(), and attr_data_get_block() to help observe cluster allocation, size changes, and block mapping activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add directory index tracepointsBaolin Liu
Add ntfs3 tracepoints for directory index operations. This adds trace events for dir_search_u(), indx_find(), indx_insert_entry(), and indx_delete_entry() to help observe directory index lookup, insert, and delete activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add create inode tracepointBaolin Liu
Add an ntfs3 tracepoint for inode creation. This adds a trace event for ntfs_create_inode() to help observe inode creation activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add namei tracepointsBaolin Liu
Add ntfs3 tracepoints for namei operations. This adds trace events for ntfs_lookup() and ntfs_rename() to help observe directory lookup and rename activity. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysntfs3: add mount and log replay tracepointsBaolin Liu
Add ntfs3 tracepoints for mount and log replay paths. This adds trace events for ntfs_fill_super(), ntfs_init_from_boot(), and log_replay() to help observe mount setup, boot sector parsing, and $LogFile replay results. Signed-off-by: Baolin Liu <liubaolin@kylinos.cn> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
4 daysbpf: Clear delta of a register that scalar evolution widensAlexei Starovoitov
After 'r3 = r8; r3 += 4' the verifier knows that r3 == r8 + 4. The two registers have the same id, and r3 keeps the difference in reg->delta. When the prog compares one of them with a constant, sync_linked_regs() calculates the range of the other register from the difference of the two deltas. At a loop head scalar evolution widens a register: it replaces the register with its range over all iterations. Then the register is not linked to other registers. scratch_widened_reg_id() clears reg->id, but it does not clear reg->delta. A subsequent copy of the register gets the stale delta. Then the range of the copy is incorrect by this delta. r3 = r8 r3 += 4 ; R3=scalar(id=1+4) 1: ; r3 is widened: no id, delta is still 4 r4 = r3 ; id=2 and delta 4 in both r4 += 1 ; R4=scalar(id=2+1) if r3 > 10 goto 3f ; R3 <= 10, R4 = R3 + 1 - 4 <= 7 if r4 <= 7 goto 2f ... ; not verified, r4 is up to 11 here The verifier does not verify code that can run. Use clear_scalar_id(). It clears id and delta together. Move it to bpf_verifier.h, so that scev.c can call it. Fixes: 6ccf49f79327 ("bpf: Use SCEV to widen bounded loops") Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://patch.msgid.link/20261027190314.1440199-8-alexei.starovoitov@gmail.com
4 daysbpf: Remove BPF_F_ARENA_SCALARAlexei Starovoitov
Rust has no address spaces. Thus a prog in Rust accesses arena through scalars. With BPF_F_ARENA_SCALAR the verifier accepts each load and each store through a scalar as an access to arena. The verifier rewrites one insn at a time. Thus it must add one insn to each access. The compiler knows the source of each pointer. It can emit one addr_space_cast for each pointer, as it does for the __arena pointers of C. flag: one move for each access cast: one cast for each pointer ax = (u32)r1 r1 = addr_space_cast(r1, 0, 1) r2 = *(u64 *)(ax + 0) r2 = *(u64 *)(r1 + 0) ax = (u32)r1 r3 = *(u64 *)(r1 + 8) r3 = *(u64 *)(ax + 8) 20 progs of rust-bpf, with the flag and with the casts that a prototype of an LLVM pass emits: flag casts moves or casts 1568 571 insns 14864 13938 jited bytes 72351 69111 No released kernel has the flag. LLVM does not emit the casts for Rust at this time. Until it does, Rust progs that access arena do not load. scx_mavd and scx_nitosis set the flag too. They are experimental schedulers in C in sched-ext/scx, and they use the flag to omit __arena. They must use __arena again. This reverts commit 4c651a91bdfc ("bpf: Treat load and store through a number as arena access"). One part stays: BPF_REG_AX in reg2pt_regs[] of the x86 JIT. The fetching AND/OR/XOR atomics in arena use it now. Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://patch.msgid.link/20261027190314.1440199-6-alexei.starovoitov@gmail.com