• H. Peter Anvin (Intel)'s avatar
    arch/alpha, termios: implement BOTHER, IBSHIFT and termios2 · d2db9e2e
    H. Peter Anvin (Intel) authored
    commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
    
    Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
    using arbitrary flags. Because BOTHER is not defined, the general
    Linux code doesn't allow setting arbitrary baud rates, and because
    CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
    drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
    
    Resolve both problems by #defining BOTHER to 037 on Alpha.
    
    However, userspace still needs to know if setting BOTHER is actually
    safe given legacy kernels (does anyone actually care about that on
    Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
    though they use the same structure. Define struct termios2 just for
    compatibility; it is the exact same structure as struct termios. In a
    future patchset, this will be cleaned up so the uapi headers are
    usable from libc.
    Signed-off-by: default avatarH. Peter Anvin (Intel) <hpa@zytor.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Philippe Ombredanne <pombredanne@nexb.com>
    Cc: Eugene Syromiatnikov <esyr@redhat.com>
    Cc: <linux-alpha@vger.kernel.org>
    Cc: <linux-serial@vger.kernel.org>
    Cc: Johan Hovold <johan@kernel.org>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d2db9e2e
termbits.h 5.08 KB