Description
In the Linux kernel, the following vulnerability has been resolved: xfs: fix undersized l_iclog_roundoff values If the superblock doesn't list a log stripe unit, we set the incore log roundoff value to 512. This leads to corrupt logs and unmountable filesystems in generic/617 on a disk with 4k physical sectors... XFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c XFS (sda1): Torn write (CRC failure) detected at log block 0x318e. Truncating head block from 0x3197. XFS (sda1): failed to locate log tail XFS (sda1): log mount/recovery failed: error -74 XFS (sda1): log mount failed XFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c XFS (sda1): Ending clean mount ...on the current xfsprogs for-next which has a broken mkfs. xfs_info shows this... meta-data=/dev/sda1 isize=512 agcount=4, agsize=644992 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=1 = reflink=1 bigtime=1 inobtcount=1 nrext64=1 = exchange=1 metadir=1 data = bsize=4096 blocks=2579968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1, parent=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=4096 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 = rgcount=0 rgsize=268435456 extents = zoned=0 start=0 reserved=0 ...observe that the log section has sectsz=4096 sunit=0, which means that the roundoff factor is 512, not 4096 as you'd expect. We should fix mkfs not to generate broken filesystems, but anyone can fuzz the ondisk superblock so we should be more cautious. I think the inadequate logic predates commit a6a65fef5ef8d0, but that's clearly going to require a different backport.
Product status
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 5afae524f83d6a18517298491a5624cb0eae5029
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 2ecda4b83749c1fef0c9dea4fd5e8b513aba3e40
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 41e91dff2d3974730b5ee50daa8e27ec254cbf91
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before e88ce9f0536f3b2149afb70625cfc4bd74a4ac6d
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 446a1f5bb64ba38adb93cb043ff0f7b85e8937ca
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 5e7148402dfc4a5b7894d8e97b15e5c2e70924aa
a6a65fef5ef8d0a6a0ce514eb66b2f3dfa777b48 (git) before 52a8a1ba883defbfe3200baa22cf4cd21985d51a
5.14
Any version before 5.14
5.15.203 (semver)
6.1.167 (semver)
6.6.130 (semver)
6.12.78 (semver)
6.18.19 (semver)
6.19.9 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/5afae524f83d6a18517298491a5624cb0eae5029
git.kernel.org/...c/2ecda4b83749c1fef0c9dea4fd5e8b513aba3e40
git.kernel.org/...c/41e91dff2d3974730b5ee50daa8e27ec254cbf91
git.kernel.org/...c/e88ce9f0536f3b2149afb70625cfc4bd74a4ac6d
git.kernel.org/...c/446a1f5bb64ba38adb93cb043ff0f7b85e8937ca
git.kernel.org/...c/5e7148402dfc4a5b7894d8e97b15e5c2e70924aa
git.kernel.org/...c/52a8a1ba883defbfe3200baa22cf4cd21985d51a