Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

tracing: Use EVENT_NULL_STR macro instead of open coding "(null)"

The TRACE_EVENT macros has some dependency if a __string() field is NULL,
where it will save "(null)" as the string. This string is also used by
__assign_str(). It's better to create a single macro instead of having
something that will not be caught by the compiler if there is an
unfortunate typo.

Link: https://lore.kernel.org/linux-trace-kernel/20240222211443.106216915@goodmis.org

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Chuck Lever <chuck.lever@oracle.com>
Suggested-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>

+15 -12
+3
include/linux/trace_events.h
··· 17 17 struct bpf_prog; 18 18 union bpf_attr; 19 19 20 + /* Used for event string fields when they are NULL */ 21 + #define EVENT_NULL_STR "(null)" 22 + 20 23 const char *trace_print_flags_seq(struct trace_seq *p, const char *delim, 21 24 unsigned long flags, 22 25 const struct trace_print_flags *flag_array);
+6 -6
include/trace/events/sunrpc.h
··· 1327 1327 __field(ssize_t, err) 1328 1328 __field(size_t, total) 1329 1329 __string(addr, xprt ? xprt->address_strings[RPC_DISPLAY_ADDR] : 1330 - "(null)") 1330 + EVENT_NULL_STR) 1331 1331 __string(port, xprt ? xprt->address_strings[RPC_DISPLAY_PORT] : 1332 - "(null)") 1332 + EVENT_NULL_STR) 1333 1333 ), 1334 1334 1335 1335 TP_fast_assign( 1336 1336 __entry->err = err; 1337 1337 __entry->total = total; 1338 1338 __assign_str(addr, xprt ? 1339 - xprt->address_strings[RPC_DISPLAY_ADDR] : "(null)"); 1339 + xprt->address_strings[RPC_DISPLAY_ADDR] : EVENT_NULL_STR); 1340 1340 __assign_str(port, xprt ? 1341 - xprt->address_strings[RPC_DISPLAY_PORT] : "(null)"); 1341 + xprt->address_strings[RPC_DISPLAY_PORT] : EVENT_NULL_STR); 1342 1342 ), 1343 1343 1344 1344 TP_printk("peer=[%s]:%s err=%zd total=%zu", __get_str(addr), ··· 1783 1783 __string(service, name) 1784 1784 __string(procedure, svc_proc_name(rqst)) 1785 1785 __string(addr, rqst->rq_xprt ? 1786 - rqst->rq_xprt->xpt_remotebuf : "(null)") 1786 + rqst->rq_xprt->xpt_remotebuf : EVENT_NULL_STR) 1787 1787 ), 1788 1788 1789 1789 TP_fast_assign( ··· 1793 1793 __assign_str(service, name); 1794 1794 __assign_str(procedure, svc_proc_name(rqst)); 1795 1795 __assign_str(addr, rqst->rq_xprt ? 1796 - rqst->rq_xprt->xpt_remotebuf : "(null)"); 1796 + rqst->rq_xprt->xpt_remotebuf : EVENT_NULL_STR); 1797 1797 ), 1798 1798 1799 1799 TP_printk("addr=%s xid=0x%08x service=%s vers=%u proc=%s",
+2 -2
include/trace/stages/stage5_get_offsets.h
··· 47 47 48 48 #undef __string 49 49 #define __string(item, src) __dynamic_array(char, item, \ 50 - strlen((const char *)(src) ? : "(null)") + 1) \ 50 + strlen((const char *)(src) ? : EVENT_NULL_STR) + 1) \ 51 51 __data_offsets->item##_ptr_ = src; 52 52 53 53 #undef __string_len ··· 70 70 71 71 #undef __rel_string 72 72 #define __rel_string(item, src) __rel_dynamic_array(char, item, \ 73 - strlen((const char *)(src) ? : "(null)") + 1) \ 73 + strlen((const char *)(src) ? : EVENT_NULL_STR) + 1) \ 74 74 __data_offsets->item##_ptr_ = src; 75 75 76 76 #undef __rel_string_len
+4 -4
include/trace/stages/stage6_event_callback.h
··· 32 32 33 33 #undef __assign_str 34 34 #define __assign_str(dst, src) \ 35 - memcpy(__get_str(dst), __data_offsets.dst##_ptr_ ? : "(null)", \ 35 + memcpy(__get_str(dst), __data_offsets.dst##_ptr_ ? : EVENT_NULL_STR, \ 36 36 __get_dynamic_array_len(dst)) 37 37 38 38 #undef __assign_str_len 39 39 #define __assign_str_len(dst, src, len) \ 40 40 do { \ 41 41 memcpy(__get_str(dst), \ 42 - __data_offsets.dst##_ptr_ ? : "(null)", len); \ 42 + __data_offsets.dst##_ptr_ ? : EVENT_NULL_STR, len); \ 43 43 __get_str(dst)[len] = '\0'; \ 44 44 } while(0) 45 45 ··· 94 94 95 95 #undef __assign_rel_str 96 96 #define __assign_rel_str(dst, src) \ 97 - memcpy(__get_rel_str(dst), __data_offsets.dst##_ptr_ ? : "(null)", \ 97 + memcpy(__get_rel_str(dst), __data_offsets.dst##_ptr_ ? : EVENT_NULL_STR, \ 98 98 __get_rel_dynamic_array_len(dst)) 99 99 100 100 #undef __assign_rel_str_len 101 101 #define __assign_rel_str_len(dst, src, len) \ 102 102 do { \ 103 103 memcpy(__get_rel_str(dst), \ 104 - __data_offsets.dst##_ptr_ ? : "(null)", len); \ 104 + __data_offsets.dst##_ptr_ ? : EVENT_NULL_STR, len); \ 105 105 __get_rel_str(dst)[len] = '\0'; \ 106 106 } while (0) 107 107