async: Fix running list handling.
async_schedule() should pass in async_running as the running list, and run_one_entry() should put the entry to be run on the provided running list instead of always on the generic one. Reported-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
This commit is contained in:
parent
e83102cab0
commit
7a89bbc749
|
@ -133,7 +133,7 @@ static void run_one_entry(void)
|
||||||
|
|
||||||
/* 2) move it to the running queue */
|
/* 2) move it to the running queue */
|
||||||
list_del(&entry->list);
|
list_del(&entry->list);
|
||||||
list_add_tail(&entry->list, &async_running);
|
list_add_tail(&entry->list, entry->running);
|
||||||
spin_unlock_irqrestore(&async_lock, flags);
|
spin_unlock_irqrestore(&async_lock, flags);
|
||||||
|
|
||||||
/* 3) run it (and print duration)*/
|
/* 3) run it (and print duration)*/
|
||||||
|
@ -210,7 +210,7 @@ static async_cookie_t __async_schedule(async_func_ptr *ptr, void *data, struct l
|
||||||
|
|
||||||
async_cookie_t async_schedule(async_func_ptr *ptr, void *data)
|
async_cookie_t async_schedule(async_func_ptr *ptr, void *data)
|
||||||
{
|
{
|
||||||
return __async_schedule(ptr, data, &async_pending);
|
return __async_schedule(ptr, data, &async_running);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(async_schedule);
|
EXPORT_SYMBOL_GPL(async_schedule);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue