Re: lis_free_irq() bug?

Steve Schefter <[email protected]> Wed, 01 Feb 2006 09:53:06 -0500
Newsgroups gmane.linux.kernel.streams
Organization The Software Group Limited
Message-ID <[email protected]>
[email protected] wrote:

> There seems to be a bug in lis_free_irq().
>  
> <snip>
 >
> The problem is that if irq kicks in before it is released at (A2)  but 
> after handler is NULLed at (A1)
> and  lis_khandler() is  called,  it will fail at (B1) since dv->handler 
> is NULL already.

With a quick look at the code, I would agree that the free_irq() call
should be moved up to before the handler is NULLed and that the dv
structure should be freed (as is done in lis_free_devid_list()).
Thanks for sharing.

Just one additional note on this in case you discovered this while
chasing down an interrupt problem:  The hardware should be programmed
to no longer generate an interrupt _before_ lis_free_irq() is called.
If that is done, then that bug is only a problem when there are
shared interrupts.  If that's not done, then there can still be
interrupt issues (unserviced IRQs) even after this is fixed.

Regards,
	Steve

------------------------------------------------------------------------
Steve Schefter                               phone: +1 705 725 9999 x26
The Software Group Limited                     fax: +1 705 725 9666
642 Welham Road,                             email: [email protected]
Barrie, Ontario CANADA  L4N 9A1                Web: www.wanware.com