Linux 3394 Published by

Linux Kernel 6.12.98 is now available, signed off today by Greg Kroah-Hartman with a changelog barely hitting 1.3 KB. The release contains one backported patch from Wind River fixing a file descriptor leak in ext4's EXT4_IOC_MOVE_EXT ioctl, which can cause EMFILE errors during failed cross-filesystem move extent operations. If you're running the 6.12.y longterm branch, this is the minimal update to apply, though the impact is limited to edge cases involving backup or migration tools triggering the specific validation path. The 6.12.y branch remains supported through December 2028, built on the November 2024 mainline release that introduced EEVDF and PREEMPT_RT support.



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.

Tuxwk

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