fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar
From: kernel test robot
Date: Mon Oct 26 2026 - 12:08:47 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 6b4b543fa18757297ac756a6fe6e64f506b7844a
commit: 81bdc85b4c086502f4446a58eb5d25f29bb5e9f7 kernfs: fix up the unlocked attribute reads on the creation paths
date: 7 weeks ago
config: alpha-randconfig-r2309-20261026 (https://download.01.org/0day-ci/archive/20261026/202610261608.vItiXCGW-lkp@xxxxxxxxx/config)
compiler: alpha-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1-1-gc4640450
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261026/202610261608.vItiXCGW-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 81bdc85b4c08 ("kernfs: fix up the unlocked attribute reads on the creation paths")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610261608.vItiXCGW-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
>> fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar
>> fs/kernfs/dir.c:751:31: sparse: sparse: cast from non-scalar
vim +751 fs/kernfs/dir.c
731
732 struct kernfs_node *kernfs_new_node(struct kernfs_node *parent,
733 const char *name, umode_t mode,
734 kuid_t uid, kgid_t gid,
735 unsigned flags)
736 {
737 struct kernfs_node *kn;
738
739 /*
740 * The mode and the gid below are read unlocked on purpose: they feed
741 * a node that does not exist yet, so nothing orders a racing chmod or
742 * chown against this creation.
743 */
744 if (READ_ONCE(parent->mode) & S_ISGID) {
745 /* this code block imitates inode_init_owner() for
746 * kernfs
747 */
748 struct kernfs_iattrs *attrs = READ_ONCE(parent->iattr);
749
750 if (attrs)
> 751 gid = READ_ONCE(attrs->ia_gid);
752
753 if (flags & KERNFS_DIR)
754 mode |= S_ISGID;
755 }
756
757 kn = __kernfs_new_node(kernfs_root(parent), parent,
758 name, mode, uid, gid, flags);
759 return kn;
760 }
761
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki