Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp208517pxb; Mon, 13 Sep 2021 17:11:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPTrFlLZT+dBt42z5l1fRKKbpSAUYWSjMuAJsyCsIjVZOhcXlgynEmt675I/fBNBsFeZS+ X-Received: by 2002:aa7:d74f:: with SMTP id a15mr11185515eds.374.1631578291263; Mon, 13 Sep 2021 17:11:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631578291; cv=none; d=google.com; s=arc-20160816; b=n+4i8xDBzSCSj0m7m3YS4xoCGsufL1+K3kHkJiJ7WXfe220GcmE30BkzwdwOs7EaDN cwoWeUHVSuoGZvMHu2Z+wHcZlL0IsgNAQJmSIn16JOK3AeTNsLkQq2ECMf4RZv28x8j1 IREdoP3HTkrTlMeIxXh+5EzKwtDEXZ/gXFyvzGLyt3LiveaYOE63UiQtqNZWCBcgZAg3 O92Q6rKxJioEluhTGIc1w/670H9bJUMCNYTpSrSmgSTfesaP07VBnjv5BmPWg6jzRR25 HKFe/gq2czWixWH8aBfgmje89lK1xfInWXhRjd7OjXxQivMJFV7niLBrmhboweTszXjs ofQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=BiBLsiPP5VWhxuVtKaFHukigo6QYmYW4Xeq/ul698ZY=; b=WBpod5n9oqp1VsWZEzxSHoDFPxO4eylD0RNbw/M4J2ph7KyYpNS4FHuEs1lpBsr6s6 RCGJPuHo/IpCWW0noo+3bWAB/LqRDLtwSu4BRNzE3+o0+YZAGd4pyG0v87N1tg/swT+o VCd6Zm6HRV79sbLfWuVScuB+UWHCNjCxTZxIPZRoNqaVoerLX/Rf1RLkkFBwaAIDSAnE 7aZlWpk66c3ePoGnzIlfBay0bm2/720TqO/XVuicvpMzCqN4FFPMpj2sA4dswlwv1RPj 1FO7h78WgL9jlmhpdSbH5YfLihOjmOKm3/pL5D3odDJZtqUmFiaaCRpJNwfMzhjs2/lB vEsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TzT72C9v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w9si10007232edx.466.2021.09.13.17.09.50; Mon, 13 Sep 2021 17:11:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TzT72C9v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344109AbhIMOEL (ORCPT + 99 others); Mon, 13 Sep 2021 10:04:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:48182 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344015AbhIMOBq (ORCPT ); Mon, 13 Sep 2021 10:01:46 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9E44061A38; Mon, 13 Sep 2021 13:38:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631540296; bh=ZXauSCTpwYPulSdlr4QkFP9UZG4JTRhMG+rUoiz/kSY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TzT72C9vuBYFjZMnKm5z+LEtk354fb240ISxffPy70UWCNpt2lTzbbOi5pC1nyj/O K7G7XsKJwGFnBCnHcvrBSQiSQJ3G9fp87U6CTyyE+n60yPihVFKnpCFo3Sl6XV2C/k 5hRcTVsflCt4NqMFdhHs8Dqiuuf8aEM/9dwJiLtE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Quentin Monnet , Andrii Nakryiko , Sasha Levin Subject: [PATCH 5.13 135/300] tools: Free BTF objects at various locations Date: Mon, 13 Sep 2021 15:13:16 +0200 Message-Id: <20210913131113.958081946@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210913131109.253835823@linuxfoundation.org> References: <20210913131109.253835823@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Quentin Monnet [ Upstream commit 369e955b3d1c12f6ec2e51a95911bb80ada55d79 ] Make sure to call btf__free() (and not simply free(), which does not free all pointers stored in the struct) on pointers to struct btf objects retrieved at various locations. These were found while updating the calls to btf__get_from_id(). Fixes: 999d82cbc044 ("tools/bpf: enhance test_btf file testing to test func info") Fixes: 254471e57a86 ("tools/bpf: bpftool: add support for func types") Fixes: 7b612e291a5a ("perf tools: Synthesize PERF_RECORD_* for loaded BPF programs") Fixes: d56354dc4909 ("perf tools: Save bpf_prog_info and BTF of new BPF programs") Fixes: 47c09d6a9f67 ("bpftool: Introduce "prog profile" command") Fixes: fa853c4b839e ("perf stat: Enable counting events for BPF programs") Signed-off-by: Quentin Monnet Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20210729162028.29512-5-quentin@isovalent.com Signed-off-by: Sasha Levin --- tools/bpf/bpftool/prog.c | 5 ++++- tools/perf/util/bpf-event.c | 4 ++-- tools/perf/util/bpf_counter.c | 3 ++- tools/testing/selftests/bpf/prog_tests/btf.c | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index da4846c9856a..a51bf4c69879 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -778,6 +778,8 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode, kernel_syms_destroy(&dd); } + btf__free(btf); + return 0; } @@ -1897,8 +1899,8 @@ static char *profile_target_name(int tgt_fd) struct bpf_prog_info_linear *info_linear; struct bpf_func_info *func_info; const struct btf_type *t; + struct btf *btf = NULL; char *name = NULL; - struct btf *btf; info_linear = bpf_program__get_prog_info_linear( tgt_fd, 1UL << BPF_PROG_INFO_FUNC_INFO); @@ -1922,6 +1924,7 @@ static char *profile_target_name(int tgt_fd) } name = strdup(btf__name_by_offset(btf, t->name_off)); out: + btf__free(btf); free(info_linear); return name; } diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c index cdecda1ddd36..17a9844e4fbf 100644 --- a/tools/perf/util/bpf-event.c +++ b/tools/perf/util/bpf-event.c @@ -296,7 +296,7 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session, out: free(info_linear); - free(btf); + btf__free(btf); return err ? -1 : 0; } @@ -486,7 +486,7 @@ static void perf_env__add_bpf_info(struct perf_env *env, u32 id) perf_env__fetch_btf(env, btf_id, btf); out: - free(btf); + btf__free(btf); close(fd); } diff --git a/tools/perf/util/bpf_counter.c b/tools/perf/util/bpf_counter.c index 5ed674a2f55e..a14f0098b343 100644 --- a/tools/perf/util/bpf_counter.c +++ b/tools/perf/util/bpf_counter.c @@ -74,8 +74,8 @@ static char *bpf_target_prog_name(int tgt_fd) struct bpf_prog_info_linear *info_linear; struct bpf_func_info *func_info; const struct btf_type *t; + struct btf *btf = NULL; char *name = NULL; - struct btf *btf; info_linear = bpf_program__get_prog_info_linear( tgt_fd, 1UL << BPF_PROG_INFO_FUNC_INFO); @@ -99,6 +99,7 @@ static char *bpf_target_prog_name(int tgt_fd) } name = strdup(btf__name_by_offset(btf, t->name_off)); out: + btf__free(btf); free(info_linear); return name; } diff --git a/tools/testing/selftests/bpf/prog_tests/btf.c b/tools/testing/selftests/bpf/prog_tests/btf.c index 0457ae32b270..5b7dd3227b78 100644 --- a/tools/testing/selftests/bpf/prog_tests/btf.c +++ b/tools/testing/selftests/bpf/prog_tests/btf.c @@ -4384,6 +4384,7 @@ skip: fprintf(stderr, "OK"); done: + btf__free(btf); free(func_info); bpf_object__close(obj); } -- 2.30.2