After two months of development, Linus Torvalds has released the Linux kernel 7.3. Among the most notable changes are: the filesystem isolation mechanism based on the pseudo-filesystem failfs and the system call fchroot(), support for creating nested schedulers SCHED_EXT, BPF handlers for executing files, alternative data streams in NTFS3, performance optimizations for FUSE, Btrfs, and Ext4, support for Apple Time Machine in ksmbd, removal of the EFS and FreeVxFS filesystems, direct access mode to block devices, improvements in handling video memory shortages, tracking memory accesses of the guest system via userfaultfd, compression of AppArmor rules, restrictions on access to AF_ALG, and support for Apple M3 Pro, Max, and Ultra chips.
The new version includes 20,260 fixes from 3,171 developers, of which 807 submitted their changes to the kernel for the first time. The patch size is 63 MB (the changes affect 14,923 files, with 943,849 lines of code added,
297,515 lines removed). In the previous release, there were 17,833 fixes from 2,766 developers, with a patch size of 68 MB. About 44% of all changes presented in 7.3 are related to device drivers, approximately 12% pertain to updating architecture-specific code, 12% relate to the networking stack, 5% to file systems, and 3% to internal kernel subsystems.
Key innovations in kernel 7.3 (1, 2, 3):
- Disk subsystem, input/output, and file systems
- Performance optimization has been conducted for the Btrfs filesystem. For non-SSD drives, unnecessary delays have been eliminated, resulting in a fivefold increase in throughput for workloads heavily using the fsync function, such as logging. The identification of holes in files with many extents and no holes has been disabled in fsync, which accelerated the execution of certain specific tests by 5 times.
When tracking non-cacheable extent buffers, the xarray structure is replaced with a local LRU list, resulting in a threefold increase in performance for these operations. Performance drops when using direct I/O mode, caused by regressions in previous kernel releases, have been eliminated. Locks during speculative reads of extents have been reduced, lowering overhead when different tasks access overlapping areas.
- In Btrfs, support for the first version of the space information cache has been removed. File systems created on older systems must be upgraded to the second version of the cache using the btrfstune utility, otherwise, they will operate more slowly. The mounting option 'usebackuproot' has also been removed, and instead 'rescue=usebackuproot' should be used.
- In the Ext4 file system, the performance of parallel write operations with direct I/O has been improved, and the reservation of free space via the fallocate() call has been accelerated. A regression that reduced performance during buffered writes has been eliminated.
- In the Ext4 file system, the mounting mode 'data=journal' has been deprecated. Support for this mounting option is planned to be discontinued in 2028. The 'data=journal' option enables full journaling mode, which logs not only metadata but also the actual data, ensuring high resilience in case of failures, but complicates code maintenance and results in significant performance drops compared to 'data=ordered' and 'data=writeback' modes.
- The EFS file system, which was used in early versions of the IRIX operating system, has been removed; it stopped being used around 30 years ago and has been unsupported for over 20 years. For those needing access to EFS partitions, there are user-space utilities available.
- The FreeVxFS file system, which implements the VERITAS VxFS format used in SCO UnixWare in the 1990s and is no longer in practical use, has been removed.
- In the mechanism for creating file systems in user space with FUSE, performance has been improved and memory consumption has been reduced when using the io_uring asynchronous I/O system. This acceleration has been achieved by adding the capability to transfer buffer pools from user space to the kernel and eliminating unnecessary buffering (zero-copy) when the FUSE server accesses the memory pages of the client process or the page cache.
- For block devices, the RWF_DONTCACHE flag has been implemented, which is similar to the direct I/O mode.
(Direct I/O), which can be used in preadv2() and pwritev2() functions or in read and write requests via io_uring for accessing a block device bypassing the page cache. For example, the flag may be applied in a DBMS for low-level operations with block devices. - Support for user ID mapping has been added in the overlayfs filesystem, used to map files of a specific user on a mounted foreign partition to another user in the current system.
- Support for mounting multiple filesystems from a single block device has been improved.
- In the ntfs3 driver, initial support for alternate data streams, separated by a colon in the file name, has been implemented. To create a new alternate stream, the command 'touch file:stream' can be used, for reading — 'cat file:stream', for deleting — 'rm file:stream', and for outputting available streams — 'cat file:query_streams'.
- The new implementation of NTFS (ntfsplus) in read-only mode now supports transparent file compression technology using WOF (Windows Overlay Filter) overlay filters.
- Support for the CB_NOTIFY operation has been added to the NFS server, allowing the client to cache directory metadata on its side, receiving notifications of changes from the server.
- Support for dynamic (without unmounting the filesystem) removal of partitions from a shared pool has been added to the F2FS filesystem, with automatic data transfer to other partitions and retrieval back (for example, a drive can be temporarily removed for other needs).
- Support for the FALLOC_FL_WRITE_ZEROES flag in the fallocate() system call has been added to XFS, allowing a specified range in a file to be zeroed out using the WRITE_ZERO command supported by some SSDs, performing zeroing without input/output operations.
- Performance optimization has been conducted for the Btrfs filesystem. For non-SSD drives, unnecessary delays have been eliminated, resulting in a fivefold increase in throughput for workloads heavily using the fsync function, such as logging. The identification of holes in files with many extents and no holes has been disabled in fsync, which accelerated the execution of certain specific tests by 5 times.
- Memory and system services
- Improved handling of graphics memory shortages. In cases of depleted free video memory, the kernel now attempts to evict application buffers without guaranteed memory quotas (dmem cgroup) from video memory to system memory (GTT) instead of immediately refusing to allocate video memory. This approach ensures that resources are allocated to applications for which the system has reserved a certain amount of video memory, even if memory has already been allocated to other applications. Previously, if a quota-free application had already been allocated video memory, in the event of a video memory shortage, applications with guaranteed quotas could not obtain it, and instead of video memory through the TTM (Translation Table Maps) subsystem, slower system RAM addressed from the GPU (GTT) was allocated to the application.
Support for dmem cgroup has been implemented for the nouveau, xe, and amdgpu drivers. - Work has been completed on the SCHED_EXT mechanism, which allows using BPF to create CPU schedulers, enabling the creation of nested schedulers (sub-scheduler) that can utilize their own task scheduler for each cgroup.
- The scheduler has seen improvements related to cgroup processing and addressing weight distribution issues that caused additional overhead and delays. Several weight distribution methods for cgroups have been proposed — 'up', 'max', 'concur', and 'tasks', set through the cgroup_mode parameter. A unified runqueue has been engaged for scheduling tasks within the cgroup. Delays when scheduling tasks that are allocated short CPU time quanta have been reduced due to
ability to cancel, update, or minimize the execution time of tasks that are protected from eviction when necessary. - The binfmt_misc mechanism (\/proc\/sys\/fs\/binfmt_misc) has been implemented.
the ability to connect BPF handlers to add support for new executable file formats. This change allows for programmatic analysis of the executable file type at each launch, enabling the selection of the interpreter or dynamic loader without hacks like using the patchelf utility and wrapper scripts. For example, a BPF program can define executable files for different architectures or platforms and run the corresponding emulators or Wine, as well as simplify the organization of executing files in packages installed in different directories in systems with the Nix package manager. - The transfer of changes from the Rust-for-Linux branch continues, related to the use of the Rust language as a second language for developing drivers and kernel modules (Rust support is not enabled by default and does not include Rust as a mandatory build dependency for the kernel). There is now support for using Rust for the PowerPC architecture. Implemented: a module for lossless integer conversions, an obfuscation logging mode for pointer values to prevent leaking information about the address space, a wrapper for the synchronize_rcu() function, memory barriers, an interrupt module for enabling/disabling interrupts, types for input/output, wrappers over fwctl, and the SRCU (sleepable read-copy-update) mechanism, wrappers over gem shmem.
spinlock locks SpinLockIrq, which do not allow interruptions in critical sections. - A sysctl parameter syscall_user_dispatch has been added to control the activation of the system call dispatch mode in user space, allowing one process to intercept system calls from another process (used in Wine for emulating Windows system calls).
- In BPF, the function bpf_sock_read_xattr() has been added, which allows BPF programs to read user-defined extended attributes
(user.*) from socket inodes. In BPF applications, the ability to define global variables bound to the CPU has been introduced. The BPF program verifier now provides additional information about detected errors, making it easier to determine the causes of problems. - The tracing mechanisms kprobes, uprobes, and fprobes have been enhanced to support type casting, utilizing BTF (BPF Type Format) data which contains type-checking information in BPF pseudocode, as well as improved variable information extraction.
- The DAMON (Data Access MONitor) subsystem, which allows monitoring process access to data in RAM (for example, it is possible to find out which areas of memory were accessed by the process and which areas remained unused), has been enhanced with the capability to monitor changes in data attributes (anonymous memory, mapped files, read-only access, no memory accesses, etc.).
- In the KHO (Kexec HandOver) mechanism, which is used to boot a new kernel from an old one without losing system state, support for huge page memory allocation during boot has been implemented. Such memory pages are now marked and preserved after booting the new kernel.
- Low-level code of the swap system has been transitioned to a new low-level data structure swap_ops, which has simplified code maintenance and implemented the abstractions needed for future functionality expansion.
- Ioctl commands ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT, and ALLOCINFO_IOC_GET_NEXT have been added, allowing selective transfer of profiling data related to memory allocation to user space. Compared to the previously available interface /proc/allocinfo, the proposed ioctl calls can enhance profiling request performance by up to 20 times through filtering unnecessary data.
- Improved handling of graphics memory shortages. In cases of depleted free video memory, the kernel now attempts to evict application buffers without guaranteed memory quotas (dmem cgroup) from video memory to system memory (GTT) instead of immediately refusing to allocate video memory. This approach ensures that resources are allocated to applications for which the system has reserved a certain amount of video memory, even if memory has already been allocated to other applications. Previously, if a quota-free application had already been allocated video memory, in the event of a video memory shortage, applications with guaranteed quotas could not obtain it, and instead of video memory through the TTM (Translation Table Maps) subsystem, slower system RAM addressed from the GPU (GTT) was allocated to the application.
- Virtualization and Security
- A new isolation mechanism has been proposed that blocks access to filesystem contents, except for resources explicitly passed into the sandbox environment via file descriptors. The mechanism is implemented using the pseudo-FS failfs and the fchroot system call.
The pseudo-FS failfs resembles the FS nullfs, but instead of the latter's principle of "nothing is stored," it implements the principle of "nothing is supported." This characteristic prevents anything from being mounted on top of failfs, cloning the FS, and tracking the state through statmount(), listmount(), /proc//mountinfo, and /proc/filesystems. If the root or working directory of the process is in failfs, any attempts to navigate the FS using absolute file paths, symbolic links, and relative paths depending on the current working directory are blocked. The process is only left with the ability to access a specific directory via file descriptors that were opened prior to the isolation.
To transition to the new isolation mode, a system call fchroot has been added, similar to the chroot system call, but operating at the file descriptor level. The system calls fchdir now include the FD_FAILFS_ROOT flag to move the process's working directory to the failfs filesystem.
An analogous flag is available in the fchroot system call. - The ability to track memory accesses of the guest system has been added using the userfaultfd mechanism, which allows the creation of handlers for accesses to unallocated or protected memory pages in user space. In practice, this added functionality enables the hypervisor to identify memory pages that have not been accessed in the virtual machine for evacuation to slower memory or external storage. To track violations of the read and write prohibition in the monitored memory area, the UFFDIO_REGISTER_MODE_RWP flag has been included, which can serve as a higher-performance alternative to using mprotect(PROT_NONE) together with a signal handler generated when accessing the memory for which read and write access is denied (in the case of userfaultfd, an exception is generated, handled in user space). This change has been prepared with the assistance of AI ("Assisted-by: Claude:claude-opus-4-6").
- The separation between kernel threads (kthread) and the init process (PID 1) has been strengthened. Previously, a shared filesystem state was used between kernel threads and PID 1.
This allowed the pivot_root() call to redefine the FS state for all kernel threads. In the new version, PID 1 uses a completely separate fs_struct, while kernel threads are isolated in a separate mount point with nullfs. - Support for AES encryption modes — ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM, and CCM — has been added to the built-in cryptographic library (libcrypto).
- The AppArmor mandatory access control system now supports loading compressed rule sets and has added an audit mode.
- A new sysctl parameter af_alg_restrict has been added to control access to the AF_ALG cryptographic API from user space. AF_ALG allows the use of hardware accelerators for cryptographic computations in the kernel's Crypto API, but it is applied in quite specific situations and doesn't always provide a performance boost compared to implementing acceleration in user space. Additionally, a series of vulnerabilities have been identified in the AF_ALG handlers, such as Copy Fail, which allows modification of data in the page cache. To reduce the attack surface, access to AF_ALG is partially restricted by default. The possibility of removing AF_ALG in one of the future releases is being considered.
- BPF program verification signed with a digital signature has been tightened. A check for the integrity of BPF program metadata has been added before its loading.
- A flag has been added to the landlock_restrict_self() system call, used to activate Landlock restrictions.
LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS prevents the current process from gaining any new privileges. The Landlock mechanism allows unprivileged programs to drop unnecessary privileges, voluntarily limiting their further access to the system for increased security, such as protecting against attempts to exploit vulnerabilities in a program. - The VirtIO-GPU driver, which provides functionality for the virtual GPU, has added support for S4 sleep mode (hibernation).
- A new isolation mechanism has been proposed that blocks access to filesystem contents, except for resources explicitly passed into the sandbox environment via file descriptors. The mechanism is implemented using the pseudo-FS failfs and the fchroot system call.
- Network subsystem
- In ksmbd, the kernel-integrated server for the SMB protocol, support has been added for Apple Time Machine extensions for backups created in macOS via this application. A mechanism has been implemented to isolate SMB command sequences related to MessageId to block attacks through the submission of invalid or duplicate requests. Support for resending requests over the SMB3 protocol has been added without disrupting the session state if the previous request was lost. SMB3 now offers the ability to encrypt at the level of individual shares. Support for encrypting the SMB Direct communication channel, which uses RDMA (Remote Direct Memory Access) technology, has been added.
- Support has been implemented for using TCP packets with the BIG TCP extension, allowing an increase in the maximum TCP packet size to 4GB, in UDP tunnels based on VXLAN and GENEVE protocols.
- Support for MCTP (Management Component Transport Protocol) tunneling over USB (MCTP-over-USB 1.1) has been added.
- The ability to unregister network devices (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan, etc.) for selected namespaces has been provided.
- For Bluetooth 6.2+, support for the SCI (Shorter Connection Interval) mechanism has been implemented to reduce latency when transmitting data in Bluetooth LE (Low Energy) mode.
- A unified mechanism (NL80211_CMD_PROBE_PEER) for checking connected peers has been added to the nl80211 API, functioning for both wireless access points and client-side.
- Hardware
- Old ARM platforms that are rarely used and hinder the maintenance of current subsystems have been deprecated and scheduled for removal in the 7.5 kernel. Approximately 55,000 lines of code related to supporting platforms such as sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, old pxa boards, orion, dove, and mv78xx0, chips without a memory management unit (MMU), and stm32f4/f7/h7 microcontrollers are set for removal.
- Initial support for Apple M3 Pro, Max, and Ultra chips has been added. Power management for Apple SoCs has been implemented.
- The DRM (Direct Rendering Manager) subsystem has added a property called "color format," allowing users to switch the color representation format for the output device. This property has been implemented for GPU drivers: i915 (HDMI, DP), amdgpu (HDMI, DP), and rockchip (HDMI). For testing, a command like "modetest -s 115:1920×1080-60@NV12 -w 115:'color format':4" can be used, where 115 is the connector ID and '4' is the YUV420 format number.
- Support for DRM modifiers has been added to the amdgpu driver for AMD GPUs of the GFX6-8 series (Southern Islands, Sea Islands, and Volcanic Islands). Initial support for DCN 6.0.0 (Display Core Next) has been implemented. Deprecated code has been cleaned up.
CACP (Content Adaptive Contrast and Power) support has been enabled, allowing for reduced power consumption of OLED panels. For display engines based on the DCN4 architecture, support for the IPS (Idle Power State) mechanism has been added to decrease power consumption during inactivity. Support for AMD Barco graphics cards has been included. - The i915 driver has undergone a code overhaul to determine the capabilities and restore the state of DisplayPort connectors. Support for CMTG (Common mode timing generator) and DC3DO (Display C3 with Clock Off) has been added for Novalake (NVL) GPUs.
- Work on the DRM (Direct Rendering Manager) driver for GPUs based on the Intel Xe architecture, which is used in Intel Arc graphics cards and integrated graphics starting with Tiger Lake processors, has continued. New supported device IDs have been added. The ‘enable_multi_queue’ attribute has been implemented in configfs to disable simultaneous use of multiple command submission queues. Improved support for sleep mode transitions.
- Integration of the Nova driver components for NVIDIA GPUs, equipped with GSP firmware, continues, starting from the NVIDIA GeForce RTX 2000 series based on Turing microarchitecture. The driver is written in Rust. The new version transitions to new TLV firmware images, replacing the older ones used in the Nouveau driver. Support has been added.
for launching firmware for the GSP (GPU System Processor) chip, including vGPU. An API has been added to retrieve information about video memory size. - The Tyr driver, written in Rust and designed to work with ARM Mali GPUs, has added the ability to load firmware in the Mali CSF format, activate GPU virtual memory, and launch the MCU.
- Support for the Adreno Shikra (A704) and Eliza (722) GPUs has been added to the msm driver.
- Support for audio devices and ASoC: Pioneer DJ DJM-S11 has been added.
AW88399 (Lenovo Legion Pro), AW88399 (Lenovo Legion), Lisuan, ALC235, RME HDSPe AIO, RT766/RT767 SDCA, Maili, Hawi, CS35L62 (SoundWire), RT766/RT767 VA1. - Support for Steam Controller (2026 model) has been added; Logitech G502 X Plus and G502 X Lightspeed mice; Endorfy Thock TKL keyboards, Zenbook A16; Nova 5X, Nova 7, and Arctis 7 headsets; Turtle Beach VelocityOne Race steering wheel; MSI Claw gamepad.
- Audio support has been improved for ASUS VivoBook M515DA/X515DAP devices.
LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx, and HP Spectre x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook.
ThinkPad X1 Carbon 6th, HP ProBook 440 G5, Acer Aspire A515-57. - Support for smartphones, tablets, and laptops has been added: Motorola Edge 30, Motorola Moto G2, Xiaomi 12 Lite 5G, Microsoft Surface Pro, Honor MagicBook art 1412in, Sony Xperia M2, Vicharak Axon, Axon Mini, and Vaaman2, Asus Zenbook A16, Lenovo Thinkedge se70.
- Support has been added for ARM platforms and the Samsung Exynos 1580 SoC (used in flagship smartphones from 2024), Orange Pi 5 Pro, Sophgo SG2000 (hybrid Arm/RISC-V), BeagleBadge, Qualcomm ‘Shikra’ and ‘Altera’ (Cortex-A78C), Agilex72 (Cortex-A720), Alientek ATK-DLRV1126, Variscite SoC DART-MX8M-PLUS, DART-MX8M-MINI, VAR-SOM-MX8QM and Sonata/Symphony boards based on them, 9Tripod X3568 v4, Youyeetoo YY3588, milk-v duo, ArmSoM CM5, Freescale Verdin iMX8M Mini, Anbernic RG Vita-Pro, Embedfire Lubancat 4, Vicharak Vaaman, LincStation E1, HINLINK H28K.
At the same time, the Latin American Free Software Foundation has formed
A fully free kernel version 7.3 — Linux-libre 7.3-gnu, has been released, cleaned from firmware and driver elements containing non-free components or sections of code restricted by the manufacturer. In release 7.3, there has been a cleanup of blobs from new drivers for the Mali Tyr GPU, Morse Micro mm81x Wi-Fi, NXP Wi-Fi, and network cards based on Realtek chips. The cleanup code in nova-core, amdgpu, adreno, tegra, iris, rtw89, and mt76 Wi-Fi drivers, Qualcomm Q6V5 PAS, qla2xxx SCSI, and audio codecs aw88399 has been updated. The names of blobs in DTS files (device tree) for Qualcomm ARM chips have been cleaned up.
Source: opennet.ru
