Re: [PATCH v1] drm/xe: Fix xe_device_probe() failure

Rodrigo Vivi <[email protected]>
Newsgroups org.kernel.vger.stable,org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On Mon, Aug 10, 2026 at 06:08:20PM +0530, Raag Jadav wrote:
> Currently, xe_device_probe() jumps to err_unregister_display label in case
> of failure except for its last call, which directly returns the error
> without required cleanup handling. This results in stale drm device that
> isn't cleaned up on unwind. Fix it.
> 
> [  810.194180] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:01.0/0000:03:00.0/drm/renderD128'
> [  810.194183] CPU: 9 UID: 0 PID: 5616 Comm: modprobe Kdump: loaded Tainted: G S   U      E       7.2.0-rc2-xe #382 PREEMPT(full)
> [  810.194185] Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER, [E]=UNSIGNED_MODULE
> [  810.194186] Hardware name: ASUS System Product Name/PRIME Z790-P WIFI, BIOS 1805 10/30/2024
> [  810.194186] Call Trace:
> [  810.194187]  <TASK>
> [  810.194188]  dump_stack_lvl+0xe0/0x100
> [  810.194195]  dump_stack+0x14/0x20
> [  810.194197]  sysfs_warn_dup+0x5f/0x80
> [  810.194204]  sysfs_create_dir_ns+0xbe/0xd0
> [  810.194210]  kobject_add_internal+0xbc/0x2b0
> [  810.194215]  kobject_add+0x7c/0xe0
> [  810.194220]  ? get_device_parent+0xcf/0x1e0
> [  810.194227]  device_add+0xe3/0x870
> [  810.194231]  ? __pfx_drm_gem_name_info+0x10/0x10 [drm]
> [  810.194280]  drm_minor_register+0x73/0x130 [drm]
> [  810.194322]  drm_dev_register+0x76/0x2a0 [drm]
> 
> Cc: [email protected]
> Fixes: da3799c97572 ("drm/xe: Use GuC to do GGTT invalidations for the GuC firmware")
> Signed-off-by: Raag Jadav <[email protected]>
> ---
>  drivers/gpu/drm/xe/xe_device.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index e327c7d35ca3..cad531009721 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -1165,7 +1165,12 @@ int xe_device_probe(struct xe_device *xe)
>  	 * xe_device_wedged_fini() is registered.
>  	 */
>  	xe_ras_process_errors(xe);
> -	return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
> +
> +	err = devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
> +	if (err)
> +		goto err_unregister_display;
> +
> +	return 0;

I believe Sashiko might have a point on pre-existing issue.
But anyway, this patch is right and we need it

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

>  
>  err_unregister_display:
>  	xe_display_unregister(xe);
> -- 
> 2.43.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.