Messages in this thread |  | | Date | Mon, 16 Sep 2002 00:26:19 +0100 | From | Russell King <> | Subject | Re: [patch 9/9]Four new i2c drivers and __init/__exit cleanup to i2c |
| |
On Sun, Sep 15, 2002 at 07:18:46PM -0400, Jeff Garzik wrote: > Albert Cranford wrote: > > --- linux/drivers/i2c/i2c-elektor.c.orig 2002-09-14 22:10:45.000000000 -0400 > > +++ linux-2.5.34/drivers/i2c/i2c-elektor.c 2002-09-15 01:18:55.000000000 -0400 > > @@ -125,12 +125,12 @@ > > int timeout = 2; > > > > if (irq > 0) { > > - cli(); > > + local_irq_disable(); > > if (pcf_pending == 0) { > > interruptible_sleep_on_timeout(&pcf_wait, timeout*HZ ); > > } else > > pcf_pending = 0; > > - sti(); > > + local_irq_enable(); > > } else { > > udelay(100); > > } > > > > this is _not_ the way to fix... use a proper spinlock
You can't hold a spinlock and sleep though, was one of my points back in August. (Albert submitted a patch with all cli()/sti() converted to spin_lock_irqsave()/spin_unlock_irqrestore().)
-- Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |