aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (Google) <rostedt@goodmis.org>2022-02-28 17:41:13 -0500
committerSteven Rostedt (Google) <rostedt@goodmis.org>2022-02-28 17:44:18 -0500
commitaff006d4af0c76de6f3674266659de583a2c490f (patch)
treed48e8564e374aee8e5285acccd5d7635971ec77e
parentc86872fe05300766f6b252b4795f184cb4fde664 (diff)
downloadlibtracefs-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.c45
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.