From: Vitaly Wool Date: Thu, 7 Dec 2006 19:08:02 +0000 (+0100) Subject: mmc: fix "prev->state: 2 != TASK_RUNNING??" problem on SD/MMC card removal X-Git-Tag: v2.6.20-rc1~146^2~24^2~2 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b30d281b9c115890c75d11eaf06881261c256da;p=linux-2.6 mmc: fix "prev->state: 2 != TASK_RUNNING??" problem on SD/MMC card removal 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 Signed-off-by: Andrew Morton Signed-off-by: Pierre Ossman --- diff --git a/drivers/mmc/mmc_queue.c b/drivers/mmc/mmc_queue.c index a17423a4ed..3e35a43819 100644 --- a/drivers/mmc/mmc_queue.c +++ b/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);