From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (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 2F3DF46D0A0 for ; Tue, 4 Aug 2026 14:04:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.70 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785852246; cv=none; b=rEeyOIVqVtq+QiEYf0cE/JVYbYMOd/kXQBasiDFR7IuaRpYnl8z3rHIqqcFfoopu5YIUUapHMa60s56C8uCIIASriW7/thBiLAOG4JGnaJOCqv0zy9wymCwz5W1a8Pg2c+zMXNRAZgxphrWFGuzeokkXb6uBmyQEVPVLBO2BZtI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785852246; c=relaxed/simple; bh=PgyjPKv89cYDWxRVDBZ9T8EjQ7eNrYSfpNnidX9ObWg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=de4Rb21sdMTMDOUoMufX/YgMbrZ8KsVIIGlDh3yo+8hCGJVaA2IsgAP+7w6YCwkBzeAg6g15PXBPT4Wnogy2hHZwiqL3N40kpabSusEFvCp6WLT+NzPfISXcftiiaaViYIeCY4qnQkLWYIaJ7JPlm3L6O+fhH+3TCHqa+Gyl0ls= 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=ara7NA2L; arc=none smtp.client-ip=209.85.128.70 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="ara7NA2L" Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-492488f8583so31234685e9.2 for ; Tue, 04 Aug 2026 07:04:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1785852242; x=1786457042; 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=tZ8hbfpKYL0TXNWWVnEYWRS4CSMgmdh3mY5rGkVM9ow=; b=ara7NA2LXXDBSTOsYbshfwE8H8O0Nd1ZqWvoODQa7XPtQuxDTtyUHAhyP164x1oGeu nlz8a87z0ZT3tUT3pcoEhnqpmkTJYefWJh0gsIyhmV1lGj0LOW7nEsD5mJcsrztC2ZIZ J0fQGifKgKzaNaCxGB0V3kkeMblW4XPWXsSKntFT1Wr4/25UqfgDt+Wh1DXIoGsVI5uN jB0baIk8UmhIf3l3jeNXEjtBN4KlVIilm26FNxaiE0PLCCgkgprjYBBHbgVbqesxIWOe SyEUzlCgcA1OnUEnoWvoTQJ/kwmtpBl0EyyYBlcQ6BN07nBMA+OpRNztmFlJisY0A53i EcHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785852242; x=1786457042; 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=tZ8hbfpKYL0TXNWWVnEYWRS4CSMgmdh3mY5rGkVM9ow=; b=YArdm+ojkx2aP5YsqSYopZc1cwq5nFzzVYfy4ln1WguKwz3tO9tYoSu4KgFTGiJ+oo Zzh4jAgvGVsvDuXvw3af8rhQDN6G/gNiMSDd9s7PwEVIpS9m05JxtmkR10YwX0f9PuPv BwQIW4P/8odL40ucXnkqgz/Mm0TM+VXQ4jrkXO60s72GZJIiTHnt6OEK5J8dYmoq32bU tzc8bJVRiuo/7vrqpzYbdfpLpd3ZEtjgSw4YZoVnPlsnBJSPNSECYA5zHcPeUkzl8ZrI LWksJBwQknP/aPDf3+29NI+UroEsjojYkCicFvyw3jIt+J20754SRGfjPPC+BqtIApj0 bycw== X-Forwarded-Encrypted: i=1; AHgh+RpQcfM4TWac2D44Itntz7grzP6SwdJQZ9UPWkE0tN0ManqRmFT4tJwi0HZY9LhZqztgR2ao8OwR29zTKb4=@vger.kernel.org X-Gm-Message-State: AOJu0YxwZl7jgiop5hFtGL8UUW6E6VjA4KeZWgkyHMU4ui9UrwD8bvnd O/yt7E5ZIkPAqnPNloEgkwn4JNZq0pKSH+vDrTaKQa6gczxGQoYsfLdLl+7hVUioFCLj6m/FdhD nr++OckfNAoAL9pYkbrGKJA== X-Received: from wmbez14.prod.google.com ([2002:a05:600c:83ce:b0:495:5b59:7a9c]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:4689:b0:498:162a:dbda with SMTP id 5b1f17b1804b1-498162adbdfmr218128225e9.5.1785852241815; Tue, 04 Aug 2026 07:04:01 -0700 (PDT) Date: Tue, 4 Aug 2026 15:03:24 +0100 In-Reply-To: <20260804140333.797210-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: <20260804140333.797210-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.571.g244d577d93-goog Message-ID: <20260804140333.797210-10-vdonnefort@google.com> Subject: [PATCH v4 09/18] ring-buffer: Use irqsave for the reader lock in ring_buffer_poll_remote 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, Vincent Donnefort , Sashiko Content-Type: text/plain; charset="UTF-8" Calling rb_wakeups with the reader lock held but interrupts enabled can lead to a deadlock: the irq_work might run on the same CPU, but will block when acquiring that very same reader spinlock. First, rb_wakeups does not even need to be called under the reader lock. Move the function outside of the reader lock scope. Second, the reader lock must be acquired with IRQs disabled anyway. Use the irqsave variant of the spinlock. Fixes: 2e67fabd8b77 ("ring-buffer: Introduce ring-buffer remotes") Reported-by: Sashiko Signed-off-by: Vincent Donnefort diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 8e2485bb3aa8..9cb72694bfda 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -6800,13 +6800,17 @@ int ring_buffer_poll_remote(struct trace_buffer *buffer, int cpu) struct ring_buffer_per_cpu *cpu_buffer; if (cpu != RING_BUFFER_ALL_CPUS) { + bool wakeup; + if (!cpumask_test_cpu(cpu, buffer->cpumask)) return -EINVAL; cpu_buffer = buffer->buffers[cpu]; - guard(raw_spinlock)(&cpu_buffer->reader_lock); - if (rb_read_remote_meta_page(cpu_buffer)) + scoped_guard(raw_spinlock_irqsave, &cpu_buffer->reader_lock) + wakeup = rb_read_remote_meta_page(cpu_buffer); + + if (wakeup) rb_wakeups(buffer, cpu_buffer); return 0; @@ -6821,7 +6825,7 @@ int ring_buffer_poll_remote(struct trace_buffer *buffer, int cpu) for_each_buffer_cpu(buffer, cpu) { cpu_buffer = buffer->buffers[cpu]; - guard(raw_spinlock)(&cpu_buffer->reader_lock); + guard(raw_spinlock_irqsave)(&cpu_buffer->reader_lock); rb_read_remote_meta_page(cpu_buffer); } -- 2.55.0.571.g244d577d93-goog