On Mon, Aug 25, 2025 at 03:43:06PM +0200, Maxime Ripard wrote:
> The drm_atomic_get_connector_state() tries to lookup if a connector
> state was already allocated in the global state to return early if it
> was the case. drm_atomic_get_plane_state() and
> drm_atomic_get_crtc_state() behave similarly.
> 
> However, and unlike the other two, drm_atomic_get_connector_state() will
> do that lookup after having called drm_modeset_lock(), when the others
> will do it before.
> 
> Let's move the early return before the lock to make it consistent.
> 
> Signed-off-by: Maxime Ripard <mrip...@kernel.org>
> ---
>  drivers/gpu/drm/drm_atomic.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index 
> cd15cf52f0c9144711da5879da57884674aea9e4..fe21f154e0fa030f85fb3d6d35e2684adcf36e26
>  100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -1128,10 +1128,13 @@ drm_atomic_get_connector_state(struct 
> drm_atomic_state *state,
>       struct drm_mode_config *config = &connector->dev->mode_config;
>       struct drm_connector_state *connector_state;
>  
>       WARN_ON(!state->acquire_ctx);
>  
> +     if (state->connectors[index].state)
> +             return state->connectors[index].state;

connectors[] is dynamically allocated so this can't be done safely.

> +
>       ret = drm_modeset_lock(&config->connection_mutex, state->acquire_ctx);
>       if (ret)
>               return ERR_PTR(ret);
>  
>       index = drm_connector_index(connector);
> @@ -1150,13 +1153,10 @@ drm_atomic_get_connector_state(struct 
> drm_atomic_state *state,
>                      sizeof(*state->connectors) * (alloc - 
> state->num_connector));
>  
>               state->num_connector = alloc;
>       }
>  
> -     if (state->connectors[index].state)
> -             return state->connectors[index].state;
> -
>       connector_state = connector->funcs->atomic_duplicate_state(connector);
>       if (!connector_state)
>               return ERR_PTR(-ENOMEM);
>  
>       drm_connector_get(connector);
> 
> -- 
> 2.50.1

-- 
Ville Syrjälä
Intel

Reply via email to