From: Theodore Ts'o (tytso@athena.mit.edu)
Date: 02/28/93


From: Theodore Ts'o <tytso@athena.mit.edu>
Subject: New patches to the serial driver in 0.99pl6.....
Date: 28 Feb 1993 23:28:11 -0500

I've uploaded a new set of patches to the serial driver, this time versus
 Linux 0.99pl6, on tsx-11.mit.edu, in /pub/ftp/ALPHA/serial/serpatches.
It has the following features:

        * Closes a minor security hole on vhangup(), by preventing
                vhungup processes from using ioctl() on the hung up
                device. (The trick was that I had to allow ioctl()
                access to processes that had been hung up as a result
                of the hardware.)

        * Break, frame error, and parity error handling was moved to
                tty_io.c. This simplified the interrupt handler, and
                fixed a bug where ISTRIP and PARMRK interacted badly.

        * The INPCK is now honored; this allows for output parity
                generation while disabling input parity checking.
                This is *not* the same as IGNPAR, which causes
                characters with parity or frame errors to be
                discarded. If INPCK is disabled, parity errors are
                just ignored.

        * The interrupt routine has been restructured to recover from
                losing a serial interrupt (because of a slow CPU or
                because some other kernel routine had interrupts
                turned off for too long.)

        * Also added in the above restructring; support has been added
                to support serial cards with no IRQ vector. This is
                works at only very slow baud rates (2400 buad if you
                have a 16550A, 300 baud if you don't) and takes up a
                lot of CPU time, as it is continuously polling the
                serial device. Still, it may be useful for someone who
                has a fast machine, and wants to run a mouse off of a
                spare RS-232 line.

                This feature is not enabled automatically; you have to
                configure the port yourself using the setserial command.
                Just set the irq vector to zero, and set the uart to
                16550 or 16550A. For example:

                        setserial /dev/ttys7 irq 0 uart 1550a

        * The serial driver will now drop DTR for 0.5 seconds if the
                callout device is closed and there is a getty waiting
                on the dialin device.

If you have any bug reports or comments, send them to tytso@mit.edu.

Enjoy!

                                        Ted Ts'o, 2/28/92
                                        tytso@mit.edu