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

Christian König christian.koenig at amd.com
Wed May 20 15:32:57 UTC 2020


Am 20.05.20 um 17:31 schrieb Ruhl, Michael J:
>> -----Original Message-----
>> From: Dan Carpenter <dan.carpenter at oracle.com>
>> Sent: Wednesday, May 20, 2020 11:26 AM
>> To: Alex Deucher <alexander.deucher at amd.com>; Kevin Wang
>> <kevin1.wang at amd.com>; Ruhl, Michael J <michael.j.ruhl at intel.com>
>> Cc: Christian König <christian.koenig at amd.com>; David Airlie
>> <airlied at linux.ie>; Daniel Vetter <daniel at ffwll.ch>; Evan Quan
>> <evan.quan at amd.com>; Rui Huang <ray.huang at amd.com>; Kenneth Feng
>> <kenneth.feng at amd.com>; Yintian Tao <yttao at amd.com>; Hawking Zhang
>> <Hawking.Zhang at amd.com>; amd-gfx at lists.freedesktop.org; dri-
>> devel at lists.freedesktop.org; linux-kernel at vger.kernel.org; kernel-
>> janitors at vger.kernel.org
>> 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 at oracle.com>
>> ---
>> v2: style change
>> v3: Fix embarrassing typo in the subject
> 😊
>
> Acked-by: Michael J. Ruhl <michael.j.ruhl at intel.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

>
> 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;
>> }



More information about the dri-devel mailing list