irda: replace current->state by set_current_state()
Use helper functions to access current->state. Direct assignments are prone to races and therefore buggy. current->state = TASK_RUNNING can be replaced by __set_current_state() 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: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								30ff547659
							
						
					
				
			
			
				commit
				
					
						a948f8ce77
					
				
			
		
					 2 changed files with 3 additions and 3 deletions
				
			
		|  | @ -811,7 +811,7 @@ static void ircomm_tty_wait_until_sent(struct tty_struct *tty, int timeout) | |||
| 			break; | ||||
| 	} | ||||
| 	spin_unlock_irqrestore(&self->spinlock, flags); | ||||
| 	current->state = TASK_RUNNING; | ||||
| 	__set_current_state(TASK_RUNNING); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
|  | @ -305,7 +305,7 @@ irnet_ctrl_read(irnet_socket *	ap, | |||
| 
 | ||||
|   /* Put ourselves on the wait queue to be woken up */ | ||||
|   add_wait_queue(&irnet_events.rwait, &wait); | ||||
|   current->state = TASK_INTERRUPTIBLE; | ||||
|   set_current_state(TASK_INTERRUPTIBLE); | ||||
|   for(;;) | ||||
|     { | ||||
|       /* If there is unread events */ | ||||
|  | @ -321,7 +321,7 @@ irnet_ctrl_read(irnet_socket *	ap, | |||
|       /* Yield and wait to be woken up */ | ||||
|       schedule(); | ||||
|     } | ||||
|   current->state = TASK_RUNNING; | ||||
|   __set_current_state(TASK_RUNNING); | ||||
|   remove_wait_queue(&irnet_events.rwait, &wait); | ||||
| 
 | ||||
|   /* Did we got it ? */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fabian Frederick
				Fabian Frederick