diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_gem.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_gem.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 3ce58d2222cb..e8b04f4aed7e 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c | |||
@@ -600,7 +600,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, | |||
600 | if (push[i].bo_index >= req->nr_buffers) { | 600 | if (push[i].bo_index >= req->nr_buffers) { |
601 | NV_ERROR(dev, "push %d buffer not in list\n", i); | 601 | NV_ERROR(dev, "push %d buffer not in list\n", i); |
602 | ret = -EINVAL; | 602 | ret = -EINVAL; |
603 | goto out; | 603 | goto out_prevalid; |
604 | } | 604 | } |
605 | 605 | ||
606 | bo[push[i].bo_index].read_domains |= (1 << 31); | 606 | bo[push[i].bo_index].read_domains |= (1 << 31); |
@@ -612,7 +612,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, | |||
612 | if (ret) { | 612 | if (ret) { |
613 | if (ret != -ERESTARTSYS) | 613 | if (ret != -ERESTARTSYS) |
614 | NV_ERROR(dev, "validate: %d\n", ret); | 614 | NV_ERROR(dev, "validate: %d\n", ret); |
615 | goto out; | 615 | goto out_prevalid; |
616 | } | 616 | } |
617 | 617 | ||
618 | /* Apply any relocations that are required */ | 618 | /* Apply any relocations that are required */ |
@@ -705,6 +705,8 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, | |||
705 | out: | 705 | out: |
706 | validate_fini(&op, fence); | 706 | validate_fini(&op, fence); |
707 | nouveau_fence_unref(&fence); | 707 | nouveau_fence_unref(&fence); |
708 | |||
709 | out_prevalid: | ||
708 | kfree(bo); | 710 | kfree(bo); |
709 | kfree(push); | 711 | kfree(push); |
710 | 712 | ||