]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
Merge tag 'attr-leaf-freemap-fixes-7.0_2026-01-25' of https://git.kernel.org/pub...
authorCarlos Maiolino <cem@kernel.org>
Wed, 28 Jan 2026 09:15:07 +0000 (10:15 +0100)
committerCarlos Maiolino <cem@kernel.org>
Wed, 28 Jan 2026 09:15:07 +0000 (10:15 +0100)
commit2744d7adb2622864f2e4fb15cbc85aed3fbe1e8f
treed654aa6e829f41187e8df6f9690b2a8a20127716
parent04a65666a69508fa0022c7343026c5a3d41d166d
parentbd3138e8912c9db182eac5fed1337645a98b7a4f
Merge tag 'attr-leaf-freemap-fixes-7.0_2026-01-25' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-7.0-merge

xfs: fix problems in the attr leaf freemap code [1/3]

Running generic/753 for hours revealed data corruption problems in the
attr leaf block space management code.  Under certain circumstances,
freemap entries are left with zero size but a nonzero offset.  If that
offset happens to be the same offset as the end of the entries array
during an attr set operation, the leaf entry table expansion will push
the freemap record offset upwards without checking for overlap with any
other freemap entries.  If there happened to be a second freemap entry
overlapping with the newly allocated leaf entry space, then the next
attr set operation might find that space and overwrite the leaf entry,
thereby corrupting the leaf block.

Fix this by zeroing the freemap offset any time we set the size to zero.
If a subsequent attr set operation finds no space in the freemap, it
will compact the block and regenerate the freemaps.

With a bit of luck, this should all go splendidly.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>