From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12C76C7EE2F for ; Mon, 12 Jun 2023 21:30:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233046AbjFLVaS (ORCPT ); Mon, 12 Jun 2023 17:30:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229621AbjFLVaP (ORCPT ); Mon, 12 Jun 2023 17:30:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2AC590; Mon, 12 Jun 2023 14:30:14 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 84E3962AEB; Mon, 12 Jun 2023 21:30:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B3E4CC433D2; Mon, 12 Jun 2023 21:30:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686605413; bh=U52nlfJptELG0Pt6VjrxSD3IavwkMhBT7JDS3mBGqSY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=aK/Isjmh6Xy5mmDf6W9Ee+Agc1+r+ipEE3P1T8W3Rd+TZAGpELt3N2TFr2tEqU82a JqX3SdA5IDxpNuz8RlXslTmvm1irezEW/YOM7Hajm1Ov+p4zdcpI9lDuVBW0Pvr6ch 8j4zqWm/IVON+oshsww8/PtzSCVJd5eBplWswKUu6n4heFcqLcYNjA5Xxf9sEdr6KQ PPixIK/+4OisMrzvuWcMpSlZy9o0TEoBeDF42Qj1KsS3Smd/YxKIBTIkY9ipqOyYEB IVqSc9EeMk3kca/kFgIj+O1++FaFFVa03SHsaB7jIT1AOPgL1o327QhJlzYJ5tbKoZ AObi+WPyz59kA== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 6BE8040692; Mon, 12 Jun 2023 18:30:11 -0300 (-03) Date: Mon, 12 Jun 2023 18:30:11 -0300 From: Arnaldo Carvalho de Melo To: Andi Kleen Cc: Ian Rogers , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Suzuki K Poulose , "Naveen N. Rao" , Kan Liang , German Gomez , Ali Saidi , Jing Zhang , Athira Rajeev , Miguel Ojeda , ye xingchen , Liam Howlett , Dmitrii Dolgov <9erthalion6@gmail.com>, Yang Jihong , K Prateek Nayak , Changbin Du , Ravi Bangoria , Sean Christopherson , "Steinar H. Gunderson" , Yuan Can , Brian Robbins , liuwenyu , Ivan Babrou , Fangrui Song , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, coresight@lists.linaro.org Subject: Re: [PATCH v2 26/26] perf hist: Fix srcline memory leak Message-ID: References: <20230608232823.4027869-1-irogers@google.com> <20230608232823.4027869-27-irogers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org Em Mon, Jun 12, 2023 at 02:16:34PM -0700, Andi Kleen escreveu: > On Mon, Jun 12, 2023 at 02:23:41PM -0300, Arnaldo Carvalho de Melo wrote: > > Em Mon, Jun 12, 2023 at 07:46:14AM -0700, Ian Rogers escreveu: > > > On Mon, Jun 12, 2023 at 7:16 AM Arnaldo Carvalho de Melo > > > wrote: > > > > > > > > Em Mon, Jun 12, 2023 at 11:13:59AM -0300, Arnaldo Carvalho de Melo escreveu: > > > > > Em Thu, Jun 08, 2023 at 04:28:23PM -0700, Ian Rogers escreveu: > > > > > > srcline isn't freed if it is SRCLINE_UNKNOWN. Avoid strduping in this > > > > > > case as such strdups are redundant and leak memory. > > > > > > > > > > The patch is ok as its what the rest of the code is doing, i.e. strcmp() > > > > > to check if a srcline is the unknown one, but how about the following > > > > > patch on top of yours? > > > > > > > > [acme@quaco perf-tools-next]$ strings ~/bin/perf | grep '??:0' > > > > ??:0 > > > > SRCLINE_UNKNOWN ((char *) "??:0") > > > > [acme@quaco perf-tools-next]$ > > > > > > Agreed, the strcmps make me nervous as they won't distinguish heap > > > from a global meaning we could end up with things like pointers to > > > freed memory. The comparison with the global is always going to be > > > same imo. > > > > > > Acked-by: Ian Rogers > > > > Thanks, applied and added your Acked-by. > > Actually was there another patch that turned it into a explicit global? > > At least in my tree it isn't: > > util/srcline.h > 28:#define SRCLINE_UNKNOWN ((char *) "??:0") > > Without any explicit global it's a bit dangerous because you rely on the > linker doing string deduplication. While it normally does that there might be > odd corner cases where it doesn't. Yeah, several gcc and clang versions complained with: 2 65.38 almalinux:9 : FAIL clang version 15.0.7 (Red Hat 15.0.7-2.el9) builtin-diff.c:1381:17: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare] if (start_line != SRCLINE_UNKNOWN && So I added the following on top: diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c index 48a04f42b308b080..aec596a0b0bbec0f 100644 --- a/tools/perf/util/srcline.c +++ b/tools/perf/util/srcline.c @@ -23,6 +23,8 @@ bool srcline_full_filename; +char *srcline__unknown = (char *)"??:0"; + static const char *dso__name(struct dso *dso) { const char *dso_name; diff --git a/tools/perf/util/srcline.h b/tools/perf/util/srcline.h index a15c7db9058ece96..167645bcff0755e2 100644 --- a/tools/perf/util/srcline.h +++ b/tools/perf/util/srcline.h @@ -25,7 +25,8 @@ char *srcline__tree_find(struct rb_root_cached *tree, u64 addr); /* delete all srclines within the tree */ void srcline__tree_delete(struct rb_root_cached *tree); -#define SRCLINE_UNKNOWN ((char *) "??:0") +extern char *srcline__unknown; +#define SRCLINE_UNKNOWN srcline__unknown struct inline_list { struct symbol *symbol; From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 60342C7EE2E for ; Mon, 12 Jun 2023 21:30:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=r+ViIHwr+ZnXlt/UvVzxS3JockDrT7Tp2BmkYqfkuPo=; b=yolqsAMaFCu2eF PiVzi0pOJn/HoTlnYBYUOeWHdesBPi0ZXJE41SL2Bc39s+HmXydt3dm9pMuSIzHQYafSDXJ+ubrHA IgQ+YPm+66l4TnVH/tHC5NDaxZQHmCkNq4cFz+wPmz2uLou1dITgZHVOAOnRq8bVZ2G+9XSdUjIfI lMqZ2vcvzlhJ7KqyJqh3rFN1x7eHtv0YNb1+8dhwx0PFYUJiBA9SNp/Skd1QZhF2gga9ML1ChNcms EgiFGDoKPbHtI0AfvyE+U5tPPJGtFJvD9kzR69EkPgQhPeG9sQ7XTXF9l7L1/ouIIbJRfj0JcVgso 323yHy9W86+1Z4wnhFhg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q8p7C-005VpW-0A; Mon, 12 Jun 2023 21:30:18 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q8p79-005Vor-2y for linux-arm-kernel@bombadil.infradead.org; Mon, 12 Jun 2023 21:30:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=MsJsCouey8rLpMA0fD50uIE750X9wOqP3onYYhB9UIs=; b=cGTXezQm2zhPZyql1iGdgcUVFl iCA8lVcjMcJvQ+QKsR/JDZa62avmgMxkAS6+Z2QIAUnaoxuBOMtkNuQqUv/FzJ4x74+13UFYmm5CX rOZ4Itpcgo9Kk9O8FQzCeqslUxCksuyNkJ3Mh2rZnpXUD0FLMSa3RRYJSmUTPivy0K/Rue/4kIMKn yaXu96FysCfbT/1FJnotmxtEN1gDEdUXlq41/c3KNfWw6nMzjRa6PrCtjzEo1u9ZnpJMigLRe96yN QI1YH248KunD2Ljb9r2EYOdcFcDUKTonOV5cJ82wI0TeUWAbqT82+SgEl+ksJuOvHZuFsN4Xm83Zk QuKtyIMA==; Received: from [187.19.173.213] (helo=quaco.ghostprotocols.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1q8p78-0035tL-8P; Mon, 12 Jun 2023 21:30:14 +0000 Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 6BE8040692; Mon, 12 Jun 2023 18:30:11 -0300 (-03) Date: Mon, 12 Jun 2023 18:30:11 -0300 From: Arnaldo Carvalho de Melo To: Andi Kleen Cc: Ian Rogers , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Suzuki K Poulose , "Naveen N. Rao" , Kan Liang , German Gomez , Ali Saidi , Jing Zhang , Athira Rajeev , Miguel Ojeda , ye xingchen , Liam Howlett , Dmitrii Dolgov <9erthalion6@gmail.com>, Yang Jihong , K Prateek Nayak , Changbin Du , Ravi Bangoria , Sean Christopherson , "Steinar H. Gunderson" , Yuan Can , Brian Robbins , liuwenyu , Ivan Babrou , Fangrui Song , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, coresight@lists.linaro.org Subject: Re: [PATCH v2 26/26] perf hist: Fix srcline memory leak Message-ID: References: <20230608232823.4027869-1-irogers@google.com> <20230608232823.4027869-27-irogers@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Url: http://acmel.wordpress.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RW0gTW9uLCBKdW4gMTIsIDIwMjMgYXQgMDI6MTY6MzRQTSAtMDcwMCwgQW5kaSBLbGVlbiBlc2Ny ZXZldToKPiBPbiBNb24sIEp1biAxMiwgMjAyMyBhdCAwMjoyMzo0MVBNIC0wMzAwLCBBcm5hbGRv IENhcnZhbGhvIGRlIE1lbG8gd3JvdGU6Cj4gPiBFbSBNb24sIEp1biAxMiwgMjAyMyBhdCAwNzo0 NjoxNEFNIC0wNzAwLCBJYW4gUm9nZXJzIGVzY3JldmV1Ogo+ID4gPiBPbiBNb24sIEp1biAxMiwg MjAyMyBhdCA3OjE24oCvQU0gQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvCj4gPiA+IDxhY21lQGtl cm5lbC5vcmc+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4gRW0gTW9uLCBKdW4gMTIsIDIwMjMgYXQg MTE6MTM6NTlBTSAtMDMwMCwgQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIGVzY3JldmV1Ogo+ID4g PiA+ID4gRW0gVGh1LCBKdW4gMDgsIDIwMjMgYXQgMDQ6Mjg6MjNQTSAtMDcwMCwgSWFuIFJvZ2Vy cyBlc2NyZXZldToKPiA+ID4gPiA+ID4gc3JjbGluZSBpc24ndCBmcmVlZCBpZiBpdCBpcyBTUkNM SU5FX1VOS05PV04uIEF2b2lkIHN0cmR1cGluZyBpbiB0aGlzCj4gPiA+ID4gPiA+IGNhc2UgYXMg c3VjaCBzdHJkdXBzIGFyZSByZWR1bmRhbnQgYW5kIGxlYWsgbWVtb3J5Lgo+ID4gPiA+ID4KPiA+ ID4gPiA+IFRoZSBwYXRjaCBpcyBvayBhcyBpdHMgd2hhdCB0aGUgcmVzdCBvZiB0aGUgY29kZSBp cyBkb2luZywgaS5lLiBzdHJjbXAoKQo+ID4gPiA+ID4gdG8gY2hlY2sgaWYgYSBzcmNsaW5lIGlz IHRoZSB1bmtub3duIG9uZSwgYnV0IGhvdyBhYm91dCB0aGUgZm9sbG93aW5nCj4gPiA+ID4gPiBw YXRjaCBvbiB0b3Agb2YgeW91cnM/Cj4gPiA+ID4KPiA+ID4gPiBbYWNtZUBxdWFjbyBwZXJmLXRv b2xzLW5leHRdJCBzdHJpbmdzIH4vYmluL3BlcmYgfCBncmVwICc/PzowJwo+ID4gPiA+ID8/OjAK PiA+ID4gPiBTUkNMSU5FX1VOS05PV04gKChjaGFyICopICI/PzowIikKPiA+ID4gPiBbYWNtZUBx dWFjbyBwZXJmLXRvb2xzLW5leHRdJAo+ID4gPiAKPiA+ID4gQWdyZWVkLCB0aGUgc3RyY21wcyBt YWtlIG1lIG5lcnZvdXMgYXMgdGhleSB3b24ndCBkaXN0aW5ndWlzaCBoZWFwCj4gPiA+IGZyb20g YSBnbG9iYWwgbWVhbmluZyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCB0aGluZ3MgbGlrZSBwb2ludGVy cyB0bwo+ID4gPiBmcmVlZCBtZW1vcnkuIFRoZSBjb21wYXJpc29uIHdpdGggdGhlIGdsb2JhbCBp cyBhbHdheXMgZ29pbmcgdG8gYmUKPiA+ID4gc2FtZSBpbW8uCj4gPiA+IAo+ID4gPiBBY2tlZC1i eTogSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgo+ID4gCj4gPiBUaGFua3MsIGFwcGxp ZWQgYW5kIGFkZGVkIHlvdXIgQWNrZWQtYnkuCj4gCj4gQWN0dWFsbHkgd2FzIHRoZXJlIGFub3Ro ZXIgcGF0Y2ggdGhhdCB0dXJuZWQgaXQgaW50byBhIGV4cGxpY2l0IGdsb2JhbD8gCj4gCj4gQXQg bGVhc3QgaW4gbXkgdHJlZSBpdCBpc24ndDoKPiAKPiB1dGlsL3NyY2xpbmUuaAo+IDI4OiNkZWZp bmUgU1JDTElORV9VTktOT1dOICAoKGNoYXIgKikgIj8/OjAiKQo+IAo+IFdpdGhvdXQgYW55IGV4 cGxpY2l0IGdsb2JhbCBpdCdzIGEgYml0IGRhbmdlcm91cyBiZWNhdXNlIHlvdSByZWx5IG9uIHRo ZQo+IGxpbmtlciBkb2luZyBzdHJpbmcgZGVkdXBsaWNhdGlvbi4gIFdoaWxlIGl0IG5vcm1hbGx5 IGRvZXMgdGhhdCB0aGVyZSBtaWdodCBiZQo+IG9kZCBjb3JuZXIgY2FzZXMgd2hlcmUgaXQgZG9l c24ndC4KClllYWgsIHNldmVyYWwgZ2NjIGFuZCBjbGFuZyB2ZXJzaW9ucyBjb21wbGFpbmVkIHdp dGg6CgoyICAgIDY1LjM4IGFsbWFsaW51eDo5ICAgICAgICAgICAgICAgICAgIDogRkFJTCBjbGFu ZyB2ZXJzaW9uIDE1LjAuNyAoUmVkIEhhdCAxNS4wLjctMi5lbDkpCiAgICBidWlsdGluLWRpZmYu YzoxMzgxOjE3OiBlcnJvcjogcmVzdWx0IG9mIGNvbXBhcmlzb24gYWdhaW5zdCBhIHN0cmluZyBs aXRlcmFsIGlzIHVuc3BlY2lmaWVkICh1c2UgYW4gZXhwbGljaXQgc3RyaW5nIGNvbXBhcmlzb24g ZnVuY3Rpb24gaW5zdGVhZCkgWy1XZXJyb3IsLVdzdHJpbmctY29tcGFyZV0KICAgICAgICAgICAg aWYgKHN0YXJ0X2xpbmUgIT0gU1JDTElORV9VTktOT1dOICYmCgpTbyBJIGFkZGVkIHRoZSBmb2xs b3dpbmcgb24gdG9wOgoKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zcmNsaW5lLmMgYi90 b29scy9wZXJmL3V0aWwvc3JjbGluZS5jCmluZGV4IDQ4YTA0ZjQyYjMwOGIwODAuLmFlYzU5NmEw YjBiYmVjMGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zcmNsaW5lLmMKKysrIGIvdG9v bHMvcGVyZi91dGlsL3NyY2xpbmUuYwpAQCAtMjMsNiArMjMsOCBAQAogCiBib29sIHNyY2xpbmVf ZnVsbF9maWxlbmFtZTsKIAorY2hhciAqc3JjbGluZV9fdW5rbm93biA9IChjaGFyICopIj8/OjAi OworCiBzdGF0aWMgY29uc3QgY2hhciAqZHNvX19uYW1lKHN0cnVjdCBkc28gKmRzbykKIHsKIAlj b25zdCBjaGFyICpkc29fbmFtZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zcmNsaW5l LmggYi90b29scy9wZXJmL3V0aWwvc3JjbGluZS5oCmluZGV4IGExNWM3ZGI5MDU4ZWNlOTYuLjE2 NzY0NWJjZmYwNzU1ZTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zcmNsaW5lLmgKKysr IGIvdG9vbHMvcGVyZi91dGlsL3NyY2xpbmUuaApAQCAtMjUsNyArMjUsOCBAQCBjaGFyICpzcmNs aW5lX190cmVlX2ZpbmQoc3RydWN0IHJiX3Jvb3RfY2FjaGVkICp0cmVlLCB1NjQgYWRkcik7CiAv KiBkZWxldGUgYWxsIHNyY2xpbmVzIHdpdGhpbiB0aGUgdHJlZSAqLwogdm9pZCBzcmNsaW5lX190 cmVlX2RlbGV0ZShzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgKnRyZWUpOwogCi0jZGVmaW5lIFNSQ0xJ TkVfVU5LTk9XTiAgKChjaGFyICopICI/PzowIikKK2V4dGVybiBjaGFyICpzcmNsaW5lX191bmtu b3duOworI2RlZmluZSBTUkNMSU5FX1VOS05PV04gc3JjbGluZV9fdW5rbm93bgogCiBzdHJ1Y3Qg aW5saW5lX2xpc3QgewogCXN0cnVjdCBzeW1ib2wJCSpzeW1ib2w7CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==