瀏覽代碼

tracing: Fix compile error in module tracepoints when MODULE_UNLOAD not set

If modules are configured in the build but unloading of modules is not,
then the refcnt is not defined. Place the get/put module tracepoints
under CONFIG_MODULE_UNLOAD since it references this field in the module
structure.

As a side-effect, this patch also reduces the code when MODULE_UNLOAD
is not set, because these unused tracepoints are not created.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Steven Rostedt 15 年之前
父節點
當前提交
eb0c53771f
共有 2 個文件被更改,包括 7 次插入2 次删除
  1. 4 0
      include/trace/events/module.h
  2. 3 2
      kernel/module.c

+ 4 - 0
include/trace/events/module.h

@@ -51,6 +51,9 @@ TRACE_EVENT(module_free,
 	TP_printk("%s", __get_str(name))
 	TP_printk("%s", __get_str(name))
 );
 );
 
 
+#ifdef CONFIG_MODULE_UNLOAD
+/* trace_module_get/put are only used if CONFIG_MODULE_UNLOAD is defined */
+
 DECLARE_EVENT_CLASS(module_refcnt,
 DECLARE_EVENT_CLASS(module_refcnt,
 
 
 	TP_PROTO(struct module *mod, unsigned long ip),
 	TP_PROTO(struct module *mod, unsigned long ip),
@@ -86,6 +89,7 @@ DEFINE_EVENT(module_refcnt, module_put,
 
 
 	TP_ARGS(mod, ip)
 	TP_ARGS(mod, ip)
 );
 );
+#endif /* CONFIG_MODULE_UNLOAD */
 
 
 TRACE_EVENT(module_request,
 TRACE_EVENT(module_request,
 
 

+ 3 - 2
kernel/module.c

@@ -59,8 +59,6 @@
 #define CREATE_TRACE_POINTS
 #define CREATE_TRACE_POINTS
 #include <trace/events/module.h>
 #include <trace/events/module.h>
 
 
-EXPORT_TRACEPOINT_SYMBOL(module_get);
-
 #if 0
 #if 0
 #define DEBUGP printk
 #define DEBUGP printk
 #else
 #else
@@ -467,6 +465,9 @@ MODINFO_ATTR(srcversion);
 static char last_unloaded_module[MODULE_NAME_LEN+1];
 static char last_unloaded_module[MODULE_NAME_LEN+1];
 
 
 #ifdef CONFIG_MODULE_UNLOAD
 #ifdef CONFIG_MODULE_UNLOAD
+
+EXPORT_TRACEPOINT_SYMBOL(module_get);
+
 /* Init the unload section of the module. */
 /* Init the unload section of the module. */
 static void module_unload_init(struct module *mod)
 static void module_unload_init(struct module *mod)
 {
 {