On Thu, 30 Jul 2020 16:29:12 +0200 peter enderborg <peter.enderborg@xxxxxxxx> wrote: > +#undef TRACE_SYSTEM > +#define TRACE_SYSTEM avc > + > +#if !defined(_TRACE_AVC_H) || defined(TRACE_HEADER_MULTI_READ) > +#define _TRACE_AVC_H > + > +#include <linux/tracepoint.h> > +TRACE_EVENT(avc_data, > + TP_PROTO(u32 requested, > + u32 denied, > + u32 audited, > + int result, > + const char *msg > + ), > + > + TP_ARGS(requested, denied, audited, result,msg), > + > + TP_STRUCT__entry( > + __field(u32, requested) > + __field(u32, denied) > + __field(u32, audited) > + __field(int, result) > + __array(char, msg, 255) You want to use __string() here, otherwise you are wasting a lot of buffer space. __string( msg, msg) > + ), > + > + TP_fast_assign( > + __entry->requested = requested; > + __entry->denied = denied; > + __entry->audited = audited; > + __entry->result = result; > + memcpy(__entry->msg, msg, 255); Not to mention, the above is a bug. As the msg being passed in, is highly unlikely to be 255 bytes. You just leaked all that memory after the sting to user space. Where you want here: __assign_str( msg, msg ); -- Steve > + ), > + > + TP_printk("requested=0x%x denied=%d audited=%d result=%d > msg=%s", > + __entry->requested, __entry->denied, __entry->audited, > __entry->result, __entry->msg > + )