[AMD Official Use Only - AMD Internal Distribution Only] The specific issue of trace with amdgpu_mem_info_vram_used_show should be fixed with this one - "drm/amdgpu: hide VRAM sysfs attributes on GPUs without VRAM"
Thanks, Lijo >-----Original Message----- >From: amd-gfx <[email protected]> On Behalf Of >Jesse.Zhang >Sent: Monday, October 13, 2025 7:25 AM >To: [email protected]; [email protected] >Cc: Deucher, Alexander <[email protected]>; Koenig, Christian ><[email protected]>; Zhang, Jesse(Jie) <[email protected]>; >Yang, Philip <[email protected]>; Zhang, Jesse(Jie) ><[email protected]> >Subject: [PATCH] drm/ttm: Add NULL check in ttm_resource_manager_usage > >Add a NULL pointer check in ttm_resource_manager_usage() to prevent kernel >NULL pointer dereferences when the function is called with an uninitialized >resource manager. > >This fixes a kernel OOPS observed on APU devices where the VRAM resource >manager is not fully initialized, but various sysfs and debug interfaces still >attempt to query VRAM usage statistics. > >The crash backtrace showed: > BUG: kernel NULL pointer dereference, address: 00000000000008f8 > Call Trace: > amdttm_resource_manager_usage+0x1f/0x40 [amdttm] > amdgpu_mem_info_vram_used_show+0x1e/0x40 [amdgpu] > dev_attr_show+0x1d/0x40 > kernfs_seq_show+0x27/0x30 > >By returning 0 for NULL managers, we allow callers to safely query usage >information even when the underlying resource manager is not available, which >is the expected behavior for devices without dedicated VRAM like APUs. > >Suggested-by: Philip Yang <[email protected]> >Signed-off-by: Jesse Zhang <[email protected]> >--- > drivers/gpu/drm/ttm/ttm_resource.c | 3 +++ > 1 file changed, 3 insertions(+) > >diff --git a/drivers/gpu/drm/ttm/ttm_resource.c >b/drivers/gpu/drm/ttm/ttm_resource.c >index e2c82ad07eb4..e4d45f75e40a 100644 >--- a/drivers/gpu/drm/ttm/ttm_resource.c >+++ b/drivers/gpu/drm/ttm/ttm_resource.c >@@ -587,6 +587,9 @@ uint64_t ttm_resource_manager_usage(struct >ttm_resource_manager *man) { > uint64_t usage; > >+ if (!man) >+ return 0; >+ > spin_lock(&man->bdev->lru_lock); > usage = man->usage; > spin_unlock(&man->bdev->lru_lock); >-- >2.49.0
