[PATCH] drm/amd/display: Always allocate initial connector state state
Li, Sun peng (Leo)
Sunpeng.Li at amd.com
Tue Jun 4 19:26:38 UTC 2019
On 2019-06-04 3:21 p.m., Nicholas Kazlauskas wrote:
> [Why]
> Unlike our regular connectors, MST connectors don't start off with
> an initial connector state. This causes a NULL pointer dereference to
> occur when attaching the bpc property since it tries to modify the
> connector state.
>
> We need an initial connector state on the connector to avoid the crash.
>
> [How]
> Use our reset helper to allocate an initial state and reset the values
> to their defaults. We were already doing this before, just not for
> MST connectors.
>
> Cc: Leo Li <sunpeng.li at amd.com>
> Cc: Roman Li <roman.li at amd.com>
> Cc: Harry Wentland <harry.wentland at amd.com>
> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas at amd.com>
LGTM,
Reviewed-by: Leo Li <sunpeng.li at amd.com>
> ---
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index a698c8f272ed..4523ab100bc3 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -4743,6 +4743,13 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
> {
> struct amdgpu_device *adev = dm->ddev->dev_private;
>
> + /*
> + * Some of the properties below require access to state, like bpc.
> + * Allocate some default initial connector state with our reset helper.
> + */
> + if (aconnector->base.funcs->reset)
> + aconnector->base.funcs->reset(&aconnector->base);
> +
> aconnector->connector_id = link_index;
> aconnector->dc_link = link;
> aconnector->base.interlace_allowed = false;
> @@ -4932,9 +4939,6 @@ static int amdgpu_dm_connector_init(struct amdgpu_display_manager *dm,
> &aconnector->base,
> &amdgpu_dm_connector_helper_funcs);
>
> - if (aconnector->base.funcs->reset)
> - aconnector->base.funcs->reset(&aconnector->base);
> -
> amdgpu_dm_connector_init_helper(
> dm,
> aconnector,
>
More information about the amd-gfx
mailing list