mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
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: 80e4e1268
("xfs: scrub inodes")
Fixes-coverity-id: 1423992
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
2d5f4b5beb
commit
3b42d38575
@ -318,8 +318,20 @@ xfs_scrub_dinode(
|
||||
|
||||
/* 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);
|
||||
break;
|
||||
}
|
||||
|
||||
/* v1/v2 fields */
|
||||
switch (dip->di_version) {
|
||||
|
Loading…
Reference in New Issue
Block a user