From: Matthew Brost matthew.brost@intel.com
Be safe when dereferencing fence->xe.
Signed-off-by: Matthew Brost matthew.brost@intel.com --- drivers/gpu/drm/xe/xe_hw_fence.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c index f5fad4426729..8181dfc628e4 100644 --- a/drivers/gpu/drm/xe/xe_hw_fence.c +++ b/drivers/gpu/drm/xe/xe_hw_fence.c @@ -159,9 +159,7 @@ static struct xe_hw_fence_irq *xe_hw_fence_irq(struct xe_hw_fence *fence)
static const char *xe_hw_fence_get_driver_name(struct dma_fence *dma_fence) { - struct xe_hw_fence *fence = to_xe_hw_fence(dma_fence); - - return dev_name(fence->xe->drm.dev); + return "xe"; }
static const char *xe_hw_fence_get_timeline_name(struct dma_fence *dma_fence) @@ -175,10 +173,13 @@ static bool xe_hw_fence_signaled(struct dma_fence *dma_fence) { struct xe_hw_fence *fence = to_xe_hw_fence(dma_fence); struct xe_device *xe = fence->xe; - u32 seqno = xe_map_rd(xe, &fence->seqno_map, 0, u32); + u32 seqno; + + if (dma_fence->error) + return true;
- return dma_fence->error || - !__dma_fence_is_later(dma_fence, dma_fence->seqno, seqno); + seqno = xe_map_rd(xe, &fence->seqno_map, 0, u32); + return !__dma_fence_is_later(dma_fence, dma_fence->seqno, seqno); }
static bool xe_hw_fence_enable_signaling(struct dma_fence *dma_fence)