[PATCH] drm/xe: Fix opregion leak

Rodrigo Vivi rodrigo.vivi at intel.com
Thu Jul 25 17:13:41 UTC 2024


On Wed, Jul 24, 2024 at 02:53:09PM -0700, Lucas De Marchi wrote:
> Being part o the display, ideally the setup and cleanup would be done by
> display itself. However this is a bigger refactor that needs to be done
> on both i915 and xe. For now, just fix the leak:
> 
> unreferenced object 0xffff8881a0300008 (size 192):
>   comm "modprobe", pid 4354, jiffies 4295647021
>   hex dump (first 32 bytes):
>     00 00 87 27 81 88 ff ff 18 80 9b 00 00 c9 ff ff  ...'............
>     18 81 9b 00 00 c9 ff ff 00 00 00 00 00 00 00 00  ................
>   backtrace (crc 99260e31):
>     [<ffffffff823ce65b>] kmemleak_alloc+0x4b/0x80
>     [<ffffffff81493be2>] kmalloc_trace_noprof+0x312/0x3d0
>     [<ffffffffa1345679>] intel_opregion_setup+0x89/0x700 [xe]
>     [<ffffffffa125bfaf>] xe_display_init_noirq+0x2f/0x90 [xe]
>     [<ffffffffa1199ec3>] xe_device_probe+0x7a3/0xbf0 [xe]
>     [<ffffffffa11f3713>] xe_pci_probe+0x333/0x5b0 [xe]
>     [<ffffffff81af6be8>] local_pci_probe+0x48/0xb0
>     [<ffffffff81af8778>] pci_device_probe+0xc8/0x280
>     [<ffffffff81d09048>] really_probe+0xf8/0x390
>     [<ffffffff81d0937a>] __driver_probe_device+0x8a/0x170
>     [<ffffffff81d09503>] driver_probe_device+0x23/0xb0
>     [<ffffffff81d097b7>] __driver_attach+0xc7/0x190
>     [<ffffffff81d0628d>] bus_for_each_dev+0x7d/0xd0
>     [<ffffffff81d0851e>] driver_attach+0x1e/0x30
>     [<ffffffff81d07ac7>] bus_add_driver+0x117/0x250

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> ---
>  drivers/gpu/drm/xe/display/xe_display.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
> index 8b83dcff72e1..ca4468c82078 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.c
> +++ b/drivers/gpu/drm/xe/display/xe_display.c
> @@ -132,6 +132,7 @@ static void xe_display_fini_noirq(void *arg)
>  		return;
>  
>  	intel_display_driver_remove_noirq(xe);
> +	intel_opregion_cleanup(xe);
>  }
>  
>  int xe_display_init_noirq(struct xe_device *xe)
> @@ -157,8 +158,10 @@ int xe_display_init_noirq(struct xe_device *xe)
>  	intel_display_device_info_runtime_init(xe);
>  
>  	err = intel_display_driver_probe_noirq(xe);
> -	if (err)
> +	if (err) {
> +		intel_opregion_cleanup(xe);
>  		return err;
> +	}
>  
>  	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noirq, xe);
>  }
> -- 
> 2.43.0
> 


More information about the Intel-xe mailing list