Linus Torvalds
55db4c64ed
Revert "tty: make receive_buf() return the amout of bytes received"
...
This reverts commit b1c43f82c5 .
It was broken in so many ways, and results in random odd pty issues.
It re-introduced the buggy schedule_work() in flush_to_ldisc() that can
cause endless work-loops (see commit a5660b41af : "tty: fix endless
work loop when the buffer fills up").
It also used an "unsigned int" return value fo the ->receive_buf()
function, but then made multiple functions return a negative error code,
and didn't actually check for the error in the caller.
And it didn't actually work at all. BenH bisected down odd tty behavior
to it:
"It looks like the patch is causing some major malfunctions of the X
server for me, possibly related to PTYs. For example, cat'ing a
large file in a gnome terminal hangs the kernel for -minutes- in a
loop of what looks like flush_to_ldisc/workqueue code, (some ftrace
data in the quoted bits further down).
...
Some more data: It -looks- like what happens is that the
flush_to_ldisc work queue entry constantly re-queues itself (because
the PTY is full ?) and the workqueue thread will basically loop
forver calling it without ever scheduling, thus starving the consumer
process that could have emptied the PTY."
which is pretty much exactly the problem we fixed in a5660b41af .
Milton Miller pointed out the 'unsigned int' issue.
Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Reported-by: Milton Miller <miltonm@bga.com>
Cc: Stefan Bigler <stefan.bigler@keymile.com>
Cc: Toby Gray <toby.gray@realvnc.com>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-06-04 06:33:24 +09:00
..
accessibility
acpi
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2011-05-29 11:19:16 -07:00
amba
ARM: 6829/1: amba: make hardcoded periphid override hardware
2011-05-26 10:33:34 +01:00
ata
Merge branch 'for-2.6.40/core' of git://git.kernel.dk/linux-2.6-block
2011-05-25 09:14:07 -07:00
atm
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
2011-05-20 13:43:21 -07:00
auxdisplay
base
mm: per-node vmstat: show proper vmstats
2011-05-25 08:39:07 -07:00
bcma
drivers/bcma/host_pci.c needs slab.h
2011-05-26 17:12:32 -07:00
block
block: fix mismerge of the DISK_EVENT_MEDIA_CHANGE removal
2011-06-02 05:29:19 +09:00
bluetooth
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
cdrom
block: fix mismerge of the DISK_EVENT_MEDIA_CHANGE removal
2011-06-02 05:29:19 +09:00
char
virtio console: don't manually set or finalize VIRTIO_CONSOLE_F_MULTIPORT.
2011-05-30 11:14:13 +09:30
clk
clocksource
Merge branch 'sh-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
2011-05-23 21:24:07 -07:00
connector
cpufreq
cpufreq: make DB8500 cpufreq driver compile
2011-05-24 22:20:14 +02:00
cpuidle
Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6
2011-05-29 11:18:09 -07:00
crypto
[S390] ap: skip device registration on type probe failure
2011-05-23 10:24:29 +02:00
dca
dio
dma
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
2011-05-28 12:35:15 -07:00
edac
edac,rcu: use synchronize_rcu() instead of call_rcu()+rcu_barrier()
2011-05-26 17:12:37 -07:00
eisa
firewire
firmware
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-05-23 09:12:26 -07:00
gpio
arm gpio drivers: make them 'depends on ARM'
2011-05-29 14:06:42 -07:00
gpu
vmscan: change shrinker API by passing shrink_control struct
2011-05-25 08:39:26 -07:00
hid
Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
2011-05-23 12:33:02 -07:00
hwmon
hwmon: (coretemp) Fix section mismatch
2011-05-27 02:24:54 -07:00
hwspinlock
i2c
mfd: Use mfd cell platform_data for timberdale cells platform bits
2011-05-26 19:45:05 +02:00
ide
block: fix mismerge of the DISK_EVENT_MEDIA_CHANGE removal
2011-06-02 05:29:19 +09:00
idle
ieee802154
infiniband
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
2011-05-26 12:13:57 -07:00
input
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
isdn
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
leds
leds: Add ASIC3 LED support
2011-05-26 19:45:46 +02:00
lguest
macintosh
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-05-23 09:12:26 -07:00
mca
md
dm kcopyd: return client directly and not through a pointer
2011-05-29 13:03:13 +01:00
media
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
2011-05-27 10:14:22 -07:00
memstick
message
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-05-23 09:12:26 -07:00
mfd
mfd: Fix build breakage caused by tps65910 gpio directory move
2011-05-28 08:38:55 +02:00
misc
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
mmc
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
2011-05-27 19:51:32 -07:00
mtd
Merge git://git.infradead.org/mtd-2.6
2011-05-27 20:06:53 -07:00
net
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
nfc
nubus
of
Merge branch 'devicetree/arm-next' of git://git.secretlab.ca/git/linux-2.6 into devel-stable
2011-05-25 00:08:17 +01:00
oprofile
oprofile: Use linux/mutex.h
2011-05-24 12:45:59 +02:00
parisc
parport
Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6
2011-05-26 13:19:00 -07:00
pci
Merge git://git.infradead.org/iommu-2.6
2011-06-02 05:48:50 +09:00
pcmcia
platform
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86
2011-05-29 11:44:33 -07:00
pnp
power
Merge git://git.infradead.org/battery-2.6
2011-05-27 10:12:35 -07:00
pps
ps3
ptp
ptp: Added a clock driver for the National Semiconductor PHYTER.
2011-05-23 13:10:23 -07:00
rapidio
regulator
regulator: Fix _regulator_get_voltage if get_voltage callback is NULL
2011-05-27 10:49:30 +01:00
rtc
drivers/rtc/rtc-mxc.c: remove defines already included in rtc.h
2011-05-26 17:12:33 -07:00
s390
[S390] irq: merge irq.c and s390_ext.c
2011-05-26 09:48:24 +02:00
sbus
scsi
scsi: fix scsi_proc new kernel-doc warning
2011-05-28 23:12:11 -07:00
sfi
sh
Merge branch 'sh/genirq-threading' into sh-latest
2011-05-23 11:36:14 +09:00
sn
spi
spi/spi_bfin_sport: new driver for a SPI bus via the Blackfin SPORT peripheral
2011-05-27 01:23:54 -06:00
ssb
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
2011-05-20 13:43:21 -07:00
staging
Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6
2011-05-26 13:19:00 -07:00
target
[SCSI] target: Convert TASK_ATTR to scsi_tcq.h definitions
2011-05-24 13:03:56 -04:00
tc
telephony
thermal
tty
Revert "tty: make receive_buf() return the amout of bytes received"
2011-06-04 06:33:24 +09:00
uio
usb
Merge branch 'for-usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci
2011-05-28 12:36:15 -07:00
uwb
vhost
vhost: support event index
2011-05-30 11:14:15 +09:30
video
drivers/video/mb862xx/mb862xxfbdrv.c needs uaccess.h
2011-05-26 17:12:32 -07:00
virtio
virtio: add api for delayed callbacks
2011-05-30 11:14:16 +09:30
vlynq
w1
w1: add Maxim/Dallas DS2780 Stand-Alone Fuel Gauge IC support
2011-05-26 17:12:38 -07:00
watchdog
mfd: Use mfd cell platform_data for rdc321x cells platform bits
2011-05-26 19:45:06 +02:00
xen
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem
2011-05-26 10:50:56 -07:00
zorro
Kconfig
ptp: Added a brand new class driver for ptp clocks.
2011-05-23 13:01:00 -07:00
Makefile
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
2011-05-28 12:35:15 -07:00