From: Vitaly Wool Currently on SD/MMC card removal the system exhibits the following message (the platform is ARM Versatile): prev->state: 2 != TASK_RUNNING?? mmcqd/762[CPU#0]: BUG in __schedule at linux-2.6/kernel/sched.c:3826 (akpm: someone tried to fix this, but it's still wrong) Signed-off-by: Vitaly Wool Cc: Pierre Ossman Signed-off-by: Andrew Morton --- drivers/mmc/mmc_queue.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/mmc/mmc_queue.c~mmc-fix-prev-state-2-=-task_running-problem-on-sd-mmc-card-removal drivers/mmc/mmc_queue.c --- a/drivers/mmc/mmc_queue.c~mmc-fix-prev-state-2-=-task_running-problem-on-sd-mmc-card-removal +++ a/drivers/mmc/mmc_queue.c @@ -78,8 +78,10 @@ static int mmc_queue_thread(void *d) spin_unlock_irq(q->queue_lock); if (!req) { - if (kthread_should_stop()) + if (kthread_should_stop()) { + set_current_state(TASK_RUNNING); break; + } up(&mq->thread_sem); schedule(); down(&mq->thread_sem); _