[lttng-dev] [PATCH lttng-modules] Fix: access migrate_disable field directly
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Wed Sep 26 12:34:53 EDT 2018
Merged into master, 2.11, 2.10, 2.9, thanks!
Mathieu
----- On Sep 19, 2018, at 5:48 PM, Jonathan Rajotte jonathan.rajotte-julien at efficios.com wrote:
> For stable real time kernel > 4.9, the __migrate_disabled utility symbol
> is not always exported. This can result in linking problem at build time
> and runtime, preventing the loading of the tracer.
>
> The problem was reported to the RT community. [1] [2]
>
> A solution is to access the field directly instead of using the
> utility wrapper.
>
> It is important to note that the field is now available for other
> configurations then only CONFIG_PREEMPT_RT_FULL. For now, we chose to
> support only configuration where CONFIG_PREEMPT_RT_FULL is present.
>
> Based on the configuration dependency of the kernels, selecting
> CONFIG_PREEMPT_RT_FULL ensures the presence of the migrate_disable
> field.
>
> Initial bug report [3].
>
> [1] https://marc.info/?l=linux-rt-users&m=153730414126984&w=2
> [2] https://marc.info/?l=linux-rt-users&m=153729444223779&w=2
> [3] https://lists.lttng.org/pipermail/lttng-dev/2018-September/028216.html
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> lttng-context-migratable.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/lttng-context-migratable.c b/lttng-context-migratable.c
> index bb44c65..e3d8ede 100644
> --- a/lttng-context-migratable.c
> +++ b/lttng-context-migratable.c
> @@ -31,7 +31,7 @@ void migratable_record(struct lttng_ctx_field *field,
> struct lib_ring_buffer_ctx *ctx,
> struct lttng_channel *chan)
> {
> - uint8_t migratable = !__migrate_disabled(current);
> + uint8_t migratable = !current->migrate_disable;
>
> lib_ring_buffer_align_ctx(ctx, lttng_alignof(migratable));
> chan->ops->event_write(ctx, &migratable, sizeof(migratable));
> @@ -42,7 +42,7 @@ void migratable_get_value(struct lttng_ctx_field *field,
> struct lttng_probe_ctx *lttng_probe_ctx,
> union lttng_ctx_value *value)
> {
> - value->s64 = !__migrate_disabled(current);
> + value->s64 = !current->migrate_disable;
> }
>
> int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx)
> --
> 2.17.1
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list