From nobody Tue Feb 10 18:36:39 2026 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 9B206C7618E for ; Mon, 20 Mar 2023 03:39:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229550AbjCTDjZ (ORCPT ); Sun, 19 Mar 2023 23:39:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229779AbjCTDjG (ORCPT ); Sun, 19 Mar 2023 23:39:06 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93EE42203E for ; Sun, 19 Mar 2023 20:39:00 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id e129-20020a251e87000000b00b56598237f5so11781649ybe.16 for ; Sun, 19 Mar 2023 20:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1679283539; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=rHDC7UBXOWCAEPbdLzihWokj+UpLxvZZidURX978WmE=; b=DD409jiJybjs9fQX7q7fqtCmw5nuGC5eXy8D6ZSD5O4pmYcN72p7hTEODVgBYZEhih BQ8Zkql4EPpaB/c9OmfzRn1pSmg46M89b8K41d3wbmu47kPetePp5bOjXNfKJ0uMuEVZ RbR5wRXgwvyBsjPdXzI2qrEcdwA1LaGDzHzRu7x6Q9/UMO88nh71PpsoMZsuOtW5tz/m BfsDjqHvt6vwK4UyqTSn7GTf9BTLFViOVkKIfsuWxt75dvaC4f8JP84RfzUVfiA3I1Nu hCJB5Fwv5gfaeAYFx+rQPgC1/9V5eGmTaMDpqoo0mAIcyEDjLbgzy7q1+Ej9yM6pdkT9 6xnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679283539; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rHDC7UBXOWCAEPbdLzihWokj+UpLxvZZidURX978WmE=; b=0X9S5r8cmuxxN0XZXSobmxAUJmdMEFDI4jwy0evQ5NJn/yw1hCXgnjk/6GwBlV1Flf I3IxrD0bWHz00SOrWaGuKv91WgpgzfiqD6TPHOBavOQgjTPkM2LlDCMdbrulhCXP9zwu PB5e1aYuwvO6ZFZ5WBev90PuZpTvAl1YAMP3taEdX1CmHOJsrPDrTW3TY3wC/yYttVnR TP3xijq2a686fWZrPSdcY6FT3CDyizlqqGrjAWFwSkr8i0aaZD3gmJKfvWQHOopyUgSd gImyVUGQn9tanofbJn9fdf4Ad5VYHVfMt9j7nzwm0htC6Z+/HlfyG+XAL0+HT4P1qj8z dSxA== X-Gm-Message-State: AO0yUKV488bsxUlG7eRqPnvpkDAsZ8g/hlqZHiru/HH49GG6g3J9Vs1V SZa5JzMrg0PQu2umANn+4/c/xoExPNET X-Google-Smtp-Source: AK7set84I3Q5yq7Mc89TIl7TiUOtm8jwsNnxNmJCd6t1yy+aYw75XLnXCrbdgrXYoaHB+1L/4SUHw0NpECCk X-Received: from irogers.svl.corp.google.com ([2620:15c:2d4:203:1895:9fa0:27f5:cb71]) (user=irogers job=sendgmr) by 2002:a05:6902:150e:b0:b43:8424:2a4c with SMTP id q14-20020a056902150e00b00b4384242a4cmr4773681ybu.10.1679283539572; Sun, 19 Mar 2023 20:38:59 -0700 (PDT) Date: Sun, 19 Mar 2023 20:37:51 -0700 In-Reply-To: <20230320033810.980165-1-irogers@google.com> Message-Id: <20230320033810.980165-4-irogers@google.com> Mime-Version: 1.0 References: <20230320033810.980165-1-irogers@google.com> X-Mailer: git-send-email 2.40.0.rc1.284.g88254d51c5-goog Subject: [PATCH v4 03/22] perf tests: Add common error route for code-reading From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Thomas Gleixner , Darren Hart , Davidlohr Bueso , "=?UTF-8?q?Andr=C3=A9=20Almeida?=" , James Clark , John Garry , Riccardo Mancini , Yury Norov , Andy Shevchenko , Andrew Morton , Adrian Hunter , Leo Yan , Andi Kleen , Thomas Richter , Kan Liang , Madhavan Srinivasan , Shunsuke Nakamura , Song Liu , Masami Hiramatsu , Steven Rostedt , Miaoqian Lin , Stephen Brennan , Kajol Jain , Alexey Bayduraev , German Gomez , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Eric Dumazet , Dmitry Vyukov , Hao Luo Cc: Stephane Eranian , Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A later change will enforce that the map is put on this path regardless of success or error. Signed-off-by: Ian Rogers --- tools/perf/tests/code-reading.c | 39 +++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-readin= g.c index cb8cd09938d5..fb67fd5ebd9f 100644 --- a/tools/perf/tests/code-reading.c +++ b/tools/perf/tests/code-reading.c @@ -236,18 +236,19 @@ static int read_object_code(u64 addr, size_t len, u8 = cpumode, const char *objdump_name; char decomp_name[KMOD_DECOMP_LEN]; bool decomp =3D false; - int ret; + int ret, err =3D 0; =20 pr_debug("Reading object code for memory address: %#"PRIx64"\n", addr); =20 if (!thread__find_map(thread, cpumode, addr, &al) || !al.map->dso) { if (cpumode =3D=3D PERF_RECORD_MISC_HYPERVISOR) { pr_debug("Hypervisor address can not be resolved - skipping\n"); - return 0; + goto out; } =20 pr_debug("thread__find_map failed\n"); - return -1; + err =3D -1; + goto out; } =20 pr_debug("File is: %s\n", al.map->dso->long_name); @@ -255,7 +256,7 @@ static int read_object_code(u64 addr, size_t len, u8 cp= umode, if (al.map->dso->symtab_type =3D=3D DSO_BINARY_TYPE__KALLSYMS && !dso__is_kcore(al.map->dso)) { pr_debug("Unexpected kernel address - skipping\n"); - return 0; + goto out; } =20 pr_debug("On file address is: %#"PRIx64"\n", al.addr); @@ -272,15 +273,18 @@ static int read_object_code(u64 addr, size_t len, u8 = cpumode, al.addr, buf1, len); if (ret_len !=3D len) { pr_debug("dso__data_read_offset failed\n"); - return -1; + err =3D -1; + goto out; } =20 /* * Converting addresses for use by objdump requires more information. * map__load() does that. See map__rip_2objdump() for details. */ - if (map__load(al.map)) - return -1; + if (map__load(al.map)) { + err =3D -1; + goto out; + } =20 /* objdump struggles with kcore - try each map only once */ if (dso__is_kcore(al.map->dso)) { @@ -290,12 +294,12 @@ static int read_object_code(u64 addr, size_t len, u8 = cpumode, if (state->done[d] =3D=3D al.map->start) { pr_debug("kcore map tested already"); pr_debug(" - skipping\n"); - return 0; + goto out; } } if (state->done_cnt >=3D ARRAY_SIZE(state->done)) { pr_debug("Too many kcore maps - skipping\n"); - return 0; + goto out; } state->done[state->done_cnt++] =3D al.map->start; } @@ -306,7 +310,8 @@ static int read_object_code(u64 addr, size_t len, u8 cp= umode, decomp_name, sizeof(decomp_name)) < 0) { pr_debug("decompression failed\n"); - return -1; + err =3D -1; + goto out; } =20 decomp =3D true; @@ -337,15 +342,16 @@ static int read_object_code(u64 addr, size_t len, u8 = cpumode, */ pr_debug("objdump failed for kcore"); pr_debug(" - skipping\n"); - return 0; } else { - return -1; + err =3D -1; } + goto out; } } if (ret < 0) { pr_debug("read_via_objdump failed\n"); - return -1; + err =3D -1; + goto out; } =20 /* The results should be identical */ @@ -355,11 +361,12 @@ static int read_object_code(u64 addr, size_t len, u8 = cpumode, dump_buf(buf1, len); pr_debug("buf2 (objdump):\n"); dump_buf(buf2, len); - return -1; + err =3D -1; + goto out; } pr_debug("Bytes read match those read by objdump\n"); - - return 0; +out: + return err; } =20 static int process_sample_event(struct machine *machine, --=20 2.40.0.rc1.284.g88254d51c5-goog