Commit adf25359 authored by Charles Jacobsen's avatar Charles Jacobsen Committed by Vikram Narayanan

pmfs: mount: Fix deadlock in unregister fs.

unregister fs does a synchronize_rcu, which basically waits
for all cpu's to enter a "quiescent" state. The PMFS LCD thread
was never yielding as it waited for the response, so we had a
deadlock. I just needed to move cond_resched into the right place
in microkernel/run.c.
parent 063112e6
......@@ -429,14 +429,6 @@ static int run_once(struct lcd *lcd, int *lcd_ret)
goto out;
}
/*
* Sleep if we don't have full preemption turned on, and someone
* else should have a turn.
*/
#ifndef CONFIG_PREEMPT
cond_resched();
#endif
out:
return ret;
}
......@@ -497,6 +489,13 @@ static int main_for_lcd(struct lcd *lcd)
return lcd_ret;
} else {
/* ret = 0; continue */
#ifndef CONFIG_PREEMPT
/*
* Sleep if we don't have full preemption turned on,
* and someone else should have a turn.
*/
cond_resched();
#endif
continue;
}
}
......
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