From patchwork Fri Oct 8 04:11:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544197 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E4EAC433FE for ; Fri, 8 Oct 2021 04:11:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 12C9061073 for ; Fri, 8 Oct 2021 04:11:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230080AbhJHENZ (ORCPT ); Fri, 8 Oct 2021 00:13:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229470AbhJHENY (ORCPT ); Fri, 8 Oct 2021 00:13:24 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F4D0C061570 for ; Thu, 7 Oct 2021 21:11:30 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id a25so15403379edx.8 for ; Thu, 07 Oct 2021 21:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aC1j+j4opBpSUMYr+31roXG7XhNjCn/YOu9g9949ADk=; b=D/mduiMF+YoEmnhfjYnAZ9/S4OoQSyvMrE2EHd0piEjslEjnjYr0u2fV1UicsQasn/ kcIkN2PGRNuyIuvMXgyH672GxQvaCYnSW/twHaSKfYYtwfPRiUapieWK7MuNMaUCOruy eIF4vG6wr51SaI0IUjFk8B4nTw4ScQPhDuKqiqympqxgROaJNH8lwCjcTLi3xuv3el7D qSF3odDYX8sv64e8EmhZDcmMfeEoKrZsHi4D2lyZso8RRySWyYQv5N893Cdb24vNIt69 AakRTrNMYT7V49tPIyX1RluTnIDWUFrD8SJB/JooXhzEg1B15e5CAlQUZAO0+BaM1NkL EkRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aC1j+j4opBpSUMYr+31roXG7XhNjCn/YOu9g9949ADk=; b=ibNPNcKrelAKEvPpOuvsfeRS6lYRr+uhIaQwJEgfpdrUxwwCLhNh+JlJRlzcFiKd3H nlGh6OKIcz9M2cfKPzr6XFwwn0vZJaoS603huTRsnuZMe9NvQIHi36CMYWjALfpkIBuR qJiEWX8tnGvyuv73Gvj0AxT2xKZOCb21mHtDfAmTIsdcnIwee3CyqoCC6pjXwZZIz5vw eB8u+rhbDvDl1W5G61gab3PWB5aEhQVSUgv7PoTuvmVWpWu/ojsJmp1OWQ0lvBXn6kEm lx2DctTtTI9cj1UBuXid6mFYRkjfvz6hox8onPJmsIsDgWHa4G8bcUVTvsv8eNw3gU38 FFSg== X-Gm-Message-State: AOAM531SdvH/a/e9JcnsLuUlYXcowDW/VfwrpFHpmeIibTNmLi5yMXrb k7Acngb6adEMhsUqtnRXrYd/XrlJ+LR3kA== X-Google-Smtp-Source: ABdhPJz5sGZLokGnUtaAudkFs8DhyDOTXAdjRctxnhIBkn3nH4oaws0bDD1pYDi+lJafcGmx96meiQ== X-Received: by 2002:a17:906:9241:: with SMTP id c1mr1296687ejx.125.1633666288715; Thu, 07 Oct 2021 21:11:28 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:27 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 1/6] trace-cmd library: Do not use local variables when reading CPU stat option Date: Fri, 8 Oct 2021 07:11:19 +0300 Message-Id: <20211008041124.972956-2-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Using a local variable to read all CPUSTAT options assumes that all of them are in a single option section. While this is true for the current trace file version format, this assumption limits the design of a more flexible format with multiple options sections. Use input handler context instead of the local variable. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index ec4c6e55..b4af783b 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -132,6 +132,7 @@ struct tracecmd_input { bool read_page; bool use_pipe; int file_version; + unsigned int cpustats_size; struct cpu_data *cpu_data; long long ts_offset; struct tsc2nsec tsc_calc; @@ -2658,7 +2659,6 @@ static int handle_options(struct tracecmd_input *handle) unsigned short option; unsigned int size; char *cpustats = NULL; - unsigned int cpustats_size = 0; struct input_buffer_instance *buffer; struct hook_list *hook; char *buf; @@ -2736,12 +2736,14 @@ static int handle_options(struct tracecmd_input *handle) break; case TRACECMD_OPTION_CPUSTAT: buf[size-1] = '\n'; - cpustats = realloc(cpustats, cpustats_size + size + 1); + cpustats = realloc(handle->cpustats, + handle->cpustats_size + size + 1); if (!cpustats) return -ENOMEM; - memcpy(cpustats + cpustats_size, buf, size); - cpustats_size += size; - cpustats[cpustats_size] = 0; + memcpy(cpustats + handle->cpustats_size, buf, size); + handle->cpustats_size += size; + cpustats[handle->cpustats_size] = 0; + handle->cpustats = cpustats; break; case TRACECMD_OPTION_BUFFER: /* A buffer instance is saved at the end of the file */ @@ -2811,8 +2813,6 @@ static int handle_options(struct tracecmd_input *handle) } - handle->cpustats = cpustats; - return 0; } From patchwork Fri Oct 8 04:11:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544199 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4887C433F5 for ; Fri, 8 Oct 2021 04:11:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 979B761073 for ; Fri, 8 Oct 2021 04:11:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230158AbhJHEN1 (ORCPT ); Fri, 8 Oct 2021 00:13:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229470AbhJHEN0 (ORCPT ); Fri, 8 Oct 2021 00:13:26 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4565FC061570 for ; Thu, 7 Oct 2021 21:11:31 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id v18so31485479edc.11 for ; Thu, 07 Oct 2021 21:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JB0N+IkxI3DjSH8Wryu9y893rxRfI/Ah/FsE+7MF/JQ=; b=AoWkIM0Z7/NE1dmYyC6+dqeatulUHWk0Ej4fwvWKlC9jXPbabZfVyE0iMyla6q33jV SQZTXTMFOm6SsvrmiE/GwqIN2kzThUZ6PG3TiRo4vOjoVk+t0lE/Mj0txVImaMGIMUXO oxw0CNBSkUY74C/sejgw7oL6Yfg5e6T/VaWhsFCKgXeRfxRDNDHD8RRx7SgQF3H9WR17 mqSJPu4DNt/iMlKY6d3w6546WMe2qLPVdVDDr+IDYHQxOwMoFJQ8SiUytZfQJWA1zB0F dQfsvtwJBqyTpQX+QchNdKkvfAa2dTlcGE8ms/uZCrS5UFQbz7dV5scA33saX02fQp+D lNag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JB0N+IkxI3DjSH8Wryu9y893rxRfI/Ah/FsE+7MF/JQ=; b=X9VoGVznojp+m8log6USTywjEHtGXujzEN0GbvcF6SiSggEmlsMTKn6ajqiOiOShtq bgy/x6m6BorBedbplNx5MDb2JQOadI3AjsFBf9SIDRPgDpN0n80A3Nzd1U7EK+hHHIvJ 7Mx4KUmgKukeRgkUazaPWNJntEm+q2kP4SEh09D72naj4IPi33pFFwtw29V7Jvn10vmE xMFUCqnwcmFrJORDoBbV3j+2KCT+CPWXmJoQHROuXuqGYaJwHUkB0MY6rtMseLIT9huE jeEioarjXDmTFzXoG+bVZ+6EEpjubjVx82qzIdsk1DZsBcMxzKFWf20EchaS5P996Loo sMfg== X-Gm-Message-State: AOAM532zkjq5+Qu6NcG9zfTsSlnHOoD36MBzO+2s0CUguHIIMbdQLDOH 8396jyOg0UIVbzwoZSNEomZrdeak+oGsBw== X-Google-Smtp-Source: ABdhPJzHKg1021nhcDk2oTwfsM4qA+vWXH1/ki5v02LoLlpevtS0YIReAmjkzzNh55FWD5QddSbLiw== X-Received: by 2002:a17:906:3685:: with SMTP id a5mr1293332ejc.144.1633666289931; Thu, 07 Oct 2021 21:11:29 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:29 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 2/6] trace-cmd library: Track maximum CPUs count in input handler Date: Fri, 8 Oct 2021 07:11:20 +0300 Message-Id: <20211008041124.972956-3-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org This clean up is needed for the design of the next trace file version, where only CPUs with trace data could be stored in the file. Each trace instance may have its own CPU count, depending on collected traces. As the main input handler is used by the top trace instance, the CPU count there is for the top trace instance and may differ with cpu counts of the other instances. Added a new "max_cpu" member of the input handler, that tracks the maximum CPU count of all instances, recorded in the file. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index b4af783b..aaafe3a4 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -125,6 +125,7 @@ struct tracecmd_input { int long_size; int page_size; int page_map_size; + int max_cpu; int cpus; int ref; int nr_buffers; /* buffer instances */ @@ -826,6 +827,7 @@ static int read_cpus(struct tracecmd_input *handle) return -1; handle->cpus = cpus; + handle->max_cpu = cpus; tep_set_cpus(handle->pevent, handle->cpus); handle->file_state = TRACECMD_FILE_CPU_COUNT; @@ -2780,6 +2782,9 @@ static int handle_options(struct tracecmd_input *handle) case TRACECMD_OPTION_CPUCOUNT: cpus = *(int *)buf; handle->cpus = tep_read_number(handle->pevent, &cpus, 4); + if (handle->cpus > handle->max_cpu) + handle->max_cpu = handle->cpus; + tep_set_cpus(handle->pevent, handle->cpus); break; case TRACECMD_OPTION_PROCMAPS: if (buf[size-1] == '\0') @@ -4054,7 +4059,7 @@ int tracecmd_page_size(struct tracecmd_input *handle) */ int tracecmd_cpus(struct tracecmd_input *handle) { - return handle->cpus; + return handle->max_cpu; } /** From patchwork Fri Oct 8 04:11:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544201 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62CD1C4332F for ; Fri, 8 Oct 2021 04:11:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2DE9360F44 for ; Fri, 8 Oct 2021 04:11:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229470AbhJHEN1 (ORCPT ); Fri, 8 Oct 2021 00:13:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230151AbhJHEN1 (ORCPT ); Fri, 8 Oct 2021 00:13:27 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B0B2C061570 for ; Thu, 7 Oct 2021 21:11:32 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id d9so7303297edh.5 for ; Thu, 07 Oct 2021 21:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DoYYYzDpvuTeIVBq4MF/XOYQ76lu0LvjPUPbkLzOMhE=; b=E4bUBmJzEbIXT1N7gQKb90kkjaLNtdFchFTKQnsQyA1APIAzlVFrXivmjnupJ5kodV ufIrCttIMdq0KBrNGiLcRiSgkycsVSNS0v4BpxkHt4GTn6X5yK16iS7oZ7fvTKz3UrnN lo6FUzzF+0t3WZ9EFjmInkCkhJ4Mjv8hwktr7WwXSQXL26waCBnEWZF/BhNsyD+6y5Uf 6xbOSX/mqh2o+lLAwcdbN8SFhqcJGGyqr7+zuRDo0cnx9tLqYlnasUnGh61RyTBolTj7 Lzb+UU9DVlDMTmju8xNTkOuyOnil62yGSctMvtCf1zklowQV7HTYvdXFTJZCZcKK4Fp6 MqCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DoYYYzDpvuTeIVBq4MF/XOYQ76lu0LvjPUPbkLzOMhE=; b=haPEnxyPKB5jEdM6OD6SaBHHNC+yrs+y6SaVjoci8fVE4Hwdh6jltke92aaxGARymO l2qfOdYvJ9bIMhMHGQncM5xwmJ53Y1jC11Knj+Ho563I5YXWAWFRDVKzYLHxYw8RyehE wUrCm1VljdGgJXL4fb2XVY+LPXIN0z8giDE4ocAbsIWsU3hVafZWxGlAPcMXXpPx4Tm6 bN45vMWi2LGKDp2gyNvoBwRtXgYQU5bGqwn7cLPCQrRebQ38a3psxHScg3knLx3e/bHu VIVNZ0q1BevrgtHoQH9Addjz3zdojojO3A8M/HlGbp4EdjwnU0gV0OD15C8EHyy4Z0L0 H1Gw== X-Gm-Message-State: AOAM533+SmhUSr0oMKCvD0EF0fQcaby9ACiwyOO7z/McVOhL5GBEiFiZ ALxSbUD57lGbep3ms95LZnWXVgFzht+x0w== X-Google-Smtp-Source: ABdhPJxNgmJWJjU5SiXJ2biube9gNhjPiFGaA15Qil42HSN7sv6tOCEhrFfG6Oi7zH/3CywtzWyvRA== X-Received: by 2002:a17:906:3012:: with SMTP id 18mr1392798ejz.136.1633666291015; Thu, 07 Oct 2021 21:11:31 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:30 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 3/6] trace-cmd library: Fix possible memory leak in read_event_files() Date: Fri, 8 Oct 2021 07:11:21 +0300 Message-Id: <20211008041124.972956-4-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Some error paths in read_event_files() may lead to a memory leak. Improved the error handling of this internal function to avoid it. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 39 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index aaafe3a4..0a42ca4e 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -644,7 +644,7 @@ static int read_ftrace_files(struct tracecmd_input *handle, const char *regex) static int read_event_files(struct tracecmd_input *handle, const char *regex) { unsigned long long size; - char *system; + char *system = NULL; regex_t spreg; regex_t epreg; regex_t *sreg = NULL; @@ -669,13 +669,16 @@ static int read_event_files(struct tracecmd_input *handle, const char *regex) return -1; } - if (read4(handle, &systems) < 0) - return -1; + ret = read4(handle, &systems); + if (ret < 0) + goto out; for (i = 0; i < systems; i++) { system = read_string(handle); - if (!system) - return -1; + if (!system) { + ret = -1; + goto out; + } sys_printed = 0; print_all = 0; @@ -702,39 +705,35 @@ static int read_event_files(struct tracecmd_input *handle, const char *regex) } } - if (read4(handle, &count) < 0) - goto failed; + ret = read4(handle, &count); + if (ret < 0) + goto out; for (x=0; x < count; x++) { - if (read8(handle, &size) < 0) - goto failed; + ret = read8(handle, &size); + if (ret < 0) + goto out; ret = read_event_file(handle, system, size, print_all, &sys_printed, reg); if (ret < 0) - goto failed; + goto out; } free(system); } - - if (sreg) { - regfree(sreg); - regfree(ereg); - } + system = NULL; handle->file_state = TRACECMD_FILE_ALL_EVENTS; - - return 0; - - failed: + ret = 0; + out: if (sreg) { regfree(sreg); regfree(ereg); } free(system); - return -1; + return ret; } static int read_proc_kallsyms(struct tracecmd_input *handle) From patchwork Fri Oct 8 04:11:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544203 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4307AC433EF for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2FF526023E for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232004AbhJHENa (ORCPT ); Fri, 8 Oct 2021 00:13:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230103AbhJHEN2 (ORCPT ); Fri, 8 Oct 2021 00:13:28 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6FBAC061570 for ; Thu, 7 Oct 2021 21:11:33 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id p13so31714333edw.0 for ; Thu, 07 Oct 2021 21:11:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v+CAzJJfh4/oXFeHTwKdVd7sPZBrXixlS+1sARKxW5s=; b=UDl7sTTrXtBP6GbXWzgAv5MPp/h9TF9F+j6RGdj/TT87h2l6t6IHWPErFer2mxAD9m 9kAXZbnrl2J+n/Uvbev3V3K7NMKgU5f9GVcanRlG8PXG6PEVBWTiup99/QJVOfihYI/S c2IAUMXwu4up8lYe3dkXeiwqAP3+tQpag/DJmE16c6RJW2QPPwTZz6yutiRbmlmIad4R SlWPbotFQ6gnEjQP0zVN11gIiwXPJfZJ5LvCEj7C5+b0PQfXe8t835/x4dIZXm+WDAvq +nfQroFPqRdu8A28m+ojNygVq7cD4lb9qjlECP/VJRGW6y+AEz7KcOUEaJfgWkqv5zLC BTFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=v+CAzJJfh4/oXFeHTwKdVd7sPZBrXixlS+1sARKxW5s=; b=spbXWNbZpaThfGwtfAYT2RNLzkX6xs6Pj6Hx4hgetmEqZ1T4cHAFTNChv7Qc9MhQ8w g80qgDhpiIzACwl0jgqXGcl6rxjeL8H7Zmietke0Dimw9nLQ+6DjX1EzUVU72SvjNCto BgMF8ZZclyaS6TJVIMXd6wr8QxTe+RRvOZd+v+PVye6ZS5SrSA26Lfp+9QrG0FmoOB6v A31624oa37VrOiQvVBDsa34zaFfe3P3sjy1vKeTbbm6lxs+nMRMU9qHKGt5cRfLAwODh fMDDRa/p0pMv5kOs5PFAqi7yg9Eea1bdzyJYQBR1Vse/jUm+izz3Byfw5rKMn3ee5e8t p0wQ== X-Gm-Message-State: AOAM5315/YLY1kDs25gn1inbgEi4V0u/NkgQ0WnxTAD/UFA63X2jgnxi cqiMf0UqNTuQeZ5bSFPpiDVkTejtss4wSA== X-Google-Smtp-Source: ABdhPJwbQKmXW7r0GL9ZqncztLWa5up8hNxg4YIQBpxhEryIcpA9hSRgOyQNuc68yrJXm18R29Tqsg== X-Received: by 2002:a17:907:a061:: with SMTP id ia1mr1188977ejc.372.1633666292335; Thu, 07 Oct 2021 21:11:32 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:31 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 4/6] trace-cmd library: Fix possible memory leak in read_ftrace_files() Date: Fri, 8 Oct 2021 07:11:22 +0300 Message-Id: <20211008041124.972956-5-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Some error paths in read_ftrace_files() may lead to a memory leak. Improved the error handling of this internal function to avoid it. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index 0a42ca4e..43491c5b 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -617,28 +617,30 @@ static int read_ftrace_files(struct tracecmd_input *handle, const char *regex) } } - if (read4(handle, &count) < 0) - return -1; + ret = read4(handle, &count); + if (ret < 0) + goto out; for (i = 0; i < count; i++) { - if (read8(handle, &size) < 0) - return -1; + ret = read8(handle, &size); + if (ret < 0) + goto out; ret = read_ftrace_file(handle, size, print_all, ereg); if (ret < 0) - return -1; + goto out; } handle->event_files_start = lseek64(handle->fd, 0, SEEK_CUR); - + handle->file_state = TRACECMD_FILE_FTRACE_EVENTS; + ret = 0; +out: if (sreg) { regfree(sreg); regfree(ereg); } - handle->file_state = TRACECMD_FILE_FTRACE_EVENTS; - - return 0; + return ret; } static int read_event_files(struct tracecmd_input *handle, const char *regex) From patchwork Fri Oct 8 04:11:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544205 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9FB97C433F5 for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8619C60F44 for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230103AbhJHENb (ORCPT ); Fri, 8 Oct 2021 00:13:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230151AbhJHEN3 (ORCPT ); Fri, 8 Oct 2021 00:13:29 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35D89C061755 for ; Thu, 7 Oct 2021 21:11:35 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id p13so31714509edw.0 for ; Thu, 07 Oct 2021 21:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DmmLAI7veNsI3n+A2BZLJ5hpsAwaRxqrx1oXAKYVg88=; b=Q04sASSOP8/1BdlwcvVs+jICNnowddsSfWD0dst49RhbN3u8+Ku7I/UVrpNcOlJRiK AzDaiO1VTAFQ2hgxbiVc/J+M8Q25KpH0FDzwDEUub4sEa2TqCrocNm8lYSngILjep4mc KFPiT/5FH53G1CtoeXOZT5nGzDQh+z/bywApCpnc1TfE0Sqg84exYxZhBU04oTM+Zi2D ph116vJ/cg6Sgn56IT9jZubTnSHHNPWFvuOUVinhHWYm1GqMJK/DWEnCT+8pOwCdR0F/ /s1Hu8ypMvBmoYED/JcvOdfUjHMrspIKJJn7vMuZygVJBjvL1TLj9FpFTghIykMIrFYb JUFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DmmLAI7veNsI3n+A2BZLJ5hpsAwaRxqrx1oXAKYVg88=; b=gPzsw0A1dTnRcavJEJFTcuq90dYdLF+AoYRDDZnLY63AxpfDIMysdUIQ9tnLnJk4ut enBcktBp0yAIwIDkdum2qgutP425TScOD23g0G457VzXXR/wTcS6uXns4UeHwLa9GmMg N4Lqs5iYNJpVMdPmQAJUeCIdw7RR1YzTu4wK+1Vy0w3/GMinNy1JARWb14ebY5PEWFBq RjQhb9lSOXRnYAyCNI0sFyRq6X31TKltaE1D1+xghjZKIyAs839Hmi+7YvMrRpp/+6vL binSKz/DiLIWvZp+aJRW0bHq+8KQwwgbY92S19ukEQjQVYl7uq8igCtBi/DLiMdTVW52 gTJQ== X-Gm-Message-State: AOAM531oE1LcQLg4Dpiyo+wR72hVH3pSXargnPJ3qOM1bQ4hwXRLGOoU Mil7pcAd1PToVH9BXNz4RLoiJDvfbgT4Xg== X-Google-Smtp-Source: ABdhPJwUCVcdy/fNfu24V32gjjY0nhJIDyKKotbPyHgisA5OIseoY0r8PpQSyL7ljt6gxNY6oXSWyg== X-Received: by 2002:a17:906:3745:: with SMTP id e5mr1255753ejc.400.1633666293792; Thu, 07 Oct 2021 21:11:33 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:32 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 5/6] trace-cmd library: Set the correct file state when reading file with no kallsyms Date: Fri, 8 Oct 2021 07:11:23 +0300 Message-Id: <20211008041124.972956-6-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The kallsyms section of the trace file can contain no data, this is valid use case. When such file is read and parsed by read_proc_kallsyms(), the file state should be set to TRACECMD_FILE_KALLSYMS in that case. Renamed a local variable from pevent to tep, to be consistent with the libtraceevent prefix. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index 43491c5b..f3677ad3 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -740,7 +740,7 @@ static int read_event_files(struct tracecmd_input *handle, const char *regex) static int read_proc_kallsyms(struct tracecmd_input *handle) { - struct tep_handle *pevent = handle->pevent; + struct tep_handle *tep = handle->pevent; unsigned int size; char *buf; @@ -749,8 +749,10 @@ static int read_proc_kallsyms(struct tracecmd_input *handle) if (read4(handle, &size) < 0) return -1; - if (!size) + if (!size) { + handle->file_state = TRACECMD_FILE_KALLSYMS; return 0; /* OK? */ + } buf = malloc(size+1); if (!buf) @@ -761,7 +763,7 @@ static int read_proc_kallsyms(struct tracecmd_input *handle) } buf[size] = 0; - tep_parse_kallsyms(pevent, buf); + tep_parse_kallsyms(tep, buf); free(buf); From patchwork Fri Oct 8 04:11:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544207 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB54FC433FE for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D697E60E73 for ; Fri, 8 Oct 2021 04:11:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230151AbhJHENb (ORCPT ); Fri, 8 Oct 2021 00:13:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232118AbhJHENb (ORCPT ); Fri, 8 Oct 2021 00:13:31 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6DABC061570 for ; Thu, 7 Oct 2021 21:11:36 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id g8so31186733edt.7 for ; Thu, 07 Oct 2021 21:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YWwT8QESWnfJO9AaUGKJSeFXn1dqURaIgDryKFiWNto=; b=TewJG4l9olDSt69y/CWhU/RjMWLGUVU+F6LK6DtJpWOozrYm1NA6qJ0rVg9ZhptSv1 sxl4EvMZKsfQTQSszNY+4zHKY6af9AWOL9uDTYCWzGtDD44KhDoEcCDq4A2SUZeniTT5 3NAnqPlU0TyLYA2i94rnu/wqYR95Q7f1WGB+DIHfyOfpuGP/c49pcNUjgFkxyi2o4Buy Q6aDDoC+WEVnXjW+z0DMbWumTmMY9jWBHjlHz+9OX6reLDtjt+kAfLPbVAt6KBskGdcE Y/yAO7PQx3RqgAMmBupaImRYGKDHdCs4hjnXq31lcnZ/GAInE/o81TpAHg0D0H4f5Uyi Kbmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YWwT8QESWnfJO9AaUGKJSeFXn1dqURaIgDryKFiWNto=; b=NeH6x5qtjV4I59yjgbie6xQRBZk5fx69BX0xkwrfv2L5GTK4t4lmbMWcjCSKLIT1Q0 cumV1ELMXUkTqnzIdZgV74LPTOlgV9NG7JDupY/Mg+SVL0lr2VTZK4eiFQwYzrUEFZNb DN61pDx1KVBBb+CsfajFxugo5Tb//J+nyuvChfle1Uwe8lfIsx++jzfwVWG3lbq+UBcE z4sXRkoweSB8m3piFLzcBnmkQ8jeq7gYoWFMrI2q4PLjVXhgMwVPSrdfeYfGJDs3f48t ZGaX40Coovqm0Jpv6+2v5JT9bJff69dc8L2niOepkFOyJ0ebhnTh0b06iwYJY8LoN3Wf 7i4g== X-Gm-Message-State: AOAM533khLcAHP63qBkJb4KaF9+2XW6PjK9RsPYdSCLuFa8TtZIxsT48 CTvkcDmG48J6lrexiSlzh/vVKm57W99AiQ== X-Google-Smtp-Source: ABdhPJz5eiXaOTQGXa5UEZVNBkDcFsE0bK570wbPKgfHkMYTv/m6BlIfOyN1uOflSkc0Zz8QMgtPkw== X-Received: by 2002:a50:d88a:: with SMTP id p10mr11587201edj.274.1633666295322; Thu, 07 Oct 2021 21:11:35 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id s3sm447970ejm.49.2021.10.07.21.11.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:11:34 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v4 6/6] trace-cmd library: Set the correct file state when reading file with no ftrace printk data Date: Fri, 8 Oct 2021 07:11:24 +0300 Message-Id: <20211008041124.972956-7-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008041124.972956-1-tz.stoyanov@gmail.com> References: <20211008041124.972956-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The ftrace printk section of the trace file can contain no data, this is valid use case. When such file is read and parsed by read_ftrace_printk, the file state should be set to TRACECMD_FILE_PRINTK in that case. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/trace-cmd/trace-input.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index f3677ad3..38c7a3b8 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -782,8 +782,10 @@ static int read_ftrace_printk(struct tracecmd_input *handle) if (read4(handle, &size) < 0) return -1; - if (!size) + if (!size) { + handle->file_state = TRACECMD_FILE_PRINTK; return 0; /* OK? */ + } buf = malloc(size + 1); if (!buf)