From patchwork Thu Nov 24 14:47:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 25591 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp3440875wrr; Thu, 24 Nov 2022 06:50:50 -0800 (PST) X-Google-Smtp-Source: AA0mqf7yTue145f5L8c7SVZ6k1HVezqbb2c7UPRxm684hQjeYur7S0QfEkhuTi5yLrI2B1f1RsF2 X-Received: by 2002:a62:3142:0:b0:56d:8d19:f331 with SMTP id x63-20020a623142000000b0056d8d19f331mr35910062pfx.7.1669301449757; Thu, 24 Nov 2022 06:50:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669301449; cv=none; d=google.com; s=arc-20160816; b=QpnD0/UkHHz65GTb3GrORStlpx0KEwN57baaph0fS90tHnPHJrmRZnPAWqBXwPFYqT 28VQqmO2leTeIUNhzPWzhit9pPwmbOYcQZ4x2T8rkpzBmQOc2nep3EjlrvqNQ9JzDObC 1g8eMgfLtTrwc8Nb/MesxE5AoHLFiJH+HhPgxw8ZLXdXxqto/8+8Zw287Y+SlCVwEgDV A1IC7tFEzDklTZOnZqV0A3SABm95mcvLX/6R60RaCeMu9zu+aJU0Q61cIsWzoMrN4Z+l TndF7YyigeeNapuB9JFBo31IFCiiXW1beiBUEEKGee5n920wlOXUzNzEj6lhLiKH/kXf 9hUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=SC+heh+6hhOl8EfViE/uu86Z5PP0GAb/6QTScyNcX7Y=; b=TR+JbKG5InJzuzkOm2GmvgnzvfSQ8cFMxOobl+CBDFPsNVY/9ASHGO/3V3ptD/e2pq eVo5KaywDcWjk0swGPdZEmA0uJs9ZJ7Qile38RmJ/voPIcrGVSd9BF/jDlfcjvnnVAKr EeBoVLZ/dWiYu+tCCO8WL3O2bWNPah9/cOtI7f0h6WTFQ6vk6D9Gq9LvE9+3O6c2oOgT hrA1kYBHD+9PJC3VDP30x9QFPdAh4c1bXSp/P7TULOBS37sDapdKtSea3XUTAQi7Mll1 5KrwfijVyOUigZsPQCsF/3E9DQGaE7xfG50NivMy8p4urqfdcGECqr9miPCHgevriEDI M5ow== 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t15-20020a63444f000000b0046e9da9ac40si939917pgk.556.2022.11.24.06.50.36; Thu, 24 Nov 2022 06:50:49 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229705AbiKXOsf (ORCPT + 99 others); Thu, 24 Nov 2022 09:48:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229626AbiKXOs2 (ORCPT ); Thu, 24 Nov 2022 09:48:28 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD337E0B55 for ; Thu, 24 Nov 2022 06:48:27 -0800 (PST) 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 ams.source.kernel.org (Postfix) with ESMTPS id 7E679B8283F for ; Thu, 24 Nov 2022 14:48:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 36B88C4314D; Thu, 24 Nov 2022 14:48:25 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1oyDWa-001Wsv-0x; Thu, 24 Nov 2022 09:48:24 -0500 Message-ID: <20221124144824.177090757@goodmis.org> User-Agent: quilt/0.66 Date: Thu, 24 Nov 2022 09:47:57 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Zheng Yejian Subject: [for-linus][PATCH 5/6] tracing: Add tracing_reset_all_online_cpus_unlocked() function References: <20221124144752.427194398@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS 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?1750389437047547829?= X-GMAIL-MSGID: =?utf-8?q?1750389437047547829?= From: "Steven Rostedt (Google)" 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) --- kernel/trace/trace.c | 11 ++++++++++- kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 2 +- kernel/trace/trace_events_synth.c | 2 -- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index a7fe0e115272..5cfc95a52bc3 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2180,10 +2180,12 @@ void tracing_reset_online_cpus(struct array_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; @@ -2195,6 +2197,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 54ee5711c729..d42e24507152 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -580,6 +580,7 @@ int tracing_is_enabled(void); void tracing_reset_online_cpus(struct array_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 0356cae0cf74..78cd19e31dba 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2972,7 +2972,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, diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 29fbfb27c2b2..c3b582d19b62 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -1425,7 +1425,6 @@ int synth_event_delete(const char *event_name) mutex_unlock(&event_mutex); if (mod) { - mutex_lock(&trace_types_lock); /* * It is safest to reset the ring buffer if the module * being unloaded registered any events that were @@ -1437,7 +1436,6 @@ int synth_event_delete(const char *event_name) * occur. */ tracing_reset_all_online_cpus(); - mutex_unlock(&trace_types_lock); } return ret;