Commit 12aebf3e authored by Maxim Levitsky's avatar Maxim Levitsky Committed by David Woodhouse

mtd: blktrans: fix a race vs kthread_stop

There is small race window that could make kthread_stop hang forever.
I found that while hacking the IR subsystem.
Signed-off-by: default avatarMaxim Levitsky <maximlevisky@gmail.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 480792b7
...@@ -133,6 +133,10 @@ static int mtd_blktrans_thread(void *arg) ...@@ -133,6 +133,10 @@ static int mtd_blktrans_thread(void *arg)
if (!req && !(req = blk_fetch_request(rq))) { if (!req && !(req = blk_fetch_request(rq))) {
set_current_state(TASK_INTERRUPTIBLE); set_current_state(TASK_INTERRUPTIBLE);
if (kthread_should_stop())
set_current_state(TASK_RUNNING);
spin_unlock_irq(rq->queue_lock); spin_unlock_irq(rq->queue_lock);
schedule(); schedule();
spin_lock_irq(rq->queue_lock); spin_lock_irq(rq->queue_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment