Hi Christian,

On 10/13/2025 6:48 PM, Christian König wrote:
On 13.10.25 10:58, Jesse.Zhang wrote:
The `ttm_resource_manager_usage()` function currently assumes `man->bdev` is non-NULL 
when accessing `man->bdev->lru_lock`.
However, in scenarios where the resource manager is not fully initialized 
(e.g., APU platforms that lack dedicated VRAM, or incomplete manager setup),
  `man->bdev` may remain NULL. This leads to a NULL pointer dereference when 
attempting to acquire the `lru_lock`, triggering kernel OOPS.

Fix this by adding an explicit safety check for `man->bdev` before accessing 
its members:
- Use `WARN_ON_ONCE(!man->bdev)` to emit a one-time warning (a soft assertion) 
when `man->bdev` is NULL. This helps catch invalid usage patterns during debugging 
without breaking production workflows.
- Return 0 immediately if `man->bdev` is NULL, as a non-initialized manager 
cannot have valid resource usage to report.

Suggested-by: Christian König <[email protected]>
Suggested-by: Lijo Lazar <[email protected]>
Signed-off-by: Jesse Zhang <[email protected]>
Reviewed-by: Christian König <[email protected]>

@Arun could you push this one to drm-misc-next if nobody objects?
I pushed this patch into drm-misc-next.

Regards,
Arun.

Thanks in advance,
Christian

---
  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..d93d1bef6768 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 (WARN_ON_ONCE(!man->bdev))
+               return 0;
+
        spin_lock(&man->bdev->lru_lock);
        usage = man->usage;
        spin_unlock(&man->bdev->lru_lock);

Reply via email to