From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f54.google.com (mail-dl1-f54.google.com [74.125.82.54]) (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 2D86326AF4 for ; Wed, 17 Jun 2026 00:35:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781656510; cv=none; b=RcsqC1Q6P967g5OZaAyln9QzeF0UR0iRGPVn2OsKtQCeXjv+j8mopgPBZYI3pIPcB/GLMviDq9RYMdaiLoewVt0nQraEZHgpOBDOUIZRQOjFUJD0qVI3x7F32HUk9PEaTFUPk1Sp8TxqQoHzQeY4MmrSQBnb3AsmaPP66EYuLvQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781656510; c=relaxed/simple; bh=EcdgWXvdiCrx70PNlZSyRm33SXh+/kxxRcfNrkwZyQM=; h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To: References:In-Reply-To; b=sdlYvnd5WGC5AbptvwSyzxhFKCIY/RH0c8EsvHfevdaP/dEdE69QE5HGCSHusjtj60VKY28nyJLI/qmCUBEWoQYfs9j8A1onZ+pYYGX9aY5bu7lu1CBGZAU6sTrFM+RVKksoamDvcRgo+BjVpQpI8n+3o+Bs0u9QeZztHpdfSDg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=etsalapatis.com; spf=pass smtp.mailfrom=etsalapatis.com; dkim=pass (2048-bit key) header.d=etsalapatis-com.20251104.gappssmtp.com header.i=@etsalapatis-com.20251104.gappssmtp.com header.b=n726NDA8; arc=none smtp.client-ip=74.125.82.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=etsalapatis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=etsalapatis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=etsalapatis-com.20251104.gappssmtp.com header.i=@etsalapatis-com.20251104.gappssmtp.com header.b="n726NDA8" Received: by mail-dl1-f54.google.com with SMTP id a92af1059eb24-137eb0d76beso340219c88.0 for ; Tue, 16 Jun 2026 17:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etsalapatis-com.20251104.gappssmtp.com; s=20251104; t=1781656508; x=1782261308; darn=vger.kernel.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=KyrlFIKHgx+ek59/K68bCVWO+77b440bupQ2LUc3ApQ=; b=n726NDA82UqCS8FkLmLSfOmShrJRipxkpteDzqjQ0NGjoKBRxy1ANf64cMm4sc5wAb jnhcANwIdlzz3Q3QbDwIKFYBWDs4P0z7RSOXpW3YTskY8XHvboCqJN8CpuijuEU7/ia1 CR7u584TYNRYdutQpTbUapGOeFYePJUdxlbQfE6YWQACdIb/K6Y5pU02spPt/NtGXBaB Xbso0Pb0CyuJmavRQoxLGL6QIRJrSJkMssR7yQWOMJPVTcGRaY/Yt1u54lmIdhrAxfF/ LylJckvmpv3pRN0s53MnPQCmNP5+/yOZSPJq0nuIOvPRuxej2xE0AC5djL4cfA6lODhv m5RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781656508; x=1782261308; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=KyrlFIKHgx+ek59/K68bCVWO+77b440bupQ2LUc3ApQ=; b=IgzzM6bvuhoziueV4oPyXt7t/uqxQH97VKBfdTTy9Pb9KNHJNPIYT/Sn6XEjTi4lat LSdC1TiBI2ikyhNZP4YFDUzklcq8gTZJjKaSWuHzgU9yrb1//6EKURGzFNwcKfeW1Amu x2HELTXgxRp38HUwTw/6I2d2PL/mGCXhinEHi2LsSZryvhsMxjwX1L+3pzTCbNOuQ5u8 frBzqUMgE6OlxaD5mkjR/9WSAlfUyl2Nf/ryB/nsyN309bYpbXzOB+4AtkAPiLKSNGs/ WG3Fkn8yboLowAPsMGIei6Nne62LJFJ21S0hpnFu4ay/2xfVjfBepq+2YnPnIS33DcIo soJA== X-Forwarded-Encrypted: i=1; AFNElJ/CAxu4lj7ikzcob+IT85Iwww9Vlm3wrP5pvsJaLiehUBdApwtE5k2vkqMEbRuPExR/7pSxxv/XdGkF+LQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3AFHIMi2dJbJvUqhstbihkRnn/z4pNDcEUokF8SL3Yhxucktj hr6qixM7fKRYIE3FArs0Ej1+qgoJRLjealSnXW+Ckn8PsBFpQoGO4Dyybi0HTC7YbRk= X-Gm-Gg: AfdE7cltn4vefnHRDR1qmO1dN2NgClrR744smu7q0zkqwE6yRo7aWKgph5GmguJHSgz qWoOIWJXAUCS8Oq2Om1ZD5qc0YixTzwJE5Iy5gaHObmFTCelzyd+0p9dWN1NWtBJ17eEadH+Scg ampetZDLMDU/mEO2QMjDHJp1mAayZt/vBrl/+rNeWual/ZhkJokg3dWMImJbfA0UaStTYp6zI2h jc7z0dY6uA+/7C/K6QWxK0GWNERZlT7k+MPPZXvxTdI+vS2pJPmBO3B8FfKyb8FC94wc4nrUSF5 3Fu0Z5jW9UGyWPGs5KCa6YcKTZu23jXs5IdqYQy8+d22ZzOyF2W409WyP+ooYdLpkGscWXeV2BT PgifxT/Drh85GkQMKHq4dAaWciDkR3AIOJrvUN3ABlECgax4w56iloS6+z19OsKkoRkBJ2VVOWh QXka/i X-Received: by 2002:a05:7300:6d2b:b0:30a:e52f:9b99 with SMTP id 5a478bee46e88-30bce88dc80mr606538eec.0.1781656508118; Tue, 16 Jun 2026 17:35:08 -0700 (PDT) Received: from localhost ([2620:10d:c090:600::2568]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30ba6b7f840sm7145654eec.19.2026.06.16.17.35.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 16 Jun 2026 17:35:07 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Tue, 16 Jun 2026 20:35:04 -0400 Message-Id: Cc: , , , "Andrew Werner" , "Zvi Effron" , "Andrii Nakryiko" Subject: Re: [PATCH bpf 1/6] libbpf: ringbuf: Honor zero consume bounds From: "Emil Tsalapatis" To: "Tamir Duberstein" , "Alexei Starovoitov" , "Daniel Borkmann" , "Andrii Nakryiko" , "Martin KaFai Lau" , "Eduard Zingerman" , "Kumar Kartikeya Dwivedi" , "Song Liu" , "Yonghong Song" , "Jiri Olsa" , "Shuah Khan" , "Andrea Righi" , "Xu Kuohai" , "Andrea Righi" X-Mailer: aerc 0.21.0-0-g5549850facc2 References: <20260613-bpf-ringbuf-fixes-v1-0-e623481cb724@kernel.org> <20260613-bpf-ringbuf-fixes-v1-1-e623481cb724@kernel.org> In-Reply-To: <20260613-bpf-ringbuf-fixes-v1-1-e623481cb724@kernel.org> On Sat Jun 13, 2026 at 9:48 PM EDT, Tamir Duberstein wrote: > ringbuf_process_ring() checks the record bound only after advancing the > consumer position and invoking the callback. A zero bound therefore > consumes the first available record. > > Return before reading the ring positions when the bound is zero so > ring_buffer__consume_n() and ring__consume_n() leave all records queued. > > Fixes: 4d22ea94ea33 ("libbpf: Add ring__consume_n / ring_buffer__consume_= n") > Assisted-by: Codex:gpt-5.5 > Signed-off-by: Tamir Duberstein Reviewed-by: Emil Tsalapatis > --- > tools/lib/bpf/ringbuf.c | 3 +++ > tools/testing/selftests/bpf/prog_tests/ringbuf.c | 13 +++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/tools/lib/bpf/ringbuf.c b/tools/lib/bpf/ringbuf.c > index 00ec4837a06d..f2bb619d5a75 100644 > --- a/tools/lib/bpf/ringbuf.c > +++ b/tools/lib/bpf/ringbuf.c > @@ -240,6 +240,9 @@ static int64_t ringbuf_process_ring(struct ring *r, s= ize_t n) > bool got_new_data; > void *sample; > =20 > + if (n =3D=3D 0) > + return 0; > + > cons_pos =3D smp_load_acquire(r->consumer_pos); > do { > got_new_data =3D false; > diff --git a/tools/testing/selftests/bpf/prog_tests/ringbuf.c b/tools/tes= ting/selftests/bpf/prog_tests/ringbuf.c > index 64520684d2cb..4f0558f14847 100644 > --- a/tools/testing/selftests/bpf/prog_tests/ringbuf.c > +++ b/tools/testing/selftests/bpf/prog_tests/ringbuf.c > @@ -404,6 +404,7 @@ static int process_n_sample(void *ctx, void *data, si= ze_t len) > static void ringbuf_n_subtest(void) > { > struct test_ringbuf_n_lskel *skel_n; > + struct ring *ring; > int err, i; > =20 > skel_n =3D test_ringbuf_n_lskel__open(); > @@ -431,6 +432,18 @@ static void ringbuf_n_subtest(void) > for (i =3D 0; i < N_TOT_SAMPLES; i++) > syscall(__NR_getpgid); > =20 > + ring =3D ring_buffer__ring(ringbuf, 0); > + if (!ASSERT_OK_PTR(ring, "ring_buffer__ring")) > + goto cleanup_ringbuf; > + > + err =3D ring_buffer__consume_n(ringbuf, 0); > + if (!ASSERT_EQ(err, 0, "ringbuf_consume_zero")) > + goto cleanup_ringbuf; > + > + err =3D ring__consume_n(ring, 0); > + if (!ASSERT_EQ(err, 0, "ring_consume_zero")) > + goto cleanup_ringbuf; > + > /* Consume all samples from the ring buffer in batches of N_SAMPLES */ > for (i =3D 0; i < N_TOT_SAMPLES; i +=3D err) { > err =3D ring_buffer__consume_n(ringbuf, N_SAMPLES);