From nobody Sun Sep 22 05:38:42 2024 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 35D71C433F5 for ; Wed, 23 Mar 2022 03:24:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241493AbiCWD0Z (ORCPT ); Tue, 22 Mar 2022 23:26:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231903AbiCWD0U (ORCPT ); Tue, 22 Mar 2022 23:26:20 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A68DA6EB3D for ; Tue, 22 Mar 2022 20:24:50 -0700 (PDT) X-UUID: 331f8de305874faf8f575c8a29f5cf6a-20220323 X-UUID: 331f8de305874faf8f575c8a29f5cf6a-20220323 Received: from mtkmbs10n1.mediatek.inc [(172.21.101.34)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1424701584; Wed, 23 Mar 2022 11:24:45 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 23 Mar 2022 11:24:44 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 23 Mar 2022 11:24:44 +0800 From: Mark-PK Tsai To: , CC: , , , , , , , , Subject: [PATCH] tracing: Avoid adding duplicated tracer options when update_tracer_options is running in parallel Date: Wed, 23 Mar 2022 11:24:42 +0800 Message-ID: <20220323032442.22082-1-mark-pk.tsai@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20220322133339.GA32582@xsang-OptiPlex-9020> References: <20220322133339.GA32582@xsang-OptiPlex-9020> MIME-Version: 1.0 X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When update_tracer_options is running in parallel, tr->tops might be updated before the trace_types list traversal. Let update_tracer_options traverse the trace_types list safely in kernel init time and avoid the tr->tops update before it finish. Link: https://lore.kernel.org/lkml/20220322133339.GA32582@xsang-OptiPlex-90= 20/ Reported-by: kernel test robot Signed-off-by: Mark-PK Tsai --- kernel/trace/trace.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index adb37e437a05..2974ae056068 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -6317,12 +6317,18 @@ static void tracing_set_nop(struct trace_array *tr) tr->current_trace =3D &nop_trace; } =20 +static bool tracer_options_updated; + static void add_tracer_options(struct trace_array *tr, struct tracer *t) { /* Only enable if the directory has been created already. */ if (!tr->dir) return; =20 + /* Only create trace option files after update_tracer_options finish */ + if (!tracer_options_updated) + return; + create_trace_option_files(tr, t); } =20 @@ -9133,6 +9139,7 @@ static void update_tracer_options(struct trace_array = *tr) { mutex_lock(&trace_types_lock); __update_tracer_options(tr); + tracer_options_updated =3D true; mutex_unlock(&trace_types_lock); } =20 --=20 2.18.0