[PATCH 2/2] drm/amdgpu: fix uninitialized variable warning
Zhou, Bob
Bob.Zhou at amd.com
Tue Apr 23 06:35:23 UTC 2024
[Public]
Thanks for your comments.
I should clarify the issue. As you see the amdgpu_i2c_get_byte code:
if (i2c_transfer(&i2c_bus->adapter, msgs, 2) == 2) {
*val = in_buf[0];
DRM_DEBUG("val = 0x%02x\n", *val);
} else {
DRM_DEBUG("i2c 0x%02x 0x%02x read failed\n", addr, *val);
}
If the read failure by amdgpu_i2c_get_byte(), the value will not be modified.
Then the amdgpu_i2c_put_byte() successfully written the random value and it will cause unexpected issue.
Regards,
Bob
-----Original Message-----
From: Koenig, Christian <Christian.Koenig at amd.com>
Sent: 2024年4月23日 14:05
To: Zhou, Bob <Bob.Zhou at amd.com>; amd-gfx at lists.freedesktop.org; Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>
Subject: Re: [PATCH 2/2] drm/amdgpu: fix uninitialized variable warning
Am 23.04.24 um 07:33 schrieb Bob Zhou:
> Because the val isn't initialized, a random variable is set by amdgpu_i2c_put_byte.
> So fix the uninitialized issue.
Well that isn't correct. See the code here:
amdgpu_i2c_get_byte(amdgpu_connector->router_bus,
amdgpu_connector->router.i2c_addr,
0x3, &val);
val &= ~amdgpu_connector->router.cd_mux_control_pin;
amdgpu_i2c_put_byte(amdgpu_connector->router_bus,
amdgpu_connector->router.i2c_addr,
0x3, val);
The value is first read by amdgpu_i2c_get_byte(), then modified and then written again by amdgpu_i2c_put_byte().
Was this an automated warning?
Either way the patch is clearly rejected.
Regards,
Christian.
>
> Signed-off-by: Bob Zhou <bob.zhou at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c
> index 82608df43396..d4d2dc792b60 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c
> @@ -368,7 +368,7 @@ amdgpu_i2c_router_select_ddc_port(const struct amdgpu_connector *amdgpu_connecto
> void
> amdgpu_i2c_router_select_cd_port(const struct amdgpu_connector *amdgpu_connector)
> {
> - u8 val;
> + u8 val = 0;
>
> if (!amdgpu_connector->router.cd_valid)
> return;
More information about the amd-gfx
mailing list