Commit 33b04b9308959af7febc1c111c766fa3fd8b1934
Committed by
Linus Torvalds
1 parent
85da1fb545
Exists in
master
and in
20 other branches
async: make async_synchronize_full() more serializing
turns out that there are real problems with allowing async tasks that are scheduled from async tasks to run after the async_synchronize_full() returns. This patch makes the _full more strict and a complete synchronization. Later I might need to add back a lighter form of synchronization for other uses.. but not right now. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 3 additions and 1 deletions Side-by-side Diff
kernel/async.c
... | ... | @@ -206,7 +206,9 @@ |
206 | 206 | |
207 | 207 | void async_synchronize_full(void) |
208 | 208 | { |
209 | - async_synchronize_cookie(next_cookie); | |
209 | + do { | |
210 | + async_synchronize_cookie(next_cookie); | |
211 | + } while (!list_empty(&async_running) || !list_empty(&async_pending)); | |
210 | 212 | } |
211 | 213 | EXPORT_SYMBOL_GPL(async_synchronize_full); |
212 | 214 |