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
prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox