• Li Zefan's avatar
    tracing/filters: Support filtering for char * strings · 87a342f5
    Li Zefan authored
    
    
    Usually, char * entries are dangerous in traces because the string
    can be released whereas a pointer to it can still wait to be read from
    the ring buffer.
    
    But sometimes we can assume it's safe, like in case of RO data
    (eg: __file__ or __line__, used in bkl trace event). If these RO data
    are in a module and so is the call to the trace event, then it's safe,
    because the ring buffer will be flushed once this module get unloaded.
    
    To allow char * to be treated as a string:
    
    	TRACE_EVENT(...,
    
    		TP_STRUCT__entry(
    			__field_ext(const char *, name, FILTER_PTR_STRING)
    			...
    		)
    
    		...
    	);
    
    The filtering will not dereference "char *" unless the developer
    explicitly sets FILTER_PTR_STR in __field_ext.
    Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
    LKML-Reference: <4A7B9287.90205@cn.fujitsu.com>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    87a342f5
ftrace_event.h 4.91 KB