On Mon, 07 Jan 2008 23:11:53 +1100 Herbert Xu <[EMAIL PROTECTED]> wrote:
> Eric Dumazet <[EMAIL PROTECTED]> wrote: > > CHECK net/ipv4/route.c > > net/ipv4/route.c:298:2: warning: context imbalance in 'rt_cache_get_first' > > - wrong count at exit > > net/ipv4/route.c:307:3: warning: context imbalance in 'rt_cache_get_next' - > > unexpected unlock > > net/ipv4/route.c:346:3: warning: context imbalance in 'rt_cache_seq_stop' - > > unexpected unlock > > > > Signed-off-by: Eric Dumazet <[EMAIL PROTECTED]> > > > > diff --git a/net/ipv4/route.c b/net/ipv4/route.c > > index 10915bb..fec0571 100644 > > --- a/net/ipv4/route.c > > +++ b/net/ipv4/route.c > > @@ -289,11 +289,11 @@ static struct rtable *rt_cache_get_first(struct > > seq_file *seq) > > struct rt_cache_iter_state *st = seq->private; > > > > for (st->bucket = rt_hash_mask; st->bucket >= 0; --st->bucket) { > > - rcu_read_lock_bh(); > > r = rt_hash_table[st->bucket].chain; > > if (r) > > break; > > rcu_read_unlock_bh(); > > + rcu_read_lock_bh(); > > If we have to change perfectly working code to silence sparse then > either sparse or we are doing something wrong. > > This is not the only spot where we conditionally hold the lock. > There's got to be a better fix than changing all of them to hold > locks unconditionally. Maybe sparse (or me :) ) is a litle bit dumb :( You are right other functions conditionally hold some lock(s), but in this case this is not really necessary / worth the complexity. AFAIK, this patch reduces complexity and text size. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html