From: Shinya Kuribayashi Date: Fri, 16 Nov 2012 01:54:49 +0000 (+0900) Subject: serial: sh-sci: fix possible race cases on SCSCR register accesses X-Git-Tag: omap-for-v3.8/fixes-for-merge-window-v4-signed~83^2~45 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33b48e1633f738c5ae78234c2dd5e3a9ba115437;p=pandora-kernel.git serial: sh-sci: fix possible race cases on SCSCR register accesses In the previous commit, console write function (serial_console_write) is changed to disable SCI interrupts while printing console strings. This introduces possible race cases in the serial startup / shutdown functions on SMP systems. This patch fixes the sh-sci in the same way as commit 9ec1882df2 (tty: serial: imx: console write routing is unsafe on SMP, from Xinyu Chen , 2012-08-27) did. There could be several consumers of the console, * the kernel printk * the init process using /dev/kmsg to call printk to show log * shell, which opens /dev/console and writes with sys_write() The shell goes into the normal UART open() and write() system calls, while the other two go into the console operations. The open() call invokes serial startup function (sci_startup), which will write to the SCSCR register (to enable or disable SCI interrupts) without any locking. This will conflict with the console serial function. Add spinlock protections in sci_startup() and sci_shutdown() properly. Signed-off-by: Shinya Kuribayashi Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed