diff options
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_submit.c')
| -rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_submit.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_submit.c b/drivers/gpu/drm/virtio/virtgpu_submit.c index 7d34cf83f5f2..32cb1e4aa425 100644 --- a/drivers/gpu/drm/virtio/virtgpu_submit.c +++ b/drivers/gpu/drm/virtio/virtgpu_submit.c @@ -65,8 +65,10 @@ static int virtio_gpu_dma_fence_wait(struct virtio_gpu_submit *submit, dma_fence_unwrap_for_each(f, &itr, fence) { err = virtio_gpu_do_fence_wait(submit, f); - if (err) + if (err) { + dma_fence_put(itr.chain); return err; + } } return 0; @@ -104,7 +106,7 @@ virtio_gpu_parse_deps(struct virtio_gpu_submit *submit) * internally for allocations larger than a page size, preventing * storm of KMSG warnings. */ - syncobjs = kvcalloc(num_in_syncobjs, sizeof(*syncobjs), GFP_KERNEL); + syncobjs = kvzalloc_objs(*syncobjs, num_in_syncobjs); if (!syncobjs) return -ENOMEM; @@ -195,7 +197,7 @@ static int virtio_gpu_parse_post_deps(struct virtio_gpu_submit *submit) if (!num_out_syncobjs) return 0; - post_deps = kvcalloc(num_out_syncobjs, sizeof(*post_deps), GFP_KERNEL); + post_deps = kvzalloc_objs(*post_deps, num_out_syncobjs); if (!post_deps) return -ENOMEM; @@ -277,7 +279,7 @@ static int virtio_gpu_fence_event_create(struct drm_device *dev, struct virtio_gpu_fence_event *e = NULL; int ret; - e = kzalloc(sizeof(*e), GFP_KERNEL); + e = kzalloc_obj(*e); if (!e) return -ENOMEM; |
