drm/virtio: unlock object array on errors
authorChia-I Wu <olvaffe@gmail.com>
Wed, 5 Feb 2020 18:19:49 +0000 (10:19 -0800)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 6 Feb 2020 10:58:18 +0000 (11:58 +0100)
We don't propagate erros to the callers.  We have to unlock object
arrays on errors.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-6-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_vq.c

index 7fb09fc..0ceceb3 100644 (file)
@@ -370,8 +370,11 @@ static void virtio_gpu_queue_fenced_ctrl_buffer(struct virtio_gpu_device *vgdev,
                if (is_vmalloc_addr(vbuf->data_buf)) {
                        sgt = vmalloc_to_sgt(vbuf->data_buf, vbuf->data_size,
                                             &outcnt);
-                       if (!sgt)
+                       if (!sgt) {
+                               if (fence && vbuf->objs)
+                                       virtio_gpu_array_unlock_resv(vbuf->objs);
                                return;
+                       }
                        vout = sgt->sgl;
                } else {
                        sg_init_one(&sg, vbuf->data_buf, vbuf->data_size);