Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp7472962ybp; Wed, 16 Oct 2019 09:09:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqzBpJrhg3bvgdU01l/+EfgiV9NdOirRwIhV2MpNpZLhr/yaqvNWM0yEtdIl3EcW12OqnvnQ X-Received: by 2002:a17:906:2307:: with SMTP id l7mr39156610eja.320.1571242179482; Wed, 16 Oct 2019 09:09:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571242179; cv=none; d=google.com; s=arc-20160816; b=Bb5qSX/0GVFYWN4T6hLDvhIyeTCXeAJiWY5Cy4vN7HFOQfQkF6ZUSjHWvVml0q2exm 7Qzurxqmd1tjHKhreHrZkAhGR2eb1vg5EDX7wj0Dfx1v4kbPSanm3pHX6isDY1Az4AX4 5GJdxOCgPE17RcawrggySxoYWt9lOgJfDhtcae54CT8CHY7mq9f0rKKhysdfW9K7wD5A 3NO0tTlZ8MmfAlkT8JsfVUyrrR9WXU6Wa6UPSLrkgbvx/hXVlEel0Y4qpPtJKf7LZ9kp igRJ+9j8LEouJwNvEGzSmFtnu6RrnCrcGQoYf2Dz9T+kYR7YFs+JyMKoXLb9w/XL2KUa UPLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:mime-version:user-agent:date:message-id:subject :from:cc:to; bh=8VtlzE4X/rXTbFE/qfWNbnESwtwo7c0wKTx7jltqJ/k=; b=brZ7sTYam4N/sj4sXO1Wg2CmCdxsn9ins66Ck3AveIzUkplfqOy7prmNWQ1idr5L8P xEZpuA4a5B9W5gDtNs08EqeLk5QNzdS6SKbJpkrOvGGq46CGsrjxBhByp4FBmbHbsffG hLA7duf8KRBqJ610ba+Wv+aYeOb3P5N9qlVg0wxFuIm2KkSU/TJEdFQwHgLyb63gv8t1 m6qEm9qXpATzPwFRA85arWSR3WR1zUoekLHmgYU1sZmXblMQ4jKUO1Gm+a2kkE8fSZ1k rnGWotxBqPRmSpJYbebQi6YQv34l/iG/dijZQ1FfiiaRAY3eGdbh8ZqDzvifwfSZ5XaH 0c8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f47si17427130ede.263.2019.10.16.09.09.17; Wed, 16 Oct 2019 09:09:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405544AbfJPNuc (ORCPT + 99 others); Wed, 16 Oct 2019 09:50:32 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:50354 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387953AbfJPNub (ORCPT ); Wed, 16 Oct 2019 09:50:31 -0400 Received: from DGGEMS405-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 793C74C11AFACF345F20; Wed, 16 Oct 2019 21:50:29 +0800 (CST) Received: from [127.0.0.1] (10.177.251.225) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.439.0; Wed, 16 Oct 2019 21:50:19 +0800 To: , , , , , , , , , , , , CC: "linux-kernel@vger.kernel.org" , , From: Yunfeng Ye Subject: [PATCH v2] perf jevents: Fix resource leak in process_mapfile() and main() Message-ID: Date: Wed, 16 Oct 2019 21:50:17 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.251.225] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are memory leaks and file descriptor resource leaks in process_mapfile() and main(). Fix this by adding free(), fclose() and free_arch_std_events() on the error paths. Fixes: 80eeb67fe577 ("perf jevents: Program to convert JSON file") Fixes: 3f056b66647b ("perf jevents: Make build fail on JSON parse error") Fixes: e9d32c1bf0cd ("perf vendor events: Add support for arch standard events") Signed-off-by: Yunfeng Ye --- v1 -> v2: - add free(eventsfp) to fix eventsfp resource leaks - add free_arch_std_events() on the error path tools/perf/pmu-events/jevents.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c index e2837260ca4d..99e3fd04a5cb 100644 --- a/tools/perf/pmu-events/jevents.c +++ b/tools/perf/pmu-events/jevents.c @@ -758,6 +758,7 @@ static int process_mapfile(FILE *outfp, char *fpath) char *line, *p; int line_num; char *tblname; + int ret = 0; pr_info("%s: Processing mapfile %s\n", prog, fpath); @@ -769,6 +770,7 @@ static int process_mapfile(FILE *outfp, char *fpath) if (!mapfp) { pr_info("%s: Error %s opening %s\n", prog, strerror(errno), fpath); + free(line); return -1; } @@ -795,7 +797,8 @@ static int process_mapfile(FILE *outfp, char *fpath) /* TODO Deal with lines longer than 16K */ pr_info("%s: Mapfile %s: line %d too long, aborting\n", prog, fpath, line_num); - return -1; + ret = -1; + goto out; } line[strlen(line)-1] = '\0'; @@ -825,7 +828,9 @@ static int process_mapfile(FILE *outfp, char *fpath) out: print_mapping_table_suffix(outfp); - return 0; + fclose(mapfp); + free(line); + return ret; } /* @@ -1122,6 +1127,7 @@ int main(int argc, char *argv[]) goto empty_map; } else if (rc < 0) { /* Make build fail */ + fclose(eventsfp); free_arch_std_events(); return 1; } else if (rc) { @@ -1134,6 +1140,7 @@ int main(int argc, char *argv[]) goto empty_map; } else if (rc < 0) { /* Make build fail */ + fclose(eventsfp); free_arch_std_events(); return 1; } else if (rc) { @@ -1151,6 +1158,8 @@ int main(int argc, char *argv[]) if (process_mapfile(eventsfp, mapfile)) { pr_info("%s: Error processing mapfile %s\n", prog, mapfile); /* Make build fail */ + fclose(eventsfp); + free_arch_std_events(); return 1; } -- 2.7.4.3