drivers/net/ethernet/realtek/r8169_main.c:6335:36: warning: 'memset' call operates on objects of type 'struct rtl8169_rx_ring' while the size is based on a different type 'struct rtl8169_rx_ring *'

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
:::::: 
:::::: Manual check reason: "bisect to a FBC not belonging to original linux-review patches: branch: linux-review/javen/r8169-add-support-for-multi-irqs/20260811-195102, commit: d59b0fc7e3bbccbc0418e405b1a7ecf0665b986a"
:::::: 

BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Javen Xu <[email protected]>
CC: 0day robot <[email protected]>

tree:   https://github.com/intel-lab-lkp/linux/commits/javen/r8169-add-support-for-multi-irqs/20260811-195102
head:   d59b0fc7e3bbccbc0418e405b1a7ecf0665b986a
commit: d59b0fc7e3bbccbc0418e405b1a7ecf0665b986a r8169: support setting rx queue numbers via ethtool
date:   23 hours ago
:::::: branch date: 23 hours ago
:::::: commit date: 23 hours ago
config: arm64-randconfig-004-20260812 (https://download.01.org/0day-ci/archive/20260812/[email protected]/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 12df34b8469b8095359de8c249cb1b2753fadeea)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260812/[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/r/[email protected]/

All warnings (new ones prefixed by >>):

   drivers/net/ethernet/realtek/r8169_main.c:5140:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
    5140 |                 u32 status = opts1 & (RxProtoMask | RxCSFailMask);
         |                 ^
>> drivers/net/ethernet/realtek/r8169_main.c:6335:36: warning: 'memset' call operates on objects of type 'struct rtl8169_rx_ring' while the size is based on a different type 'struct rtl8169_rx_ring *' [-Wsizeof-pointer-memaccess]
    6335 |         memset(tp->rx_ring, 0, sizeof(tp->rx_ring));
         |                ~~~~~~~~~~~            ~~~~^~~~~~~
   drivers/net/ethernet/realtek/r8169_main.c:6335:36: note: did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?
    6335 |         memset(tp->rx_ring, 0, sizeof(tp->rx_ring));
         |                                       ~~~~^~~~~~~
   2 warnings generated.


vim +6335 drivers/net/ethernet/realtek/r8169_main.c

d59b0fc7e3bbccb Javen Xu 2026-08-03  6272  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6273  static int rtl8169_set_channels(struct net_device *dev,
d59b0fc7e3bbccb Javen Xu 2026-08-03  6274  				struct ethtool_channels *ch)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6275  {
d59b0fc7e3bbccb Javen Xu 2026-08-03  6276  	struct rtl8169_private *tp = netdev_priv(dev);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6277  	bool if_running = netif_running(dev);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6278  	enum rx_desc_type old_rx_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6279  	enum rx_desc_type new_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6280  	struct rtl8169_rx_ring *new_rx;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6281  	int i, ret;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6282  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6283  	if (ch->rx_count == tp->num_rx_rings)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6284  		return 0;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6285  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6286  	old_rx_desc_type = tp->init_rx_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6287  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6288  	if (!rtl_hw_support_rss(tp)) {
d59b0fc7e3bbccb Javen Xu 2026-08-03  6289  		netdev_warn(dev, "This chip does not support multiple channels/RSS.\n");
d59b0fc7e3bbccb Javen Xu 2026-08-03  6290  		return -EOPNOTSUPP;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6291  	}
d59b0fc7e3bbccb Javen Xu 2026-08-03  6292  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6293  	if (ch->rx_count > tp->hw_supp_num_rx_queues || !is_power_of_2(ch->rx_count) ||
d59b0fc7e3bbccb Javen Xu 2026-08-03  6294  	    tp->irq_nvecs < get_min_irq_nvecs(tp))
d59b0fc7e3bbccb Javen Xu 2026-08-03  6295  		return -EINVAL;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6296  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6297  	new_desc_type = ch->rx_count > 1 ? RX_DESC_TYPE_RSS : RX_DESC_TYPE_DEFAULT;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6298  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6299  	if (!if_running) {
d59b0fc7e3bbccb Javen Xu 2026-08-03  6300  		ret = netif_set_real_num_rx_queues(dev, ch->rx_count);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6301  		if (ret)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6302  			return ret;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6303  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6304  		tp->num_rx_rings = ch->rx_count;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6305  		tp->init_rx_desc_type = new_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6306  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6307  		rtl8169_set_rss_indir_tbl(tp, tp->num_rx_rings);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6308  		rtl_set_irq_mask(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6309  		return 0;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6310  	}
d59b0fc7e3bbccb Javen Xu 2026-08-03  6311  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6312  	new_rx = kzalloc_objs(*new_rx, R8169_MAX_RX_QUEUES);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6313  	if (!new_rx)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6314  		return -ENOMEM;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6315  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6316  	netif_stop_queue(dev);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6317  	rtl8169_down(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6318  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6319  	ret = netif_set_real_num_rx_queues(dev, ch->rx_count);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6320  	if (ret)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6321  		goto err_up;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6322  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6323  	tp->init_rx_desc_type = new_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6324  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6325  	ret = rtl8169_realloc_rx(tp, new_rx, ch->rx_count);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6326  	if (ret)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6327  		goto err_reset;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6328  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6329  	for (i = 0; i < tp->num_rx_rings; i++)
d59b0fc7e3bbccb Javen Xu 2026-08-03  6330  		rtl8169_rx_clear(tp, &tp->rx_ring[i], old_rx_desc_type);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6331  	rtl8169_free_rx_desc(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6332  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6333  	tp->num_rx_rings = ch->rx_count;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6334  
d59b0fc7e3bbccb Javen Xu 2026-08-03 @6335  	memset(tp->rx_ring, 0, sizeof(tp->rx_ring));
d59b0fc7e3bbccb Javen Xu 2026-08-03  6336  	memcpy(tp->rx_ring, new_rx, sizeof(*new_rx) * ch->rx_count);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6337  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6338  	rtl8169_set_rss_indir_tbl(tp, tp->num_rx_rings);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6339  	rtl_set_irq_mask(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6340  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6341  	rtl8169_up(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6342  	netif_start_queue(dev);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6343  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6344  	kfree(new_rx);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6345  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6346  	return 0;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6347  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6348  err_reset:
d59b0fc7e3bbccb Javen Xu 2026-08-03  6349  	if (netif_set_real_num_rx_queues(dev, tp->num_rx_rings))
d59b0fc7e3bbccb Javen Xu 2026-08-03  6350  		netdev_err(dev, "Failed to revert rx_queues, state might be inconsistent!\n");
d59b0fc7e3bbccb Javen Xu 2026-08-03  6351  	tp->init_rx_desc_type = old_rx_desc_type;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6352  err_up:
d59b0fc7e3bbccb Javen Xu 2026-08-03  6353  	rtl8169_up(tp);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6354  	netif_start_queue(dev);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6355  	kfree(new_rx);
d59b0fc7e3bbccb Javen Xu 2026-08-03  6356  
d59b0fc7e3bbccb Javen Xu 2026-08-03  6357  	return ret;
d59b0fc7e3bbccb Javen Xu 2026-08-03  6358  }
d59b0fc7e3bbccb Javen Xu 2026-08-03  6359  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.