[PATCH] drm/amd/display: fix a NULL pointer dereference in amdgpu_dm_i2c_xfer()

Harry Wentland harry.wentland at amd.com
Tue Nov 14 14:31:00 UTC 2023



On 2023-11-13 15:09, Mario Limonciello wrote:
> When ddc_service_construct() is called, it explicitly checks both the
> link type and whether there is something on the link which will
> dictate whether the pin is marked as hw_supported.
> 
> If the pin isn't set or the link is not set (such as from
> unloading/reloading amdgpu in an IGT test) then fail the
> amdgpu_dm_i2c_xfer() call.
> 
> Cc: stable at vger.kernel.org
> Fixes: 22676bc500c2 ("drm/amd/display: Fix dmub soft hang for PSR 1")
> Link: https://github.com/fwupd/fwupd/issues/6327
> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>

Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Harry

> ---
> v1->v2:
>  * Fix a memory leak
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> 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 adbeb2c897b5..f6b31c108180 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -7463,6 +7463,9 @@ static int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap,
>  	int i;
>  	int result = -EIO;
>  
> +	if (!ddc_service->ddc_pin || !ddc_service->ddc_pin->hw_info.hw_supported)
> +		return result;
> +
>  	cmd.payloads = kcalloc(num, sizeof(struct i2c_payload), GFP_KERNEL);
>  
>  	if (!cmd.payloads)



More information about the amd-gfx mailing list