Re: [net-next:master 257/266] drivers/net/team/team_mode_loadbalance.c:99:30: sparse: incompatible types in comparison expression (different address spaces)

2 messages, 2 authors, 2012-06-20 · open the first message on its own page

Re: [net-next:master 257/266] drivers/net/team/team_mode_loadbalance.c:99:30: sparse: incompatible types in comparison expression (different address spaces)

From: Eric Dumazet <hidden>
Date: 2012-06-20 13:11:57

On Wed, 2012-06-20 at 05:49 -0700, Paul E. McKenney wrote:
On Wed, Jun 20, 2012 at 02:50:55PM +0800, Fengguang Wu wrote:
quoted
[CC Paul, the RCU maintainer]

On Wed, Jun 20, 2012 at 08:36:07AM +0200, Jiri Pirko wrote:
quoted
Wed, Jun 20, 2012 at 06:27:43AM CEST, wfg@linux.intel.com wrote:
quoted
Hi Jiri,

There are new sparse warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master
head:   677a3d60fb3153f786a0d28fcf0287670e7bd3c2
commit: ab8250d70063f77929fc404c02390a1f64d66416 [257/266] team: lb: introduce infrastructure for userspace driven tx loadbalancing

All sparse warnings:

drivers/net/team/team_mode_loadbalance.c:99:30: sparse: incompatible types in comparison expression (different address spaces)

drivers/net/team/team_mode_loadbalance.c:99:
   96			struct lb_port_mapping *pm;
   97	
   98			pm = &lb_priv->ex->tx_hash_to_port_mapping[i];
 > 99			if (pm->port == port) {
This looks like your checker does not like
(struct team_port __rcu *) == (struct team_port *)
But I wonder why (or how should I fix that)
Because you said that it was an RCU-protected pointer, but then did
not use an RCU primitive to access it.  In this case, where you are
just using the value but not dereferencing it, you can use
rcu_access_pointer().
Yes, and please Jiri change the 

rcu_assign_pointer(pm->port, NULL);

by

RCU_INIT_POINTER(pm->port, NULL);

Re: [net-next:master 257/266] drivers/net/team/team_mode_loadbalance.c:99:30: sparse: incompatible types in comparison expression (different address spaces)

From: Jiri Pirko <hidden>
Date: 2012-06-20 13:24:12

Wed, Jun 20, 2012 at 03:11:49PM CEST, eric.dumazet@gmail.com wrote:
On Wed, 2012-06-20 at 05:49 -0700, Paul E. McKenney wrote:
quoted
On Wed, Jun 20, 2012 at 02:50:55PM +0800, Fengguang Wu wrote:
quoted
[CC Paul, the RCU maintainer]

On Wed, Jun 20, 2012 at 08:36:07AM +0200, Jiri Pirko wrote:
quoted
Wed, Jun 20, 2012 at 06:27:43AM CEST, wfg@linux.intel.com wrote:
quoted
Hi Jiri,

There are new sparse warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master
head:   677a3d60fb3153f786a0d28fcf0287670e7bd3c2
commit: ab8250d70063f77929fc404c02390a1f64d66416 [257/266] team: lb: introduce infrastructure for userspace driven tx loadbalancing

All sparse warnings:

drivers/net/team/team_mode_loadbalance.c:99:30: sparse: incompatible types in comparison expression (different address spaces)

drivers/net/team/team_mode_loadbalance.c:99:
   96			struct lb_port_mapping *pm;
   97	
   98			pm = &lb_priv->ex->tx_hash_to_port_mapping[i];
 > 99			if (pm->port == port) {
This looks like your checker does not like
(struct team_port __rcu *) == (struct team_port *)
But I wonder why (or how should I fix that)
Because you said that it was an RCU-protected pointer, but then did
not use an RCU primitive to access it.  In this case, where you are
just using the value but not dereferencing it, you can use
rcu_access_pointer().
Yes, and please Jiri change the 

rcu_assign_pointer(pm->port, NULL);

by

RCU_INIT_POINTER(pm->port, NULL);
Will do.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help