Re: serial port regression caused by "Char: tty_ioctl, use wait_event_interruptible_timeout"patch

From: Paul Fulghum
Date: Tue Feb 05 2008 - 15:19:19 EST


Rick Warner wrote:
I narrowed down the problem doing a binary search on git snapshots between .22 and .23, and found the breakage between git6 and git7. Further isolating it found the patch mentioned in the subject to be the cause. I reversed the patch in the .23 source and it now works properly.

Should the code be reverted back as I did, or is there something I should change in our userspace code that reads from the serial port to correct it instead?

Instead of reverting the patch can you try modifying
this part of the patch:

+ if (wait_event_interruptible_timeout(tty->write_wait,
+ !tty->driver->chars_in_buffer(tty), timeout))
+ return;

by changing it to:

+ if (wait_event_interruptible_timeout(tty->write_wait,
+ !tty->driver->chars_in_buffer(tty), timeout) < 0)
+ return;

It looks like the patch changed the behavior of
tty_wait_until_sent by not calling the driver
specific wait_until_sent if a timeout occurs.

--
Paul Fulghum
Microgate Systems, Ltd.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/