6.17 Merge window, part 1
The most significant changes merged so far include:
Architecture-specific
- The nolibc library is now supported on the SuperH, x32, and MIPS n32 and n34 architectures.
- The rest of the x86 attack-vector controls work has been merged for the x86 architecture; it gives better control over which mitigations for hardware vulnerabilities should be enabled in the kernel. See Documentation/admin-guide/hw-vuln/attack_vector_controls.rst for more information.
- Arm systems can now make use of the Arm v9.2 branch record buffer extension in the perf events subsystem.
- Live patching is now supported on 64-bit Arm systems.
- System-call tracepoints are now supported in User-mode Linux kernels.
Core kernel
- The core-dump socket functionality added in 6.16 has been enhanced with a protocol that allows the core-dump server to control how dumps are handled for each task. This commit describes how the protocol works and the options that are available. There is also an experimental server implementation available that exercises this interface.
- There have been a number of changes to the pidfd functionality. The associated kernel-internal information created with a pidfd is now tied to the process itself rather than the pidfd, allowing it to continue to exist between opens of same process. It is now possible for user space to attach extended attributes to a pidfd; those, too, will exist for the life of the process. File handles for pidfds can now be opened (using open_by_handle_at()) without needing a file descriptor for the containing filesystem. This merge message has more information about these changes.
- The new bpf_cgroup_read_xattr() kfunc allows BPF programs to read extended attributes from the control-group filesystem.
- The kernel's timekeeping system has grown the notion of "auxiliary clocks" that are not tied in any way to the normal system clocks. Until now, all clocks advanced at the same rate and differed only in their offsets; auxiliary clocks march to their own drummer. Documentation is scarce, but there is some information in this merge message.
- Support for uniprocessor configurations has been removed from the scheduler; even single-processor machines will run a kernel built for SMP systems.
- Initial support for proxy execution, which is meant to mitigate priority-inversion problems, has been merged. Proxy execution allows a task waiting for a lock to donate its execution context to the lock holder, speeding the release of that lock; in 6.17, it only works if both tasks are running on the same CPU.
Filesystems and block I/O
- Btrfs has gained large-folio support, though it is still deemed experimental for this release.
- Defragmentation of Btrfs filesystems now offers more control over the use of compression in the defragmented extents.
- The EROFS filesystem now supports metadata compression.
- The NFS server can offer write delegations to clients that open files
in write-only mode. From the
merge message: "
We're expecting this to accelerate a few interesting corner cases
". - The ext4 filesystem has gained support for buffered I/O with the RWF_DONTCACHE (originally proposed as RWF_UNCACHED) flag, which will cause the data to be dropped from the page cache once the operation is complete.
- The inode number for the root of the /proc filesystem is now an acknowledged part of the kernel ABI; it is called PROCFS_ROOT_INO. User-space can check this number to ensure that /proc files have not been replaced, using a bind mount, by an attacker; see this merge message for more information.
- The fallocate() system call has a new option, FALLOC_FL_WRITE_ZEROES, that causes the allocated range to be initialized to zeroes in the most efficient way possible. With recent solid-state devices, this initialization can be done efficiently within the device, with no I/O required. See this changelog for a bit more information; the ext4 filesystem now supports this operation.
- Two new system calls, file_getattr() and file_setattr(), support the manipulation of a file's inode attributes. See this commit for an overview and basic manual page. Documentation of the actual operations supported is scarce, but this XFS manual page gives a good overview.
- The "pktcdvd" packet-writing optical-media driver has been marked as deprecated since 2016. There was an attempt to remove it in 2023 that was reverted. In 6.17 it has been removed again, and will likely stay out this time.
- Thus far, the bcachefs pull request has not been acted upon.
Hardware support
- Clock: Raspberry Pi RP1-based clocks.
- GPIO and pin control: Apple Mac SMC GPIO controllers and Raspberry Pi RP1 pin controllers.
- Industrial I/O: Analog Devices AD4080 high speed analog-to-digital converters, Analog Device AD7405 and AD4170-4 analog-to-digital converters, ChromeOS EC activity sensors, and Nicera D3-323-AA passive infrared sensors.
- Miscellaneous: HiSilicon uncore frequency-scaling controllers, Analog Devices ADP558x keypads, Apple silicon system management controllers, Apple SMC reset/power-off controllers, Raspberry Pi 7-inch touchscreen panel V2 regulators, Argon40 Fan HAT controllers, Lenovo GameZone WMI interfaces, Intel Platform Monitoring Technology interfaces, Qualcomm Milos interconnects, Renesas RZ/T2H serial interfaces, Canaan Kendryte K230 SoC reset controllers, NXP IMX Secure AHB to IP Slave bus (AIPSTZ) bridges, Allwinner A523 PCK-600 power domain controllers, Loongson-2K SD/SDIO/eMMC host interfaces, and AMD heterogeneous core hardware feedback interfaces.
- Sound: Richtek RTQ9124 mono class-D amplifiers.
- SPI: Amlogic SPISG controllers and Renesas RZ/V2H RSPI controllers.
Security-related
- The new FS_IOC_GETLBMD_CAP ioctl() command allows user space to retrieve information about the integrity protections that apply to a given file. In 6.17 it is only supported by block devices, but the plan is to support it within filesystems as well. See this commit for an overview of this new API.
- The kernel can now use the stack-depth tracking provided by Clang 21 to implement kernel-stack erasing, along the lines of what STACKLEAK provides with GCC.
- The deprecation of the /sys/fs/selinux/user API continues; attempts to access it will now result in a five-second delay along with a logged warning.
Internal kernel changes
- The longstanding mmap() method in the file_operations structure is slowly being deprecated in favor of mmap_prepare(), which offers fewer opportunities for bugs and security problems. In 6.17, a number of filesystems are moving over to this new interface; see this merge message for a description of this work and its motivation.
- The kernel's CRC code has been heavily reworked; see this merge message for some more information. There are also new APIs for SHA-1 and SHA-2 generation.
- New Rust abstractions have been added for the regulator subsystem, firmware properties, I/O resources, and I/O memory.
The 6.17 merge window can be expected to close on August 10, but
Torvalds has made it clear that he wants to see all significant pull
requests well ahead of that date. Given that, as of this writing, there
are still over 7,500 commits sitting in linux-next, it is evident that
quite a few of those requests are yet to be acted on. As always, LWN will
provide a summary of the remaining changes once the merge window closes.
| Index entries for this article | |
|---|---|
| Kernel | Releases/6.17 |
