On Monday, June 29, 2026 12:02 AM WenTao Liang wrote:
> When map->chunks > 1 triggers an error, the function jumps to unpin
> before storing the current map in state->map[i]. The unpin loop only
> cleans up previously pinned planes (indices 0 through i-1), so the
> current mapping returned by host1x_bo_pin is never released via
> host1x_bo_unpin.
> 
> Suggested-by: Greg KH <[email protected]>
> Fixes: c6aeaf56f468 ("drm/tegra: Implement correct DMA-BUF semantics")

This patch changes the code around the line, but doesn't look like it's
the origin of the bug. Rather, I think commit

  49f821919bb9d45de7f1cde6072de01d36235b5d

is the origin.

Aside from that,

Reviewed-by: Mikko Perttunen <[email protected]>

..

Sashiko[1] reports similar issue(s) in gpu/host1x/job.c. Would you be
interested in fixing that as well? Otherwise I'll take care of it.

[1] https://sashiko.dev/#/patchset/20260628150228.47948-1-vulab%40iscas.ac.cn

Thank you!
Mikko

> Cc: [email protected]
> Signed-off-by: WenTao Liang <[email protected]>
> ---
> Changes in v2:
> - Fix patch format based on reviewer feedback
> ---
>  drivers/gpu/drm/tegra/plane.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/tegra/plane.c b/drivers/gpu/drm/tegra/plane.c
> index 0cb30910773f..e61485ee58f6 100644
> --- a/drivers/gpu/drm/tegra/plane.c
> +++ b/drivers/gpu/drm/tegra/plane.c
> @@ -161,6 +161,7 @@ static int tegra_dc_pin(struct tegra_dc *dc, struct 
> tegra_plane_state *state)
>                        */
>                       if (map->chunks > 1) {
>                               err = -EINVAL;
> +                             host1x_bo_unpin(map);
>                               goto unpin;
>                       }
>  
> -- 
> 2.39.5 (Apple Git-154)
> 
> 




Reply via email to