Messages in this thread | | | Date | Tue, 04 Apr 2006 18:46:45 +0900 | From | "Hyok S. Choi" <> | Subject | Re: [PATCH 2.6.17-rc1] [SERIAL] DCC(JTAG) serial and the console emulation support(revised#2) |
| |
On Tuesday 04 April 2006 05:20 pm, Russell King wrote: > On Tue, Apr 04, 2006 at 11:27:06AM +0900, Hyok S. Choi wrote: > > On Tuesday 04 April 2006 04:44 am, Russell King wrote: > > > On Mon, Apr 03, 2006 at 08:24:10PM +0900, Hyok S. Choi wrote: > > > > > > > +static void dcc_shutdown(struct uart_port *port) > > > > +{ > > > > +#ifdef DCC_IRQ_USED /* real IRQ used */ > > > > + free_irq(port->irq, port); > > > > +#else > > > > + spin_lock(&port->lock); > > > > + cancel_rearming_delayed_work(&dcc_poll_task); > > > > > > cancel_rearming_delayed_work() might sleep due to it calling > > > flush_workqueue. Therefore, you must not be holding a spinlock. > > > > Thus, I've just revised the code to lock around a counter variable > > operation, which is used for life control of the polling task. > > I've just posted the revised #3. :-) > > Why do you think you need such complexity? > > cancel_rearming_delayed_work() will wait until the poll task has > completed and has been removed from the system. It's explicitly > designed for work handlers which self-rearm.
Hmm.. Maybe you're right, because dcc_shutdown and dcc_startup, which are the only functions that initiate or stop the work, will never be called concurrently by different callers?
-- Hyok ARM Linux 2.6 MPU/noMMU Project http://opensrc.sec.samsung.com/ - 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/
| |