On Tue, May 23, 2017 at 2:14 AM, Dmitry Osipenko <digetx@xxxxxxxxx> 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@xxxxxxxxx> > --- > 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 > One subtle undocumented change here, is that wmb() now gets called in the copy_gathers()-error case (just like it already does for the other error-cases). That's seems like an OK change, so: Reviewed-by: Erik Faye-Lund <kusmabite@xxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html