On Mon, Aug 31, 2026 at 09:42:18AM +0800, [email protected] wrote:
> From: Lu Yao <[email protected]>
> 
> If idr_alloc() fails after create_dynamic_oa_sysfs_entry() has
> succeeded, the error path frees the OA config without removing the
> metrics sysfs group.
> 
> Remove the sysfs group before releasing the config, and fix up the
> misleading error message copied from the sysfs creation failure path.
> 
> Fixes: cdf02fe1a94a ("drm/xe/oa/uapi: Add/remove OA config perf ops")
> Signed-off-by: Lu Yao <[email protected]>
> ---
>  drivers/gpu/drm/xe/xe_oa.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> ---
> v1->v2: using a new goto suggested by Rodrigo

Thank you

Reviewed-by: Rodrigo Vivi <[email protected]>

and pushed

>   Link: https://lore.kernel.org/all/[email protected]
> 
> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index 9c5384b95c63..ab09dcff5860 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
> @@ -2435,9 +2435,9 @@ int xe_oa_add_config_ioctl(struct drm_device *dev, u64 
> data, struct drm_file *fi
>  
>       oa_config->id = idr_alloc(&oa->metrics_idr, oa_config, 1, 0, 
> GFP_KERNEL);
>       if (oa_config->id < 0) {
> -             drm_dbg(&oa->xe->drm, "Failed to create sysfs entry for OA 
> config\n");
> +             drm_dbg(&oa->xe->drm, "Failed to allocate id for OA config\n");
>               err = oa_config->id;
> -             goto sysfs_err;
> +             goto id_alloc_err;
>       }
>  
>       id = oa_config->id;
> @@ -2448,6 +2448,8 @@ int xe_oa_add_config_ioctl(struct drm_device *dev, u64 
> data, struct drm_file *fi
>  
>       return id;
>  
> +id_alloc_err:
> +     sysfs_remove_group(oa->metrics_kobj, &oa_config->sysfs_metric);
>  sysfs_err:
>       mutex_unlock(&oa->metrics_lock);
>  reg_err:
> -- 
> 2.25.1
> 

Reply via email to