* [linux-next:master 4429/6545] fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar
@ 2026-09-15 12:51 kernel test robot
2026-09-15 19:03 ` Shakeel Butt
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2026-09-15 12:51 UTC (permalink / raw)
To: Shakeel Butt; +Cc: oe-kbuild-all, Christian Brauner
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 1a1de54f7369cd2b5bac0f265910e60ad3a6b4c3
commit: 81bdc85b4c086502f4446a58eb5d25f29bb5e9f7 [4429/6545] kernfs: fix up the unlocked attribute reads on the creation paths
config: alpha-randconfig-r121-20260915 (https://download.01.org/0day-ci/archive/20260915/202609152007.ZrNbQ8XS-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260915/202609152007.ZrNbQ8XS-lkp@intel.com/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
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609152007.ZrNbQ8XS-lkp@intel.com/
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
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [linux-next:master 4429/6545] fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar
2026-09-15 12:51 [linux-next:master 4429/6545] fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar kernel test robot
@ 2026-09-15 19:03 ` Shakeel Butt
0 siblings, 0 replies; 2+ messages in thread
From: Shakeel Butt @ 2026-09-15 19:03 UTC (permalink / raw)
To: kernel test robot; +Cc: oe-kbuild-all, Christian Brauner, Will Deacon
+Will
On Tue, Sep 15, 2026 at 08:51:41PM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head: 1a1de54f7369cd2b5bac0f265910e60ad3a6b4c3
> commit: 81bdc85b4c086502f4446a58eb5d25f29bb5e9f7 [4429/6545] kernfs: fix up the unlocked attribute reads on the creation paths
> config: alpha-randconfig-r121-20260915 (https://download.01.org/0day-ci/archive/20260915/202609152007.ZrNbQ8XS-lkp@intel.com/config)
> compiler: alpha-linux-gcc (GCC) 8.5.0
> sparse: v0.6.5-rc1
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260915/202609152007.ZrNbQ8XS-lkp@intel.com/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
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202609152007.ZrNbQ8XS-lkp@intel.com/
>
> 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);
This seems to be related to READ_ONCE() implementation of alpha. ISO C only
permits a cast to a scalar type but gcc/clang accept casting a struct to its own
type as an extension. It seems like sparse implements the standard rule. I think
we can ignore this (or sparse should handle it as gcc/clang).
> 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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-15 19:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-15 12:51 [linux-next:master 4429/6545] fs/kernfs/dir.c:751:31: sparse: sparse: cast to non-scalar kernel test robot
2026-09-15 19:03 ` Shakeel Butt
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.