From patchwork Thu Dec 7 02:37:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 174889 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4515508vqy; Wed, 6 Dec 2023 18:39:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IFzbwAbLD3RyrxdwHch32ZMJ6Phm5r4djZVZSPe/xhwIIXzNRUe4XKWeyNtNqTEy2eJfuMq X-Received: by 2002:a05:6e02:4cc:b0:35d:6e56:3d1 with SMTP id f12-20020a056e0204cc00b0035d6e5603d1mr2089670ils.6.1701916747739; Wed, 06 Dec 2023 18:39:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701916747; cv=none; d=google.com; s=arc-20160816; b=HrCU6jgzc98AVmc87e4JrwwrEn91cEKuqTU/2ws8DvMqT9o3zDnFAb1lYttZsvZy0G Oh44982z+H5IbQtbbqafCzVhkTs/uvW1TjNcJCI9/0a4w0TIKWYBnYnlaiXnDhR4ivGw 3ANJWdr5X71b64J+rYHjG7k6/VGJloHLPC2/4CEE3JWPcp2R09qL7YubQPCpmGY3gftW kp9FcYUVIV1dOdUF3XBRQRxSjq46dnM8zV709zUweEmAtfjr2clRuyHo2w37lpq2N26B SdYjV3fA4WGz5sKaIG6Rzd3TjXZmrb4LTCarGjc2jzjLX533jqydoVdgK9lTlsB4tqf3 DWyw== 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=3ZkdtJdI/UokS3L4NgJq8Dg3KdMDnGi4pknNGtKWXMw=; fh=gM92KdUNVmqOPrcNIc7RydALOa0EYmKzf7iaV81eQY0=; b=rWExa0vjdotiy3mySBOs5A3LFZwZH6bPeWgiUlsBkuds9lEcDZh3UIn+wHdx/lwVUD NzIwV8FndbJ2SxiMAvIITGXAgqc+qGXKLqMz5YskD5SbnUx3jyKelsR2a2OzVieIR8A3 FHu7SXH8NxoUiPCUPRRvAqJ5v6iEeoe6KAEYIMXSYVLemaaYIj3wsuzf0pkQPzUxR3kY LZt/zNKDZTaQajkifqFKH04gyhH0tkqTsy+/TIMlmiStwPvHbLiC19BNs5nI9pIPhkP1 lrQxatHN/KhbXhaPIUrzVmH9YBh+IjKTgHMyXtYvKKjurdCrYYXZQCc7ox66P6YvkfFB bf7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id by23-20020a056a02059700b0056da0ae25a2si341788pgb.32.2023.12.06.18.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 18:39:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 3A2B78072802; Wed, 6 Dec 2023 18:38:10 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1443077AbjLGCh4 (ORCPT + 99 others); Wed, 6 Dec 2023 21:37:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235175AbjLGCho (ORCPT ); Wed, 6 Dec 2023 21:37:44 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF9BBD68 for ; Wed, 6 Dec 2023 18:37:50 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55248C4339A; Thu, 7 Dec 2023 02:37:50 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97) (envelope-from ) id 1rB4HM-00000001aOg-0cKq; Wed, 06 Dec 2023 21:38:20 -0500 Message-ID: <20231207023819.931186714@goodmis.org> User-Agent: quilt/0.67 Date: Wed, 06 Dec 2023 21:37:57 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Petr Pavlu Subject: [for-linus][PATCH 5/8] tracing: Fix a warning when allocating buffered events fails References: <20231207023752.712829638@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 06 Dec 2023 18:38:10 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784589055304857241 X-GMAIL-MSGID: 1784589055304857241 From: Petr Pavlu Function trace_buffered_event_disable() produces an unexpected warning when the previous call to trace_buffered_event_enable() fails to allocate pages for buffered events. The situation can occur as follows: * The counter trace_buffered_event_ref is at 0. * The soft mode gets enabled for some event and trace_buffered_event_enable() is called. The function increments trace_buffered_event_ref to 1 and starts allocating event pages. * The allocation fails for some page and trace_buffered_event_disable() is called for cleanup. * Function trace_buffered_event_disable() decrements trace_buffered_event_ref back to 0, recognizes that it was the last use of buffered events and frees all allocated pages. * The control goes back to trace_buffered_event_enable() which returns. The caller of trace_buffered_event_enable() has no information that the function actually failed. * Some time later, the soft mode is disabled for the same event. Function trace_buffered_event_disable() is called. It warns on "WARN_ON_ONCE(!trace_buffered_event_ref)" and returns. Buffered events are just an optimization and can handle failures. Make trace_buffered_event_enable() exit on the first failure and left any cleanup later to when trace_buffered_event_disable() is called. Link: https://lore.kernel.org/all/20231127151248.7232-2-petr.pavlu@suse.com/ Link: https://lkml.kernel.org/r/20231205161736.19663-3-petr.pavlu@suse.com Fixes: 0fc1b09ff1ff ("tracing: Use temp buffer when filtering events") Signed-off-by: Petr Pavlu Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 6aeffa4a6994..ef72354f61ce 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2728,8 +2728,11 @@ void trace_buffered_event_enable(void) for_each_tracing_cpu(cpu) { page = alloc_pages_node(cpu_to_node(cpu), GFP_KERNEL | __GFP_NORETRY, 0); - if (!page) - goto failed; + /* This is just an optimization and can handle failures */ + if (!page) { + pr_err("Failed to allocate event buffer\n"); + break; + } event = page_address(page); memset(event, 0, sizeof(*event)); @@ -2743,10 +2746,6 @@ void trace_buffered_event_enable(void) WARN_ON_ONCE(1); preempt_enable(); } - - return; - failed: - trace_buffered_event_disable(); } static void enable_trace_buffered_event(void *data)