[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202601201954.zxO1N1DS-lkp@intel.com>
Date: Tue, 20 Jan 2026 19:42:49 +0800
From: kernel test robot <lkp@...el.com>
To: Zac <zac@...bowling.com>, sean.wang@...nel.org
Cc: oe-kbuild-all@...ts.linux.dev, deren.wu@...iatek.com, kvalo@...nel.org,
linux-kernel@...r.kernel.org, linux-mediatek@...ts.infradead.org,
linux-wireless@...r.kernel.org, lorenzo@...nel.org, nbd@....name,
ryder.lee@...iatek.com, sean.wang@...iatek.com,
stable@...r.kernel.org, linux@...me.work, zbowling@...il.com,
Zac Bowling <zac@...bowling.com>
Subject: Re: [PATCH 11/11] wifi: mt76: mt7925: fix ROC deadlocks and race
conditions
Hi Zac,
kernel test robot noticed the following build warnings:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.19-rc6 next-20260119]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zac/wifi-mt76-fix-list-corruption-in-mt76_wcid_cleanup/20260120-143842
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20260120062854.126501-12-zac%40zacbowling.com
patch subject: [PATCH 11/11] wifi: mt76: mt7925: fix ROC deadlocks and race conditions
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20260120/202601201954.zxO1N1DS-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260120/202601201954.zxO1N1DS-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601201954.zxO1N1DS-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from include/linux/printk.h:621,
from include/linux/kernel.h:31,
from include/linux/skbuff.h:13,
from include/linux/if_ether.h:19,
from include/linux/etherdevice.h:20,
from drivers/net/wireless/mediatek/mt76/mt7925/main.c:4:
drivers/net/wireless/mediatek/mt76/mt7925/main.c: In function 'mt7925_set_roc':
>> drivers/net/wireless/mediatek/mt76/mt7925/main.c:610:33: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'unsigned int' [-Wformat=]
610 | "mt7925: ROC throttled, %lu ms remaining\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
231 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
261 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
284 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:30: note: in expansion of macro 'dev_fmt'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/net/wireless/mediatek/mt76/mt7925/main.c:609:25: note: in expansion of macro 'dev_dbg'
609 | dev_dbg(phy->dev->mt76.dev,
| ^~~~~~~
drivers/net/wireless/mediatek/mt76/mt7925/main.c:610:59: note: format string is defined here
610 | "mt7925: ROC throttled, %lu ms remaining\n",
| ~~^
| |
| long unsigned int
| %u
drivers/net/wireless/mediatek/mt76/mt7925/main.c: In function 'mt7925_set_mlo_roc':
drivers/net/wireless/mediatek/mt76/mt7925/main.c:661:33: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'unsigned int' [-Wformat=]
661 | "mt7925: MLO ROC throttled, %lu ms remaining\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
231 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
261 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
284 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:30: note: in expansion of macro 'dev_fmt'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/net/wireless/mediatek/mt76/mt7925/main.c:660:25: note: in expansion of macro 'dev_dbg'
660 | dev_dbg(phy->dev->mt76.dev,
| ^~~~~~~
drivers/net/wireless/mediatek/mt76/mt7925/main.c:661:63: note: format string is defined here
661 | "mt7925: MLO ROC throttled, %lu ms remaining\n",
| ~~^
| |
| long unsigned int
| %u
vim +610 drivers/net/wireless/mediatek/mt76/mt7925/main.c
592
593 static int mt7925_set_roc(struct mt792x_phy *phy,
594 struct mt792x_bss_conf *mconf,
595 struct ieee80211_channel *chan,
596 int duration,
597 enum mt7925_roc_req type)
598 {
599 unsigned long throttle;
600 int err;
601
602 /* Check rate limiting - if in backoff period, wait or return busy */
603 throttle = mt7925_roc_throttle_check(phy);
604 if (throttle) {
605 /* For short backoffs, wait; for longer ones, return busy */
606 if (throttle < msecs_to_jiffies(200)) {
607 msleep(jiffies_to_msecs(throttle));
608 } else {
609 dev_dbg(phy->dev->mt76.dev,
> 610 "mt7925: ROC throttled, %lu ms remaining\n",
611 jiffies_to_msecs(throttle));
612 return -EBUSY;
613 }
614 }
615
616 /* Clear stale abort flag from previous ROC */
617 clear_bit(MT76_STATE_ROC_ABORT, &phy->mt76->state);
618
619 if (test_and_set_bit(MT76_STATE_ROC, &phy->mt76->state))
620 return -EBUSY;
621
622 phy->roc_grant = false;
623
624 err = mt7925_mcu_set_roc(phy, mconf, chan, duration, type,
625 ++phy->roc_token_id);
626 if (err < 0) {
627 clear_bit(MT76_STATE_ROC, &phy->mt76->state);
628 goto out;
629 }
630
631 if (!wait_event_timeout(phy->roc_wait, phy->roc_grant, 4 * HZ)) {
632 mt7925_mcu_abort_roc(phy, mconf, phy->roc_token_id);
633 clear_bit(MT76_STATE_ROC, &phy->mt76->state);
634 mt7925_roc_record_timeout(phy);
635 err = -ETIMEDOUT;
636 } else {
637 /* Successful ROC - reset timeout tracking */
638 mt7925_roc_clear_timeout(phy);
639 }
640
641 out:
642 return err;
643 }
644
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists