Subject: Re: tg3 reset_task question

From: "Michael Chan" <[email-masked]>
Date: Wed, 04 Apr 2007 14:37:01 -0700

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.