etnaviv: Add lock around pending_ctx
[mesa.git] / src / gallium / drivers / etnaviv / etnaviv_transfer.c
index 0d0324ec0cbe960cab2e3d9d661943ada70d1345..27f3ebe585b9ee5466a8e0589131ff58171736c6 100644 (file)
@@ -391,12 +391,14 @@ etna_transfer_map(struct pipe_context *pctx, struct pipe_resource *prsc,
           (!trans->rsc &&
            (((usage & PIPE_TRANSFER_READ) && (rsc->status & ETNA_PENDING_WRITE)) ||
            ((usage & PIPE_TRANSFER_WRITE) && rsc->status)))) {
+         mtx_lock(&rsc->lock);
          set_foreach(rsc->pending_ctx, entry) {
             struct etna_context *pend_ctx = (struct etna_context *)entry->key;
             struct pipe_context *pend_pctx = &pend_ctx->base;
 
             pend_pctx->flush(pend_pctx, NULL, 0);
          }
+         mtx_unlock(&rsc->lock);
       }
 
       mtx_unlock(&ctx->lock);