]> Zhao Yanbai Git Server - minix.git/commit
TTY: don't allow multiple readers on tty minor
authorThomas Veerman <thomas@minix3.org>
Wed, 4 Apr 2012 13:46:34 +0000 (13:46 +0000)
committerThomas Veerman <thomas@minix3.org>
Fri, 13 Apr 2012 13:22:13 +0000 (13:22 +0000)
commitca7a466f48db3d64aed7b5c082e7f3634bbd526a
tree6d669575cae86d8522aea7b09420db64a44368ff
parent933120b0b14cf755e3ea8e1695fc4726b57ba70d
TTY: don't allow multiple readers on tty minor

TTY has no way of keeping track of multiple readers for a tty minor
device. Instead, it stores a read request for the last reader only.
Consequently, the first ("overwritten") reader gets stuck on a read
request that's never going to be finished. Also, the overwriting
causes a grant mismatch in VFS when TTY returns a reply for the
second reader.

This patch is a work around for the actual problem (i.e., keeping track
of multiple readers). It checks whether there is a read operation in
progress and returns an error if it is --preventing that reader from
getting overwritten and stuck. It fixes a bug triggered by executing
'top | more' and pressing the space bar for a while (easily reproducable
in a VM, not on hardware).
drivers/tty/keyboard.c
drivers/tty/pty.c
drivers/tty/tty.c