On 10.05.2017 16:32, Paolo Bonzini wrote: > The curl driver has a ugly hack where, if it cannot find an empty CURLState, > it just uses aio_poll to wait for one to be empty. This is probably > buggy when used together with dataplane, and the simplest way to fix it > is to use coroutines instead. > > A more immediate effect of the bug however is that it can cause a > recursive call to curl_readv_bh_cb and recursively taking the > BDRVCURLState mutex. This causes a deadlock. > > The fix is to unlock the mutex around aio_poll, but for cleanliness we > should also take the mutex around all calls to curl_init_state, even if > reaching the unlock/lock pair is impossible. The same is true for > curl_clean_state. > > Reported-by: Richard W.M. Jones <rjo...@redhat.com> > Cc: jc...@redhat.com > Cc: qemu-sta...@nongnu.org > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > block/curl.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-)
Reviewed-by: Max Reitz <mre...@redhat.com>
signature.asc
Description: OpenPGP digital signature