Subject: Re: tg3 reset_task question

From: Stephen Hemminger <[email-masked]>
Date: Wed, 4 Apr 2007 15:10:07 -0700

On Wed, 04 Apr 2007 13:53:47 -0700
Gagan Arneja <[email-masked]> wrote:

> I like the counting semaphore idea.
> 
> --
> Gagan
> 
> Michael Chan wrote:
> > On Wed, 2007-04-04 at 13:34 -0700, Gagan Arneja wrote:
> >> Can't this BUG_ON be hit very easily:
> >>
> >> static void tg3_irq_quiesce(struct tg3 *tp)
> >> {
> >>         BUG_ON(tp->irq_sync);
> >> ...
> >> }
> >>
> >> tg3_reset_task could easily be racing with another thread, that calls
> >> tg3_full_lock(tp, 1); e.g tg3_change_mtu. Maybe I'm missing something
> >> obvious.
> >>
> > 
> > Yes, you're right.  Perhaps we should get the rtnl first before
> > tg3_full_lock(), or turn irq_sync into an atomic counter that allows
> > nesting.

When you start reinventing windows locks or the BKL, you know
you are going down the wrong path