[PATCH 12/22] gpu: host1x: Correct host1x_job_pin() error handling
Mikko Perttunen
cyndis at kapsi.fi
Wed May 31 18:50:26 UTC 2017
Reviewed-by: Mikko Perttunen <mperttunen at nvidia.com>
On 05/23/2017 03:14 AM, Dmitry Osipenko wrote:
> 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>
> ---
> 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;
>
More information about the dri-devel
mailing list