aha/drivers/char
Cory T. Tusar db99247ac6 tty: fix logic change introduced by wait_event_interruptible_timeout()
Commit 5a52bd4a2d introduced a subtle logic
change in tty_wait_until_sent().  The original version would only error out
of the 'do { ...  } while (timeout)' loop if signal_pending() evaluated to
true; a timeout or break due to an empty buffer would fall out of the loop
and into the tty->driver->wait_until_sent handling.  The current
implementation will error out on either a pending signal or an empty
buffer, falling through to the tty->driver->wait_until_sent handling only
on a timeout.

The ->wait_until_sent() will not be reached if the buffer empties before
timeout jiffies have elapsed.  This behavior differs from that prior to commit
5a52bd4a2d.

I turned this up while using a little serial download utility to bootstrap an
ARM-based eval board.  The util worked fine on 2.6.22.x, but consistently
failed on 2.6.23.x.  Once I'd determined that, I narrowed things down with git
bisect, and found the above difference in logic in tty_wait_until_sent() by
inspection.

This change reverts the logic flow in tty_wait_until_sent() to match that
prior to the aforementioned commit.

Signed-off-by: Cory T. Tusar <ctusar@videon-central.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Acked-by: Jiri Slaby <jirislaby@gmail.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-12-23 12:54:37 -08:00
..
agp x86 gart: rename CONFIG_IOMMU to CONFIG_GART_IOMMU 2007-10-30 00:22:22 +01:00
drm drm: DRM: fix memset size error 2007-11-06 10:12:44 +10:00
hw_random Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
ip2 drivers/char/ip2: separate polling and irq-driven work entry points 2007-10-23 19:53:16 -04:00
ipmi [WATCHDOG] ipmi: add the standard watchdog timeout ioctls 2007-11-28 08:25:19 +00:00
mwave
pcmcia cm40x0_cs.c: fix debug macros 2007-11-14 18:45:37 -08:00
rio long vs. unsigned long - low-hanging fruits in drivers 2007-10-14 12:41:51 -07:00
tpm TPM: fix TIS device driver locality request 2007-11-29 09:24:52 -08:00
.gitignore
amiserial.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
apm-emulation.c Freezer: Fix APM emulation breakage 2007-11-20 22:28:20 -05:00
applicom.c
applicom.h
briq_panel.c [POWERPC] Remove dead code for preventing pread() and pwrite() calls 2007-07-10 22:03:26 +10:00
cd1865.h
ChangeLog
consolemap.c unicode diacritics support 2007-10-17 08:42:52 -07:00
cp437.uni
cs5535_gpio.c gpio_cs5535: disable AUX on output 2007-12-05 09:21:20 -08:00
cyclades.c Char: cyclades, fix potential NULL dereference 2007-10-23 08:32:06 -07:00
defkeymap.c_shipped unicode diacritics support 2007-10-17 08:42:52 -07:00
defkeymap.map
digi1.h
digiFep1.h
digiPCI.h
ds1286.c
ds1302.c
ds1620.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
dsp56k.c long vs. unsigned long - low-hanging fruits in drivers 2007-10-14 12:41:51 -07:00
dtlk.c dtlk: fix error checks in module_init() 2007-05-08 11:15:09 -07:00
efirtc.c
epca.c epca.c: reformat comments and coding style improvements 2007-10-17 08:42:50 -07:00
epca.h
epcaconfig.h
esp.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
generic_nvram.c
generic_serial.c genericserial: remove bogus optimisation check and dead code paths 2007-07-16 09:05:51 -07:00
genrtc.c Char: genrtc, use wait_event_interruptible 2007-07-16 09:05:44 -07:00
hangcheck-timer.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
hpet.c Silent drivers/char/hpet.c build warnings on i386 2007-09-26 09:22:04 -07:00
hvc_beat.c [POWERPC] Init markings for hvc_beat 2007-08-17 11:01:50 +10:00
hvc_console.c Delay creation of khcvd thread 2007-10-17 08:43:00 -07:00
hvc_console.h
hvc_iseries.c [POWERPC] init and exit markings for hvc_iseries 2007-07-22 21:30:59 +10:00
hvc_rtas.c [POWERPC] Quiet section mismatch in hvc_rtas.c 2007-07-22 21:30:59 +10:00
hvc_vio.c [POWERPC] Rename device_is_compatible to of_device_is_compatible 2007-05-07 20:31:14 +10:00
hvc_xen.c xen: use the hvc console infrastructure for Xen console 2007-07-18 08:47:44 -07:00
hvcs.c [POWERPC] hvcs: Make some things static and const 2007-07-22 21:30:59 +10:00
hvsi.c
i8k.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
ip27-rtc.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
isicom.c Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
istallion.c Convert from class_device to device in drivers/char 2007-10-12 14:51:04 -07:00
Kconfig tipar: remove obsolete module 2007-12-17 10:33:18 -08:00
keyboard.c get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
lcd.c [MIPS] Delete duplicate inclusion of <linux/delay.h>. 2007-08-27 02:16:59 +01:00
lcd.h
lp.c lp_console: cleanups 2007-10-17 08:43:01 -07:00
Makefile Remove old lguest bus and drivers. 2007-10-23 15:49:55 +10:00
mbcs.c Clean up duplicate includes in drivers/char/ 2007-10-17 08:42:48 -07:00
mbcs.h mbcs: Remove lots of global symbols 2007-07-19 10:04:43 -07:00
mem.c x86 merge fallout: uml 2007-10-29 07:41:32 -07:00
misc.c Make /proc/misc use seq_list_xxx helpers 2007-07-16 09:05:42 -07:00
mmtimer.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
moxa.c Char: moxa, remove sleep_on 2007-10-18 14:37:27 -07:00
mspec.c Memoryless nodes: Uncached allocator updates 2007-10-16 09:42:58 -07:00
mxser.c remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
mxser.h mxser: Remove use of dead TTY_FLIPBUF_SIZE definition 2007-10-17 08:42:52 -07:00
mxser_new.c remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
mxser_new.h
n_hdlc.c n_hdlc.c: fix check-after-use 2007-10-17 08:42:55 -07:00
n_r3964.c Char: n_r3964, use wait_event_interruptible 2007-07-16 09:05:44 -07:00
n_tty.c Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
nsc_gpio.c
nvram.c COBALT: remove all references to Cobalt NVRAM 2007-07-16 09:05:47 -07:00
nwbutton.c
nwbutton.h
nwflash.c
pc8736x_gpio.c
ppdev.c [PARPORT] Remove unused 'irq' argument from parport irq functions 2007-10-23 19:53:16 -04:00
ps3flash.c ps3: FLASH ROM Storage Driver 2007-07-21 17:49:16 -07:00
pty.c sysctl: simplify the pty sysctl logic 2007-10-18 14:37:23 -07:00
random.c [NET] random : secure_tcp_sequence_number should not assume CONFIG_KTIME_SCALAR 2007-11-13 21:12:14 -08:00
raw.c cdev: remove unneeded setting of cdev names 2007-10-12 14:51:02 -07:00
riscom8.c drivers/char/riscom8: clean up irq handling 2007-10-23 19:53:17 -04:00
riscom8.h long vs. unsigned long - low-hanging fruits in drivers 2007-10-14 12:41:51 -07:00
riscom8_reg.h
rocket.c Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
rocket.h
rocket_int.h Char: rocket, switch sleep_on to completion 2007-10-18 14:37:27 -07:00
rtc.c rtc: fall back to requesting only the ports we actually use 2007-11-14 18:45:41 -08:00
scc.h
scx200_gpio.c
selection.c Kernel utf-8 handling 2007-07-16 09:05:46 -07:00
ser_a2232.c
ser_a2232.h
ser_a2232fw.ax
ser_a2232fw.h
serial167.c m68k: remove empty ->setup is several consoles 2007-07-20 08:24:49 -07:00
snsc.c Convert from class_device to device in drivers/char 2007-10-12 14:51:04 -07:00
snsc.h
snsc_event.c [IA64] drivers/char/snsc_event.c:206: warning: unused variable `p' 2007-05-10 13:23:05 -07:00
sonypi.c Sonypi: use synchronize_irq instead of sycnronize_sched 2007-11-21 14:16:38 -05:00
specialix.c Char: specialix, remove busy waiting 2007-07-17 10:23:10 -07:00
specialix_io8.h
stallion.c Convert from class_device to device in drivers/char 2007-10-12 14:51:04 -07:00
sx.c Use helpers to obtain task pid in printks 2007-10-19 11:53:43 -07:00
sx.h long vs. unsigned long - low-hanging fruits in drivers 2007-10-14 12:41:51 -07:00
sxboards.h
sxwindow.h
synclink.c Clean up duplicate includes in drivers/char/ 2007-10-17 08:42:48 -07:00
synclink_gt.c synclink_gt endianness annotations 2007-10-14 12:41:51 -07:00
synclinkmp.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
sysrq.c pid namespaces: define is_global_init() and is_container_init() 2007-10-19 11:53:37 -07:00
tb0219.c
tlclk.c
toshiba.c
tty_audit.c Audit: add TTY input auditing 2007-07-16 09:05:47 -07:00
tty_io.c Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
tty_ioctl.c tty: fix logic change introduced by wait_event_interruptible_timeout() 2007-12-23 12:54:37 -08:00
vc_screen.c use mutex instead of semaphore in virtual console driver 2007-05-08 11:15:33 -07:00
viocons.c
viotape.c Convert from class_device to device in drivers/char 2007-10-12 14:51:04 -07:00
virtio_console.c virtio/virtcons: fix section mismatch warning 2007-11-05 15:12:32 -08:00
vme_scc.c m68k: remove empty ->setup is several consoles 2007-07-20 08:24:49 -07:00
vr41xx_giu.c [MIPS] Separate platform_device registration for VR41xx GPIO 2007-07-12 17:41:15 +01:00
vt.c Console events and accessibility 2007-10-19 11:53:34 -07:00
vt_ioctl.c add CONFIG_VT_UNICODE 2007-10-17 08:42:56 -07:00