From: Yonghui Yang <mark.y...@spreadtrum.com> This patch changes the waitting condition of wait_event in the function 'async_synchronize_cookie_domain'.
This function waits until all asynchronous function calls for the certain domain have been done. But, the function 'lowest_in_progress' returns the lowest *pending* entry's cookie. So we should make sure that the return value of lowest_in_progress(domain) must be larger than @cookie. Verified-by: Wei Qiao <wei.q...@spreadtrum.com> Signed-off-by: Yonghui Yang <mark.y...@spreadtrum.com> Signed-off-by: Geng Ren <geng....@spreadtrum.com> Signed-off-by: Chunyan Zhang <chunyan.zh...@spreadtrum.com> --- kernel/async.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/async.c b/kernel/async.c index 4c3773c..894ae80 100644 --- a/kernel/async.c +++ b/kernel/async.c @@ -267,7 +267,7 @@ EXPORT_SYMBOL_GPL(async_unregister_domain); */ void async_synchronize_full_domain(struct async_domain *domain) { - async_synchronize_cookie_domain(ASYNC_COOKIE_MAX, domain); + async_synchronize_cookie_domain(ASYNC_COOKIE_MAX-1, domain); } EXPORT_SYMBOL_GPL(async_synchronize_full_domain); @@ -289,7 +289,7 @@ void async_synchronize_cookie_domain(async_cookie_t cookie, struct async_domain starttime = ktime_get(); } - wait_event(async_done, lowest_in_progress(domain) >= cookie); + wait_event(async_done, lowest_in_progress(domain) > cookie); if (initcall_debug && system_state == SYSTEM_BOOTING) { endtime = ktime_get(); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/