From nobody Fri Sep 25 04:41:09 2026 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9B1C52BE2F for ; Wed, 16 Sep 2026 15:28:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.69 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789572523; cv=none; b=R5bLw7/uLsOmXnDGfxxBVxLgwvxb+7fvSRlofTjumJFILuj6ODl9kWtJNqbF8ET+2QU6t1/heLalJcy1IJLJgPqKNGwsRjp8D8o9tMchTu0hzAhW4sVqQ2gWlgCU9qfSTRYsTm6Q3Cf8HfLLlQI3fK2Kjb+tjIgqWkSie4vjacA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789572523; c=relaxed/simple; bh=TXteeCRtix+xVHTlNUBmPxcBgoC0nsHNPU9LRC6hnbk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=BDWIMB0W+axfglNVCGwlnltDESSM5/EbHJ/I8DK7zouQvLFJzXMVaNyZZIFmclhE7CeMhGQzOrfQAuG/GzWkfrSNYI70VUh6LqDmldt7GFLD0s7R3a9wDL4AWeojlTkY7BiqPD8UjSiNnajaLFNqLZ3+r/4WUs4+PFY8BfSGTXk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--vdonnefort.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=bX5D34qQ; arc=none smtp.client-ip=209.85.128.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--vdonnefort.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="bX5D34qQ" Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49e76a80fe5so44105805e9.2 for ; Wed, 16 Sep 2026 08:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1789572507; x=1790177307; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rSH0k2F7aL4twNq/bkwjKNFeVoAS1hGzVzxlltkMSZU=; b=bX5D34qQs8qZZ6UbwCCvYRRFvXFu6GhJ0WDxXjbJxjht+GB0OEEmtXN8hOnIXXyoof GKVldWK3HJ7M7nKwzLfmvHq0Q6vNlC39JrCXJb0MRUpj8D9kV9pxoSnFE07JyQxLjwNM NpiLnOKky0OC3JitzidKHExWa5LAb/TAsaG1z5l1bb7ktXiL0rzJ0s5s2h6v660DsFk+ 37KYSxjHFd/+8aKpmFfGIOs95H1AYdUzFveIQt3D9T7BuG/aLjfWPbonfhBTX0AdilXS RMxPl9N48yFz05DbtenRcZoY4/bGgUTYefqkzegRVOzEKiO7JHZmNWtyyXN/lwtQ57qJ v+hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789572507; x=1790177307; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rSH0k2F7aL4twNq/bkwjKNFeVoAS1hGzVzxlltkMSZU=; b=o1DGbGKzDbJF5ej4TaK76jrrVviD64pjCkGF/DIbQeC/YtYb9RSc7sYFYYtmH6G1mR sdhVOWvKWaE214puV0KcZ0Fb9E2JkhPDgqVtEpTF5RS4UNrLceVClICGSroSN3TXR5G0 QtVVsX3+wDXyz2RaeeO8nHMVXddu1YFFBzFHr4a3jYtnEc75RssUPSr7Sbs0WA5cu6Xk gcjU3YJntfLuQ53d9Q4pd+eiwuDT/rmF04q5I9nWuYcGN0BbENYyBV38EdhUTi4QjKPk vyS0GNDnq4mmXLHjLjwl43/AgYIjR40F39fj0gLnyiuJZ1t14BC44+/xgfycJ6bup33D bC2Q== X-Forwarded-Encrypted: i=1; AKwUvBx72frvYkFYeNltRg8pQxfUuWstZSW73OnyC+7cEz/v/pNjmLuTcHcd3qZ2rcVFBBdc3s57qfIfB1sixx8=@vger.kernel.org X-Gm-Message-State: AFuF++mbhrFR4woe6SidKItHKagSKYS4Uc0Kh2aw+XlVt0Rugtp6/eHt JugKfrqgXd9Ib+pZwjlJIqkWojqZLHOGBbsoM2cCQdSWmioQKKqCmVDvywKmwvRPR593GlkDONH WrZDRJRzexpYvCP07xCTB2g== X-Received: from wmsk7-n2.prod.google.com ([2002:a05:600d:8487:20b0:49d:f3f:1e8b]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:548f:b0:49c:fc6e:8cbb with SMTP id 5b1f17b1804b1-49ec0543ce6mr39073525e9.31.1789572507438; Wed, 16 Sep 2026 08:28:27 -0700 (PDT) Date: Wed, 16 Sep 2026 16:28:12 +0100 In-Reply-To: <20260916152813.105082-1-vdonnefort@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260916152813.105082-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260916152813.105082-2-vdonnefort@google.com> Subject: [PATCH v2 1/2] ring-buffer: Clean up resize_disabled checks From: Vincent Donnefort To: rostedt@goodmis.org, mhiramat@kernel.org, linux-trace-kernel@vger.kernel.org Cc: mathieu.desnoyers@efficios.com, kernel-team@android.com, linux-kernel@vger.kernel.org, devnexen@gmail.com, Vincent Donnefort Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ring_buffer_subbuf_order_set() checks for resize_disabled twice under the same buffer->mutex hold. Moreover, this check duplicates the logic in ring_buffer_resize(). Create a common helper rb_resize_disabled() to factor out this code. Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 63 +++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 04bb94c29f58..73311c4fc556 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -3280,6 +3280,21 @@ static void update_pages_handler(struct work_struct = *work) complete(&cpu_buffer->update_done); } =20 +static bool rb_resize_disabled(struct trace_buffer *buffer, int cpu) +{ + lockdep_assert_held(&buffer->mutex); + + if (cpu !=3D RING_BUFFER_ALL_CPUS) + return atomic_read(&buffer->buffers[cpu]->resize_disabled); + + for_each_buffer_cpu(buffer, cpu) { + if (atomic_read(&buffer->buffers[cpu]->resize_disabled)) + return true; + } + + return false; +} + /** * ring_buffer_resize - resize the ring buffer * @buffer: the buffer to resize. @@ -3324,20 +3339,17 @@ int ring_buffer_resize(struct trace_buffer *buffer,= unsigned long size, if (nr_pages < 2) nr_pages =3D 2; =20 - if (cpu_id =3D=3D RING_BUFFER_ALL_CPUS) { - /* - * Don't succeed if resizing is disabled, as a reader might be - * manipulating the ring buffer and is expecting a sane state while - * this is true. - */ - for_each_buffer_cpu(buffer, cpu) { - cpu_buffer =3D buffer->buffers[cpu]; - if (atomic_read(&cpu_buffer->resize_disabled)) { - err =3D -EBUSY; - goto out_err_unlock; - } - } + /* + * Don't succeed if resizing is disabled, as a reader might be + * manipulating the ring buffer and is expecting a sane state while + * this is true. + */ + if (rb_resize_disabled(buffer, cpu_id)) { + err =3D -EBUSY; + goto out_err_unlock; + } =20 + if (cpu_id =3D=3D RING_BUFFER_ALL_CPUS) { /* calculate the pages to update */ for_each_buffer_cpu(buffer, cpu) { cpu_buffer =3D buffer->buffers[cpu]; @@ -3409,16 +3421,6 @@ int ring_buffer_resize(struct trace_buffer *buffer, = unsigned long size, if (nr_pages =3D=3D cpu_buffer->nr_pages) goto out; =20 - /* - * Don't succeed if resizing is disabled, as a reader might be - * manipulating the ring buffer and is expecting a sane state while - * this is true. - */ - if (atomic_read(&cpu_buffer->resize_disabled)) { - err =3D -EBUSY; - goto out_err_unlock; - } - cpu_buffer->nr_pages_to_update =3D nr_pages - cpu_buffer->nr_pages; =20 @@ -7473,13 +7475,9 @@ int ring_buffer_subbuf_order_set(struct trace_buffer= *buffer, int order) =20 old_capacity =3D rb_subbuf_capacity(buffer); =20 - /* The mmap fast path reads subbuf_order without buffer->mutex. */ - for_each_buffer_cpu(buffer, cpu) { - if (!cpumask_test_cpu(cpu, buffer->cpumask)) - continue; - if (atomic_read(&buffer->buffers[cpu]->resize_disabled)) - return -EBUSY; - } + /* Check it is resizable before we touch subbuf_order */ + if (rb_resize_disabled(buffer, RING_BUFFER_ALL_CPUS)) + return -EBUSY; =20 atomic_inc(&buffer->record_disabled); =20 @@ -7496,11 +7494,6 @@ int ring_buffer_subbuf_order_set(struct trace_buffer= *buffer, int order) =20 cpu_buffer =3D buffer->buffers[cpu]; =20 - if (atomic_read(&cpu_buffer->resize_disabled)) { - err =3D -EBUSY; - goto error; - } - /* Update the number of pages to match the new size */ nr_pages =3D old_capacity * buffer->buffers[cpu]->nr_pages; nr_pages =3D DIV_ROUND_UP(nr_pages, rb_subbuf_capacity(buffer)); --=20 2.55.0.1082.g2b9226bbc0-goog From nobody Fri Sep 25 04:41:09 2026 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A54C53359F for ; Wed, 16 Sep 2026 15:28:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.72 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789572521; cv=none; b=i8Xmn9N8q3Hxy2bE7GM2ED9K5ufxkCT2Fz4xdOJW0YqwHyAXopvu5NsddSzoWj4cstR21yHp7zeeyxwnSMX0A3UngeouLGS8dbVREVhxJ46LFTfvJ2SmzcpFUGXCR5Gnf1rYD/YZaC1gI4xl0mlCKOmt7tTroore+P3iARwW5CQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789572521; c=relaxed/simple; bh=seTCgIroPxqNkO9TjoG0CMQWVPklh/K3GHcYMoDJZ2k=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=KH7N2T7dE3kN+USX71JMFW9Khmo0D2+D6VmTcuiNxifD5B3z202rBMxCtvMHW0u3iiMiIbT2u5fkhruvg72OyvKeVuq+ONP4J1wYgN2LD9w30uN3oWYvjQEHvx2lsEuSuZa54KK6AhFAcU1bqAaEjT6svSFzaQq+pQ36XyfOADE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--vdonnefort.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=EfcRoDPB; arc=none smtp.client-ip=209.85.128.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--vdonnefort.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="EfcRoDPB" Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso48095935e9.2 for ; Wed, 16 Sep 2026 08:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1789572509; x=1790177309; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Z8XwdVS42p1CP6QnGtJO4ImFTQHL4GGRP2dYFUy8/Ek=; b=EfcRoDPBgkU1DqOwtjrWRuGk9TeIyus351PdZPJuQKmhOq6RyTA6FO7vvo4M5KrFjc hGPFQau/Mpv9bY5flzuWyWYNshG7CejZrlsSx/0KIQKxWL53wkCouOB8FaJsS1SHGNXC JmHzgZ+T7Y+VrRzEtki903LmNadrQHdagKiBd1rCzacqNFRGvjuWu6r+6hBxiWmyd7ME b+vSURzkoPR7R6Wr/wmaWYhcIBU8BK93g4XKGTsIk96qZPSLKO3UBJz8qZvTY04ivYN8 iVZHYKDPr9IJsPIFxNlHkuj7AXLHynchQwvypkraIpdwQNmqrbERBTIkkZS4Y39hloQz 5bzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789572509; x=1790177309; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Z8XwdVS42p1CP6QnGtJO4ImFTQHL4GGRP2dYFUy8/Ek=; b=jIjweLhH6+91TnXtuiESpUS+KLgPdVZA11iQQ7TX6BcjTFb1ZcvNmBES18UGi3i6Ab 1dh6efyAliq+tcAJZK05IjT46FZa+JbdzD66nmKsNyrtblaVA8sKatdpWe8LJ4BD0x0D XuhHA74Hq8GGPAU05yJE2T9+Kg6OAdUY/wuZ6iT3qgCphKGWnS/kZAn79v4wdoBQU9aC afUpdH6+OTevqKUbyvsn713reMJTCQKy09C/bcPPgcxIhe7zWSkaTouBpt5aGnoT3TWw 8to0jfgastFghYpQDX1CRy1V5fqg8ATWi/Y1vsV6A3tsVR3EEO7EfbzMOvcZAupYtQ60 ONAw== X-Forwarded-Encrypted: i=1; AKwUvBwEnWsOPghUXf3NUufmXjc1UKT/bujTH8rwFQQSqYeUmS60ur9UMZ4VAY/uE87TufooGPrWJVqv1qtdl1E=@vger.kernel.org X-Gm-Message-State: AFuF++lpxfGCmycEJpO61gn5cW5irbPMskt5mHqg0s4xcFGtpc5XaNDE vFwlArPf9fik2vT31CVvnMw46eAgBWz1vwIpp5Jbu/ed+f3gohokRCXQaLZATHhxn7NFsnne3AH lbryqmyS/lXvXxY6xkIVMew== X-Received: from wrdf7.prod.google.com ([2002:a5d:58e7:0:b0:486:f98c:60be]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:34d6:b0:49c:fc6c:bdfa with SMTP id 5b1f17b1804b1-49eb7322c98mr36772795e9.17.1789572508661; Wed, 16 Sep 2026 08:28:28 -0700 (PDT) Date: Wed, 16 Sep 2026 16:28:13 +0100 In-Reply-To: <20260916152813.105082-1-vdonnefort@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260916152813.105082-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260916152813.105082-3-vdonnefort@google.com> Subject: [PATCH v2 2/2] ring-buffer: Remove unnecessary cpumask_test_cpu From: Vincent Donnefort To: rostedt@goodmis.org, mhiramat@kernel.org, linux-trace-kernel@vger.kernel.org Cc: mathieu.desnoyers@efficios.com, kernel-team@android.com, linux-kernel@vger.kernel.org, devnexen@gmail.com, Vincent Donnefort Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" for_each_buffer_cpu() already iterates over buffer->cpumask. Remove the unnecessary cpumask_test_cpu() found in ring_buffer_subbuf_order_set(). Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 73311c4fc556..2087bbfd8f20 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -7488,10 +7488,6 @@ int ring_buffer_subbuf_order_set(struct trace_buffer= *buffer, int order) =20 /* Make sure all new buffers are allocated, before deleting the old ones = */ for_each_buffer_cpu(buffer, cpu) { - - if (!cpumask_test_cpu(cpu, buffer->cpumask)) - continue; - cpu_buffer =3D buffer->buffers[cpu]; =20 /* Update the number of pages to match the new size */ @@ -7522,9 +7518,6 @@ int ring_buffer_subbuf_order_set(struct trace_buffer = *buffer, int order) struct list_head old_pages; unsigned long flags; =20 - if (!cpumask_test_cpu(cpu, buffer->cpumask)) - continue; - cpu_buffer =3D buffer->buffers[cpu]; =20 raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags); --=20 2.55.0.1082.g2b9226bbc0-goog