mmc: fix "prev->state: 2 != TASK_RUNNING??" problem on SD/MMC card removal
authorVitaly Wool <vitalywool@gmail.com>
Thu, 7 Dec 2006 19:08:02 +0000 (20:08 +0100)
committerPierre Ossman <drzeus@drzeus.cx>
Mon, 11 Dec 2006 08:48:16 +0000 (09:48 +0100)
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 <vitalywool@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/mmc_queue.c

index a17423a4ed8fb9cbcc4b41e3ea0fcd7a4a7cb744..3e35a43819fba1a75c00d7cdac55265cda17f9f8 100644 (file)
@@ -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);