Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp4990743ybv; Wed, 26 Feb 2020 06:34:42 -0800 (PST) X-Google-Smtp-Source: APXvYqwMBZQ4oG24BAdz62o42rDz9CvX+38NfIu2vgUmcUQPsQLc7z6kXMXmOnrJi1dYrxCzcKCn X-Received: by 2002:a05:6830:22f2:: with SMTP id t18mr3383374otc.290.1582727681736; Wed, 26 Feb 2020 06:34:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582727681; cv=none; d=google.com; s=arc-20160816; b=S6i9Nwi4egHrTJS1OYrc2Z3F+hhbtGQVyOsrxFm8LqPip4yFfoyWPbd+C9DCvMxtvb BA62W8TUZuR6ndvZt9hZCnl4CEKLKSi4qLzuLruLeY5jSZd8qz7hNAXVfg92mvInT1sG EciId9O/cE9kNz0dKhZEunrY+2y39fcnHQ1loQCjcQ0OcpIU8Gfe+YDkbE+VZb5kc5iL qD9ZJUQc/QD9LYxFAw35NWLUb9NWy1WW+MfDTKTLsLi9ZlO7mt5jqQ0MeLB0Sro9bNAi D74uwuX/9kwDyzliuIIKGk8kDhZC9Vt9DVOtVNM/Adjg1+2r34k2XIVXoCKjsg3RpuvG YaNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:to :from; bh=y0DCEkfa0A+b2lqrkkE2LCTOLatb891awYYX3DrV+L8=; b=WtimovRgDNPdSt7PzaygG73kXtvnYGEB+gobxehOoPY1oDpFY4E8vG9Sa1QC7xTKjr owi+AGtmHZ8k1wNvnF5pc3j8GCUJdOvd+eG71Y50eK2F6f5b69jynvlE4freJIS8D/8D V8rOpNdlGTV0oHKF7GVC/qT+5EOdIIqOaSiK64hju+VsCdkZs1UdQ42uJ3ehi/PH14TN O6lZM3v7PqlChTETxwk0bqnxpDgqrHUXS3u48+XubLOJpDGD0uKSV5AdY9s+zfBxnG9W 9uF3fVtEVl0Jab4WwDsdZur1UWAZ5c0aFrxGkSB6Vxjh4CrWy4HMmNIOpiwjMnerfM2n JgBQ== 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 n2si1430852otq.315.2020.02.26.06.34.26; Wed, 26 Feb 2020 06:34:41 -0800 (PST) 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 S1727479AbgBZOdM (ORCPT + 99 others); Wed, 26 Feb 2020 09:33:12 -0500 Received: from mail5.windriver.com ([192.103.53.11]:50988 "EHLO mail5.wrs.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727069AbgBZOdL (ORCPT ); Wed, 26 Feb 2020 09:33:11 -0500 Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail5.wrs.com (8.15.2/8.15.2) with ESMTPS id 01QEUIue031827 (version=TLSv1 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 26 Feb 2020 06:30:29 -0800 Received: from pek-lpg-core2.corp.ad.wrs.com (128.224.153.41) by ALA-HCA.corp.ad.wrs.com (147.11.189.40) with Microsoft SMTP Server id 14.3.468.0; Wed, 26 Feb 2020 06:30:08 -0800 From: To: , , , , , , , , , , , Subject: [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM Date: Wed, 26 Feb 2020 22:30:04 +0800 Message-ID: <1582727404-180095-1-git-send-email-zhe.he@windriver.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: He Zhe strlist__add may fail with -ENOMEM. Check it and give debugging hint in advance. Signed-off-by: He Zhe --- v2: Only catch -ENOMEM tools/perf/builtin-probe.c | 6 ++++-- tools/perf/util/probe-file.c | 28 ++++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 26bc5923e6b5..70548df2abb9 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c @@ -449,7 +449,8 @@ static int perf_del_probe_events(struct strfilter *filter) ret = probe_file__del_strlist(kfd, klist); if (ret < 0) goto error; - } + } else if (ret == -ENOMEM) + goto error; ret2 = probe_file__get_events(ufd, filter, ulist); if (ret2 == 0) { @@ -459,7 +460,8 @@ static int perf_del_probe_events(struct strfilter *filter) ret2 = probe_file__del_strlist(ufd, ulist); if (ret2 < 0) goto error; - } + } else if (ret2 == -ENOMEM) + goto error; if (ret == -ENOENT && ret2 == -ENOENT) pr_warning("\"%s\" does not hit any event.\n", str); diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c index cf44c05f89c1..b6a7e8b7aaab 100644 --- a/tools/perf/util/probe-file.c +++ b/tools/perf/util/probe-file.c @@ -307,10 +307,15 @@ int probe_file__get_events(int fd, struct strfilter *filter, p = strchr(ent->s, ':'); if ((p && strfilter__compare(filter, p + 1)) || strfilter__compare(filter, ent->s)) { - strlist__add(plist, ent->s); + ret = strlist__add(plist, ent->s); + if (ret == -ENOMEM) { + pr_err("strlist__add failed with -ENOMEM\n"); + goto out; + } ret = 0; } } +out: strlist__delete(namelist); return ret; @@ -517,7 +522,11 @@ static int probe_cache__load(struct probe_cache *pcache) ret = -EINVAL; goto out; } - strlist__add(entry->tevlist, buf); + ret = strlist__add(entry->tevlist, buf); + if (ret == -ENOMEM) { + pr_err("strlist__add failed with -ENOMEM\n"); + goto out; + } } } out: @@ -678,7 +687,12 @@ int probe_cache__add_entry(struct probe_cache *pcache, command = synthesize_probe_trace_command(&tevs[i]); if (!command) goto out_err; - strlist__add(entry->tevlist, command); + ret = strlist__add(entry->tevlist, command); + if (ret == -ENOMEM) { + pr_err("strlist__add failed with -ENOMEM\n"); + goto out_err; + } + free(command); } list_add_tail(&entry->node, &pcache->entries); @@ -859,9 +873,15 @@ int probe_cache__scan_sdt(struct probe_cache *pcache, const char *pathname) break; } - strlist__add(entry->tevlist, buf); + ret = strlist__add(entry->tevlist, buf); + free(buf); entry = NULL; + + if (ret == -ENOMEM) { + pr_err("strlist__add failed with -ENOMEM\n"); + break; + } } if (entry) { list_del_init(&entry->node); -- 2.24.1