From nobody Tue Feb 10 15:43:48 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 4E08BC7618A for ; Mon, 20 Mar 2023 03:40:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229826AbjCTDj7 (ORCPT ); Sun, 19 Mar 2023 23:39:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229848AbjCTDjk (ORCPT ); Sun, 19 Mar 2023 23:39:40 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41A1C1B55A for ; Sun, 19 Mar 2023 20:39:18 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id z31-20020a25a122000000b00b38d2b9a2e9so11653999ybh.3 for ; Sun, 19 Mar 2023 20:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1679283555; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Dp06SaO3sEqKpsudj2OEFM6hmtCSHDlmEVrT0Oyh9g0=; b=oVlLy7C6zk07uvV078+G3tAiOSzYAnnphvIKsGkr7X87lY7rdXejY5aqdAZhnZqurU NLmHm30WqEW3T4Ohz83AZNdwIWA6BqcBR51g66JhSdnUB7xRaQw7PU2zYgMibh7YrqIq 9ZpEBh7W7VfsRswyeQNnDf7VnFEPy0zWYb+cMafP1CKpk/2l3eQRqA1CnuX1SzUIaMWr r63nsFVxf5KF2TKfTYcpNWMAD4DyXgcYuzFT/9jJUuHF6VK6HrQ07RrMtoOuAL/ZjWKt zoWMGS/5DkjqASK2ZdZrIcQmSSRA/BLLQIk4M7DZAHsdX88Ep1WdRiCCP8rADhVeSBRx 70KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679283555; 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=Dp06SaO3sEqKpsudj2OEFM6hmtCSHDlmEVrT0Oyh9g0=; b=Flt1qRzIYOVnHmTvpISEhnu0iJ7Si6VxaT2SJ7xeUAS95UlL+qOjgABwdljZpmnjQE vGb/a7kPlJrYA9e90mFcchOXpNV59vLD4gFmvuw2iak1kgwY46DzaxG/T+FWhu+K40dt vHkcweocdzIUFGrmLXs6tJy6yAXaSInbi1bCV4NNZ1zv1BeISvvF8VMnm+T9j20GoGGJ LAdirZx2wikngAkQWurMeHJeci+Fg9TQGbQ6+vDbNrG4aEjtxSTED4zI2YgNMqp0IDPX HTAoxrt63DAgnvyiW34DnWL+RqjlWD/OthXw352SVlipVkyaE6Q6HGdsRgwCeTa6l+mB jrFg== X-Gm-Message-State: AO0yUKVSsqPKzj4jUdxyHnEptzrGQeL0skurXYwgcTpmti/qBIKY3Gvp Eep1q8ILoeYAPfgpAvdhPr4zqGtiHKjU X-Google-Smtp-Source: AK7set8DXFIYSHJXW7PIqklNOFVLXkRtk81Ryce9utE5CyGINekjemf91kZj1GKnU0xUvk3YNr67AY0kdQGO X-Received: from irogers.svl.corp.google.com ([2620:15c:2d4:203:1895:9fa0:27f5:cb71]) (user=irogers job=sendgmr) by 2002:a81:b649:0:b0:541:8995:5334 with SMTP id h9-20020a81b649000000b0054189955334mr9279059ywk.3.1679283555031; Sun, 19 Mar 2023 20:39:15 -0700 (PDT) Date: Sun, 19 Mar 2023 20:37:53 -0700 In-Reply-To: <20230320033810.980165-1-irogers@google.com> Message-Id: <20230320033810.980165-6-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 05/22] perf symbol: Sort names under write lock 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" If finding a name doesn't find the sorted names then they are allocated and sorted. This shouldn't be done under a read lock as another reader may access it. Release the read lock and acquire the write lock, then release the write lock and reacquire the read lock. Signed-off-by: Ian Rogers --- tools/perf/util/symbol.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 317c0706852f..a458aa8b87bb 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -2018,6 +2018,9 @@ static int map__groups__sort_by_name_from_rbtree(stru= ct maps *maps) if (maps_by_name =3D=3D NULL) return -1; =20 + up_read(&maps->lock); + down_write(&maps->lock); + maps->maps_by_name =3D maps_by_name; maps->nr_maps_allocated =3D maps->nr_maps; =20 @@ -2025,6 +2028,10 @@ static int map__groups__sort_by_name_from_rbtree(str= uct maps *maps) maps_by_name[i++] =3D map; =20 __maps__sort_by_name(maps); + + up_write(&maps->lock); + down_read(&maps->lock); + return 0; } =20 --=20 2.40.0.rc1.284.g88254d51c5-goog