* [djwong-xfs:vectorized-scrub 154/283] fs/xfs/libxfs/xfs_inode_buf.c:477:27: sparse: sparse: dubious: x & !y
@ 2021-03-26 5:33 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-03-26 5:33 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6276 bytes --]
CC: kbuild-all(a)lists.01.org
CC: "Darrick J. Wong" <darrick.wong@oracle.com>
TO: "Darrick J. Wong" <djwong@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head: 13a296999ea49dd4cb16cab75c3aef5e691ed124
commit: 15b9a9194ac8364474c84f2077b2a1ab2c549444 [154/283] xfs: enforce metadata inode flag
:::::: branch date: 5 hours ago
:::::: commit date: 5 hours ago
config: x86_64-randconfig-s022-20210325 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/commit/?id=15b9a9194ac8364474c84f2077b2a1ab2c549444
git remote add djwong-xfs https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
git fetch --no-tags djwong-xfs vectorized-scrub
git checkout 15b9a9194ac8364474c84f2077b2a1ab2c549444
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/xfs/libxfs/xfs_inode_buf.c:477:27: sparse: sparse: dubious: x & !y
vim +477 fs/xfs/libxfs/xfs_inode_buf.c
339e1a3fcdd199 Eric Sandeen 2018-09-29 423
15b9a9194ac836 Darrick J. Wong 2021-01-05 424 /*
15b9a9194ac836 Darrick J. Wong 2021-01-05 425 * Validate all the picky requirements we have for a file that claims to be
15b9a9194ac836 Darrick J. Wong 2021-01-05 426 * filesystem metadata.
15b9a9194ac836 Darrick J. Wong 2021-01-05 427 */
15b9a9194ac836 Darrick J. Wong 2021-01-05 428 xfs_failaddr_t
15b9a9194ac836 Darrick J. Wong 2021-01-05 429 xfs_dinode_verify_metaflag(
15b9a9194ac836 Darrick J. Wong 2021-01-05 430 struct xfs_mount *mp,
15b9a9194ac836 Darrick J. Wong 2021-01-05 431 struct xfs_dinode *dip,
15b9a9194ac836 Darrick J. Wong 2021-01-05 432 uint16_t mode,
15b9a9194ac836 Darrick J. Wong 2021-01-05 433 uint16_t flags,
15b9a9194ac836 Darrick J. Wong 2021-01-05 434 uint64_t flags2)
15b9a9194ac836 Darrick J. Wong 2021-01-05 435 {
15b9a9194ac836 Darrick J. Wong 2021-01-05 436 if (!xfs_sb_version_hasmetadir(&mp->m_sb))
15b9a9194ac836 Darrick J. Wong 2021-01-05 437 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 438
15b9a9194ac836 Darrick J. Wong 2021-01-05 439 /* V5 filesystem only */
15b9a9194ac836 Darrick J. Wong 2021-01-05 440 if (dip->di_version < 3)
15b9a9194ac836 Darrick J. Wong 2021-01-05 441 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 442
15b9a9194ac836 Darrick J. Wong 2021-01-05 443 /* V3 inode fields that are always zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 444 if (dip->di_flushiter || dip->di_onlink)
15b9a9194ac836 Darrick J. Wong 2021-01-05 445 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 446
15b9a9194ac836 Darrick J. Wong 2021-01-05 447 /* Metadata files can only be directories or regular files */
15b9a9194ac836 Darrick J. Wong 2021-01-05 448 if (!S_ISDIR(mode) && !S_ISREG(mode))
15b9a9194ac836 Darrick J. Wong 2021-01-05 449 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 450
15b9a9194ac836 Darrick J. Wong 2021-01-05 451 /* They must have zero access permissions */
15b9a9194ac836 Darrick J. Wong 2021-01-05 452 if (mode & 0777)
15b9a9194ac836 Darrick J. Wong 2021-01-05 453 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 454
15b9a9194ac836 Darrick J. Wong 2021-01-05 455 /* DMAPI event and state masks are zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 456 if (dip->di_dmevmask || dip->di_dmstate)
15b9a9194ac836 Darrick J. Wong 2021-01-05 457 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 458
15b9a9194ac836 Darrick J. Wong 2021-01-05 459 /* User, group, and project IDs must be zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 460 if (dip->di_uid || dip->di_gid ||
15b9a9194ac836 Darrick J. Wong 2021-01-05 461 dip->di_projid_lo || dip->di_projid_hi)
15b9a9194ac836 Darrick J. Wong 2021-01-05 462 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 463
15b9a9194ac836 Darrick J. Wong 2021-01-05 464 /* Immutable, sync, noatime, nodump, and nodefrag flags must be set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 465 if (!(flags & XFS_DIFLAG_IMMUTABLE))
15b9a9194ac836 Darrick J. Wong 2021-01-05 466 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 467 if (!(flags & XFS_DIFLAG_SYNC))
15b9a9194ac836 Darrick J. Wong 2021-01-05 468 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 469 if (!(flags & XFS_DIFLAG_NOATIME))
15b9a9194ac836 Darrick J. Wong 2021-01-05 470 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 471 if (!(flags & XFS_DIFLAG_NODUMP))
15b9a9194ac836 Darrick J. Wong 2021-01-05 472 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 473 if (!(flags & XFS_DIFLAG_NODEFRAG))
15b9a9194ac836 Darrick J. Wong 2021-01-05 474 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 475
15b9a9194ac836 Darrick J. Wong 2021-01-05 476 /* Directories must have nosymlinks flags set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 @477 if (S_ISDIR(mode) & !(flags & XFS_DIFLAG_NOSYMLINKS))
15b9a9194ac836 Darrick J. Wong 2021-01-05 478 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 479
15b9a9194ac836 Darrick J. Wong 2021-01-05 480 /* dax flags2 must not be set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 481 if (flags2 & XFS_DIFLAG2_DAX)
15b9a9194ac836 Darrick J. Wong 2021-01-05 482 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 483
15b9a9194ac836 Darrick J. Wong 2021-01-05 484 return NULL;
15b9a9194ac836 Darrick J. Wong 2021-01-05 485 }
15b9a9194ac836 Darrick J. Wong 2021-01-05 486
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34251 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* [djwong-xfs:vectorized-scrub 154/283] fs/xfs/libxfs/xfs_inode_buf.c:477:27: sparse: sparse: dubious: x & !y
@ 2021-03-26 8:42 Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2021-03-26 8:42 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6057 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head: 13a296999ea49dd4cb16cab75c3aef5e691ed124
commit: 15b9a9194ac8364474c84f2077b2a1ab2c549444 [154/283] xfs: enforce metadata inode flag
config: x86_64-randconfig-s022-20210325 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/commit/?id=15b9a9194ac8364474c84f2077b2a1ab2c549444
git remote add djwong-xfs https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
git fetch --no-tags djwong-xfs vectorized-scrub
git checkout 15b9a9194ac8364474c84f2077b2a1ab2c549444
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/xfs/libxfs/xfs_inode_buf.c:477:27: sparse: sparse: dubious: x & !y
vim +477 fs/xfs/libxfs/xfs_inode_buf.c
15b9a9194ac836 Darrick J. Wong 2021-01-05 428 xfs_failaddr_t
15b9a9194ac836 Darrick J. Wong 2021-01-05 429 xfs_dinode_verify_metaflag(
15b9a9194ac836 Darrick J. Wong 2021-01-05 430 struct xfs_mount *mp,
15b9a9194ac836 Darrick J. Wong 2021-01-05 431 struct xfs_dinode *dip,
15b9a9194ac836 Darrick J. Wong 2021-01-05 432 uint16_t mode,
15b9a9194ac836 Darrick J. Wong 2021-01-05 433 uint16_t flags,
15b9a9194ac836 Darrick J. Wong 2021-01-05 434 uint64_t flags2)
15b9a9194ac836 Darrick J. Wong 2021-01-05 435 {
15b9a9194ac836 Darrick J. Wong 2021-01-05 436 if (!xfs_sb_version_hasmetadir(&mp->m_sb))
15b9a9194ac836 Darrick J. Wong 2021-01-05 437 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 438
15b9a9194ac836 Darrick J. Wong 2021-01-05 439 /* V5 filesystem only */
15b9a9194ac836 Darrick J. Wong 2021-01-05 440 if (dip->di_version < 3)
15b9a9194ac836 Darrick J. Wong 2021-01-05 441 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 442
15b9a9194ac836 Darrick J. Wong 2021-01-05 443 /* V3 inode fields that are always zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 444 if (dip->di_flushiter || dip->di_onlink)
15b9a9194ac836 Darrick J. Wong 2021-01-05 445 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 446
15b9a9194ac836 Darrick J. Wong 2021-01-05 447 /* Metadata files can only be directories or regular files */
15b9a9194ac836 Darrick J. Wong 2021-01-05 448 if (!S_ISDIR(mode) && !S_ISREG(mode))
15b9a9194ac836 Darrick J. Wong 2021-01-05 449 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 450
15b9a9194ac836 Darrick J. Wong 2021-01-05 451 /* They must have zero access permissions */
15b9a9194ac836 Darrick J. Wong 2021-01-05 452 if (mode & 0777)
15b9a9194ac836 Darrick J. Wong 2021-01-05 453 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 454
15b9a9194ac836 Darrick J. Wong 2021-01-05 455 /* DMAPI event and state masks are zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 456 if (dip->di_dmevmask || dip->di_dmstate)
15b9a9194ac836 Darrick J. Wong 2021-01-05 457 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 458
15b9a9194ac836 Darrick J. Wong 2021-01-05 459 /* User, group, and project IDs must be zero */
15b9a9194ac836 Darrick J. Wong 2021-01-05 460 if (dip->di_uid || dip->di_gid ||
15b9a9194ac836 Darrick J. Wong 2021-01-05 461 dip->di_projid_lo || dip->di_projid_hi)
15b9a9194ac836 Darrick J. Wong 2021-01-05 462 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 463
15b9a9194ac836 Darrick J. Wong 2021-01-05 464 /* Immutable, sync, noatime, nodump, and nodefrag flags must be set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 465 if (!(flags & XFS_DIFLAG_IMMUTABLE))
15b9a9194ac836 Darrick J. Wong 2021-01-05 466 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 467 if (!(flags & XFS_DIFLAG_SYNC))
15b9a9194ac836 Darrick J. Wong 2021-01-05 468 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 469 if (!(flags & XFS_DIFLAG_NOATIME))
15b9a9194ac836 Darrick J. Wong 2021-01-05 470 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 471 if (!(flags & XFS_DIFLAG_NODUMP))
15b9a9194ac836 Darrick J. Wong 2021-01-05 472 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 473 if (!(flags & XFS_DIFLAG_NODEFRAG))
15b9a9194ac836 Darrick J. Wong 2021-01-05 474 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 475
15b9a9194ac836 Darrick J. Wong 2021-01-05 476 /* Directories must have nosymlinks flags set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 @477 if (S_ISDIR(mode) & !(flags & XFS_DIFLAG_NOSYMLINKS))
Presumably this S_ISDIR() return bool so both && and & work. I sometimes
see people using & instead of && and I don't normally ask about it
if both work fine. I've always just assumed that & is faster. :P
15b9a9194ac836 Darrick J. Wong 2021-01-05 478 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 479
15b9a9194ac836 Darrick J. Wong 2021-01-05 480 /* dax flags2 must not be set */
15b9a9194ac836 Darrick J. Wong 2021-01-05 481 if (flags2 & XFS_DIFLAG2_DAX)
15b9a9194ac836 Darrick J. Wong 2021-01-05 482 return __this_address;
15b9a9194ac836 Darrick J. Wong 2021-01-05 483
15b9a9194ac836 Darrick J. Wong 2021-01-05 484 return NULL;
15b9a9194ac836 Darrick J. Wong 2021-01-05 485 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34251 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-03-26 8:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-26 5:33 [djwong-xfs:vectorized-scrub 154/283] fs/xfs/libxfs/xfs_inode_buf.c:477:27: sparse: sparse: dubious: x & !y kernel test robot
2021-03-26 8:42 Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.