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.12.3~6 X-Git-Url: https://git.liburcu.org/?p=lttng-tools.git;a=commitdiff_plain;h=0d2ff68f1830682b13e903690d6410262dad201e 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 cf9c12b3c..81e32bed9 100644 --- a/src/bin/lttng-sessiond/modprobe.c +++ b/src/bin/lttng-sessiond/modprobe.c @@ -486,7 +486,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); @@ -500,7 +500,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; }