Fix: NULL pointer dereference of THIS_MODULE with built-in modules
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Wed, 17 May 2017 21:09:12 +0000 (17:09 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 17 May 2017 21:13:16 +0000 (17:13 -0400)
THIS MODULE is defined to 0 when a module is built-in the kernel [1].
This caused NULL pointer dereference when booting a kernel with the
lttng-modules built-in.
To fix this issue, add #if guard around the wrapper_lttng_fixup_sig
function checking if the MODULE macro is defined to confirm that this
piece of code will end up in a module and not in the kernel itself.

[1]: linux/include/linux/export.h:32
Fixes: #1107
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
wrapper/tracepoint.h

index 367cdf42f1c1d343ee4414afe5069d478ac7976b..780f9a86607adf55848a72f4b5c2c7fef3d2e9c4 100644 (file)
@@ -87,6 +87,10 @@ int wrapper_tracepoint_module_notify(struct notifier_block *nb,
        }
 }
 
        }
 }
 
+#endif /* CONFIG_MODULE_SIG */
+
+#if defined(CONFIG_MODULE_SIG) && defined(MODULE)
+
 static inline
 int wrapper_lttng_fixup_sig(struct module *mod)
 {
 static inline
 int wrapper_lttng_fixup_sig(struct module *mod)
 {
@@ -106,7 +110,7 @@ int wrapper_lttng_fixup_sig(struct module *mod)
        return ret;
 }
 
        return ret;
 }
 
-#else /* CONFIG_MODULE_SIG */
+#else /* #if defined(CONFIG_MODULE_SIG) && defined(MODULE) */
 
 static inline
 int wrapper_lttng_fixup_sig(struct module *mod)
 
 static inline
 int wrapper_lttng_fixup_sig(struct module *mod)
@@ -114,6 +118,6 @@ int wrapper_lttng_fixup_sig(struct module *mod)
        return 0;
 }
 
        return 0;
 }
 
-#endif /* #else CONFIG_MODULE_SIG */
+#endif /*#else #if defined(CONFIG_MODULE_SIG) && defined(MODULE) */
 
 #endif /* _LTTNG_WRAPPER_TRACEPOINT_H */
 
 #endif /* _LTTNG_WRAPPER_TRACEPOINT_H */
This page took 0.031281 seconds and 4 git commands to generate.