Peter Zijlstra and I were doing a look over of places that assign current->state = TASK_*INTERRUPTIBLE, by simply looking at places with: $ git grep -A1 'state[[:space:]]*=[[:space:]]*TASK_[^R]' and it seems there are quite a few places that looks like bugs. To be on the safe side, everything outside of a run queue lock that sets the current state to something other than TASK_RUNNING (or dead) should be using set_current_state(). current->state = TASK_INTERRUPTIBLE; schedule(); is probably OK, but it would not hurt to be consistent. Here's a few examples of likely bugs: >From drivers/staging/line6/midi.c: current->state = TASK_INTERRUPTIBLE; while (line6->line6midi->num_active_send_urbs > 0) >From drivers/staging/line6/pod.c: current->state = TASK_INTERRUPTIBLE; while (param->value == POD_system_invalid) { Also drivers/macintosh/adb.c looks like there's a bug too. I'm sure there's others but I stopped looking. Anyway, this looks like a good janitorial work. Anything that assigns state outside the rq locks to something other than TASK_RUNNING and that is not before a schedule() (perhaps even those) should be converted to: set_current_task(<state>). This probably should be checked in checkpatch.pl too, if it is not already. -- Steve -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html