Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5855aa3 authored by Dmitry Osipenko's avatar Dmitry Osipenko Committed by Thierry Reding
Browse files

gpu: host1x: Correct host1x_job_pin() error handling



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: default avatarDmitry Osipenko <digetx@gmail.com>
Reviewed-by: default avatarErik Faye-Lund <kusmabite@gmail.com>
Reviewed-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 3833d16f
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -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;