tty: Convert tty_struct bitfield to ints
authorPeter Hurley <peter@hurleysoftware.com>
Wed, 10 Sep 2014 19:06:30 +0000 (15:06 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 24 Sep 2014 04:19:35 +0000 (21:19 -0700)
commitd7a855bd6ab25d10d5e3b6aeb53d9c57fa17b808
treeb66d63feabc17c8b53fe7c105ea7d9c2d618beb1
parent938f7e13b55a76ad98964509f6d13bbcf852e617
tty: Convert tty_struct bitfield to ints

The stopped, hw_stopped, flow_stopped and packet bits are smp-unsafe
and interrupt-unsafe. For example,

CPU 0                         | CPU 1
                              |
tty->flow_stopped = 1         | tty->hw_stopped = 0

One of these updates will be corrupted, as the bitwise operation
on the bitfield is non-atomic.

Ensure each flag has a separate memory location, so concurrent
updates do not corrupt orthogonal states. Because DEC Alpha EV4 and EV5
cpus (from 1995) perform RMW on smaller-than-machine-word storage,
"separate memory location" must be int instead of byte.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/tty.h