Message ID | 1272350443.4861.9.camel@edumazet-laptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Apr 27, 2010 at 08:40:43AM +0200, Eric Dumazet wrote: > __sk_dst_set() might be called while no state can be integrated in a > rcu_dereference_check() condition. > > So use rcu_dereference_raw() to shutup lockdep warnings (if > CONFIG_PROVE_RCU is set) Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> > --- > diff --git a/include/net/sock.h b/include/net/sock.h > index 86a8ca1..94dbdbc 100644 > --- a/include/net/sock.h > +++ b/include/net/sock.h > @@ -1236,8 +1236,11 @@ __sk_dst_set(struct sock *sk, struct dst_entry *dst) > struct dst_entry *old_dst; > > sk_tx_queue_clear(sk); > - old_dst = rcu_dereference_check(sk->sk_dst_cache, > - lockdep_is_held(&sk->sk_dst_lock)); > + /* > + * This can be called while sk is owned by the caller only, > + * with no state that can be checked in a rcu_dereference_check() cond > + */ > + old_dst = rcu_dereference_raw(sk->sk_dst_cache); > rcu_assign_pointer(sk->sk_dst_cache, dst); > dst_release(old_dst); > } > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Date: Tue, 27 Apr 2010 09:17:16 -0700 > On Tue, Apr 27, 2010 at 08:40:43AM +0200, Eric Dumazet wrote: >> __sk_dst_set() might be called while no state can be integrated in a >> rcu_dereference_check() condition. >> >> So use rcu_dereference_raw() to shutup lockdep warnings (if >> CONFIG_PROVE_RCU is set) > > Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > >> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> I've applied this to net-next-2.6, thanks! -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 27 Apr 2010 08:40:43 +0200 > __sk_dst_set() might be called while no state can be integrated in a > rcu_dereference_check() condition. > > So use rcu_dereference_raw() to shutup lockdep warnings (if > CONFIG_PROVE_RCU is set) > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Applied, thanks Eric. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/net/sock.h b/include/net/sock.h index 86a8ca1..94dbdbc 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1236,8 +1236,11 @@ __sk_dst_set(struct sock *sk, struct dst_entry *dst) struct dst_entry *old_dst; sk_tx_queue_clear(sk); - old_dst = rcu_dereference_check(sk->sk_dst_cache, - lockdep_is_held(&sk->sk_dst_lock)); + /* + * This can be called while sk is owned by the caller only, + * with no state that can be checked in a rcu_dereference_check() cond + */ + old_dst = rcu_dereference_raw(sk->sk_dst_cache); rcu_assign_pointer(sk->sk_dst_cache, dst); dst_release(old_dst); }
__sk_dst_set() might be called while no state can be integrated in a rcu_dereference_check() condition. So use rcu_dereference_raw() to shutup lockdep warnings (if CONFIG_PROVE_RCU is set) Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html