Re: [PATCH v3] drm/amdgpu: off by one in amdgpu_device_attr_create_groups() error handling

From: Christian KÃnig
Date: Wed May 20 2020 - 11:33:12 EST


Am 20.05.20 um 17:31 schrieb Ruhl, Michael J:
-----Original Message-----
From: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Sent: Wednesday, May 20, 2020 11:26 AM
To: Alex Deucher <alexander.deucher@xxxxxxx>; Kevin Wang
<kevin1.wang@xxxxxxx>; Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx>
Cc: Christian KÃnig <christian.koenig@xxxxxxx>; David Airlie
<airlied@xxxxxxxx>; Daniel Vetter <daniel@xxxxxxxx>; Evan Quan
<evan.quan@xxxxxxx>; Rui Huang <ray.huang@xxxxxxx>; Kenneth Feng
<kenneth.feng@xxxxxxx>; Yintian Tao <yttao@xxxxxxx>; Hawking Zhang
<Hawking.Zhang@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-
devel@xxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; kernel-
janitors@xxxxxxxxxxxxxxx
Subject: [PATCH v3] drm/amdgpu: off by one in
amdgpu_device_attr_create_groups() error handling

This loop in the error handling code should start a "i - 1" and end at
"i == 0". Currently it starts a "i" and ends at "i == 1". The result
is that it removes one attribute that wasn't created yet, and leaks the
zeroeth attribute.

Fixes: 4e01847c38f7 ("drm/amdgpu: optimize amdgpu device attribute code")
Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
---
v2: style change
v3: Fix embarrassing typo in the subject
ð

Acked-by: Michael J. Ruhl <michael.j.ruhl@xxxxxxxxx>

Reviewed-by: Christian KÃnig <christian.koenig@xxxxxxx>


m
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index b75362bf0742..e809534fabd4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -1942,9 +1942,8 @@ static int amdgpu_device_attr_create_groups(struct
amdgpu_device *adev,
return 0;

failed:
- for (; i > 0; i--) {
+ while (i--)
amdgpu_device_attr_remove(adev, &attrs[i]);
- }

return ret;
}