--- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -440,7 +440,9 @@ static bool vhost_run_work_list(void *da struct vhost_worker *worker = data; struct vhost_work *work, *work_next; struct llist_node *node; + bool did = false; +again: node = llist_del_all(&worker->work_list); if (node) { __set_current_state(TASK_RUNNING); @@ -455,9 +457,11 @@ static bool vhost_run_work_list(void *da kcov_remote_stop(); cond_resched(); } + did = true; + goto again; } - return !!node; + return did; } static void vhost_worker_killed(void *data)