On Wed, Jul 07, 2021 at 06:58:10PM +0200, Emanuele Giuseppe Esposito wrote:
> @@ -406,15 +410,18 @@ void *job_create(const char *job_id, const JobDriver 
> *driver, JobTxn *txn,
>              error_setg(errp, "Invalid job ID '%s'", job_id);
>              return NULL;
>          }
> -        if (job_get(job_id)) {
> -            error_setg(errp, "Job ID '%s' already in use", job_id);
> -            return NULL;
> -        }
>      } else if (!(flags & JOB_INTERNAL)) {
>          error_setg(errp, "An explicit job ID is required");
>          return NULL;
>      }
>  
> +    job_lock();
> +    if (job_get(job_id)) {
> +        error_setg(errp, "Job ID '%s' already in use", job_id);
> +        job_unlock();
> +        return NULL;
> +    }
> +

Where is the matching job_unlock() in the success case? Please consider
lock guard macros like QEMU_LOCK_GUARD()/WITH_QEMU_LOCK_GUARD() to
prevent common errors.

Attachment: signature.asc
Description: PGP signature

Reply via email to