All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Bob Copeland <me@bobcopeland.com>
Cc: johannes@sipsolutions.net, linux-wireless@vger.kernel.org
Subject: Re: [PATCH] mac80211: use synchronize_rcu() with rcu_barrier()
Date: Thu, 18 Apr 2013 15:20:17 -0700	[thread overview]
Message-ID: <20130418222017.GF3479@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130418220443.GB3759@localhost>

On Thu, Apr 18, 2013 at 06:04:43PM -0400, Bob Copeland wrote:
> 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>

Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.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
> 


  reply	other threads:[~2013-04-18 22:20 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-18 22:04 [PATCH] mac80211: use synchronize_rcu() with rcu_barrier() Bob Copeland
2013-04-18 22:20 ` Paul E. McKenney [this message]
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=20130418222017.GF3479@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=me@bobcopeland.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.