Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/xe/eustall: Fix drm_dev_put called before stream disable in close

In xe_eu_stall_stream_close(), drm_dev_put() is called before the
stream is disabled and its resources are freed. If this drops the
last reference, the device structures could be freed while the
subsequent cleanup code still accesses them, leading to a
use-after-free.

Fix this by moving drm_dev_put() after all device accesses are
complete. This matches the ordering in xe_oa_release().

Fixes: 9a0b11d4cf3b ("drm/xe/eustall: Add support to init, enable and disable EU stall sampling")
Cc: Harish Chegondi <harish.chegondi@intel.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Reviewed-by: Harish Chegondi <harish.chegondi@intel.com>
Link: https://patch.msgid.link/20260415225428.3399934-1-shuicheng.lin@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
(cherry picked from commit 35aff528f7297e949e5e19c9cd7fd748cf1cf21c)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

authored by

Shuicheng Lin and committed by
Rodrigo Vivi
dc2d9842 f3cc22d4

+2 -2
+2 -2
drivers/gpu/drm/xe/xe_eu_stall.c
··· 869 869 struct xe_eu_stall_data_stream *stream = file->private_data; 870 870 struct xe_gt *gt = stream->gt; 871 871 872 - drm_dev_put(&gt->tile->xe->drm); 873 - 874 872 mutex_lock(&gt->eu_stall->stream_lock); 875 873 xe_eu_stall_disable_locked(stream); 876 874 xe_eu_stall_data_buf_destroy(stream); 877 875 xe_eu_stall_stream_free(stream); 878 876 mutex_unlock(&gt->eu_stall->stream_lock); 877 + 878 + drm_dev_put(&gt->tile->xe->drm); 879 879 880 880 return 0; 881 881 }