Browse Source

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>
Fabian Frederick 10 years ago
parent
commit
97f9f707d2
1 changed files with 1 additions and 2 deletions
  1. 1 2
      drivers/tty/serial/serial_core.c

+ 1 - 2
drivers/tty/serial/serial_core.c

@@ -1118,8 +1118,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg)
 
 
 		cprev = cnow;
 		cprev = cnow;
 	}
 	}
-
-	current->state = TASK_RUNNING;
+	__set_current_state(TASK_RUNNING);
 	remove_wait_queue(&port->delta_msr_wait, &wait);
 	remove_wait_queue(&port->delta_msr_wait, &wait);
 
 
 	return ret;
 	return ret;