From: Bob Copeland <me@bobcopeland.com>
To: johannes@sipsolutions.net
Cc: linux-wireless@vger.kernel.org, paulmck@linux.vnet.ibm.com
Subject: [PATCH] mac80211: use synchronize_rcu() with rcu_barrier()
Date: Thu, 18 Apr 2013 18:04:43 -0400 [thread overview]
Message-ID: <20130418220443.GB3759@localhost> (raw)
The RCU docs used to state that rcu_barrier() included a wait
for an RCU grace period; however the comments for rcu_barrier()
as of commit f0a0e6f... "rcu: Clarify memory-ordering properties
of grace-period primitives" contradict this.
So add back synchronize_{rcu,net}() to where they once were,
but keep the rcu_barrier()s for the call_rcu() callbacks.
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Bob Copeland <bob@cozybit.com>
---
net/mac80211/iface.c | 5 +++--
net/mac80211/pm.c | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index b6abaaa..c634aff 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -836,11 +836,12 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
*
* sta_info_flush_cleanup() requires rcu_barrier()
* first to wait for the station call_rcu() calls
- * to complete, here we need at least sychronize_rcu()
- * it to wait for the RX path in case it is using the
+ * to complete, and we also need synchronize_rcu()
+ * to wait for the RX path in case it is using the
* interface and enqueuing frames at this very time on
* another CPU.
*/
+ synchronize_rcu();
rcu_barrier();
sta_info_flush_cleanup(sdata);
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index 4431f0f..7fc5d0d 100644
--- a/net/mac80211/pm.c
+++ b/net/mac80211/pm.c
@@ -38,6 +38,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
IEEE80211_QUEUE_STOP_REASON_SUSPEND);
/* flush out all packets and station cleanup call_rcu()s */
+ synchronize_net();
rcu_barrier();
ieee80211_flush_queues(local, NULL);
--
1.7.10.4
--
Bob Copeland %% www.bobcopeland.com
next reply other threads:[~2013-04-18 22:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-18 22:04 Bob Copeland [this message]
2013-04-18 22:20 ` [PATCH] mac80211: use synchronize_rcu() with rcu_barrier() Paul E. McKenney
2013-04-18 22:26 ` [PATCH v2] " Bob Copeland
2013-04-22 13:41 ` Johannes Berg
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=20130418220443.GB3759@localhost \
--to=me@bobcopeland.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.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.