X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel.c;h=a9151f4d6ffae2a4b56f7ea652b4058b408a37b5;hb=b01421cf2672b659313e77f26e1b885a3d8c28f4;hp=2aeef263d6bd38c7238db96b0c99de4d230bdee2;hpb=834978fd9e2392f20867351ca99bf7bdf31b4f56;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index 2aeef263d..a9151f4d6 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -26,6 +26,7 @@ #include #include +#include #include #include "consumer.h" @@ -172,6 +173,7 @@ error: /* * Create a kernel event, enable it to the kernel tracer and add it to the * channel event list of the kernel session. + * We own filter_expression and filter. */ int kernel_create_event(struct lttng_event *ev, struct ltt_kernel_channel *channel) @@ -698,6 +700,7 @@ int kernel_validate_version(int tracer_fd) { int ret; struct lttng_kernel_tracer_version version; + struct lttng_kernel_tracer_abi_version abi_version; ret = kernctl_tracer_version(tracer_fd, &version); if (ret < 0) { @@ -706,17 +709,28 @@ int kernel_validate_version(int tracer_fd) } /* Validate version */ - if (version.major != KERN_MODULES_PRE_MAJOR - && version.major != KERN_MODULES_MAJOR) { + if (version.major != VERSION_MAJOR) { + ERR("Kernel tracer major version (%d) is not compatible with lttng-tools major version (%d)", + version.major, VERSION_MAJOR); goto error_version; } - - DBG2("Kernel tracer version validated (major version %d)", version.major); + ret = kernctl_tracer_abi_version(tracer_fd, &abi_version); + if (ret < 0) { + ERR("Failed at getting lttng-modules ABI version"); + goto error; + } + if (abi_version.major != LTTNG_MODULES_ABI_MAJOR_VERSION) { + ERR("Kernel tracer ABI version (%d.%d) is not compatible with expected ABI major version (%d.*)", + abi_version.major, abi_version.minor, + LTTNG_MODULES_ABI_MAJOR_VERSION); + goto error; + } + DBG2("Kernel tracer version validated (%d.%d, ABI %d.%d)", + version.major, version.minor, + abi_version.major, abi_version.minor); return 0; error_version: - ERR("Kernel major version %d is not compatible (supporting <= %d)", - version.major, KERN_MODULES_MAJOR) ret = -1; error: