summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorJason Wang <jason77.wang@gmail.com>2010-08-21 07:14:42 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-22 17:20:02 (GMT)
commit891b9dd10764352926e1e107756aa229dfa2c210 (patch)
tree62b3ce0f32123fdd8de05044da2d06194ef90fdc /drivers/char
parentca2e71aa8cfb0056ce720f3fd53f59f5fac4a3e1 (diff)
downloadlinux-891b9dd10764352926e1e107756aa229dfa2c210.tar.xz
serial-core: restore termios settings when resume console ports
The commit 4547be7 rewrites suspend and resume functions. According to this rewrite, when a serial port is a printk console device and can suspend(without set no_console_suspend flag), it will definitely call set_termios function during its resume, but parameter termios isn't initialized, this will pass an unpredictable config to the serial port. If this serial port is not a userspace opened tty device , a suspend and resume action will make this serial port unusable. I.E. ttyS0 is a printk console device, ttyS1 or keyboard+display is userspace tty device, a suspend/resume action will make ttyS0 unusable. If a serial port is both a printk console device and an opened tty device, this issue can be overcome because it will call set_termios again with the correct parameter in the uart_change_speed function. Refer to the deleted content of commit 4547be7, revert parts relate to restore settings into parameter termios. It is safe because if a serial port is a printk console only device, the only meaningful field in termios is c_cflag and its old config is saved in uport->cons->cflag, if this port is also an opened tty device, it will clear uport->cons->cflag in the uart_open and the old config is saved in tty->termios. Signed-off-by: Jason Wang <jason77.wang@gmail.com> Acked-by: Stanislav Brabec <sbrabec@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/char')
0 files changed, 0 insertions, 0 deletions