diff --git a/devicemodel/core/mem.c b/devicemodel/core/mem.c index a5c673d63..4994eb221 100644 --- a/devicemodel/core/mem.c +++ b/devicemodel/core/mem.c @@ -182,8 +182,10 @@ emulate_mem(struct vmctx *ctx, struct mmio_request *mmio_req) assert(entry != NULL); if (entry->enabled == false) { + pthread_rwlock_unlock(&mmio_rwlock); return -1; } + pthread_rwlock_unlock(&mmio_rwlock); if (mmio_req->direction == REQUEST_READ) err = mem_read(ctx, 0, paddr, (uint64_t *)&mmio_req->value, @@ -192,8 +194,6 @@ emulate_mem(struct vmctx *ctx, struct mmio_request *mmio_req) err = mem_write(ctx, 0, paddr, mmio_req->value, size, &entry->mr_param); - pthread_rwlock_unlock(&mmio_rwlock); - return err; }