1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

xfs: fix data fork format filtering during inode repair

Coverity noticed that xrep_dinode_bad_metabt_fork never runs because
XFS_DINODE_FMT_META_BTREE is always filtered out in the mode selection
switch of xrep_dinode_check_dfork.

Metadata btrees are allowed only in the data forks of regular files, so
add this case explicitly.  I guess this got fubard during a refactoring
prior to 6.13 and I didn't notice until now. :/

Coverity-id: 1617714
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Darrick J. Wong 2025-02-02 16:50:14 -08:00 committed by Carlos Maiolino
parent 66314e9a57
commit 6e33017c32

View file

@ -1055,9 +1055,17 @@ xrep_dinode_check_dfork(
return true;
break;
case S_IFREG:
if (fmt == XFS_DINODE_FMT_LOCAL)
switch (fmt) {
case XFS_DINODE_FMT_LOCAL:
return true;
fallthrough;
case XFS_DINODE_FMT_EXTENTS:
case XFS_DINODE_FMT_BTREE:
case XFS_DINODE_FMT_META_BTREE:
break;
default:
return true;
}
break;
case S_IFLNK:
case S_IFDIR:
switch (fmt) {