linux/fs/xfs/scrub
Darrick J. Wong 59c462b0f5 xfs: don't zap bmbt forks if they are MAXLEVELS tall
LOLLM noticed a discrepancy between the bmbt level checks in the libxfs
bmbt code vs. the inode repair code.  We do actually allow a bmbt root
that proclaims to have a height of XFS_BM_MAXLEVELS.

Cc: stable@vger.kernel.org # v6.8
Fixes: e744cef206 ("xfs: zap broken inode forks")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Assisted-by: LOLLM # finding obvious bugs
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
2026-07-14 11:01:47 +02:00
..
agb_bitmap.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
agb_bitmap.h xfs: create agblock bitmap helper to count the number of set regions 2024-02-22 12:43:37 -08:00
agheader_repair.c xfs: fix AGFL extent count calculation in xrep_agfl_fill 2026-06-29 09:54:22 +02:00
agheader.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
agino_bitmap.h xfs: repair AGI unlinked inode bucket lists 2024-04-15 14:58:58 -07:00
alloc_repair.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
alloc.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
attr_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
attr_repair.h xfs: actually rebuild the parent pointer xattrs 2024-04-23 16:55:15 -07:00
attr.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
attr.h xfs: repair extended attributes 2024-04-15 14:58:53 -07:00
bitmap.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
bitmap.h xfs: create agblock bitmap helper to count the number of set regions 2024-02-22 12:43:37 -08:00
bmap_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
bmap.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
btree.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
btree.h
common.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
common.h xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
cow_repair.c xfs: move cow_replace_mapping to xfs_bmap_util.c 2026-07-14 11:01:47 +02:00
dab_bitmap.h xfs: create an xattr iteration function for scrub 2024-04-15 14:58:54 -07:00
dabtree.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
dabtree.h xfs: flag empty xattr leaf blocks for optimization 2024-04-15 14:58:54 -07:00
dir_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
dir.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
dirtree_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
dirtree.c xfs: fully check the parent handle when it points to the rootdir 2026-07-14 11:01:47 +02:00
dirtree.h xfs: refactor directory tree root predicates 2024-11-05 13:38:33 -08:00
dqiterate.c xfs: don't wrap around quota ids in dqiterate 2026-07-14 11:01:47 +02:00
findparent.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
findparent.h xfs: implement live updates for directory repairs 2024-04-23 16:55:13 -07:00
fsb_bitmap.h
fscounters_repair.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
fscounters.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
fscounters.h xfs: support RT inodes in xfs_mod_delalloc 2024-04-22 18:00:48 +05:30
health.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
health.h xfs: refactor the btree cursor allocation logic in xchk_ag_btcur_init 2024-02-22 12:39:48 -08:00
ialloc_repair.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
ialloc.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
ino_bitmap.h xfs: teach online scrub to find directory tree structure problems 2024-04-23 16:55:16 -07:00
inode_repair.c xfs: don't zap bmbt forks if they are MAXLEVELS tall 2026-07-14 11:01:47 +02:00
inode.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
iscan.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
iscan.h xfs: scan the filesystem to repair a directory dotdot entry 2024-04-15 14:58:56 -07:00
listxattr.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
listxattr.h xfs: add a per-leaf block callback to xchk_xattr_walk 2024-04-23 16:55:15 -07:00
metapath.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
newbt.c xfs: add a xfs_rmap_inode_bmbt_owner 2026-06-09 09:14:41 +02:00
newbt.h xfs: support repairing metadata btrees rooted in metadir inodes 2024-12-23 13:06:08 -08:00
nlinks_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
nlinks.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
nlinks.h xfs: move files to orphanage instead of letting nlinks drop to zero 2024-04-15 14:58:57 -07:00
off_bitmap.h
orphanage.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
orphanage.h xfs: fix corruptions in the directory tree 2024-04-23 16:55:17 -07:00
parent_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
parent.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
quota_repair.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
quota.c xfs: scrub: unlock dquot before early return in quota scrub 2026-03-18 09:44:46 +01:00
quota.h xfs: repair quotas 2023-12-15 10:03:45 -08:00
quotacheck_repair.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
quotacheck.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
quotacheck.h xfs: repair dquots based on live quotacheck results 2024-02-22 12:30:57 -08:00
rcbag_btree.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
rcbag_btree.h xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
rcbag.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
rcbag.h xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
readdir.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
readdir.h xfs: deferred scrub of dirents 2024-04-23 07:47:02 -07:00
reap.c xfs: add a xfs_rmap_inode_owner helper 2026-06-09 09:14:41 +02:00
reap.h xfs: fix CoW forks for realtime files 2024-12-23 13:06:17 -08:00
refcount_repair.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
refcount.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
repair.h xfs: remove static reap limits from repair.h 2025-09-05 08:48:23 -07:00
rgb_bitmap.h xfs: capture realtime CoW staging extents when rebuilding rt rmapbt 2024-12-23 13:06:16 -08:00
rgsuper.c xfs: grab rtrmap btree when checking rgsuper 2026-07-14 11:01:47 +02:00
rmap_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
rmap.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
rtb_bitmap.h xfs: fix CoW forks for realtime files 2024-12-23 13:06:17 -08:00
rtbitmap_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
rtbitmap.c xfs: fix off-by-one error when calling xchk_xref_has_rt_owner 2026-07-14 11:01:47 +02:00
rtbitmap.h xfs: online repair of realtime bitmaps for a realtime group 2024-12-23 13:06:08 -08:00
rtrefcount_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
rtrefcount.c xfs: use rtrefcount btree cursor in xchk_xref_is_rt_cow_staging 2026-07-14 11:01:47 +02:00
rtrmap_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
rtrmap.c xfs: handle non-inode owners for rtrmap record checking 2026-07-14 11:01:47 +02:00
rtsummary_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
rtsummary.c xfs: convert xchk_inode_xref_set_corrupt to xchk_ip_xref_set_corrupt 2026-06-09 09:14:41 +02:00
rtsummary.h xfs: replace m_rsumsize with m_rsumblocks 2024-09-01 08:58:19 -07:00
scrub.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
scrub.h xfs: set xfarray killable sort correctly 2026-07-14 11:01:47 +02:00
stats.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
stats.h
symlink_repair.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
symlink.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
tempexch.h xfs: online repair of realtime bitmaps for a realtime group 2024-12-23 13:06:08 -08:00
tempfile.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
tempfile.h xfs: move repair temporary files to the metadata directory tree 2024-11-05 13:38:34 -08:00
trace.c xfs: add a XFS_INO_TO_FSB helper 2026-06-09 09:14:41 +02:00
trace.h xfs: move cow_replace_mapping to xfs_bmap_util.c 2026-07-14 11:01:47 +02:00
xfarray.c xfs: set xfarray killable sort correctly 2026-07-14 11:01:47 +02:00
xfarray.h xfs: reduce the rate of cond_resched calls inside scrub 2024-04-23 16:55:17 -07:00
xfblob.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
xfblob.h xfs: online repair of directories 2024-04-15 14:58:55 -07:00
xfile.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
xfile.h xfs: repair extended attributes 2024-04-15 14:58:53 -07:00
xfs_scrub.h xfs: introduce vectored scrub mode 2024-04-23 16:55:18 -07:00