From nobody Thu Sep 24 16:57:26 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 E086A2EEE96 for ; Tue, 22 Sep 2026 07:29:55 +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=1790062197; cv=none; b=T90Yfkb5lBzS1VaHodG3iF05AewdPy5D/zLXBxpOrHm+dtDoBLslS67ZEBYrSobw0uvSp7dJemkscuq4X5mBPOHA0iLKk/Jeo0Fd6cqKuQkC5nehPt5VpNINXY/QFkvlUO/nKvAGfBlXbF/Kx5a/43o1YpHks4/ab0xJn5q7Bas= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062197; c=relaxed/simple; bh=iLd3VpRPihpMEoCTG7s8D3tK96vwfiQDnJH8Y0KX7K8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=nevQTwiE4VHaBxVWq7KKfQB6MDoNvL1qS9aC3npjJYokA2MgBe2FHd0cfxndzs79pQu8Y/E8FmC7mNk8KHe1WYjnQF09rtRzsv9sDj8DVG0SyzAnb6BqJWOzNY5tV0XINHtXyeIxWN4zW/OD3CRSfP9JDDH8klso4ZwFe1EXdXs= 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=kdOmPfc9; 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="kdOmPfc9" Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49e76a80fe5so53637015e9.2 for ; Tue, 22 Sep 2026 00:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1790062194; x=1790666994; 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=OQURR16ZQrDof5sRfE4GrcE/4jkuBXxswl7UtFVvz6Q=; b=kdOmPfc9AAffJ3Mu2gH/7jyQoTjQ9z1bDp3BerLzhvKMIdEfrr2CJKj5q6ag2hEEGa FuALioPSbn1INCaF8Z4Hg5AcXgaZBjwvD0wOC4F+ZHdovV0j5EwNhRlHRxkgnecqku2V ht0q9X5KAZRAdTUR4iw2763tN6nzd1Cn518AdqVXEbv3Cfa5y5mEfQWHqAuuIsFNOa7x QzvL76r3TakuA6yQ8bAjnFDKQdvY1NDTFAwI8/fplMTOb75ncjrL4a8RUB3sSY8EM1fw Z7J07I0DlNr/hlCOgBiigK/hb1qWEvR9lG+iEI2fIfe+9sDgiKB4DCI+g6rvnpAMYNNN 6LFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790062194; x=1790666994; 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=OQURR16ZQrDof5sRfE4GrcE/4jkuBXxswl7UtFVvz6Q=; b=dEfpjynU3131Zq7uKArHm7l5w+fXa4f+oCuJx0iBarStGYvwDwEpmHzIHj67yDMcka aEm/yKzl2gloA/ZR34d1My4KKmDAdfJB7Qa6NSzv6pXjjKtJM4uXrXoT760lsCuKavCh YTfEPA7cnJKAa1wM8PDJTGOzV5tPIDwQnESOvAi0yYRBF+pyrMvR4mXu75VcgN8ngk05 pFRjt2HTyIzYhCapaIbLlv7qVR5vDr0OARhnIGhZAD6DYw+tvwc+x2+C/i/X/9saQaYC ezS9egiCyi53EHcrEnGtqKiARI26yaT7wo5T1cVfteCBRQI2fERx6crT/0FYyzOA67V2 6TwQ== X-Forwarded-Encrypted: i=1; AKwUvBzNp74eKyOaEZ0fQrxKNgWIkoZB4JIbUtQR+Fo7sGJWZx3Wfx7LP04SfYCYTN3w2AjQHXg5EeNTFSEaCk0=@vger.kernel.org X-Gm-Message-State: AFuF++n9xvUBSf8VXlpmg1HTaeI2GQ7Kf9bAnOBEn1h3cVYZnqiLnPbJ HlbJ5ZXqxgC6SJmGVWsFa/BCaykZGqzzlFVikAKUKBXYoxSW5CdA1ufCBDRQEIbZ5/4eG0OIGZs AyX953HAVqRxHWrj6dPgsGg== X-Received: from wmqi16.prod.google.com ([2002:a05:600c:3550:b0:49e:7c6e:110f]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600d:4453:10b0:49f:cbf1:e77b with SMTP id 5b1f17b1804b1-49fcbf1e9eamr110035115e9.10.1790062194147; Tue, 22 Sep 2026 00:29:54 -0700 (PDT) Date: Tue, 22 Sep 2026 08:29:41 +0100 In-Reply-To: <20260922072944.1281427-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: <20260922072944.1281427-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260922072944.1281427-2-vdonnefort@google.com> Subject: [PATCH 1/4] ring-buffer: Use kvzalloc_objs for user mapping arrays 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 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Mapping a large trace buffer to user space requires allocating an array of struct bpage and one of struct page. For large ring buffers, these contiguous allocations are likely to fail with memory fragmentation. Switch both to kvzalloc_objs() to use the vmalloc fallback under memory pressure. Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 04bb94c29f58..f9be87c2cc3d 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -7746,9 +7746,9 @@ static int __rb_map_vma(struct ring_buffer_per_cpu *c= pu_buffer, struct vm_area_struct *vma) { unsigned long nr_subbufs, nr_pages, nr_vma_pages; - pgoff_t pgoff =3D vma_start_pgoff(vma); + struct page **pages __free(kvfree) =3D NULL; unsigned int subbuf_pages, subbuf_order; - struct page **pages __free(kfree) =3D NULL; + pgoff_t pgoff =3D vma_start_pgoff(vma); int p =3D 0, s =3D 0; int err; =20 @@ -7785,7 +7785,7 @@ static int __rb_map_vma(struct ring_buffer_per_cpu *c= pu_buffer, =20 nr_pages =3D nr_vma_pages; =20 - pages =3D kzalloc_objs(*pages, nr_pages); + pages =3D kvzalloc_objs(*pages, nr_pages); if (!pages) return -ENOMEM; =20 @@ -7877,7 +7877,7 @@ int ring_buffer_map(struct trace_buffer *buffer, int = cpu, return err; =20 /* subbuf_ids includes the reader while nr_pages does not */ - subbuf_ids =3D kcalloc(cpu_buffer->nr_pages + 1, sizeof(*subbuf_ids), GFP= _KERNEL); + subbuf_ids =3D kvzalloc_objs(*subbuf_ids, cpu_buffer->nr_pages + 1); if (!subbuf_ids) { rb_free_meta_page(cpu_buffer); return -ENOMEM; @@ -7901,7 +7901,7 @@ int ring_buffer_map(struct trace_buffer *buffer, int = cpu, cpu_buffer->user_mapped =3D 1; raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); } else { - kfree(cpu_buffer->subbuf_ids); + kvfree(cpu_buffer->subbuf_ids); cpu_buffer->subbuf_ids =3D NULL; rb_free_meta_page(cpu_buffer); atomic_dec(&cpu_buffer->resize_disabled); @@ -7958,7 +7958,7 @@ int ring_buffer_unmap(struct trace_buffer *buffer, in= t cpu) =20 raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); =20 - kfree(cpu_buffer->subbuf_ids); + kvfree(cpu_buffer->subbuf_ids); cpu_buffer->subbuf_ids =3D NULL; rb_free_meta_page(cpu_buffer); atomic_dec(&cpu_buffer->resize_disabled); --=20 2.55.0.1082.g2b9226bbc0-goog From nobody Thu Sep 24 16:57:26 2026 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (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 49D724E06F2 for ; Tue, 22 Sep 2026 07:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.71 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062198; cv=none; b=rDjFwlPRkYnYNzNrYJDve9YjIMGXHJlI2Y5eiQvltqeQbSNZMlSZJ6erOTZQl4UvHJle5NcOFc7tQJfTBlbDk/g+1H+7aTMH4jh1awBryig1utxQSC89fEIOLDclIxH6jUtzpY39m6Mb3qeiNJ93jBvhg1TV1+DaDXu5FnZ4y8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062198; c=relaxed/simple; bh=VQ/CNkma9Ihix0mslTlY/lTNmjjM6C9g2YivHyFT1rU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Bb9NPKrA49cP8gQxX8ATYXvWxEDqeT17XzdGDZLxqznI0NbEGRec/VH3b8SFPXUyHAtgXgVLGYW4Vt9dQLZhlLqpQui/+aGwpJ8DV0nI592Yw8Q43jZ3BhJKvTX5UcEotytkhbqRJ9ibmghPAsUmycdDReiizDEXMP7jRiwWQw8= 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=DErGZJse; arc=none smtp.client-ip=209.85.128.71 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="DErGZJse" Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-49d156c917cso3344635e9.1 for ; Tue, 22 Sep 2026 00:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1790062195; x=1790666995; 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=T6uCmfq+y+LNr8epKsVv0t5gG3mshNFczSag6wmrcqY=; b=DErGZJseYNCZobjSmbL4blhybrUj5Pxbljoqbk3AgGSLeVhJWwjL5WnF1SW4aZpQXx hxPvnuEVbduhYFt4JK6vQjauQaCi3IG/XOKtLWOElHiG4BD/+Ij82HaU6BgynPjebuW2 a1dQiNZ+LCeMukwddCf6CpjpNrM1EtSwQ1tld9CKKRiGaehXNMb/xSwPZ2Q2on95eAKR 5Gpr8zlyJkr+70+BJUR9T7VNychdWAAvjS0xfs+KCLfwHU8hewKWO22/U1Odng/Lkrlv SZxqK37vDiEOCahcRIDJmllKDkFmEktRGR4nliWJ+sNhf7TmSpbh4KFJD3zsLdGMSVo+ jtXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790062195; x=1790666995; 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=T6uCmfq+y+LNr8epKsVv0t5gG3mshNFczSag6wmrcqY=; b=dVG1QLGxyBGADih+Z9LoCkvG8Fyr8xmccYeCAp/UNXthAHKSLXGM2kHCp1O837tq8B 2/aIspq4Sk2b2qbZKPJJjUVtr0KE/nSvTjV0cXJLVMSRwTdFWrEEoaXLKT8l8G2Y0qPS UFs7f1dlkNEsU3uS8d01k6zL02GHTk9D4YHFMw1zOPQrJxSAbIUbX8FQ79j7sMRw4+vP qlQZYaqmXfMjTvyI/MKz7zc3cy5dfEP0sqm1wndt6CEK0BVaR0GbZMie5A1uLKlCKWtV vGTPBdXif68F08KHWwceLWnyLhcxa30nhTpOZ45dsWDT07/dF7c5GU0C94NDSDEdGCft P1rA== X-Forwarded-Encrypted: i=1; AKwUvBxnD5DF72DuDSNAwA6MPvcWNYyzASkxlrOWbShheTAidMZB5HZ8u2riNpIKDfIjXib4iYDQKs99QZdiaY4=@vger.kernel.org X-Gm-Message-State: AFuF++myh7cnjB3ys12fparKUdJG/J3LYlEEo52PxF7PfLfAD/qtzkct 7GVd7foLIDKBmeyeFZjbCMwmQWtFpO0tlizTZx3lWdGNKYed2JM+1s5AOnWVAdxh/32ubIvtSWn EEyFU4F+ghJ/dHsji4CGTFA== X-Received: from wmpi42.prod.google.com ([2002:a05:600c:4b2a:b0:49e:8337:33d]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:c0d2:10b0:49d:257c:a735 with SMTP id 5b1f17b1804b1-49fd8a61947mr19151065e9.11.1790062195310; Tue, 22 Sep 2026 00:29:55 -0700 (PDT) Date: Tue, 22 Sep 2026 08:29:42 +0100 In-Reply-To: <20260922072944.1281427-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: <20260922072944.1281427-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260922072944.1281427-3-vdonnefort@google.com> Subject: [PATCH 2/4] ring-buffer: Use kvzalloc_objs for remote buffer subbuf_ids 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 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Creating a remote ring buffer requires allocating an array of bpage. For large ring buffers, this contiguous allocation is likely to fail with memory fragmentation. Switch it to kvzalloc_objs() to use the vmalloc fallback under memory pressure. Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index f9be87c2cc3d..1a158a24b3c8 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -2620,8 +2620,8 @@ rb_allocate_cpu_buffer(struct trace_buffer *buffer, u= nsigned long nr_pages, int cpu_buffer->remote =3D buffer->remote; cpu_buffer->meta_page =3D (struct trace_buffer_meta *)(void *)desc->meta= _va; cpu_buffer->nr_pages =3D nr_pages; - cpu_buffer->subbuf_ids =3D kzalloc_objs(*cpu_buffer->subbuf_ids, - cpu_buffer->nr_pages + 1); + cpu_buffer->subbuf_ids =3D kvzalloc_objs(*cpu_buffer->subbuf_ids, + cpu_buffer->nr_pages + 1); if (!cpu_buffer->subbuf_ids) goto fail_free_reader; =20 @@ -2681,7 +2681,7 @@ rb_allocate_cpu_buffer(struct trace_buffer *buffer, u= nsigned long nr_pages, int return_ptr(cpu_buffer); =20 fail_free_reader: - kfree(cpu_buffer->subbuf_ids); + kvfree(cpu_buffer->subbuf_ids); free_buffer_page(cpu_buffer->reader_page); =20 return NULL; @@ -2694,8 +2694,8 @@ static void rb_free_cpu_buffer(struct ring_buffer_per= _cpu *cpu_buffer) =20 irq_work_sync(&cpu_buffer->irq_work.work); =20 - if (cpu_buffer->remote) - kfree(cpu_buffer->subbuf_ids); + kvfree(cpu_buffer->subbuf_ids); + cpu_buffer->subbuf_ids =3D NULL; =20 free_buffer_page(cpu_buffer->reader_page); =20 --=20 2.55.0.1082.g2b9226bbc0-goog From nobody Thu Sep 24 16:57:26 2026 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (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 3753A4FC8D1 for ; Tue, 22 Sep 2026 07:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.71 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062199; cv=none; b=i/jSwxzdDaQRYa6YbYdmofwTct/StPpeY574SW3N2jazmmaPk0ZaGEOB+OZo9XdrGlnxeTYyhHj3KQCg5/XZ1TXZpDIxkS3809uvqmDGRAGHUn6HQmu1+8IzrxrParUVfoShch1QDS0yCSgCAPNY2yA2ISXoimLN3SwnunZRVtU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062199; c=relaxed/simple; bh=d4W1CAKZqJFP+rhzc/mGkXmSM4enJRB9Jj4NgZnjZbc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=XXwq797pXGf/iVH+qYnm2mHigw/+2HV4e7OrGe4KH0RIyBnL2/gro9jdWqNaGZdBzpV1dkE+hIBjFkUhYqvy2JpRQOGOc4OLc0XMOjZrktnIBfkuQ/3BAyjRSWxxE5AWoe/0fg7YKyPy+JW6IPfCyMxAqLBmsPsqRRb+PdO4Lz8= 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=G/Ik0XL7; arc=none smtp.client-ip=209.85.128.71 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="G/Ik0XL7" Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso28239485e9.2 for ; Tue, 22 Sep 2026 00:29:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1790062196; x=1790666996; 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=j1G2B+1jiMpXjFmSkI0X0frbWg2TCjpXRk9JIZopsjE=; b=G/Ik0XL73T6Ln+9drxC5PWRNnCyhPGJztUXGtf1kJBuwJS8jF5d9Kfh+gUK2rAsZLC 1y7lOSG3WLo+AGpdD/i0oA94wCwg4+R0ggMWVC/i19tiTQTYiH/rF/R6o7gG4sIptmY9 B5zw6Ofu0rLfrgAlxvB3HYYV5lasCS1Xog93klxnldeD8XPDXApUtPjxhxxyz2L15QSO UI5QAVi+EUcCGskSFJYpG78m4AdVeC8cfV4WuKitzZc+Zsn+CjRxVJXwj7bnViFKeCSU WwvDv6eMNediewj7KZTrmPczqeDEYqEC0qCXUZ1+E/2FOlsILgt9bnoDhJzdZ3iiwDd/ qYDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790062196; x=1790666996; 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=j1G2B+1jiMpXjFmSkI0X0frbWg2TCjpXRk9JIZopsjE=; b=gDTdz8cfm1K86sEbF+Q34lAnvzS7pTvj/z9t2ZHVf0AN5DtuFrmqW5zR7O0xFKAWgU ba5KIILLtNjifWRSBG2PvUFYP17/kmC0EI4RvuxXhwzKnSFuhykqZtKuEVL6BUITX92O JKZVPWB0fqd1U4WTa4UZrQECV2wcGAiJd+FzsyhL8EatkBD5bKChHQ6HeP5bhtxM2J2Y 4mv7ToBOZzQk1qa+vNZtcJv8T9/Rcz6AckhHonoKOco5DQIkG3n5ROeEMlxvi6xpJfRi yMOVZ0KZqEMM05BVkCy9IF/6zCp2WF7+UoBjnTmi5lWcklXtv8AybsEfAYjOOUg8xNeZ Zm7Q== X-Forwarded-Encrypted: i=1; AKwUvBw92qH4m2J45zQ83rpJuapTfdnU5bvzSkVOMcSgToerxlTn1gGjhSbXi1Ex4d5Mi6BLlKPJawW2nuVz/jw=@vger.kernel.org X-Gm-Message-State: AFuF++lalXHLsFey24uL33UER7yUYaRxLYmeKAqZO4de98vH+CevLZaP fyLYU5h54T1OUD67QnfRdlN6mfH1+s9K04uw5gVI+TDmrS8kG29Ufz/nWz1frkFHBrOkd+1OSAt d6XSB5XdYG9Bpis7KHas9dg== X-Received: from wmxe3-n1.prod.google.com ([2002:a05:600d:6503:10b0:49e:6ad9:14a2]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3e07:b0:49c:fc6c:be09 with SMTP id 5b1f17b1804b1-49fc58594d0mr181580785e9.32.1790062196167; Tue, 22 Sep 2026 00:29:56 -0700 (PDT) Date: Tue, 22 Sep 2026 08:29:43 +0100 In-Reply-To: <20260922072944.1281427-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: <20260922072944.1281427-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260922072944.1281427-4-vdonnefort@google.com> Subject: [PATCH 3/4] ring-buffer: Drop redundant ring_buffer_iter::event_size 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 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" event_size contains the maximum size the iterator can read for each event. It corresponds to the maximum capacity of a ring-buffer page. During non-consuming read, resizing is disabled. It is therefore safe to just use rb_subbuf_capacity(), making event_size redundant. Remove it. Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 1a158a24b3c8..3129589e2d0e 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -680,7 +680,6 @@ struct ring_buffer_iter { u64 read_stamp; u64 page_stamp; struct ring_buffer_event *event; - size_t event_size; int missed_events; }; =20 @@ -3558,9 +3557,11 @@ rb_iter_head_event(struct ring_buffer_iter *iter) */ barrier(); =20 - if ((iter->head + length) > commit || length > iter->event_size) + if ((iter->head + length) > commit || + length > rb_subbuf_capacity(iter->cpu_buffer->buffer)) { /* Writer corrupted the read? */ goto reset; + } =20 memcpy(iter->event, event, length); /* @@ -6488,8 +6489,7 @@ ring_buffer_read_start(struct trace_buffer *buffer, i= nt cpu, gfp_t flags) mutex_unlock(&buffer->mutex); =20 /* Holds the entire event: data and meta data. */ - iter->event_size =3D rb_page_capacity(READ_ONCE(cpu_buffer->reader_page)); - iter->event =3D kmalloc(iter->event_size, flags); + iter->event =3D kmalloc(rb_subbuf_capacity(buffer), flags); if (!iter->event) { atomic_dec(&cpu_buffer->resize_disabled); return NULL; --=20 2.55.0.1082.g2b9226bbc0-goog From nobody Thu Sep 24 16:57:26 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 791845187FE for ; Tue, 22 Sep 2026 07:29:59 +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=1790062201; cv=none; b=Owj4OyeQIVuVyoXAZBUm3SQX7UBTVJZNBgz05ZALh/fD7PFPgPB+uZnMPdjSnfQyRnUzDvQG/BkKRlUu21o0aLdj7LabARlsvzXMH+QnnAbUFl/OEiOzhJU1a0QmwPog3gO+eAjHlZZgiy9CVyP5rao+7EZXLhgYiXbr9rUNwwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790062201; c=relaxed/simple; bh=P2j4H5OOPy1kkyjHKrQvlylI3nUgsfi679sciLI2LvQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=VQrlBd5Uc+/xufrN5iAZzmYDgF4JSBbIp87Z9fgmj0UQlKUNjCyNDer/vcxNTsLb9V2SEpYLmUqefmyZxDhh9P1ydxm3bZvoTCrwiVt184FUVkkWaEL7bTx+rSUJLbGJ+f6PQRkV+Fet+vayIIE3fqI4Lp42K3KErqkw2W+3uo8= 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=GKw2hUpK; 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="GKw2hUpK" Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49e73659ac5so53779265e9.2 for ; Tue, 22 Sep 2026 00:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1790062198; x=1790666998; 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=QUOBcf3HiZT7N7pYBnaY6Oqumehc4v9l69pjwog+28Y=; b=GKw2hUpK1KlAnsENgfyDU403oG1jLrMMd1pw/auFrSnyYryauoB5zTuxEp+RXdyBrD PIgPpTQxmSk196m1KHf0LHjg9LA7N1WizDS17eiaagdGxXYSU6ZOsjQh7eG0AkNLSufg VYqROB+t7E0moIn5HokpevLNuxZnYcE15b4M8zv+DENwMxW3RTdGG8sy2NZZ7jdfSC7x ve6k6T4t1H0TvNm2+eRkuF3zpyzaZ+418UV+RmIPdSJIn41VlWxroRsCyioxJhPh1j+0 B4enxD/YU03XyZkc4B3BlCQnxxPKBGF5jjKQrExI2FpptvvrH0ZTu1vq32NbvJHzXpBs bdCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790062198; x=1790666998; 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=QUOBcf3HiZT7N7pYBnaY6Oqumehc4v9l69pjwog+28Y=; b=pURgBYlNRbaj+j/KHP5hqG9SQunqzIylNO98F6tBsAv0wF2WiuFnUrqHJ26zI31i46 Q8eW0K3V1OLBgO99XSJsD9Vs7zTJWEBT366LfaLUPcZjT5M5kQkRq0lx5mO0aCBciPKd cZEMrEPcd+VllgL/MinboIpbrgYt/gz1mzVHZr2iOGx2EmcHJXCOqRf46ZQlKgQm4BEH WFh3iimw7wa0xgkBMkucKuUHlNgtXiRJzqPNMLQ/EFumLCTC+2FpE3OfsdGZb3r1X9K7 xHqVUAuTEr6VyJpm/GOZj9ErUmZVieIVe5D7KtkQ6mf8liSeraWNajbZlRkoePXr2h6m ovwg== X-Forwarded-Encrypted: i=1; AKwUvBwjsHfloAYz24m/xMe5KmwxMPJ4PrhU51FU1RUgvGh2DAWJckWQg4msdFTE6dY21QzRn4wz4SOlrFmdFjw=@vger.kernel.org X-Gm-Message-State: AFuF++kCijr82/z0/o31bxlpqEerI1rwLqz2d/PYqCFuQjMucJLpyv1M v1Ojx86SEx+903onWVl/nGvrfnGZl6GM9JPS6UQ5M9Rjcyy1HOq6227TQLVcbHf9RWlojtJbqVw bMf075L5Tetujx8TEADxhEQ== X-Received: from wmsl27.prod.google.com ([2002:a05:600c:1d1b:b0:49e:7d32:b790]) (user=vdonnefort job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3b05:b0:49e:6249:268b with SMTP id 5b1f17b1804b1-49fc574194amr168813245e9.32.1790062197497; Tue, 22 Sep 2026 00:29:57 -0700 (PDT) Date: Tue, 22 Sep 2026 08:29:44 +0100 In-Reply-To: <20260922072944.1281427-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: <20260922072944.1281427-1-vdonnefort@google.com> X-Mailer: git-send-email 2.55.0.1082.g2b9226bbc0-goog Message-ID: <20260922072944.1281427-5-vdonnefort@google.com> Subject: [PATCH 4/4] ring-buffer: Use kvmalloc for ring_buffer_iter::event 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 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The maximum size for an event correspond to the capacity of a single ring buffer subbuf, which could be multiple pages, making this contiguous allocation likely to fail with memory fragmentation Switch it to kvmalloc() to use the vmalloc fallback under memory pressure. Signed-off-by: Vincent Donnefort --- kernel/trace/ring_buffer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 3129589e2d0e..f03fb9ed3372 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -6467,6 +6467,7 @@ ring_buffer_read_start(struct trace_buffer *buffer, i= nt cpu, gfp_t flags) { struct ring_buffer_iter *iter __free(kfree) =3D kzalloc_obj(*iter, flags); struct ring_buffer_per_cpu *cpu_buffer; + unsigned int max_event_size; =20 if (!iter) return NULL; @@ -6489,7 +6490,9 @@ ring_buffer_read_start(struct trace_buffer *buffer, i= nt cpu, gfp_t flags) mutex_unlock(&buffer->mutex); =20 /* Holds the entire event: data and meta data. */ - iter->event =3D kmalloc(rb_subbuf_capacity(buffer), flags); + max_event_size =3D rb_subbuf_capacity(buffer); + iter->event =3D gfpflags_allow_blocking(flags) ? + kvmalloc(max_event_size, flags) : kmalloc(max_event_size, flags); if (!iter->event) { atomic_dec(&cpu_buffer->resize_disabled); return NULL; @@ -6520,7 +6523,7 @@ ring_buffer_read_finish(struct ring_buffer_iter *iter) rb_check_pages(cpu_buffer); =20 atomic_dec(&cpu_buffer->resize_disabled); - kfree(iter->event); + kvfree(iter->event); kfree(iter); } EXPORT_SYMBOL_GPL(ring_buffer_read_finish); --=20 2.55.0.1082.g2b9226bbc0-goog