diff options
author | Steven Rostedt (Google) <rostedt@goodmis.org> | 2022-02-28 17:41:13 -0500 |
---|---|---|
committer | Steven Rostedt (Google) <rostedt@goodmis.org> | 2022-02-28 17:44:18 -0500 |
commit | aff006d4af0c76de6f3674266659de583a2c490f (patch) | |
tree | d48e8564e374aee8e5285acccd5d7635971ec77e | |
parent | c86872fe05300766f6b252b4795f184cb4fde664 (diff) | |
download | libtracefs-aff006d4af0c76de6f3674266659de583a2c490f.tar.gz |
libtracefs: Do not initialize with NULL offsets
It appears that some compilers or static analyzers do not like
dereferencing NULL for address calculation (not sure how it they will work
with the offset_of() macro, that depends on that).
To prevent these warnings, just add a wrapper function to do the NULL
check, and then call the real function that does the initialization of the
offset, and this will make these silly sanitizers happy.
Link: https://lore.kernel.org/linux-trace-devel/20220224234823.1190425-3-irogers@google.com
Reported-by: Ian Rogers <irogers@google.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-rw-r--r-- | src/tracefs-dynevents.c | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/src/tracefs-dynevents.c b/src/tracefs-dynevents.c index 61804b9..48bb26a 100644 --- a/src/tracefs-dynevents.c +++ b/src/tracefs-dynevents.c @@ -704,24 +704,9 @@ __hidden int dynevent_get_count(unsigned int types, const char *system) return all; } -/** - * tracefs_dynevent_info - return details of a dynamic event - * @dynevent: A dynamic event context, describing given dynamic event. - * @group: return, group in which the dynamic event is configured - * @event: return, name of the dynamic event - * @prefix: return, prefix string of the dynamic event - * @addr: return, the function and offset (or address) of the dynamic event - * @format: return, the format string of the dynamic event - * - * Returns the type of the dynamic event, or TRACEFS_DYNEVENT_UNKNOWN in case of an error. - * Any of the @group, @event, @prefix, @addr and @format parameters are optional. - * If a valid pointer is passed, in case of success - a string is allocated and returned. - * These strings must be freed with free(). - */ - -enum tracefs_dynevent_type -tracefs_dynevent_info(struct tracefs_dynevent *dynevent, char **system, - char **event, char **prefix, char **addr, char **format) +static enum tracefs_dynevent_type +dynevent_info(struct tracefs_dynevent *dynevent, char **system, + char **event, char **prefix, char **addr, char **format) { char **lv[] = { system, event, prefix, addr, format }; char **rv[] = { &dynevent->system, &dynevent->event, &dynevent->prefix, @@ -755,6 +740,30 @@ error: } /** + * tracefs_dynevent_info - return details of a dynamic event + * @dynevent: A dynamic event context, describing given dynamic event. + * @group: return, group in which the dynamic event is configured + * @event: return, name of the dynamic event + * @prefix: return, prefix string of the dynamic event + * @addr: return, the function and offset (or address) of the dynamic event + * @format: return, the format string of the dynamic event + * + * Returns the type of the dynamic event, or TRACEFS_DYNEVENT_UNKNOWN in case of an error. + * Any of the @group, @event, @prefix, @addr and @format parameters are optional. + * If a valid pointer is passed, in case of success - a string is allocated and returned. + * These strings must be freed with free(). + */ +enum tracefs_dynevent_type +tracefs_dynevent_info(struct tracefs_dynevent *dynevent, char **system, + char **event, char **prefix, char **addr, char **format) +{ + if (!dynevent) + return TRACEFS_DYNEVENT_UNKNOWN; + + return dynevent_info(dynevent, system, event, prefix, addr, format); +} + +/** * tracefs_dynevent_get_event - return tep event representing the given dynamic event * @tep: a handle to the trace event parser context that holds the events * @dynevent: a dynamic event context, describing given dynamic event. |