aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/async.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/async.c')
-rw-r--r--kernel/async.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/async.c b/kernel/async.c
index 968ef9457d4e..50540301ed0f 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -92,19 +92,23 @@ extern int initcall_debug;
92static async_cookie_t __lowest_in_progress(struct list_head *running) 92static async_cookie_t __lowest_in_progress(struct list_head *running)
93{ 93{
94 struct async_entry *entry; 94 struct async_entry *entry;
95 async_cookie_t ret = next_cookie; /* begin with "infinity" value */
96
95 if (!list_empty(running)) { 97 if (!list_empty(running)) {
96 entry = list_first_entry(running, 98 entry = list_first_entry(running,
97 struct async_entry, list); 99 struct async_entry, list);
98 return entry->cookie; 100 ret = entry->cookie;
99 } else if (!list_empty(&async_pending)) {
100 entry = list_first_entry(&async_pending,
101 struct async_entry, list);
102 return entry->cookie;
103 } else {
104 /* nothing in progress... next_cookie is "infinity" */
105 return next_cookie;
106 } 101 }
107 102
103 if (!list_empty(&async_pending)) {
104 list_for_each_entry(entry, &async_pending, list)
105 if (entry->running == running) {
106 ret = entry->cookie;
107 break;
108 }
109 }
110
111 return ret;
108} 112}
109 113
110static async_cookie_t lowest_in_progress(struct list_head *running) 114static async_cookie_t lowest_in_progress(struct list_head *running)