summaryrefslogtreecommitdiff
path: root/drivers/tty/serial/serial_core.c
diff options
context:
space:
mode:
authorFabian Frederick <fabf@skynet.be>2015-02-20 19:12:57 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-03-07 03:08:42 +0100
commit97f9f707d26dfe34368a5b88f1996f2eaf973b42 (patch)
tree366b6e1778ad0489755a74289e1622f6145f9dff /drivers/tty/serial/serial_core.c
parent5dcb34bbc3f3274b37a71a71f1b60ac96782a5ed (diff)
serial: core: replace current->state by __set_current_state()
Use helper functions to access current->state. Direct assignments are prone to races and therefore buggy. Thanks to Peter Zijlstra for the exact definition of the problem. Suggested-By: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/serial_core.c')
-rw-r--r--drivers/tty/serial/serial_core.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 6a1055ae3437..63d29473c703 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -1118,8 +1118,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg)
cprev = cnow;
}
-
- current->state = TASK_RUNNING;
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(&port->delta_msr_wait, &wait);
return ret;