Messages in this thread | | | Subject | Re: [PATCH v3] drm/amdgpu: off by one in amdgpu_device_attr_create_groups() error handling | From | Christian König <> | Date | Wed, 20 May 2020 17:32:57 +0200 |
| |
Am 20.05.20 um 17:31 schrieb Ruhl, Michael J: >> -----Original Message----- >> From: Dan Carpenter <dan.carpenter@oracle.com> >> Sent: Wednesday, May 20, 2020 11:26 AM >> To: Alex Deucher <alexander.deucher@amd.com>; Kevin Wang >> <kevin1.wang@amd.com>; Ruhl, Michael J <michael.j.ruhl@intel.com> >> Cc: Christian König <christian.koenig@amd.com>; David Airlie >> <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; Evan Quan >> <evan.quan@amd.com>; Rui Huang <ray.huang@amd.com>; Kenneth Feng >> <kenneth.feng@amd.com>; Yintian Tao <yttao@amd.com>; Hawking Zhang >> <Hawking.Zhang@amd.com>; amd-gfx@lists.freedesktop.org; dri- >> devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; kernel- >> janitors@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@oracle.com> >> --- >> v2: style change >> v3: Fix embarrassing typo in the subject > 😊 > > Acked-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Reviewed-by: Christian König <christian.koenig@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; >> }
| |