We don't propagate erros to the callers.  We have to unlock object
arrays on errors.

Signed-off-by: Chia-I Wu <olva...@gmail.com>
---
 drivers/gpu/drm/virtio/virtgpu_vq.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c 
b/drivers/gpu/drm/virtio/virtgpu_vq.c
index 5815c7d50dc20..1e27f4c09341e 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vq.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
@@ -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);
-- 
2.25.0.341.g760bfbb309-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to