2020-04-09 08:29:46

by Madhuparna Bhowmik

[permalink] [raw]
Subject: [PATCH 2/4] net: mac80211: scan.c: Fix RCU list related warnings.

From: Madhuparna Bhowmik <[email protected]>

This patch fixes the following warning:

WARNING: suspicious RCU usage
[ 84.530619] 5.6.0+ #4 Not tainted
[ 84.530637] -----------------------------
[ 84.530658] net/mac80211/scan.c:454 RCU-list traversed in non-reader section!!

As local->mtx is held in __ieee80211_scan_completed(), no need to use
list_for_each_entry_rcu() (use list_for_each_entry() instead.).

Signed-off-by: Madhuparna Bhowmik <[email protected]>
---
net/mac80211/scan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index fdac8192a519..0860f028ab2a 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -451,7 +451,7 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
* the scan was in progress; if there was none this will
* just be a no-op for the particular interface.
*/
- list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+ list_for_each_entry(sdata, &local->interfaces, list) {
if (ieee80211_sdata_running(sdata))
ieee80211_queue_work(&sdata->local->hw, &sdata->work);
}
--
2.17.1


2020-04-24 09:22:34

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 2/4] net: mac80211: scan.c: Fix RCU list related warnings.

On Thu, 2020-04-09 at 13:58 +0530, [email protected] wrote:
> From: Madhuparna Bhowmik <[email protected]>
>
> This patch fixes the following warning:
>
> WARNING: suspicious RCU usage
> [ 84.530619] 5.6.0+ #4 Not tainted
> [ 84.530637] -----------------------------
> [ 84.530658] net/mac80211/scan.c:454 RCU-list traversed in non-reader section!!
>
> As local->mtx is held in __ieee80211_scan_completed()

Yeah, but is that really the right lock? I think it should be RTNL or
iflist_mtx for the interface list.

(Not that this is necessarily a good idea - we perhaps should clean up
and significantly reduce the number of locks used here.)

johannes