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 >