Re: [linux-next:master 4018/13846] drivers/net/tun.c:2375:24: sparse: sparse: cast to non-scalar
Willem de Bruijn <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <CA+FuTSfy1bOw3QAB+5wXzdHaXAARNvUYS8nNqb_waz6UfYHOcQ@mail.gmail.com> |
On Sun, Aug 9, 2026 at 11:33 PM kernel test robot <[email protected]> wrote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: 6b8c8af514d739d0335f5579b585e02babe8a727 > commit: 23dad2d088dfc82cae1f5a936f8ff7ffebb38dd9 [4018/13846] tun: no longer rely on RTNL in tun_fill_info() > config: alpha-randconfig-r134-20260810 (https://download.01.org/0day-ci/archive/20260810/[email protected]/config) > compiler: alpha-linux-gcc (GCC) 14.3.0 > sparse: v0.6.5-rc1 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260810/[email protected]/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 <[email protected]> > | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ > > sparse warnings: (new ones prefixed by >>) > >> drivers/net/tun.c:2375:24: sparse: sparse: cast to non-scalar > >> drivers/net/tun.c:2375:24: sparse: sparse: cast from non-scalar > drivers/net/tun.c:2376:24: sparse: sparse: cast to non-scalar > drivers/net/tun.c:2376:24: sparse: sparse: cast from non-scalar > > vim +2375 drivers/net/tun.c > > 2370 > 2371 static int tun_fill_info(struct sk_buff *skb, const struct net_device *dev) > 2372 { > 2373 const struct tun_struct *tun = netdev_priv(dev); > 2374 unsigned int flags = READ_ONCE(tun->flags); > > 2375 kuid_t owner = READ_ONCE(tun->owner); I guess this would need to be owner.val and group.val to silence this warning. Both from and to arguments. That approach would not improve readability. Types: typedef struct { uid_t val; } kuid_t; typedef struct { gid_t val; } kgid_t; Whatever we choose to do (if anything), probably also applies to sk_uid: static inline kuid_t sk_uid(const struct sock *sk) { /* Paired with WRITE_ONCE() in sockfs_setattr() */ return READ_ONCE(sk->sk_uid); } Another helper, make_kuid, uses a KUIDT_INIT wrapper to cast to the struct type.