Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp222153pxb; Mon, 13 Sep 2021 17:33:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxik9c060THWU19JX0No+gISXTFwFsGSSKiPsEvOKHSN8HzaRinbe7xOkOcqX8A2kE0AstH X-Received: by 2002:a17:906:5384:: with SMTP id g4mr15613549ejo.27.1631579609106; Mon, 13 Sep 2021 17:33:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631579609; cv=none; d=google.com; s=arc-20160816; b=a0KC3W2JnSix+7PQ1ztqGNPiCEEMCv9jlovTdFi5WonC3DuufEJPELJGFuh13fyGq6 8122LPnNB+LT5UmNgGxupLHb3yQkz3DJiV3g8w7nyUVC3zNnSVuCuq4O1ZTp0djYPlua 0sohPVhB+YjAkAVBvQ0CFWcznxij4wCwzBikXrSMvn0babnT+XoTJnf/br1wW8teFTYL K/aGboQ0GnIvIG7mcfmwzDSrakNzxLGKC98N5VU4XJ/zMG8V6vcfmWFTLrPRlyBctlQd SFIk0W53fI4TmDGXE6nJ4ENUA1OsAwApiZkvC8swigEiotPSiczaSF7514VzTupAwOde Ntuw== 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=jBLcgdsGUl6T27pgwHPPK+lolFwJO+5HKmmxGSFDjMc=; b=D7qZhMasoNXwalTp+a0xBr6DHG+dUMDcdU87lSJQW4QxA3IhVlL45iBiXA8++4B6yt /U+3hb1KQPXuS/sryzmA31W2s5sqGnS+eTnVYXdf0g+9wxXnmTkg4wKUPtCpA3Fyfvxw 617Rfy2UdUk/mD7+rp29YZFJRPf+kI+toVjArdWmqQTpEWRFh15O0p7NvETuFkJk6Xz4 hakB2jxzXIRS/aHW/qKzhWKrSz+xZZKrbote1tOWzbQu9B+NNoC5bEGXMSc8l9oFvOhV Sze601D/oxZg+2ihH4cd2kKwAvkxVhb3h48Xid/WUeIwG4sfLpAUeqcSaPZ2iZhuaCd3 SAcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=JgZymja0; 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 i11si12976600edb.418.2021.09.13.17.33.06; Mon, 13 Sep 2021 17:33:29 -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=JgZymja0; 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 S1347759AbhIMOfa (ORCPT + 99 others); Mon, 13 Sep 2021 10:35:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:51236 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347022AbhIMOaI (ORCPT ); Mon, 13 Sep 2021 10:30:08 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2AB1261B7B; Mon, 13 Sep 2021 13:50:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631541053; bh=RgpHTXCjyFbIXMO4IbN1PHL/wSaW+/QhGP03vHOltTQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JgZymja0DA2Q3XlV2lfbaQK2YbgHlMYLdXXr6+b+K55vdL9HS+87I8gQCyDTajhVF 3eHhIaC24ka0eaNYqFEujWjV6I/wQ28xti+ZzSfvf6w5Y+p50qzQ1Nkf5cmHVChp4o HzmvC12KpfyJUju+o59rtRf/QYAG5H/rtEsiA7Bo= 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.14 144/334] tools: Free BTF objects at various locations Date: Mon, 13 Sep 2021 15:13:18 +0200 Message-Id: <20210913131118.221779565@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210913131113.390368911@linuxfoundation.org> References: <20210913131113.390368911@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 cc48726740ad..9d709b427665 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -781,6 +781,8 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode, kernel_syms_destroy(&dd); } + btf__free(btf); + return 0; } @@ -2002,8 +2004,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); @@ -2027,6 +2029,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 8150e03367bb..beca55129b0b 100644 --- a/tools/perf/util/bpf_counter.c +++ b/tools/perf/util/bpf_counter.c @@ -64,8 +64,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); @@ -89,6 +89,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 857e3f26086f..68e415f4d33c 100644 --- a/tools/testing/selftests/bpf/prog_tests/btf.c +++ b/tools/testing/selftests/bpf/prog_tests/btf.c @@ -4386,6 +4386,7 @@ skip: fprintf(stderr, "OK"); done: + btf__free(btf); free(func_info); bpf_object__close(obj); } -- 2.30.2