Re: [Qemu-devel] [PATCH v2 for-2.11 1/4] blockjob: do not allow coroutine double entry or entry-after-completion

2017-11-21 Thread Jeff Cody
On Tue, Nov 21, 2017 at 02:12:32PM +0100, Paolo Bonzini wrote: > On 21/11/2017 11:49, Stefan Hajnoczi wrote: > > On Mon, Nov 20, 2017 at 09:23:23PM -0500, Jeff Cody wrote: > >> @@ -291,10 +291,10 @@ void block_job_start(BlockJob *job) > >> { > >> assert(job && !block_job_started(job) && job->

Re: [Qemu-devel] [PATCH v2 for-2.11 1/4] blockjob: do not allow coroutine double entry or entry-after-completion

2017-11-21 Thread Paolo Bonzini
On 21/11/2017 11:49, Stefan Hajnoczi wrote: > On Mon, Nov 20, 2017 at 09:23:23PM -0500, Jeff Cody wrote: >> @@ -291,10 +291,10 @@ void block_job_start(BlockJob *job) >> { >> assert(job && !block_job_started(job) && job->paused && >> job->driver && job->driver->start); >> -job-

Re: [Qemu-devel] [PATCH v2 for-2.11 1/4] blockjob: do not allow coroutine double entry or entry-after-completion

2017-11-21 Thread Stefan Hajnoczi
On Mon, Nov 20, 2017 at 09:23:23PM -0500, Jeff Cody wrote: > @@ -291,10 +291,10 @@ void block_job_start(BlockJob *job) > { > assert(job && !block_job_started(job) && job->paused && > job->driver && job->driver->start); > -job->co = qemu_coroutine_create(block_job_co_entry, job

[Qemu-devel] [PATCH v2 for-2.11 1/4] blockjob: do not allow coroutine double entry or entry-after-completion

2017-11-20 Thread Jeff Cody
When block_job_sleep_ns() is called, the co-routine is scheduled for future execution. If we allow the job to be re-entered prior to the scheduled time, we present a race condition in which a coroutine can be entered recursively, or even entered after the coroutine is deleted. The job->busy flag