All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Mengyuan Lou <mengyuanlou@net-swift.com>, netdev@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, jiawenwu@trustnetic.com,
	duanqiangwen@net-swift.com, linglingzhang@net-swift.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com,
	Mengyuan Lou <mengyuanlou@net-swift.com>
Subject: Re: [PATCH net v3] net: libwx: protect ring accesses with RCU
Date: Fri, 28 Aug 2026 11:34:14 +0800	[thread overview]
Message-ID: <202608281122.ImEa1DuX-lkp@intel.com> (raw)
In-Reply-To: <20260824103606.303-1-mengyuanlou@net-swift.com>

Hi Mengyuan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Mengyuan-Lou/net-libwx-protect-ring-accesses-with-RCU/20260824-183606
base:   net/main
patch link:    https://lore.kernel.org/r/20260824103606.303-1-mengyuanlou%40net-swift.com
patch subject: [PATCH net v3] net: libwx: protect ring accesses with RCU
config: csky-randconfig-r113-20260826 (https://download.01.org/0day-ci/archive/20260828/202608281122.ImEa1DuX-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 15.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260828/202608281122.ImEa1DuX-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/202608281122.ImEa1DuX-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:1717:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:1717:17: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:1717:17: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2662:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *rx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2662:45: sparse:     expected struct wx_ring *rx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2662:45: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2704:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *rx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2704:49: sparse:     expected struct wx_ring *rx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2704:49: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2778:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2778:45: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2778:45: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2826:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2826:49: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2826:49: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2936:56: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *rx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2936:56: sparse:     expected struct wx_ring *rx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2936:56: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2948:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *rx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2948:49: sparse:     expected struct wx_ring *rx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2948:49: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3039:56: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3039:56: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3039:56: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3051:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3051:49: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3051:49: sparse:     got struct wx_ring [noderef] __rcu *
>> drivers/net/ethernet/wangxun/libwx/wx_lib.c:3327:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const *from @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3327:58: sparse:     expected void const *from
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3327:58: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3343:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *tx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3343:57: sparse:     expected struct wx_ring *tx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3343:57: sparse:     got struct wx_ring [noderef] __rcu *
>> drivers/net/ethernet/wangxun/libwx/wx_lib.c:3345:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *to @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3345:43: sparse:     expected void *to
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3345:43: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3355:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const *from @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3355:58: sparse:     expected void const *from
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3355:58: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3371:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct wx_ring *rx_ring @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3371:57: sparse:     expected struct wx_ring *rx_ring
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3371:57: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3372:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *to @@     got struct wx_ring [noderef] __rcu * @@
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3372:43: sparse:     expected void *to
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:3372:43: sparse:     got struct wx_ring [noderef] __rcu *
   drivers/net/ethernet/wangxun/libwx/wx_lib.c: note: in included file (through include/linux/if_ether.h, include/linux/etherdevice.h):
   include/linux/skbuff.h:2904:28: sparse: sparse: unsigned value that used to be signed checked against zero?
   include/linux/skbuff.h:2904:28: sparse: signed value source
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2061:36: sparse: sparse: dereference of noderef expression
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2068:36: sparse: sparse: dereference of noderef expression
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2075:36: sparse: sparse: dereference of noderef expression
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2080:36: sparse: sparse: dereference of noderef expression
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2101:28: sparse: sparse: dereference of noderef expression
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:2104:28: sparse: sparse: dereference of noderef expression

vim +3327 drivers/net/ethernet/wangxun/libwx/wx_lib.c

3b05aa997c4914 Jiawen Wu    2025-04-21  3314  
0ce45ae881fd90 Mengyuan Lou 2026-07-10  3315  int wx_set_ring(struct wx *wx, u32 new_tx_count,
883b5984a5d290 Jiawen Wu    2024-01-03  3316  		u32 new_rx_count, struct wx_ring *temp_ring)
883b5984a5d290 Jiawen Wu    2024-01-03  3317  {
883b5984a5d290 Jiawen Wu    2024-01-03  3318  	int i, err = 0;
883b5984a5d290 Jiawen Wu    2024-01-03  3319  
883b5984a5d290 Jiawen Wu    2024-01-03  3320  	/* Setup new Tx resources and free the old Tx resources in that order.
883b5984a5d290 Jiawen Wu    2024-01-03  3321  	 * We can then assign the new resources to the rings via a memcpy.
883b5984a5d290 Jiawen Wu    2024-01-03  3322  	 * The advantage to this approach is that we are guaranteed to still
883b5984a5d290 Jiawen Wu    2024-01-03  3323  	 * have resources even in the case of an allocation failure.
883b5984a5d290 Jiawen Wu    2024-01-03  3324  	 */
883b5984a5d290 Jiawen Wu    2024-01-03  3325  	if (new_tx_count != wx->tx_ring_count) {
883b5984a5d290 Jiawen Wu    2024-01-03  3326  		for (i = 0; i < wx->num_tx_queues; i++) {
883b5984a5d290 Jiawen Wu    2024-01-03 @3327  			memcpy(&temp_ring[i], wx->tx_ring[i],
883b5984a5d290 Jiawen Wu    2024-01-03  3328  			       sizeof(struct wx_ring));
883b5984a5d290 Jiawen Wu    2024-01-03  3329  
883b5984a5d290 Jiawen Wu    2024-01-03  3330  			temp_ring[i].count = new_tx_count;
883b5984a5d290 Jiawen Wu    2024-01-03  3331  			err = wx_setup_tx_resources(&temp_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3332  			if (err) {
883b5984a5d290 Jiawen Wu    2024-01-03  3333  				wx_err(wx, "setup new tx resources failed, keep using the old config\n");
883b5984a5d290 Jiawen Wu    2024-01-03  3334  				while (i) {
883b5984a5d290 Jiawen Wu    2024-01-03  3335  					i--;
883b5984a5d290 Jiawen Wu    2024-01-03  3336  					wx_free_tx_resources(&temp_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3337  				}
0ce45ae881fd90 Mengyuan Lou 2026-07-10  3338  				return err;
883b5984a5d290 Jiawen Wu    2024-01-03  3339  			}
883b5984a5d290 Jiawen Wu    2024-01-03  3340  		}
883b5984a5d290 Jiawen Wu    2024-01-03  3341  
883b5984a5d290 Jiawen Wu    2024-01-03  3342  		for (i = 0; i < wx->num_tx_queues; i++) {
883b5984a5d290 Jiawen Wu    2024-01-03  3343  			wx_free_tx_resources(wx->tx_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3344  
883b5984a5d290 Jiawen Wu    2024-01-03 @3345  			memcpy(wx->tx_ring[i], &temp_ring[i],
883b5984a5d290 Jiawen Wu    2024-01-03  3346  			       sizeof(struct wx_ring));
883b5984a5d290 Jiawen Wu    2024-01-03  3347  		}
883b5984a5d290 Jiawen Wu    2024-01-03  3348  
883b5984a5d290 Jiawen Wu    2024-01-03  3349  		wx->tx_ring_count = new_tx_count;
883b5984a5d290 Jiawen Wu    2024-01-03  3350  	}
883b5984a5d290 Jiawen Wu    2024-01-03  3351  
883b5984a5d290 Jiawen Wu    2024-01-03  3352  	/* Repeat the process for the Rx rings if needed */
883b5984a5d290 Jiawen Wu    2024-01-03  3353  	if (new_rx_count != wx->rx_ring_count) {
883b5984a5d290 Jiawen Wu    2024-01-03  3354  		for (i = 0; i < wx->num_rx_queues; i++) {
883b5984a5d290 Jiawen Wu    2024-01-03  3355  			memcpy(&temp_ring[i], wx->rx_ring[i],
883b5984a5d290 Jiawen Wu    2024-01-03  3356  			       sizeof(struct wx_ring));
883b5984a5d290 Jiawen Wu    2024-01-03  3357  
883b5984a5d290 Jiawen Wu    2024-01-03  3358  			temp_ring[i].count = new_rx_count;
883b5984a5d290 Jiawen Wu    2024-01-03  3359  			err = wx_setup_rx_resources(&temp_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3360  			if (err) {
883b5984a5d290 Jiawen Wu    2024-01-03  3361  				wx_err(wx, "setup new rx resources failed, keep using the old config\n");
883b5984a5d290 Jiawen Wu    2024-01-03  3362  				while (i) {
883b5984a5d290 Jiawen Wu    2024-01-03  3363  					i--;
883b5984a5d290 Jiawen Wu    2024-01-03  3364  					wx_free_rx_resources(&temp_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3365  				}
0ce45ae881fd90 Mengyuan Lou 2026-07-10  3366  				return err;
883b5984a5d290 Jiawen Wu    2024-01-03  3367  			}
883b5984a5d290 Jiawen Wu    2024-01-03  3368  		}
883b5984a5d290 Jiawen Wu    2024-01-03  3369  
883b5984a5d290 Jiawen Wu    2024-01-03  3370  		for (i = 0; i < wx->num_rx_queues; i++) {
883b5984a5d290 Jiawen Wu    2024-01-03  3371  			wx_free_rx_resources(wx->rx_ring[i]);
883b5984a5d290 Jiawen Wu    2024-01-03  3372  			memcpy(wx->rx_ring[i], &temp_ring[i],
883b5984a5d290 Jiawen Wu    2024-01-03  3373  			       sizeof(struct wx_ring));
883b5984a5d290 Jiawen Wu    2024-01-03  3374  		}
883b5984a5d290 Jiawen Wu    2024-01-03  3375  
883b5984a5d290 Jiawen Wu    2024-01-03  3376  		wx->rx_ring_count = new_rx_count;
883b5984a5d290 Jiawen Wu    2024-01-03  3377  	}
0ce45ae881fd90 Mengyuan Lou 2026-07-10  3378  	return 0;
883b5984a5d290 Jiawen Wu    2024-01-03  3379  }
883b5984a5d290 Jiawen Wu    2024-01-03  3380  EXPORT_SYMBOL(wx_set_ring);
883b5984a5d290 Jiawen Wu    2024-01-03  3381  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

      parent reply	other threads:[~2026-08-28  3:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24 10:36 [PATCH net v3] net: libwx: protect ring accesses with RCU Mengyuan Lou
2026-08-26 15:34 ` Simon Horman
2026-08-27 10:15   ` mengyuanlou
2026-08-26 20:27 ` kernel test robot
2026-08-28  3:34 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202608281122.ImEa1DuX-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=duanqiangwen@net-swift.com \
    --cc=edumazet@google.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=kuba@kernel.org \
    --cc=linglingzhang@net-swift.com \
    --cc=mengyuanlou@net-swift.com \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.