Commit 3b42d385 authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: scrub inode mode properly

Since we've used up all the bits in i_mode, the existing mode check
doesn't actually do anything useful.  However, we've not used all the
bit values in the format portion of i_mode, so we /do/ need to test
that for bad values.

Fixes: 80e4e126 ("xfs: scrub inodes")
Fixes-coverity-id: 1423992
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
parent 2d5f4b5b
...@@ -318,8 +318,20 @@ xfs_scrub_dinode( ...@@ -318,8 +318,20 @@ xfs_scrub_dinode(
/* di_mode */ /* di_mode */
mode = be16_to_cpu(dip->di_mode); mode = be16_to_cpu(dip->di_mode);
if (mode & ~(S_IALLUGO | S_IFMT)) switch (mode & S_IFMT) {
case S_IFLNK:
case S_IFREG:
case S_IFDIR:
case S_IFCHR:
case S_IFBLK:
case S_IFIFO:
case S_IFSOCK:
/* mode is recognized */
break;
default:
xfs_scrub_ino_set_corrupt(sc, ino, bp); xfs_scrub_ino_set_corrupt(sc, ino, bp);
break;
}
/* v1/v2 fields */ /* v1/v2 fields */
switch (dip->di_version) { switch (dip->di_version) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment