Messages in this thread Patch in this message | | | From | Chunyan Zhang <> | Subject | [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event | Date | Mon, 5 Jan 2015 11:35:35 +0800 |
| |
From: Yonghui Yang <mark.yang@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.qiao@spreadtrum.com> Signed-off-by: Yonghui Yang <mark.yang@spreadtrum.com> Signed-off-by: Geng Ren <geng.ren@spreadtrum.com> Signed-off-by: Chunyan Zhang <chunyan.zhang@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
| |