Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp758786ybg; Wed, 23 Oct 2019 05:33:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqytfPRwAHjM5wdWc8lKpfxYU14lOSg19lfTmxuIT3FxNnuCAhEDWzzZXhI8LlecgXW/9r/L X-Received: by 2002:aa7:c259:: with SMTP id y25mr36562151edo.117.1571834032892; Wed, 23 Oct 2019 05:33:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571834032; cv=none; d=google.com; s=arc-20160816; b=tKKGIDgnbzWPGmJ53qRSWdiY0B3JAMs8sngd1LKqcwBrp1Cc+DuUYyIdnedHilLyb3 FeH1bMhhJHyXdpZbX0xlWASl/YjFwdrYTqVpXBVUHl1tLMelVQBDVPM0DHu25EHP+fTX JDCIUCT5g4ThXvElrANaIMuTNrTk5Xsp6yjq7qdGMb1ax+CpSOU0RO+VW3XaOIZ07OyA w5Sd5Vz5pmYkxniiO2bbicwIIopTpzpey1ao5mJry7M2qJ5yXaJBAU5yDErStjxnjHWz 45nkKaOO7YgUhsjzdJtl/bS6BKAEjWhQi4Nh0+97R0y1jOypG2nvnAYV91m5oQo/tXoK wOvQ== 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:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=tgtkWrnfgCHJmDNG0y8RXgk9J5DjDuBo6JKjYi6qKms=; b=AUPGSZ9BcyW/RZ/dA5cIxDHOv7aEGxVVto8vVWMUq+1cz5scpxwbKgGCyQNjJ6t2gB YcUvyYJa0YXnwVNlDEp9JtBV52hjrZGPp24eorxRnM2I6uo0iZaG/aC4TKmO9d3RKj38 DWM3TSLibVaH0DJv64j80OFquKUr+sR7JlArYHwJ7K8UdtOE3vp3Uu3+03gdTmGf6jXt EkQ4X1SjaOOt2NDE1jziP9liPDNRSYgbZeo/CaAXEL0q41PBw10BqJbjYEFItRFIlgNX sVg0rXfBTesRVK7w3U3yyxlEukFrjfc88kBDa+O6TJ0q9CJwJoTVJDvhlKj/w9M9wAnQ lj3Q== 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 k63si15771468edc.347.2019.10.23.05.33.28; Wed, 23 Oct 2019 05:33:52 -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 S2390146AbfJWIWs (ORCPT + 99 others); Wed, 23 Oct 2019 04:22:48 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:4708 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2390079AbfJWIWs (ORCPT ); Wed, 23 Oct 2019 04:22:48 -0400 Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 71AC8803911819FBA876; Wed, 23 Oct 2019 16:22:44 +0800 (CST) Received: from [127.0.0.1] (10.177.251.225) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.439.0; Wed, 23 Oct 2019 16:22:37 +0800 Subject: Re: [PATCH v2] perf jevents: Fix resource leak in process_mapfile() and main() To: Arnaldo Carvalho de Melo CC: , , , , , , , , , , , "linux-kernel@vger.kernel.org" , , References: <20191016142536.GH22835@kernel.org> From: Yunfeng Ye Message-ID: Date: Wed, 23 Oct 2019 16:22:25 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20191016142536.GH22835@kernel.org> 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 On 2019/10/16 22:25, Arnaldo Carvalho de Melo wrote: > Em Wed, Oct 16, 2019 at 09:50:17PM +0800, Yunfeng Ye escreveu: >> 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") > > Nice, thanks for adding the fixes line, I looked at those three patches > and indeed they were leaky, thanks for the fixes, we shouldn't have > those leaks even if that, for now, makes the tool to end anyway. > The other 3 patchs have been applied, is this patch applied ? thanks. > - Arnaldo > >> 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 >