[PATCH v3 10/20] gpu: host1x: Correct host1x_job_pin() error handling
Dmitry Osipenko
digetx at gmail.com
Wed Jun 14 23:18:33 UTC 2017
In case of relocations / waitchecks patching failure the jobs pins stay
referenced till DRM file get closed, wasting memory. Add the missed
unpinning.
Signed-off-by: Dmitry Osipenko <digetx at gmail.com>
Reviewed-by: Erik Faye-Lund <kusmabite at gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen at nvidia.com>
---
drivers/gpu/host1x/job.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c
index d9933828fe87..14f3f957ffab 100644
--- a/drivers/gpu/host1x/job.c
+++ b/drivers/gpu/host1x/job.c
@@ -592,22 +592,20 @@ int host1x_job_pin(struct host1x_job *job, struct device *dev)
err = do_relocs(job, g->bo);
if (err)
- break;
+ goto out;
err = do_waitchks(job, host, g->bo);
if (err)
- break;
+ goto out;
}
- if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && !err) {
- err = copy_gathers(job, dev);
- if (err) {
- host1x_job_unpin(job);
- return err;
- }
- }
+ if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
+ goto out;
+ err = copy_gathers(job, dev);
out:
+ if (err)
+ host1x_job_unpin(job);
wmb();
return err;
--
2.13.0
More information about the dri-devel
mailing list