ftrace: fix building with SYSCTL=n but DYNAMIC_FTRACE=y
authorLuis Chamberlain <mcgrof@kernel.org>
Fri, 15 Apr 2022 21:29:57 +0000 (14:29 -0700)
committerLuis Chamberlain <mcgrof@kernel.org>
Thu, 21 Apr 2022 18:25:18 +0000 (11:25 -0700)
One can enable dyanmic tracing but disable sysctls.
When this is doen we get the compile kernel warning:

  CC      kernel/trace/ftrace.o
kernel/trace/ftrace.c:3086:13: warning: ‘ftrace_shutdown_sysctl’ defined
but not used [-Wunused-function]
 3086 | static void ftrace_shutdown_sysctl(void)
      |             ^~~~~~~~~~~~~~~~~~~~~~
kernel/trace/ftrace.c:3068:13: warning: ‘ftrace_startup_sysctl’ defined
but not used [-Wunused-function]
 3068 | static void ftrace_startup_sysctl(void)

When CONFIG_DYNAMIC_FTRACE=n the ftrace_startup_sysctl() and
routines ftrace_shutdown_sysctl() still compiles, so these
are actually more just used for when SYSCTL=y.

Fix this then by just moving these routines to when sysctls
are enabled.

Fixes: 7cde53da38a3 ("ftrace: move sysctl_ftrace_enabled to ftrace.c")
Reported-by: kernel test robot <lkp@intel.com>
Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
kernel/trace/ftrace.c

index db8d553..d9424fd 100644 (file)
@@ -3065,40 +3065,6 @@ int ftrace_shutdown(struct ftrace_ops *ops, int command)
        return 0;
 }
 
-static void ftrace_startup_sysctl(void)
-{
-       int command;
-
-       if (unlikely(ftrace_disabled))
-               return;
-
-       /* Force update next time */
-       saved_ftrace_func = NULL;
-       /* ftrace_start_up is true if we want ftrace running */
-       if (ftrace_start_up) {
-               command = FTRACE_UPDATE_CALLS;
-               if (ftrace_graph_active)
-                       command |= FTRACE_START_FUNC_RET;
-               ftrace_startup_enable(command);
-       }
-}
-
-static void ftrace_shutdown_sysctl(void)
-{
-       int command;
-
-       if (unlikely(ftrace_disabled))
-               return;
-
-       /* ftrace_start_up is true if ftrace is running */
-       if (ftrace_start_up) {
-               command = FTRACE_DISABLE_CALLS;
-               if (ftrace_graph_active)
-                       command |= FTRACE_STOP_FUNC_RET;
-               ftrace_run_update_code(command);
-       }
-}
-
 static u64             ftrace_update_time;
 unsigned long          ftrace_update_tot_cnt;
 unsigned long          ftrace_number_of_pages;
@@ -7267,9 +7233,6 @@ core_initcall(ftrace_nodyn_init);
 static inline int ftrace_init_dyn_tracefs(struct dentry *d_tracer) { return 0; }
 static inline void ftrace_startup_all(int command) { }
 
-# define ftrace_startup_sysctl()       do { } while (0)
-# define ftrace_shutdown_sysctl()      do { } while (0)
-
 static void ftrace_update_trampoline(struct ftrace_ops *ops)
 {
 }
@@ -7910,6 +7873,40 @@ int unregister_ftrace_function(struct ftrace_ops *ops)
 EXPORT_SYMBOL_GPL(unregister_ftrace_function);
 
 #ifdef CONFIG_SYSCTL
+static void ftrace_startup_sysctl(void)
+{
+       int command;
+
+       if (unlikely(ftrace_disabled))
+               return;
+
+       /* Force update next time */
+       saved_ftrace_func = NULL;
+       /* ftrace_start_up is true if we want ftrace running */
+       if (ftrace_start_up) {
+               command = FTRACE_UPDATE_CALLS;
+               if (ftrace_graph_active)
+                       command |= FTRACE_START_FUNC_RET;
+               ftrace_startup_enable(command);
+       }
+}
+
+static void ftrace_shutdown_sysctl(void)
+{
+       int command;
+
+       if (unlikely(ftrace_disabled))
+               return;
+
+       /* ftrace_start_up is true if ftrace is running */
+       if (ftrace_start_up) {
+               command = FTRACE_DISABLE_CALLS;
+               if (ftrace_graph_active)
+                       command |= FTRACE_STOP_FUNC_RET;
+               ftrace_run_update_code(command);
+       }
+}
+
 static bool is_permanent_ops_registered(void)
 {
        struct ftrace_ops *op;