From: Johannes Berg <johannes@sipsolutions.net>
To: Javier Cardona <javier@cozybit.com>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
devel@lists.open80211s.org
Subject: Re: mesh RCU issues
Date: Sat, 14 May 2011 01:30:34 +0200 [thread overview]
Message-ID: <1305329434.32461.2.camel@jlt3.sipsolutions.net> (raw)
In-Reply-To: <BANLkTi=R_Eyz8+iZsk+=Gs4vaNo-0eUVng@mail.gmail.com> (sfid-20110513_222925_238565_758AD262)
On Fri, 2011-05-13 at 13:28 -0700, Javier Cardona wrote:
> >> Isn't the call to del_timer_sync() you are looking for in
> >> mesh_path_node_reclaim() ?
> >
> > Hmm, indeed, but it looks like mesh_path_node_free() also frees a node,
> > no? I'd only found the latter function freeing it and got worried.
>
> Ah, I see. Yes, looks like the timer should be deleted there as well.
> Patch will follow.
Thanks!
> > You'll want to apply
> > http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-mac80211-rcu-annotations.patch to get rid of all the other spurious RCU warnings with CONFIG_SPARSE_RCU.
>
> (You probably meant CONFIG_SPARSE_RCU_POINTER)
Yeah, sorry.
> I must be doing something wrong because I don't see the RCU warnings
> after making {mesh,mpp}_paths __rcu. I only see two "different
> address spaces" errors that are fixed in the patch below.
> I do see a bunch of 'warning' errors:
>
> /home/javier/dev/wireless-testing/arch/x86/include/asm/uaccess_32.h:199:2:
> error: attribute 'warning': unknown attribute
Oh, damn. You're running into a sparse issue: upon encountering an
error, it aborts parsing/checking. So since you're getting an error from
an include file, you never see any warnings from the rest of the file.
>
>
> diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c
> index 83ce48e..1db8bba 100644
> --- a/net/mac80211/mesh_pathtbl.c
> +++ b/net/mac80211/mesh_pathtbl.c
> @@ -36,8 +36,8 @@ struct mpath_node {
> struct mesh_path *mpath;
> };
>
> -static struct mesh_table *mesh_paths;
> -static struct mesh_table *mpp_paths; /* Store paths for MPP&MAP */
> +static struct mesh_table __rcu *mesh_paths;
> +static struct mesh_table __rcu *mpp_paths; /* Store paths for MPP&MAP */
>
> int mesh_paths_generation;
>
> @@ -513,7 +513,7 @@ void mesh_plink_broken(struct sta_info *sta)
> for_each_mesh_entry(mesh_paths, p, node, i) {
> mpath = node->mpath;
> spin_lock_bh(&mpath->state_lock);
> - if (mpath->next_hop == sta &&
> + if (rcu_dereference(mpath->next_hop) == sta &&
> mpath->flags & MESH_PATH_ACTIVE &&
> !(mpath->flags & MESH_PATH_FIXED)) {
> mpath->flags &= ~MESH_PATH_ACTIVE;
> @@ -549,7 +549,7 @@ void mesh_path_flush_by_nexthop(struct sta_info *sta)
>
> for_each_mesh_entry(mesh_paths, p, node, i) {
> mpath = node->mpath;
> - if (mpath->next_hop == sta)
> + if (rcu_dereference(mpath->next_hop) == sta)
> mesh_path_del(mpath->dst, mpath->sdata);
> }
> }
>
> Thoughts?
I'll try if this is sufficient but it seemed there were more warnings
when I tried.
johannes
next prev parent reply other threads:[~2011-05-13 23:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-12 12:25 mesh RCU issues Johannes Berg
2011-05-12 13:03 ` [PATCH] mac80211: remove pointless mesh path timer RCU code Johannes Berg
2011-05-12 22:26 ` mesh RCU issues Javier Cardona
2011-05-13 7:13 ` Johannes Berg
2011-05-13 20:28 ` Javier Cardona
2011-05-13 23:30 ` Johannes Berg [this message]
2011-05-14 0:00 ` Johannes Berg
2011-05-14 3:52 ` Javier Cardona
2011-05-14 8:24 ` 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=1305329434.32461.2.camel@jlt3.sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=devel@lists.open80211s.org \
--cc=javier@cozybit.com \
--cc=linux-wireless@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).