From patchwork Tue Apr 18 15:50:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 84945 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2958351vqo; Tue, 18 Apr 2023 08:59:08 -0700 (PDT) X-Google-Smtp-Source: AKy350YsGOjnGCckN44AC9e8PEihogNK3ZHPdmDpBDljpRllQKnrmJ4bKwvRtZqy3L6g4ZgfL87V X-Received: by 2002:a05:6a00:99f:b0:63d:33c9:aec4 with SMTP id u31-20020a056a00099f00b0063d33c9aec4mr320710pfg.10.1681833547950; Tue, 18 Apr 2023 08:59:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681833547; cv=none; d=google.com; s=arc-20160816; b=CjPqX5OxT5rFso6c0krOL+IYF4Mh6r8wOy7Ncljn/c2e/PyOWOm9VyV8UnGJxo66O5 vlyhiNrlNqk8nxQxa7HKRHDpwyOmpVmWxh2FGYS3vpPdacLencn5gtJEyV7LHCJJI2b3 wq8TR/4a86BLKoDCM032jBnE3WaNAaB+lQD84uDqrg/teYsqKoW2h37hVDpcOmZWBAGA 2sRVgOebBNr9JD5Oo8pPn3sL54yXqiwHeNn/QRSXe0PW0klSYmDP/ulnbuvrOoRzSZG5 bFi1IDSOfNgwvhMaw+9oJcYk0SUyDrkwwSIr2nbYCT86fVEnUPtUhH4ffk3YDP+hAjXR BXpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=75Y2asSfVVX0cLT6qh9vkW7tjqpA2YipDwtQ8Nj/qOs=; b=zaIF2CNLetOpCHEjwIXgjeEQ9T79fszUlCj6CRhhx6Mvm75DAfaLyrKxty298k4Tl0 SNxE25fVwYgU1MvExN1Uc0Z0+CJj8LO0wlZYQTH9pM5/4lg/szylYc4n/uTabdZJus10 swzk0BNTreTuuJqnynGVjG/AkvSRkTDGQEJkXcxBGgY2MlH77alQX5jrm2C+t7+9WxMG uDZud74Lk5KpucVXAfNMOUZris45CdVb+qc9RM7uH02O0hemA6MVsVgIiFPJ2ofGhttN FkjjrYxVLmNUrWmKTP/MdgBObTQINVFJdTl67+FewXy63cYIe98n4wfxbLBuUKNG7nF8 2NEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uSTyC+gm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u17-20020a627911000000b006374bd74796si14434464pfc.379.2023.04.18.08.58.53; Tue, 18 Apr 2023 08:59:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uSTyC+gm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231153AbjDRPvf (ORCPT + 99 others); Tue, 18 Apr 2023 11:51:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232346AbjDRPvZ (ORCPT ); Tue, 18 Apr 2023 11:51:25 -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 1EB38118E9; Tue, 18 Apr 2023 08:50:43 -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 8B7EF6360F; Tue, 18 Apr 2023 15:50:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C43ABC433AE; Tue, 18 Apr 2023 15:50:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1681833033; bh=S69g9Z1MTJwNHfumzm0YaNAnXZOMiQ8bygW8JHop/vc=; h=Date:From:To:Cc:Subject:From; b=uSTyC+gmtxGh+fJwCK4bkTEAH+4XO+Kke/2eL76Y6sY87eX6Va0e7N3bHpufefVjv l7XZg5ON9e153ym9vREAzJd8rMdnUKOZryvQOabzRzL1XHw9BP1AKMbcj7l2U+xaD1 35mnL3/XUUO6UVc5jXYhhkuPK8F3iqITTmfMu/REMhodPa4z3mKkAQGT9kLFNFgs/m OQLW38eEHNQWpYmauDSDoijrZMs1W8JwGa08Ehtq6F4UqgOxcyG+mKV0faejkXd7I/ 6AiuanIyMtb1+Exy9tjxostDzSqsleekF5dOkZt0xiicJ/rGGFVwhEbqi3pTnSFYTv W7VoJ/+4nLcoQ== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 0A84F403B5; Tue, 18 Apr 2023 12:50:29 -0300 (-03) Date: Tue, 18 Apr 2023 12:50:29 -0300 From: Arnaldo Carvalho de Melo To: Ian Rogers , James Clark Cc: linux-perf-users@vger.kernel.org, Linux Kernel Mailing List , Mathieu Poirier , Suzuki K Poulose , Mike Leach , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH] perf tools: Fix use before NULL check introduced by map__dso() introduction Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Url: http://acmel.wordpress.com X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1763530294708931869?= X-GMAIL-MSGID: =?utf-8?q?1763530294708931869?= James Clark noticed that the recent 63df0e4bc368adbd ("perf map: Add accessor for dso") patch accessed map->dso before the 'map' variable was NULL checked, which is a change in logic that leads to segmentation faults, so comb thru that patch to fix similar cases. Fixes: 63df0e4bc368adbd ("perf map: Add accessor for dso") Cc: Adrian Hunter Cc: Alexander Shishkin Cc: Ian Rogers Cc: Ingo Molnar Cc: Jiri Olsa Cc: John Garry Cc: Leo Yan Cc: Mark Rutland Cc: Mathieu Poirier Cc: Mike Leach Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Will Deacon To: James Clark Link: https://lore.kernel.org/lkml/ Signed-off-by: Arnaldo Carvalho de Melo Acked-by: Ian Rogers --- tools/perf/builtin-script.c | 7 +++---- tools/perf/ui/browsers/hists.c | 4 ++-- tools/perf/util/sort.c | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 8fba247b798ca307..006f522d0e7f6a18 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -1075,8 +1075,7 @@ static int grab_bb(u8 *buffer, u64 start, u64 end, return 0; } - dso = map__dso(al.map); - if (!thread__find_map(thread, *cpumode, start, &al) || !dso) { + if (!thread__find_map(thread, *cpumode, start, &al) || (dso = map__dso(al.map)) == NULL) { pr_debug("\tcannot resolve %" PRIx64 "-%" PRIx64 "\n", start, end); return 0; } @@ -1106,9 +1105,9 @@ static int map__fprintf_srccode(struct map *map, u64 addr, FILE *fp, struct srcc unsigned line; int len; char *srccode; - struct dso *dso = map__dso(map); + struct dso *dso; - if (!map || !dso) + if (!map || (dso = map__dso(map)) == NULL) return 0; srcfile = get_srcline_split(dso, map__rip_2objdump(map, addr), diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index ab70e5f5fad236e5..69c81759a64f938f 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2499,9 +2499,9 @@ add_annotate_opt(struct hist_browser *browser __maybe_unused, struct map_symbol *ms, u64 addr) { - struct dso *dso = map__dso(ms->map); + struct dso *dso; - if (!ms->map || !dso || dso->annotate_warned) + if (!ms->map || (dso = map__dso(ms->map)) == NULL || dso->annotate_warned) return 0; if (!ms->sym) diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index f2ffaf90648e469e..31b1cd0935e277ba 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -1568,7 +1568,7 @@ static int hist_entry__dcacheline_snprintf(struct hist_entry *he, char *bf, if (he->mem_info) { struct map *map = he->mem_info->daddr.ms.map; - struct dso *dso = map__dso(map); + struct dso *dso = map ? map__dso(map) : NULL; addr = cl_address(he->mem_info->daddr.al_addr, chk_double_cl); ms = &he->mem_info->daddr.ms;