This series needs a new pair of eyes for review.  I'm probably missing
things here after seeing it many times.

posix-aio-compat.c:handle_work() doesn't need to take aiocb_mutex for
container_of(), which just calculates an address but doesn't actually
access the aiocb.

dequeue_work_on_queue() is incorrect because a threadlet_worker() may
remove the work item from the request_list just before we remove it
again.  That double-remove is wrong and by not detecting this case we
return success even though the work function may be running
concurrently (and it's not safe to do anything with the work item at
this time!).  Dequeue needs to lock the request_list, test if the item
is still
on the list, remove it if necessary, and return whether or not it was removed.

Stefan

Reply via email to