From: Mathieu Desnoyers Date: Wed, 3 Feb 2021 15:21:42 +0000 (-0500) Subject: Fix: use MT-safe strtok_r in multithreaded context X-Git-Tag: v2.11.6~1 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=81d58936ceb13b491c1bceffae0219f275b38fc2 Fix: use MT-safe strtok_r in multithreaded context append_list_to_probes uses the non-multithread-safe "strtok" while in multithreaded context. It is called by modprobe_lttng_data(), which is called from init_kernel_tracer(). init_kernel_tracer is used from main() after other threads are created, and also from process_client_msg() when a user attempts to interact with the kernel domain if the kernel tracer has not yet been successfully initialized. Fixed by using the MT-safe strtok_r() instead. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau Change-Id: Ic3f81551b8508451e0f9733c5de56a4d4407b813 --- diff --git a/src/bin/lttng-sessiond/modprobe.c b/src/bin/lttng-sessiond/modprobe.c index d63483481..23d4536b1 100644 --- a/src/bin/lttng-sessiond/modprobe.c +++ b/src/bin/lttng-sessiond/modprobe.c @@ -496,7 +496,7 @@ static int append_list_to_probes(const char *list) { char *next; int ret; - char *tmp_list, *cur_list; + char *tmp_list, *cur_list, *saveptr; assert(list); @@ -510,7 +510,7 @@ static int append_list_to_probes(const char *list) size_t name_len; struct kern_modules_param *cur_mod; - next = strtok(cur_list, ","); + next = strtok_r(cur_list, ",", &saveptr); if (!next) { break; }