The Debian project has just released the next point release, Debian 12.4, on December 10th 2023. This itself wouldn't be worth an article as Debian publishes new point releases every couple of months. However this time, the story is a little bit different.
Debian 12.3 was published just a few days ago, on December 9th. The problem with this release? It contains the Linux Kernel in version 6.1.64-1.
A few days earlier, a severe bug was found in the ext4 file system sub-module of the Kernel.
Jan Kara from SUSE was able to trace the error down to a missing commit in the Kernel:
So I've got back to this and the failure is a subtle interaction between iomap code and ext4 code. In particular that fact that commit 936e114a245b6 ("iomap: update ki_pos a little later in iomap_dio_complete") is not in stable causes that file position is not updated after direct IO write and thus we direct IO writes are ending in wrong locations effectively corrupting data. The subtle detail is that before this commit if ->end_io handler returns non-zero value (which the new ext4 ->end_io handler does), file pos doesn't get updated, after this commit it doesn't get updated only if the return value is < 0. The commit got merged in 6.5-rc1 so all stable kernels that have 91562895f803 ("ext4: properly sync file size update after O_SYNC direct IO") before 6.5 are corrupting data – I've noticed at least 6.1 is still carrying the problematic commit.
Jan Kara
Translated to people not speaking Kernel: There were two changes (commits) to the ext4 file system, but only one was enabled (merged) in Kernel 6.1, which is one of the current LTS (long term support) Kernel versions. Without the second commit, write operations are basically lost.
The Debian maintainers reacted promptly, as soon as the Kernel bug with the ext4 data corruption became (better) known. The Debian release 12.3 and the relevant buggy package were removed (to not cause harm to people blindly updating) and instead 12.4 was released.
Please be advised that this document has been updated as best to reflect Debian 12.3 being superseded by Debian 12.4. These changes came about from a last minute bug advisory of #1057843 concerning issues with kernel-image-6.1.0-14 (6.1.64-1).
Debian 12.4 now contains Kernel 6.1.66-1, which fixes the ext4 bug.