aio: fix qemu_bh_schedule() bh->ctx race condition
commit924fe1293c3e7a3c787bbdfb351e7f168caee3e9
authorStefan Hajnoczi <stefanha@redhat.com>
Tue, 3 Jun 2014 09:21:01 +0000 (3 11:21 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Wed, 4 Jun 2014 07:56:06 +0000 (4 09:56 +0200)
tree07e385b640afa86d2a411a2195e3a34bb5b52b91
parente00fcfeab3d452cba3d0a08991a39ab15df66424
aio: fix qemu_bh_schedule() bh->ctx race condition

qemu_bh_schedule() is supposed to be thread-safe at least the first time
it is called.  Unfortunately this is not quite true:

  bh->scheduled = 1;
  aio_notify(bh->ctx);

Since another thread may run the BH callback once it has been scheduled,
there is a race condition if the callback frees the BH before
aio_notify(bh->ctx) has a chance to run.

Reported-by: Stefan Priebe <s.priebe@profihost.ag>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Stefan Priebe <s.priebe@profihost.ag>
async.c