X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Fuserspace-probe.c;h=e85c3c56fc67eea6163b5442694a1855332892ad;hb=f98f5b9fd64d8e0cf3a7142af1b9148d4d003283;hp=5bbaccc572d5a296ab1d4fdd5d2d607e5abd7d95;hpb=94c21ac9e2aa9ded49e754378d2e58138a3b2979;p=lttng-tools.git diff --git a/src/common/userspace-probe.c b/src/common/userspace-probe.c index 5bbaccc57..e85c3c56f 100644 --- a/src/common/userspace-probe.c +++ b/src/common/userspace-probe.c @@ -413,17 +413,20 @@ lttng_userspace_probe_location_function_copy( goto error; } - /* Duplicate the binary fd */ + /* + * Duplicate the binary fd if possible. The binary fd can be -1 on + * listing + */ fd = lttng_userspace_probe_location_function_get_binary_fd(location); - if (fd == -1) { - ERR("Error getting file descriptor to binary"); - goto error; - } - - new_fd = dup(fd); - if (new_fd == -1) { - PERROR("Error duplicating file descriptor to binary"); - goto error; + if (fd > -1) { + new_fd = dup(fd); + if (new_fd == -1) { + PERROR("Error duplicating file descriptor to binary"); + goto error; + } + } else { + /* The original fd is not set. */ + new_fd = -1; } /* @@ -509,15 +512,15 @@ lttng_userspace_probe_location_tracepoint_copy( /* Duplicate the binary fd */ fd = lttng_userspace_probe_location_tracepoint_get_binary_fd(location); - if (fd == -1) { - ERR("Error getting file descriptor to binary"); - goto error; - } - - new_fd = dup(fd); - if (new_fd == -1) { - PERROR("Error duplicating file descriptor to binary"); - goto error; + if (fd > -1) { + new_fd = dup(fd); + if (new_fd == -1) { + PERROR("Error duplicating file descriptor to binary"); + goto error; + } + } else { + /* The original fd is not set. */ + new_fd = -1; } /* @@ -1171,18 +1174,21 @@ int lttng_userspace_probe_location_tracepoint_create_from_buffer( probe_name = lttng_strndup(probe_name_src, LTTNG_SYMBOL_NAME_LEN); if (!probe_name) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate probe name"); + ret = -LTTNG_ERR_INVALID; goto end; } provider_name = lttng_strndup(provider_name_src, LTTNG_SYMBOL_NAME_LEN); if (!provider_name) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate provider name"); + ret = -LTTNG_ERR_INVALID; goto end; } binary_path = lttng_strndup(binary_path_src, LTTNG_PATH_MAX); if (!binary_path) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate binary path"); + ret = -LTTNG_ERR_INVALID; goto end; }