On Wed, Jun 17, 2026 at 4:55 AM Lijo Lazar <[email protected]> wrote:
>
> Fix the indexing issue. Release the kobject whose init/add failed, and
> unwind the successfully added ones.
>
> Signed-off-by: Lijo Lazar <[email protected]>

Reviewed-by: Alex Deucher <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
> index 14cef0264c17..d0d494e00cfe 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
> @@ -904,7 +904,7 @@ static void amdgpu_xcp_cfg_sysfs_init(struct 
> amdgpu_device *adev)
>  {
>         struct amdgpu_xcp_res_details *xcp_res;
>         struct amdgpu_xcp_cfg *xcp_cfg;
> -       int i, r, j, rid, mode;
> +       int i, r, rid, mode;
>
>         if (!adev->xcp_mgr)
>                 return;
> @@ -950,14 +950,16 @@ static void amdgpu_xcp_cfg_sysfs_init(struct 
> amdgpu_device *adev)
>                                          &xcp_cfg_res_sysfs_ktype,
>                                          &xcp_cfg->kobj, "%s",
>                                          xcp_res_names[rid]);
> -               if (r)
> +               if (r) {
> +                       kobject_put(&xcp_res->kobj);
>                         goto err;
> +               }
>         }
>
>         adev->xcp_mgr->xcp_cfg = xcp_cfg;
>         return;
>  err:
> -       for (j = 0; j < i; j++) {
> +       while (i--) {
>                 xcp_res = &xcp_cfg->xcp_res[i];
>                 kobject_put(&xcp_res->kobj);
>         }
> --
> 2.49.0
>

Reply via email to