[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20080107145624.05918cea.dada1@cosmosbay.com>
Date: Mon, 7 Jan 2008 14:56:24 +0100
From: Eric Dumazet <dada1@...mosbay.com>
To: Herbert Xu <herbert@...dor.apana.org.au>
Cc: davem@...emloft.net, netdev@...r.kernel.org,
viro@...IV.linux.org.uk
Subject: Re: [IPV4] ROUTE: Avoid sparse warnings
On Mon, 07 Jan 2008 23:11:53 +1100
Herbert Xu <herbert@...dor.apana.org.au> wrote:
> Eric Dumazet <dada1@...mosbay.com> 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 <dada1@...mosbay.com>
> >
> > 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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists