drivers/net/tun.c:2375:24: sparse: sparse: cast to non-scalar
From: kernel test robot
Date: Mon Oct 05 2026 - 10:52:29 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: a90ee4305c4a5df72c11b31dacfdc76e00fcf78a
commit: 23dad2d088dfc82cae1f5a936f8ff7ffebb38dd9 tun: no longer rely on RTNL in tun_fill_info()
date: 3 months ago
config: alpha-randconfig-r2300-20261005 (https://download.01.org/0day-ci/archive/20261005/202610051613.beLfY9SJ-lkp@xxxxxxxxx/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/20261005/202610051613.beLfY9SJ-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: 23dad2d088df ("tun: no longer rely on RTNL in tun_fill_info()")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610051613.beLfY9SJ-lkp@xxxxxxxxx/
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);
2376 kgid_t group = READ_ONCE(tun->group);
2377
2378 if (nla_put_u8(skb, IFLA_TUN_TYPE, flags & TUN_TYPE_MASK))
2379 goto nla_put_failure;
2380 if (uid_valid(owner) &&
2381 nla_put_u32(skb, IFLA_TUN_OWNER,
2382 from_kuid_munged(current_user_ns(), owner)))
2383 goto nla_put_failure;
2384 if (gid_valid(group) &&
2385 nla_put_u32(skb, IFLA_TUN_GROUP,
2386 from_kgid_munged(current_user_ns(), group)))
2387 goto nla_put_failure;
2388 if (nla_put_u8(skb, IFLA_TUN_PI, !(flags & IFF_NO_PI)))
2389 goto nla_put_failure;
2390 if (nla_put_u8(skb, IFLA_TUN_VNET_HDR, !!(flags & IFF_VNET_HDR)))
2391 goto nla_put_failure;
2392 if (nla_put_u8(skb, IFLA_TUN_PERSIST, !!(flags & IFF_PERSIST)))
2393 goto nla_put_failure;
2394 if (nla_put_u8(skb, IFLA_TUN_MULTI_QUEUE,
2395 !!(flags & IFF_MULTI_QUEUE)))
2396 goto nla_put_failure;
2397 if (flags & IFF_MULTI_QUEUE) {
2398 if (nla_put_u32(skb, IFLA_TUN_NUM_QUEUES,
2399 READ_ONCE(tun->numqueues)))
2400 goto nla_put_failure;
2401 if (nla_put_u32(skb, IFLA_TUN_NUM_DISABLED_QUEUES,
2402 READ_ONCE(tun->numdisabled)))
2403 goto nla_put_failure;
2404 }
2405
2406 return 0;
2407
2408 nla_put_failure:
2409 return -EMSGSIZE;
2410 }
2411
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki