From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: shemminger@vyatta.com
Cc: netdev@vger.kernel.org, arnd@arndb.de
Subject: Fun with if_bridge.h and br_private.h
Date: Mon, 3 May 2010 12:12:56 -0700 [thread overview]
Message-ID: <20100503191256.GA18110@linux.vnet.ibm.com> (raw)
Hello, Stephen,
I need some help with #include issues surrounding bridge.
Arnd has been putting together a sparse-based RCU-checking tool
that can detect pointer access that should have been protected by an
rcu_dereference() or rcu_assign_pointer(). On of the side-effects of
his approach is that rcu_dereference() can no longer handle pointers
to incomplete types, as Arnd's approach uses the address-space feature
of sparse, which in turn must tag the type pointed to rather than the
pointer itself. And this in turn requires rcu_dereference() and friends
to see the pointed-to type as well as the pointer type.
One place affected by this is handle_bridge() in net/core/dev.c, which
invokes rcu_dereference() on skb->dev->br_port, which is of type struct
net_bridge_port, which is defined in net/bridge/br_private.h. This is,
well, private, but is included into a couple places in netfilter and atm,
so I tried including it into net/core/dev.c.
This still left me with forward references:
In file included from net/core/dev.c:104:
include/linux/if_bridge.h:106: warning: "struct net_bridge_port" declared inside parameter list
include/linux/if_bridge.h:106: warning: its scope is only this definition or declaration, which is probably not what you want
net/core/dev.c:2331: error: conflicting types for "br_handle_frame_hook"
include/linux/if_bridge.h:105: error: previous declaration of "br_handle_frame_hook" was here
net/core/dev.c:2333: error: conflicting types for "br_handle_frame_hook"
include/linux/if_bridge.h:105: error: previous declaration of "br_handle_frame_hook" was here
This happens because net/bridge/br_private.h includes if_bridge.h before
it defines net_bridge_port.
Any thoughts on how best to allow handle_bridge() see the definition
of struct net_bridge_port?
Thanx, Paul
next reply other threads:[~2010-05-03 19:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-03 19:12 Paul E. McKenney [this message]
2010-05-03 20:36 ` Fun with if_bridge.h and br_private.h Stephen Hemminger
2010-05-03 21:02 ` Arnd Bergmann
2010-05-03 23:34 ` Paul E. McKenney
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=20100503191256.GA18110@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=arnd@arndb.de \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.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.