Skip to content
  • Oleg Nesterov's avatar
    [PATCH] fix TASK_STOPPED vs TASK_NONINTERACTIVE interaction · aa55a086
    Oleg Nesterov authored
    
    
    do_signal_stop:
    
    	for_each_thread(t) {
    		if (t->state < TASK_STOPPED)
    			++sig->group_stop_count;
    	}
    
    However, TASK_NONINTERACTIVE > TASK_STOPPED, so this loop will not
    count TASK_INTERRUPTIBLE | TASK_NONINTERACTIVE threads.
    
    See also wait_task_stopped(), which checks ->state > TASK_STOPPED.
    
    Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
    
    [ We really probably should always use the appropriate bitmasks to test
      task states, not do it like this. Using something like
    
    	#define TASK_RUNNABLE (TASK_RUNNING | TASK_INTERRUPTIBLE | \
    				TASK_UNINTERRUPTIBLE | TASK_NONINTERACTIVE)
    
      and then doing "if (task->state & TASK_RUNNABLE)" or similar. But the
      ordering of the task states is historical, and keeping the ordering
      does make sense regardless. ]
    
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    aa55a086