Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp6434152rwd; Mon, 19 Jun 2023 07:16:09 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7zUW0v+EdoC0jChJFuhjHFOpMo+TMSPTQhhFbUiQGlfuxw/zkjSXzklBiWMS7DYVa6boue X-Received: by 2002:a17:90b:4d11:b0:25b:d12d:ab83 with SMTP id mw17-20020a17090b4d1100b0025bd12dab83mr20155658pjb.20.1687184169186; Mon, 19 Jun 2023 07:16:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687184169; cv=none; d=google.com; s=arc-20160816; b=C0ofdxSRjVW8x5+2Sk65LFBn4lirrceOm/K4abHVNNd1zxgUNoB8XL7v8iwhsHGNa3 PRMGEerjS6e0PgDyXaS2qeDqavAc6bw7kLZPZES/QioG7FcsiQEbf7OnGeHIghI1ZlsI 5Nf0ZMaTyaunZVDbtj2aZU2yTCYde+Nj79ncjpKhHlbwHSO2exa0gNUxOW1PBogYqSnf odBNMDcQT3ranKR7fDzHIdtfeo7qNOsXB5kjJwvPLEl6BeFiownWdZyD3Y4vMhCEZKOL gONvKdCZPJ8/5vFZFPRIpic0adPDLPGiskMl3a5i1O+pu4ym4zPS7JL4Weu4/HsEV5dW ubwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=aa4B06aofYninvolesX+jgVatb0i3XrmHAMybDJv57I=; b=rlMfPv+/JZ8YvsmJaVpTS8VjTOzNyXTHX/xaxRAuxdn+Nq8l3bt29c5TPAm4LQVllG r4VdsdRBWgb2VjrcEAOeFHDGD1OHbvEfPEj0JCaSqR8MhnbK6zjfgXvjX47X1G8SH8SL TDFhnlo3SmpWGjfCNY7kyj+s1rXFxu4L5U5pMgV6xyAm0lVrNo9MzvQzHUv8jf0DHmVY i1Tzu6XvAOILRIkueCrMUdte8fcMuBBjL3gWFIXcQiNqYRZggYcTt6fjlrmnbWJdjxlM kbDksA+RRMyRGyCH6O2S7MHOzj+unSOukqxAJJBg7fkj7MiFWimKC8ZCAfjS2JJczUdN cSKQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h70-20020a638349000000b005098590f1edsi4691947pge.757.2023.06.19.07.15.54; Mon, 19 Jun 2023 07:16:09 -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; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232012AbjFSNb2 (ORCPT + 99 others); Mon, 19 Jun 2023 09:31:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229885AbjFSNbJ (ORCPT ); Mon, 19 Jun 2023 09:31:09 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 877F810F2; Mon, 19 Jun 2023 06:31:03 -0700 (PDT) Received: from dggpeml500012.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Ql9Yh1BSSzMpSX; Mon, 19 Jun 2023 21:27:52 +0800 (CST) Received: from localhost.localdomain (10.67.175.61) by dggpeml500012.china.huawei.com (7.185.36.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 19 Jun 2023 21:30:59 +0800 From: Zheng Yejian To: , , CC: , , , Subject: [PATCH 5.4] tracing: Add tracing_reset_all_online_cpus_unlocked() function Date: Tue, 20 Jun 2023 09:31:13 +0800 Message-ID: <20230620013113.1127152-1-zhengyejian1@huawei.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.67.175.61] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpeml500012.china.huawei.com (7.185.36.15) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00,DATE_IN_FUTURE_12_24, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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 From: "Steven Rostedt (Google)" commit e18eb8783ec4949adebc7d7b0fdb65f65bfeefd9 upstream. Currently the tracing_reset_all_online_cpus() requires the trace_types_lock held. But only one caller of this function actually has that lock held before calling it, and the other just takes the lock so that it can call it. More users of this function is needed where the lock is not held. Add a tracing_reset_all_online_cpus_unlocked() function for the one use case that calls it without being held, and also add a lockdep_assert to make sure it is held when called. Then have tracing_reset_all_online_cpus() take the lock internally, such that callers do not need to worry about taking it. Link: https://lkml.kernel.org/r/20221123192741.658273220@goodmis.org Cc: Masami Hiramatsu Cc: Andrew Morton Cc: Zheng Yejian Signed-off-by: Steven Rostedt (Google) [Refers to commit message of 1603feac154ff38514e8354e3079a455eb4801e2, this patch is pre-depended, and tracing_reset_all_online_cpus() should be called after trace_types_lock is held as its comment describes.] Fixes: 1603feac154f ("tracing: Free buffers when a used dynamic event is removed") Signed-off-by: Zheng Yejian --- kernel/trace/trace.c | 11 ++++++++++- kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index d068124815bc..219cd2c81936 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1931,10 +1931,12 @@ void tracing_reset_online_cpus(struct trace_buffer *buf) } /* Must have trace_types_lock held */ -void tracing_reset_all_online_cpus(void) +void tracing_reset_all_online_cpus_unlocked(void) { struct trace_array *tr; + lockdep_assert_held(&trace_types_lock); + list_for_each_entry(tr, &ftrace_trace_arrays, list) { if (!tr->clear_trace) continue; @@ -1946,6 +1948,13 @@ void tracing_reset_all_online_cpus(void) } } +void tracing_reset_all_online_cpus(void) +{ + mutex_lock(&trace_types_lock); + tracing_reset_all_online_cpus_unlocked(); + mutex_unlock(&trace_types_lock); +} + /* * The tgid_map array maps from pid to tgid; i.e. the value stored at index i * is the tgid last observed corresponding to pid=i. diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index f2ff39353e03..edc17a640ab3 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -677,6 +677,7 @@ int tracing_is_enabled(void); void tracing_reset_online_cpus(struct trace_buffer *buf); void tracing_reset_current(int cpu); void tracing_reset_all_online_cpus(void); +void tracing_reset_all_online_cpus_unlocked(void); int tracing_open_generic(struct inode *inode, struct file *filp); int tracing_open_generic_tr(struct inode *inode, struct file *filp); bool tracing_is_disabled(void); diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 8f2cbc9ebb6e..a0675ecc8142 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2440,7 +2440,7 @@ static void trace_module_remove_events(struct module *mod) * over from this module may be passed to the new module events and * unexpected results may occur. */ - tracing_reset_all_online_cpus(); + tracing_reset_all_online_cpus_unlocked(); } static int trace_module_notify(struct notifier_block *self, -- 2.25.1