Message ID | 1304999271.3050.41.camel@edumazet-laptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 10 May 2011 05:47:51 +0200 > [PATCH net-next-2.6] net: fix two lockdep splats > > Commit e67f88dd12f6 (net: dont hold rtnl mutex during netlink dump > callbacks) switched rtnl protection to RCU, but we forgot to adjust two > rcu_dereference() lockdep annotations : > > inet_get_link_af_size() or inet_fill_link_af() might be called with > rcu_read_lock or rtnl held, so use rcu_dereference_rtnl() > instead of rtnl_dereference() > > Reported-by: Valdis Kletnieks <Valdis.Kletnieks@vt.edu> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Applied, thanks everyone. -- 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
Le lundi 09 mai 2011 à 20:58 -0700, David Miller a écrit : > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Tue, 10 May 2011 05:47:51 +0200 > > > [PATCH net-next-2.6] net: fix two lockdep splats > > > > Commit e67f88dd12f6 (net: dont hold rtnl mutex during netlink dump > > callbacks) switched rtnl protection to RCU, but we forgot to adjust two > > rcu_dereference() lockdep annotations : > > > > inet_get_link_af_size() or inet_fill_link_af() might be called with > > rcu_read_lock or rtnl held, so use rcu_dereference_rtnl() > > instead of rtnl_dereference() > > > > Reported-by: Valdis Kletnieks <Valdis.Kletnieks@vt.edu> > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> > > Applied, thanks everyone. David, I found you applied this patch for net-2.6, but it was net-next-2.6 material only ... -- 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, 10 May 2011 23:48:36 +0200 > Le lundi 09 mai 2011 à 20:58 -0700, David Miller a écrit : >> From: Eric Dumazet <eric.dumazet@gmail.com> >> Date: Tue, 10 May 2011 05:47:51 +0200 >> >> > [PATCH net-next-2.6] net: fix two lockdep splats >> > >> > Commit e67f88dd12f6 (net: dont hold rtnl mutex during netlink dump >> > callbacks) switched rtnl protection to RCU, but we forgot to adjust two >> > rcu_dereference() lockdep annotations : >> > >> > inet_get_link_af_size() or inet_fill_link_af() might be called with >> > rcu_read_lock or rtnl held, so use rcu_dereference_rtnl() >> > instead of rtnl_dereference() >> > >> > Reported-by: Valdis Kletnieks <Valdis.Kletnieks@vt.edu> >> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> >> >> Applied, thanks everyone. > > David, I found you applied this patch for net-2.6, but it was > net-next-2.6 material only ... Thanks for catching that, I'll fix this. -- 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/net/ipv4/devinet.c b/net/ipv4/devinet.c index cd9ca08..6b1eb92 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -1369,7 +1369,7 @@ errout: static size_t inet_get_link_af_size(const struct net_device *dev) { - struct in_device *in_dev = __in_dev_get_rtnl(dev); + struct in_device *in_dev = rcu_dereference_rtnl(dev->ip_ptr); if (!in_dev) return 0; @@ -1379,7 +1379,7 @@ static size_t inet_get_link_af_size(const struct net_device *dev) static int inet_fill_link_af(struct sk_buff *skb, const struct net_device *dev) { - struct in_device *in_dev = __in_dev_get_rtnl(dev); + struct in_device *in_dev = rcu_dereference_rtnl(dev->ip_ptr); struct nlattr *nla; int i;