From patchwork Wed Dec 6 15:00:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 174616 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4160584vqy; Wed, 6 Dec 2023 07:00:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IGRJp1VuFyrNUUj35upBDNYCd6XRivhZTsv14VZsWm5GdCBOs5EwK5UIyX9kUFxBKRSe9oQ X-Received: by 2002:a17:90a:d196:b0:286:6cc1:8675 with SMTP id fu22-20020a17090ad19600b002866cc18675mr753742pjb.90.1701874856584; Wed, 06 Dec 2023 07:00:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701874856; cv=none; d=google.com; s=arc-20160816; b=kdRHeXl8ZRFaCb7kZapsinDD0tf3qh7RX4KzQO+2YKPsjkQrCDavJR3m/qn2JQTAqx hGdQB6/kFcQ9vUGvmfKEaypEs5aYC2BENbBPIcNmA5kHj8PZdizTiQstt1M3Ijsp9fO7 ioTeswnHopO2VOby6GZjZc+Ye6qfjEpJDKIlSgFoAv+hjG/KmzM1Dv9RTyPGyM/Z8VZC uP5ajg0VsKyY/C5Cfhbb945cGjeP2oDUB1DTgi0IrRtqwbnn6lz+yvaX27cmmq1fOC61 xBM+yELOmCuo6qC0e8OAWr0BcZ3faSSynIUQVMFAgWCAweeS8JaFeZdSMR3kvM9pxy+V vKdQ== 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:subject:cc:to:from:date; bh=ICtrtFXjyHHj1reVXf/g6Dc+wFTGpwmWBSiLojj29so=; fh=R8JZsVKDlS7lXIAvTNV55bsjlDBI0i4sqiOYXO4tZQA=; b=UJTwt4hkqrSGn363Nyg60wWEkEUGfTLP2Ovu4P/SHkRDCEHdOBqbKhtxILi6ZYUF1a OxRvZR0TDyKJIjZIuMlIeQhbn7sN+6vqsrLVxTpgaMShUnQHxf2oshOTip84OsFMppxQ iRLIlsA321I90Ne04DSex81Z50+F9t+4TnEAyD8jjqh8W3bwaCcy0gMpNYxmB3/sA9aH 4cGCDa7Cm2fee1HpKR0p+BywR+E8kqt6YhQm7KF0gnQ/6PcTkHoZBVAHDF+72pCl2OGe c+FB+y09WKgwL07Ht8WoBcEjtCaiaRmYlZ+q4kmTlE6g6sPM7BGz79EdPfHHrgQPKry8 SXvA== 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:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id u24-20020a17090abb1800b00286aded8191si5401869pjr.122.2023.12.06.07.00.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 07:00:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 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 pete.vger.email (Postfix) with ESMTP id DD7ED805746D; Wed, 6 Dec 2023 07:00:31 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379052AbjLFPAT (ORCPT + 99 others); Wed, 6 Dec 2023 10:00:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378993AbjLFPAS (ORCPT ); Wed, 6 Dec 2023 10:00:18 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59B83B5 for ; Wed, 6 Dec 2023 07:00:24 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4FCF0C433C7; Wed, 6 Dec 2023 15:00:23 +0000 (UTC) Date: Wed, 6 Dec 2023 10:00:50 -0500 From: Steven Rostedt To: LKML , Linux Trace Kernel Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers Subject: [PATCH] ring-buffer: Test last update in 32bit version of __rb_time_read() Message-ID: <20231206100050.3100b7bb@gandalf.local.home> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email 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 (pete.vger.email [0.0.0.0]); Wed, 06 Dec 2023 07:00:32 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784545129528688664 X-GMAIL-MSGID: 1784545129528688664 From: "Steven Rostedt (Google)" Since 64 bit cmpxchg() is very expensive on 32bit architectures, the timestamp used by the ring buffer does some interesting tricks to be able to still have an atomic 64 bit number. It originally just used 60 bits and broke it up into two 32 bit words where the extra 2 bits were used for synchronization. But this was not enough for all use cases, and all 64 bits were required. The 32bit version of the ring buffer timestamp was then broken up into 3 32bit words using the same counter trick. But one update was not done. The check to see if the read operation was done without interruption only checked the first two words and not last one (like it had before this update). Fix it by making sure all three updates happen without interruption by comparing the initial counter with the last updated counter. Cc: stable@vger.kernel.org Fixes: f03f2abce4f39 ("ring-buffer: Have 32 bit time stamps use all 64 bits") Signed-off-by: Steven Rostedt (Google) --- kernel/trace/ring_buffer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index a6da2d765c78..8d2a4f00eca9 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -644,8 +644,8 @@ static inline bool __rb_time_read(rb_time_t *t, u64 *ret, unsigned long *cnt) *cnt = rb_time_cnt(top); - /* If top and bottom counts don't match, this interrupted a write */ - if (*cnt != rb_time_cnt(bottom)) + /* If top and msb counts don't match, this interrupted a write */ + if (*cnt != rb_time_cnt(msb)) return false; /* The shift to msb will lose its cnt bits */