Linux Kernel 6.12.98 Released with One Patch, One Leak Fixed
Greg Kroah-Hartman signed off Linux 6.12.98 today, delivering a stable tree release so minimal it takes up roughly 1.3 KB of changelog.
That's right. One backported fix.
The patch addresses a file descriptor leak in ext4's EXT4_IOC_MOVE_EXT ioctl path. If you're running the 6.12.y longterm branch, you'll want to grab this update. If you're not, it doesn't change anything for you.
The Fix
Yun Zhou at Wind River (with contributions from Oracle's Harshit Mogalapalli) identified the regression. A previous backport of upstream ext4 code introduced a cleanup issue when validating donor file superblocks.
When EXT4_IOC_MOVE_EXT tries to move extents across filesystem boundaries and fails validation, it returns -EXDEV directly. Older backport code that uses the traditional fdget/fdput pattern doesn't reach the fdput(donor) cleanup call. File descriptors leak. Each time.
Under sustained workloads, you could exhaust process fd limits and start seeing EMFILE errors. Not ideal.
The good news: cross-filesystem move extent operations are uncommon. Most workloads don't trigger this path. But if you're running backup or migration tools that use fiemap_move_extent heavily, that leaked descriptor adds up.
What 6.12.y Actually Gives You
Linux 6.12 mainline dropped November 17, 2024, and the longterm branch has been accumulating fixes ever since. You're looking at roughly 98 point releases in the series since January 2025.
The kernel ships with some substantial features now stabilized in the stable tree:
PREEMPT_RT merged mainline after two decades of development. You can compile real-time kernel capabilities directly from source with CONFIG_PREEMPT_RT. That's a big deal for anyone running latency-sensitive workloads.
The EEVDF scheduler replaced CFS and is fully production-ready. The transition started in 6.6, and 6.12 completed it. Task schedulers can also be written in BPF now, letting you define scheduling policies without recompiling the kernel.
Other notable inclusions: QR codes on panic screens for faster crash diagnosis, Device Memory TCP for zero-copy network-to-device transfers, and Integrity Policy Enforcement to restrict execution to binaries from integrity-protected storage.
XFS now supports block sizes larger than the kernel page size. The struct file shrank from 232 bytes to 184 bytes. ARM gets memory protection keys at EL0 without syscalls.
The branch is projected to run until December 2028, sitting between the 6.6 branch (EOL December 2027) and the upcoming 6.18 branch.
Linux kernel 6.12.98 released
Linux kernel version 6.12.98 is now available:
Full source: https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.98.tar.xz
Patch: https://cdn.kernel.org/pub/linux/kernel/v6.x/patch-6.12.98.xz
PGP Signature: https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.98.tar.sign
You can view the summary of the changes at the following URL:
https://git.kernel.org/stable/ds/v6.12.98/v6.12.97
