diff options
| author | Ingo Molnar <mingo@kernel.org> | 2018-02-17 11:39:28 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2018-02-17 11:39:28 +0100 |
| commit | 7057bb975dab827997e0ca9dd92cafef0856b0cc (patch) | |
| tree | 7784dc59c03f25b6bc4fa5cc12d5b61cb8b53765 /kernel/async.c | |
| parent | perf/core: Implement the 'perf_uprobe' PMU (diff) | |
| parent | kprobes: Propagate error from disarm_kprobe_ftrace() (diff) | |
| download | linux-7057bb975dab827997e0ca9dd92cafef0856b0cc.tar.gz linux-7057bb975dab827997e0ca9dd92cafef0856b0cc.zip | |
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/async.c')
| -rw-r--r-- | kernel/async.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/async.c b/kernel/async.c index 2cbd3dd5940d..a893d6170944 100644 --- a/kernel/async.c +++ b/kernel/async.c @@ -84,20 +84,24 @@ static atomic_t entry_count; static async_cookie_t lowest_in_progress(struct async_domain *domain) { - struct list_head *pending; + struct async_entry *first = NULL; async_cookie_t ret = ASYNC_COOKIE_MAX; unsigned long flags; spin_lock_irqsave(&async_lock, flags); - if (domain) - pending = &domain->pending; - else - pending = &async_global_pending; + if (domain) { + if (!list_empty(&domain->pending)) + first = list_first_entry(&domain->pending, + struct async_entry, domain_list); + } else { + if (!list_empty(&async_global_pending)) + first = list_first_entry(&async_global_pending, + struct async_entry, global_list); + } - if (!list_empty(pending)) - ret = list_first_entry(pending, struct async_entry, - domain_list)->cookie; + if (first) + ret = first->cookie; spin_unlock_irqrestore(&async_lock, flags); return ret; |
