[lttng-dev] [PATCH lttng-modules] Fix: NULL pointer dereference of THIS_MODULE with built-in modules

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Wed May 17 21:14:57 UTC 2017


Merged into master, 2.10, 2.9, 2.8, thanks!

Mathieu

----- On May 17, 2017, at 5:09 PM, Francis Deslauriers francis.deslauriers at efficios.com wrote:

> 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 at efficios.com>
> ---
> wrapper/tracepoint.h | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/wrapper/tracepoint.h b/wrapper/tracepoint.h
> index 367cdf4..780f9a8 100644
> --- a/wrapper/tracepoint.h
> +++ b/wrapper/tracepoint.h
> @@ -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)
> {
> @@ -106,7 +110,7 @@ int wrapper_lttng_fixup_sig(struct module *mod)
> 	return ret;
> }
> 
> -#else /* CONFIG_MODULE_SIG */
> +#else /* #if defined(CONFIG_MODULE_SIG) && defined(MODULE) */
> 
> static inline
> int wrapper_lttng_fixup_sig(struct module *mod)
> @@ -114,6 +118,6 @@ int wrapper_lttng_fixup_sig(struct module *mod)
> 	return 0;
> }
> 
> -#endif /* #else CONFIG_MODULE_SIG */
> +#endif /*#else #if defined(CONFIG_MODULE_SIG) && defined(MODULE) */
> 
> #endif /* _LTTNG_WRAPPER_TRACEPOINT_H */
> --
> 2.7.4

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list