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@xxxxxxxxxxxxxxx > 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@xxxxxxx> Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx> 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)