__field(unsigned int, context)
                             __field(unsigned int, seqno)
                             __field(struct dma_fence *, fence)
-                            __field(char *, ring_name)
+                            __string(ring, to_amdgpu_ring(job->base.sched)->name)
                             __field(u32, num_ibs)
                             ),
 
                           __assign_str(timeline, AMDGPU_JOB_GET_TIMELINE_NAME(job))
                           __entry->context = job->base.s_fence->finished.context;
                           __entry->seqno = job->base.s_fence->finished.seqno;
-                          __entry->ring_name = to_amdgpu_ring(job->base.sched)->name;
+                          __assign_str(ring, to_amdgpu_ring(job->base.sched)->name)
                           __entry->num_ibs = job->num_ibs;
                           ),
            TP_printk("sched_job=%llu, timeline=%s, context=%u, seqno=%u, ring_name=%s, num_ibs=%u",
                      __entry->sched_job_id, __get_str(timeline), __entry->context,
-                     __entry->seqno, __entry->ring_name, __entry->num_ibs)
+                     __entry->seqno, __get_str(ring), __entry->num_ibs)
 );
 
 TRACE_EVENT(amdgpu_sched_run_job,
                             __string(timeline, AMDGPU_JOB_GET_TIMELINE_NAME(job))
                             __field(unsigned int, context)
                             __field(unsigned int, seqno)
-                            __field(char *, ring_name)
+                            __string(ring, to_amdgpu_ring(job->base.sched)->name)
                             __field(u32, num_ibs)
                             ),
 
                           __assign_str(timeline, AMDGPU_JOB_GET_TIMELINE_NAME(job))
                           __entry->context = job->base.s_fence->finished.context;
                           __entry->seqno = job->base.s_fence->finished.seqno;
-                          __entry->ring_name = to_amdgpu_ring(job->base.sched)->name;
+                          __assign_str(ring, to_amdgpu_ring(job->base.sched)->name)
                           __entry->num_ibs = job->num_ibs;
                           ),
            TP_printk("sched_job=%llu, timeline=%s, context=%u, seqno=%u, ring_name=%s, num_ibs=%u",
                      __entry->sched_job_id, __get_str(timeline), __entry->context,
-                     __entry->seqno, __entry->ring_name, __entry->num_ibs)
+                     __entry->seqno, __get_str(ring), __entry->num_ibs)
 );
 
 
            TP_PROTO(struct amdgpu_job *sched_job, struct dma_fence *fence),
            TP_ARGS(sched_job, fence),
            TP_STRUCT__entry(
-                            __field(const char *,name)
+                            __string(ring, sched_job->base.sched->name);
                             __field(uint64_t, id)
                             __field(struct dma_fence *, fence)
                             __field(uint64_t, ctx)
                             ),
 
            TP_fast_assign(
-                          __entry->name = sched_job->base.sched->name;
+                          __assign_str(ring, sched_job->base.sched->name)
                           __entry->id = sched_job->base.id;
                           __entry->fence = fence;
                           __entry->ctx = fence->context;
                           __entry->seqno = fence->seqno;
                           ),
            TP_printk("job ring=%s, id=%llu, need pipe sync to fence=%p, context=%llu, seq=%u",
-                     __entry->name, __entry->id,
+                     __get_str(ring), __entry->id,
                      __entry->fence, __entry->ctx,
                      __entry->seqno)
 );