From nobody Fri Aug 14 15:50:38 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021110.outbound.protection.outlook.com [52.101.70.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D29B04657E5; Fri, 14 Aug 2026 12:49:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711785; cv=fail; b=NLLeLGahSMvIKeJ7mfD7WioVRJXaLCcnUSOqPYE5lJfZHUnw+dBnxgWzwLK5YdxT3MZ8cYV6V5N85Sm0qjV9hGNd44nr0y0Q5TLSQXjJBlQN0pdGSviI9yPPRCXCLTXUj+91QkmdwUCpNvMr3PfzNUV8Wl7N52al7U8LWthE8Xo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711785; c=relaxed/simple; bh=c6hCuhPw+XimGLswlRdQkW7pFfYPJv8XXQOqvWmEKo0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PIFPJ4JAweuM01+1Ss9UW0PHNMur5gjiXmNHtj/b/+Cm6p0Xpy+k+Z7bTjmu/js9bJGZtRQ1pWWO9TOH3A0g5pOuiaDSgy1wKdhw69APBV6w2hBvIfAPvhWuzI6Mg0Q3jtLSXgIga5YcRbKWoMThRnNNXLJzrhB3Xg/YeCbFhmI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com; spf=pass smtp.mailfrom=btesa.com; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b=OgmF0Lr9; arc=fail smtp.client-ip=52.101.70.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=btesa.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b="OgmF0Lr9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i4MlQZwuFK7cdC5IVX/mC39HTY+f/IDaRC/f5Wdp0UDx648ESKiTyWvtbwxwWgwrXz+v4wAJ/NL7Wh3nLlHLqVf4yKRdRB77XPoIA8DZ9SgVTXphBO6DBc4bx4UT4n545P044kk2z4GTEG6H0bzDkoNlM7hSvwloGgZaxTWQym9oQusapr/LYHooo/avjXTbfBK58YpgRC1k7o+Z56fsv5pZqdRBUCdEWVJ2xAICVPNM8WSA7pLJK32pEqXfQgkmqJ91CIEAKxVE60FQQzFIcKTpoe4SfpP/dgblzEeUd6cWSW5J3b+nv8h5s2MniKoig40D9as8T4t1BWXrIZQVBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TTrw5gNPSBbZS3YWp9Vax+IpRjsl96Bc4oQw682RbGw=; b=Wv1ghlnfVgL8orqNfBIZ/GJY6KoMHLQHOcv/rirO+ru764UB4ExSLe7hGtp0DAbPjQAqEV3Hef+2SL0abuDCvFALoOiJzrj6nyRnjdC/3VDtQI5Gkauc50ISocekejGa5qnpl0oBYy7qKzujNvK7nGOgVrCYJZ2eHa8KBJwGff2iYYhDXeC+wP2cWK3Beol5eTCAgfd2Q+vdt7dWUgaB7VTrJQFwW42fURKdrrduRHrD+PCbweboouZkJGVVIb4+0VoBhCQpOEC96cyj4QKCpQmH8nEAvCjuEyXXy+ZGqQJ9mPoKfesSOZvc9agzPnBR+fIx81PLzTV9N5uQJm/ECw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=btesa.com; dmarc=pass action=none header.from=btesa.com; dkim=pass header.d=btesa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btesa.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TTrw5gNPSBbZS3YWp9Vax+IpRjsl96Bc4oQw682RbGw=; b=OgmF0Lr9x9ydFqFoP+DXMmaiBjCGEpsDoNDc6IQx2GOnlog3szLV3YgUguKIlvqwtSY9Ape7IFGQhxf6CMHqX3IVnP0CzFYyQY+lmASIWo+wBZxraKIUMCumJ05bLPk57rNPgtI0diZ88GSjZvwFzXlZoFuHF0iGVopC5ErDtYf/7Oyd5euGkpUxxzO2JPYpqUWykqPa02piyTnEWiHguwRcz9Ea573G2Hn2z6LafJzUEK49yDbw2PuQ6R89xtrlWBo1Cl4tfLYrWzajr/Kfg3vPmcdrU1Tc2+w+V7VCT175UBjhL/5JG8XhEMhYPIiDIWbTMaamh/PU8EPMI/PNOA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=btesa.com; Received: from AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) by DB5PR07MB9562.eurprd07.prod.outlook.com (2603:10a6:10:4a6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3; Fri, 14 Aug 2026 12:49:34 +0000 Received: from AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e]) by AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e%5]) with mapi id 15.21.0339.002; Fri, 14 Aug 2026 12:49:34 +0000 From: =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= To: Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann Cc: Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Bing-Jhong Billy Jheng , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= Subject: [PATCH v2 bpf 1/4] bpf: Fix pending_pos walk on 32-bit ring position wrap Date: Fri, 14 Aug 2026 14:48:40 +0200 Message-ID: <20260814124843.22041-2-i.tellez@btesa.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260814124843.22041-1-i.tellez@btesa.com> References: <20260814124843.22041-1-i.tellez@btesa.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0058.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::7) To AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR07MB5384:EE_|DB5PR07MB9562:EE_ X-MS-Office365-Filtering-Correlation-Id: 4cd1b5a9-9c46-4d1b-651e-08defa027dc7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|7416014|376014|366016|1800799024|38350700014|6133799003|10067099003|56012099006|5023799004|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: ioyw29g+kEJTZ1IriOmDShfahytkW3sedhd6kSb4qUYTkj7JWowz815yoLylHQCOI5vF7t+keXXkT3oRVvBXtIYGmX0pzu4zRvIyiOSCsaMfxK9uJBtOnd5FSoSXR7RDXCT/7jYgVzGJhfXEUSukAs1nguF9Q3wJb1Rw/DUSHwMnIo44VJddmoEVkzV3UvKli5ad4B3xI+iqoNhKNPWu4A9mRBkYccL8oM0b+OMsJ1RxajMCgLhw1h7mqUzZycZDDEQJLBs13OBMgAnyDDKunw6bhO+IrW9fIRRicFkUm5LRvToMWxTxC0GPLv+4py59sMUsTzVWLLyiK6EXc3Qob8ASaBk2WmJqRsnxFbPcwuGHYt8HrCV6I4jwfc0TzI4HQMVV6IywHF0uHaint/jA67YrlyTs/uGXjXJLJ65NjLGuprJ9k7L9vZPZOjGeXR67p/6doEujF8gpJL7OqSzo35Z/KrmEDmPdmcvH8n9GqUiekrD0bh24W+s+puT6iBqc7BEtLrxn5kNPvkhwfJy7drWq7qcWewZTSzDBpHzyELC+aydRA453CPeiG67lfyX85riv14lU3Bjb3qnKUNsM8zQ5IM7fPG8v1qRj9obyLGNcVNGKTzVs0uVPgdU70Ez7XyRt8zxfR+ni5Vh40FtNiaHe/NbOXy6qWVHDej4pNJml1O8LaPgjOgFV1zIV0FacMliZ/ZPWq95GEdxaTMRlvnAVsszr/D+6jrQqwbFy6Z4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR07MB5384.eurprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(52116014)(7416014)(376014)(366016)(1800799024)(38350700014)(6133799003)(10067099003)(56012099006)(5023799004)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L0t6Uk9qVlJBL3pIeXdkMmFoZUI4SFh2ekNBQ0ZmbmlaeWpNckFaU2lWWFZx?= =?utf-8?B?Wm80NHdNR2dPTWtsNjJjTTJra3FMREhOWUFiamZMZWVoUGIrZDE3TXB0Qjcx?= =?utf-8?B?c1ZjbU1TT1IwejVRK25RT1ZSMFF4VWN3K0srVnRZbUtKbjUrVUN5cW5nSmZ1?= =?utf-8?B?c0UrTldBU0tkaTBqVUNhYlRJT081WDRpY3NCMHBVbGk5Qnh5a1JQcEIrUUJp?= =?utf-8?B?Qm4xZFU0SmhaV3JIM05laVpyR1lPRytCdXBKQURuVUZkUm5VczU1VUVlamNT?= =?utf-8?B?eWUvbTE2NHFHRDdETEZJL1BSY2xURHhyOGZGYVpBRDZYcDZ0WDRyNnlJWERC?= =?utf-8?B?UEtkODRHT2xLQTNVdVg1a0l2NVBnQmZQTVg5Q1pnalhjdDhOdWZJZ285dzFN?= =?utf-8?B?d21rOGVuMG9HR0M4ME9PVWlnMTdvNm9kc2UwdWk1Tlk3WlgxOEFKcytqa1dH?= =?utf-8?B?Z0d1WTR6S3NrWWVYakNtYUVZZWZOS0J1VmhOSHNxa2RKZ1hUVWFYUDJqeWhn?= =?utf-8?B?RFpPYlpGeGkydUZhd0crMmoxSmlvbXJ6YzV5UFBHbFBNaTFEcWYvUGNSUlR6?= =?utf-8?B?NDBEQ0p3cER4ZUdJMEhWc1JQaEIycndRYnNuM3Fkczd0clYvRTdGVjJvY1dk?= =?utf-8?B?dU84NXBmQ1d3V1o0WUc2RnpHVWtiM3NPbkZETVhuMVVTYkc2bjk3Z1U0cWFo?= =?utf-8?B?RWZKcC9BS29meDhGOE9udHVGYldBbHpCMXd6N2QrQkFUbjNkWkZzR3pGdkRT?= =?utf-8?B?cEpxNkdhT3pOYzBFckZvbkhTeElOcG8zWDdwejhQb21FZUxGaHp4aklRQ2w5?= =?utf-8?B?T0k0TlFGOEZGWTBUNXR3YVl6bEF2bVhaaUh5ZVNJeFBoSWZrNTJjQnF5Mk9k?= =?utf-8?B?RUM3cktDY1o5L2gvcmtOYzlGUlNwNmQ3K3RIblhxMy8vUVQxbElsVitJWmVN?= =?utf-8?B?b2lYVUg0dGdTZlp4Sk9Yd3hpeXNGRjNvTGljYjg1SFhsZXJEbThnZEJtZi8x?= =?utf-8?B?VU5aeFoxR1NqY1hsMW1Db0prdTA1N0M4NHhIS0xNSWF0c05sdHMraUpJM01O?= =?utf-8?B?RVRRb1Y3enB5TldSUVd3VWxCQ1lzTjI2aWNzZ3BPZWVQNTVRZmlEUnQ4NlBI?= =?utf-8?B?ZzZURTdkMUxFQWlsZVlMV0YrVG9DSktzd1hPNUREd25ocTh6end3NlovUmFi?= =?utf-8?B?T0pEa3FqMkFvQzd6T0R3Z3ljY3FmOUhyb0JncWpFTnovR3Q3M1JvRk1ldzVC?= =?utf-8?B?Q0dKMHl2ODU2ZEJGTVdBdHo4b2h3Q1V5a3VKMXpId0dITTFIYkJsa1Q5bVpN?= =?utf-8?B?cnhUeHlRQ1N6bjB2K21temFMWUhkdTFnc0duVWNmS2h5OE9EUzhlU3NYQW9O?= =?utf-8?B?N0xqYlVPYUtOelhldWYwWFNHd2pPT1hHWmxpNjlaZGV3eFFMMms4U3A0ajhT?= =?utf-8?B?VHg4SVRjSHhHVGgyaFRpWElZb2ViQmZET0U2dTN5UVR2UlFkUEM4TGpLdkFV?= =?utf-8?B?OGtOT0JzL0tyc3hMRDQ2Wm9ZL2FGK1dqV3VqaFNwYXhWbzBHdGtsTTNZMHp4?= =?utf-8?B?eTl6RmxNQlF3UWY2K1hRaGRuWEUvRlN6OWZVMW5TMEV6OGZJYUxJQWdQQ0dY?= =?utf-8?B?M3ZUczgxN2xiVlpaUEhiVXRaSU04MTkwdDNNUFdsakk0aThiMGlFNGhpSGhn?= =?utf-8?B?alFMNTRmTUNyZGQ4Tzg3bGpVaTR2SDYyTVQzT2Z1N2VaY1VMcTh2dldKRTlr?= =?utf-8?B?cWNobmJxTUNoOW9RNVliUUdCYVo5TWJ4OVM0QWtXMngreWJqSWdhTUd2aFNN?= =?utf-8?B?K1BTQmNEMnNleTNUcUFDWmFTeVZCRTJmSXdzRWdWRU1pTENHVFJrR214TjBa?= =?utf-8?B?T05HWkFLdlJsRy9rL3F4aktaeXpOcDFsazRBVkVyVHhwVGxJL3I4Z2FkcmtR?= =?utf-8?B?VEl6Y2FEK0J6b2VsZGkrUjBTYlZmTXdSbFJoZW1zQXBQUTgvV3JYN211dTkw?= =?utf-8?B?V3V4cTFtY05obWVGK1ZZZ2FYcklnSlkyaWViSFY0NGsvSktxWDlpV3ZDRjds?= =?utf-8?B?ZDRGcXNhM3U0TTZmVytQNTRSUHA4a1h3RkRDK212M0I1MmZYWTNzMFJYQ0s0?= =?utf-8?B?SE5teDJ2OEg3SERkbEsxYVhxSDZwN3NmL0hMNElMaXJYSkJHdzlTdGRFYlov?= =?utf-8?B?MExaekpZbmVqWVBSaHAwWlVLb0tPS2VLcmVEUi9hbmRJOVdjclVJTzVib0hw?= =?utf-8?B?Q3pReHhwVXRQQy9JTEtpbUJTRHRZR2NKbWM0cGhQSE1xWTJybXVNek9HRkpv?= =?utf-8?B?OGxwaHkzUGpON2dOekxqOW1uYm9GTStBN2ZSRjNTUEdhMjhZempYQT09?= X-OriginatorOrg: btesa.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4cd1b5a9-9c46-4d1b-651e-08defa027dc7 X-MS-Exchange-CrossTenant-AuthSource: AM6PR07MB5384.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2026 12:49:34.1421 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f51efa09-da77-4b78-95dd-fde75cdb9c62 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KwKqjAb+qGIOxDdsGLGZTWVdnfCkNZ+VG4x1u+VDR9WOALiXAoQevfT6KfVr3eCIJyQKqFiwZ3wVvnWVX7yZCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB9562 The reservation path caches the position of the oldest not-yet-committed record in rb->pending_pos and advances it past already committed records on every reservation: while (pend_pos < prod_pos) { consumer_pos, producer_pos and pending_pos are unsigned long, i.e. 32-bit on 32-bit architectures, and Documentation/bpf/ringbuf.rst states that these counters may wrap around there. Every other comparison in the file is written as a difference, so modular arithmetic keeps them correct across the wrap. This one is an ordering comparison, and it is not wrap-safe. Once producer_pos wraps past 2^32, prod_pos is small while pend_pos still holds its pre-wrap value, so the loop condition is false and pending_pos is never advanced again. Reservations keep succeeding for a while, because bpf_ringbuf_has_space() uses differences, but new_prod_pos - pend_pos grows as the producer advances, and once it exceeds rb->mask every subsequent __bpf_ringbuf_reserve() call fails: the kernel believes a pending record spans the whole buffer. The ring never recovers, bpf_ringbuf_output() drops every event from then on, and nothing is logged. Observed on four armv7 devices (i.MX7 Dual, 6.6.52) running a tracepoint-based collector with a 512 KiB ring and 160-byte records. Every one of them stopped delivering after exactly 26846821 records and 4295491360 bytes had passed through the ring, at event rates between 441 and 862 records/s, that is after 8 h to 17 h of uptime: the trigger is the byte count, not time or load. That figure is 2^32 plus 524064 bytes, and the excess is one ring's worth of grace period, as expected while new_prod_pos - pend_pos is still below rb->mask. The last reservation that fits is the largest record boundary X with X + 160 <=3D 524287, and since 2^32 mod 160 =3D 96 the boundaries after the wrap sit at X =3D 64 (mod 160), giving X =3D 524064. Userspace kept consuming normally until the producer stopped, then read zero records for good. With this patch applied, one of the four devices took 10 GiB through the same ring with no stall, while the three unpatched ones kept wedging at the same byte count. 64-bit hosts are unaffected in practice: their counters would need 16 EiB to wrap. Compare the two positions as a difference instead. pending_pos never runs ahead of producer_pos, so the unsigned difference is the real distance between them and stays correct across the wrap. Fixes: cfa1a2329a69 ("bpf: Fix overrunning reservations in ringbuf") Signed-off-by: Israel T=C3=A9llez Garc=C3=ADa --- kernel/bpf/ringbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/bpf/ringbuf.c b/kernel/bpf/ringbuf.c index 35ae64ade36b..06d3cc192601 100644 --- a/kernel/bpf/ringbuf.c +++ b/kernel/bpf/ringbuf.c @@ -482,7 +482,7 @@ static void *__bpf_ringbuf_reserve(struct bpf_ringbuf *= rb, u64 size) prod_pos =3D rb->producer_pos; new_prod_pos =3D prod_pos + len; =20 - while (pend_pos < prod_pos) { + while (prod_pos - pend_pos > 0) { hdr =3D (void *)rb->data + (pend_pos & rb->mask); hdr_len =3D READ_ONCE(hdr->len); if (hdr_len & BPF_RINGBUF_BUSY_BIT) --=20 2.39.5 From nobody Fri Aug 14 15:50:38 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021110.outbound.protection.outlook.com [52.101.70.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD91C46F4BB; Fri, 14 Aug 2026 12:49:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711791; cv=fail; b=d9iG/KyRf8/0y+sAVVYM0ROKASLA0UZp/55e39xQS0WzLlPWca0eS8BPJ63EEcC+R56T1LzvXnOWsSAyrjMkNKjaqvmDcXcmKHv0j78iyS6MlhMhW2e3RUfodLA3zdRyDU9+GWY3d9VistokgR+o4spbgREYb9llj6jQKHgEQOw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711791; c=relaxed/simple; bh=GVMquoG6lzze7FFbJwWZVUJlxc/xSyJ/zFap1bMfsuE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gVj5r8N9/97IEQO3D/1hF5LQOMpZbn6G5csCtrvmugRYVjnBoQUGa4aNInDFuJiiEWykSQJk+FxknelDQBq9mS70ed8Nl3L3C+yiwwIuV33+5ueQ3vpuNPj/RD+OphSpV4gfESgn3bmqabI/4SVGAqfgR2M9BkI1Ag+Rc9n9Mx8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com; spf=pass smtp.mailfrom=btesa.com; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b=Qy1qXvpD; arc=fail smtp.client-ip=52.101.70.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=btesa.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b="Qy1qXvpD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jGLtLtYIRkGTZC5tx61eCi5lgEtaD+x4eAlW8XggMbxcN57+DbfWO52LnKxHwREmJeDg5HQxbiHZE1ZgEpgzIQJFKCQpPWjE+0IavT5Xy4bQnTOArSK4Qwo7dLWJz2vt8qxwb/GCjp1TJc491Wvc4p+0pilB79riG+bQ00QUEHrTxJ7qmvC6bA+qC4UlMrLoTbm8SOcuUL6btQNuZt65+/rv2O7cyc+zldSCPC1OoN+lCbBoh1M22SZ4iyaYNGgu5j8O0BfmGLlySDpDGhRQ5904RLFTnPmLbF9/qkVlVMusZAV0SXiB3ZQ8A+OK+8fMkQPR3k5tmRroq7S1z44u0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SpBen47Tq+UkAkD/zYoiLwUKmOO8jcsg0hXmHlkyiNw=; b=Z9T9yM4stT6FLBBiGNsfdC4u8WyCzFcOYQCz2OT4oYLAde868TGB3vnOgGJjVtPg43TAoyUu0dmq/A8+On46PTxhf3sa8vNCRxXrcAxnM1wFiNWTVU/NmSUPYbje4KLoo1b/QUr3VlE9565DSp7+Plh6m7Hmphcs0QyDX60Eke6nBzTAJueCUT33IFxPAHM1y+slVjRpjqzDXI1SUVrhSi0QKUZ/3K6GAupRhnlG4hkyAKxqhsdo3AoMZhho/qziHyWMPDKFrNWCQv2UWk3uAghN15dbUFyMeeaUg9z5cM60nbFIpvA4MR0tapXgYIglBNw4cIM/IgXAWtWudiAMqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=btesa.com; dmarc=pass action=none header.from=btesa.com; dkim=pass header.d=btesa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btesa.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SpBen47Tq+UkAkD/zYoiLwUKmOO8jcsg0hXmHlkyiNw=; b=Qy1qXvpD8MzBy+xDhp2fq9ZWrTLSONKB7+KfMueCRX19ZlSK/GMh6v6sf5RkcQnQDiUPUAH+agiCIn3r9FjWmuIB4qSYRxsxC7mInt7pfvl1dK7bFx1oZOHLfGZLw5Lh2IaxViKOYGBDOggUaNCFzLCEuQfamXo63jo+Ca052IemaH0e/9gBDugXKYisgeacmQUClB+2FJnPd/aNcqAbdC/za2KrpNic44PfrFT/gvOwAKzwSj9NwykKkXqhBeCDJhsj9nHPx67+F8p5XP8n55bo4QeqBrrcSJvjBq0PkD748fq+JECS2jomNdDwSrVG49m+55sEzoToTpbybJHHfg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=btesa.com; Received: from AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) by DB5PR07MB9562.eurprd07.prod.outlook.com (2603:10a6:10:4a6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3; Fri, 14 Aug 2026 12:49:40 +0000 Received: from AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e]) by AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e%5]) with mapi id 15.21.0339.002; Fri, 14 Aug 2026 12:49:40 +0000 From: =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= To: Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann Cc: Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Bing-Jhong Billy Jheng , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= Subject: [PATCH v2 bpf 2/4] bpf: Fix available-data accounting on 32-bit wrap in overwrite mode Date: Fri, 14 Aug 2026 14:48:41 +0200 Message-ID: <20260814124843.22041-3-i.tellez@btesa.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260814124843.22041-1-i.tellez@btesa.com> References: <20260814124843.22041-1-i.tellez@btesa.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0058.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::7) To AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR07MB5384:EE_|DB5PR07MB9562:EE_ X-MS-Office365-Filtering-Correlation-Id: d534be18-07f8-4d0e-0360-08defa02814b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|7416014|376014|366016|1800799024|38350700014|10067099003|56012099006|5023799004|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: OeaGMVcOXtAlb8pXU3VINXTu4zM8ZlICncSovfFZq6+HH9VPVGat+Uqln5VJThCfZZXJOajESFQS+Nl3SKxLbIXfX7jS9TO4crkyyFv2TYM/9o1f14j3aELJxqeKCcyKYUgoBU5W52cGafLZ6hDBDnKK+JdEt8ClkKT3Acz8F/IO9s0Dn72M5BudfMCybFNSADIi3CM8fXoYHm4sxxs1UOnM46v4mJUh6xP8VZjMBqWV0QR4UwoZAGs6S3AXwFmOuFPlpFV+eRg5me36cr5hAo+ps9EEdcIVOtikoR9BBMXa4CIHeXseqktZe83Rs2+SY8plRmWjSFKKPXGPdkoEwpHCNCtDmLhbgf3vqDQtHEGScX4SgQmv52LwBIfU/C5YNcwivJSeufjM1Is/Z5K16DnxECpVHaY/rAeQJoLJ3bTb7RU1fluoONUCCkvwbKlHfrgdZnsZMrzUiu0hwscaw19E+lzEszviDIvZVwF+g4gO+Owo6tav4ago9t0cM+ajZELiKKLm0nIJrR4jJQwxhVQrMQXyPwXb5Cok5uxF2bfrJmlj/BXFhg2gh71b2g53aLUcTJhwnUbFPejVMr2fNSOYd42SHeFnw+i6zBhVp/JVfehfQo/4z/B+8T/PsFthyDZJW5VgYPu7wv2O1Uf1eiTXh1rajNIPAiSHbP347cO0NSFQ4Q5AsNFSH/CE8v2lx7B6cDkXH8Cjmy1ETJBgcwpoKdmf8kp1RAz0HRkKm9c= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR07MB5384.eurprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(52116014)(7416014)(376014)(366016)(1800799024)(38350700014)(10067099003)(56012099006)(5023799004)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L2hpNHpwVkk2WFRFeWtjVnlrSGY4NUZsV0k1NEcrN0gvVXlBVGc3TzlwaTZC?= =?utf-8?B?anEwbVUwdWVjUDFwMkt6UElnSTE1MGdpTkVIRG1OL1BTRUEyQnN2dUI5WjM2?= =?utf-8?B?MEN5Qk1SMU5KTGthUWYzK0lENzVRNm4ycUpJK2wrS3Z3NHJzMFFYQnk0Mi9X?= =?utf-8?B?N282RTNPMVVCbUtTbkk1a2JvZWplcCtWL2FZUHFUYVdrVUxRQk9obGhKdDdq?= =?utf-8?B?bXA2czJIbEZmVFRDWWlBUEQ4RzZCK2ZlVjJ6SjdNV2xrSFF6b0M1ejREUXQ0?= =?utf-8?B?ZUVrZmJYNW0zdTJBWU15ekNvZXpseTMxRng2bW0rUEJGdUVRY3FCTXplMW5Y?= =?utf-8?B?eER6VWxvMWYwOTJsQjNPcG0wTFA1MmR1dEVxSVlFamlvOEpOQVhSV25pTmE5?= =?utf-8?B?YmVaYkV2ZTByMU9kWFRMeTlzWHpPR0haTW5uN0xobU41dDI2OEo5S1dNUE9R?= =?utf-8?B?cnNjVEQyaTZhZU5BMzJLZ2dnSTdGZXlmdEZaazNZZExQOG42V0lkUzNFaW9J?= =?utf-8?B?MWZpTG9mNkxEbmRuckw4VG5Rb2g5TWg4T05BdkRVRXZxdTdXc3VGMkR1bXgr?= =?utf-8?B?VWF3TUpLcmQ1TUZxZzhUSkNMcmNTRDN1UldQRHQ1NVVIZ0Y4Q2xCb1A3THN0?= =?utf-8?B?ekRpeUZNV3JVVFNERFNneXA4dFlraS96SnpJN2dsZUZXRWRLeEI2M283VmRa?= =?utf-8?B?MUZ1bzZlSUkyZDVIbkhuT0t2MFdlZ3NBNWs3STRMNGRFZTdXRzBYdnkyUUl2?= =?utf-8?B?aTFmSHZVNCsrdVc3TXBkVjVSaUJhbENQdVpXM3RjUzVQY3AwYnZCMmkwc1hm?= =?utf-8?B?c3FFdVBCb2VWZjh1MCtvUGhGTm96dEtWSXFEbURsZkdzeG5memlxQS9OdlQ3?= =?utf-8?B?WDlKN1M3c2Vxb3NWWUVmWWFWeGJrTXl6Z0Y5YXRDbUlWVXBFYk81c21qVXB0?= =?utf-8?B?SWFNeWlvdXF0UWxwZ1p5UVVrWTlxSngyOTVIMnM3d1FOUnNzK3JMRThQb0RV?= =?utf-8?B?Y0lJNU9YbkpnZ2NSL0Q5QmxaOUNwVHl1T1pxS3lodzRta2NmR25xa1k2OEE2?= =?utf-8?B?dlJ4N2JEMzhocXdMTGVGOXVQSExXanJlTWpTZXQrR1F5TVFFTFdSN2RjUWdk?= =?utf-8?B?ZTUwaWNKcFZ6aVRNUTJFV3Npait5bkRrTWNyL2VTOE85T0lENWpxRUJUWDda?= =?utf-8?B?emtTQlNCOHJHbDArS1hWaEJLczJKandmZEx5ZGVjT1FHM3IrWjdidEVJWEli?= =?utf-8?B?blRNeSsrRThhRTluaGdWaHFVUkJkckFjd1M1VjJUL1NyVTdTclBXRUdVRkVX?= =?utf-8?B?QmhsRXJ1eG5OcjNLczlQbDFScmFyYllOcFlZeDJubmI1ZlFIcUpUTzJIM0xm?= =?utf-8?B?VEgrV0FrL24vckFCSFZNU0FFcDhxdnVpRFZ2TXJkU0FVZ05aYVdvY1JBeE5m?= =?utf-8?B?Z0JGTWJlTzRBMFZleFRQbEhsZU5TT3NkL1F3RGVMZGRNN242aG1mUEZKK1I2?= =?utf-8?B?VDczK3B5eEtTMkl5OWJUZ2NHc2IwNllkSnlHamtTeGl4U0trdmZEa01GYVZE?= =?utf-8?B?Ky96dm9EQ0tkSkFWTjVCd0xSRENEL2VzenJXWFRxRW0rVnEzTnlpWDh0eG0x?= =?utf-8?B?cFFpNTlBb0FNYkYxak1sZ0lqZWVMZUFZa0VsUGVnRHhjZnVmb0M0c3BiWG9C?= =?utf-8?B?N2xoa05jZlBHRlNTQnNLMHAyaWVRMVpVUmkyejg2bDduZnFhV2Fia3p0K0lJ?= =?utf-8?B?V2Q2RGVickRTd3NYR05tc0RoYVBBamlvbitybkZEVjFiNEUvZThYZjFhWk9X?= =?utf-8?B?U2IzNU1iOFRRcCtZMTNXaHRDQjdkTkpIU0tpeXZHSWVJbFZDQkI2bjUvQ01j?= =?utf-8?B?ZnJRN0xyVi9pQmJRSGRKK1BDVXNzcGJrL2VMcmZabWR5Z3BuQjl6c3NsczQy?= =?utf-8?B?UENrWVk0M2lRT0taeW1ReGlvYXZQSk0xTUU5cUNOZE1Mc2NMMzMzUCtVYmdX?= =?utf-8?B?T0lLRHZYSVozN3p3VFZUT091OFNxa2tHRDlLcWRBKy9CRElDSXJaZXJROWxk?= =?utf-8?B?TkwvUzdVT3REU09HZVpLa2ptUjJreXRHTnpHK3ROa0VqYzJZUW43UlBGNkhu?= =?utf-8?B?eURCejJkTzUwMVdaMm1hbUt5cFpCajRDSHdQOVdFZG94V2JLS2lRc2luNVlZ?= =?utf-8?B?YUYvaytmYWl3ZWdUY1h3RVYveERXSkxOWTB6cnhJMmxNeC9uWUI1UFUyMkxU?= =?utf-8?B?bXhoeDJnK29wL3lVMHRLMllLYTI5YzY5QXRkYVI3TVZEQU5DVTBSYmlxZjdh?= =?utf-8?B?RG9nMmlHc0tLbkRpVU5MNHYzdHBPRjRZaE1EL29RTlFpVFcrQ2JEQT09?= X-OriginatorOrg: btesa.com X-MS-Exchange-CrossTenant-Network-Message-Id: d534be18-07f8-4d0e-0360-08defa02814b X-MS-Exchange-CrossTenant-AuthSource: AM6PR07MB5384.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2026 12:49:39.9898 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f51efa09-da77-4b78-95dd-fde75cdb9c62 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Aerm9X3M0z3X3BtfrbyhZ6Lwz3wMLF1kkod+1QeBX10kqGQjeB/Inu+b+G3Ai8R3lD3dw6wz66OQQfl9eMF4Lw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB9562 In overwrite mode ringbuf_avail_data_sz() picks the newer of the consumer and overwrite positions before measuring how much data is available: return prod_pos - max(cons_pos, over_pos); max() is an ordering comparison, and consumer_pos, producer_pos and overwrite_pos are unsigned long, i.e. 32-bit on 32-bit architectures, where Documentation/bpf/ringbuf.rst allows them to wrap. Once one of the two positions has wrapped and the other has not, max() returns the older one: the result is then a modular difference close to 2^32, so the function reports far more available data than the ring can hold. Pollers using BPF_RB_AVAIL_DATA get a bogus figure, and epoll consumers can be woken with nothing to read. Compare distances rather than positions. prod_pos - X is the amount of data produced since X for either position, wrap or no wrap, so the newer position is simply the one with the smaller distance, which is also the value the function wants to return. 64-bit hosts are unaffected in practice: their counters would need 16 EiB to wrap. Found by review of the same class of bug fixed in "bpf: Fix pending_pos walk on 32-bit ring position wrap". Signed-off-by: Israel T=C3=A9llez Garc=C3=ADa --- kernel/bpf/ringbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/bpf/ringbuf.c b/kernel/bpf/ringbuf.c index 06d3cc192601..0fefa89039be 100644 --- a/kernel/bpf/ringbuf.c +++ b/kernel/bpf/ringbuf.c @@ -321,7 +321,7 @@ static unsigned long ringbuf_avail_data_sz(struct bpf_r= ingbuf *rb) if (unlikely(rb->overwrite_mode)) { over_pos =3D smp_load_acquire(&rb->overwrite_pos); prod_pos =3D smp_load_acquire(&rb->producer_pos); - return prod_pos - max(cons_pos, over_pos); + return min(prod_pos - cons_pos, prod_pos - over_pos); } else { prod_pos =3D smp_load_acquire(&rb->producer_pos); return prod_pos - cons_pos; --=20 2.39.5 From nobody Fri Aug 14 15:50:38 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021110.outbound.protection.outlook.com [52.101.70.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D5BBA470136; Fri, 14 Aug 2026 12:49:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711795; cv=fail; b=JvKH8UJcAPBXSQBQoajQfqfwEbx4zo75O1WUGOn7EFI7Wb1NWYeNxHoL9bn7ldcmH1P6l/5dyOk6CYhmc4xeR0VzfDt2oIAZa9RefjXzz70l8OxdpUJzVlFAUuQz+ioCmbO6YeG3Dq8OlLb5mfyCW2129AImm7bmaK9ox7qrxxo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711795; c=relaxed/simple; bh=KMzsPlDp7NpZhxnrtC7XvlZ5+IcXVfv/2Z3RMpaoQRQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RLJRkwOgVvTJVHwFvRB31DPyMAuuQ6XcZzcvuosrTdZw4tc7qmRPhv0klVBPsIZ5tXgytCXC7RrrT55VwXVC7etOeESm5UFpgK4d7GsQZfPOVsjW4UDMkSK+gxhDFzFDIEwqsFC1sjaru7M0VGiSOcA6t6f/ei0ENlT/or4o5tk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com; spf=pass smtp.mailfrom=btesa.com; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b=C9E6k4Ik; arc=fail smtp.client-ip=52.101.70.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=btesa.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b="C9E6k4Ik" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CIsdWMG6BleZXxGixbpFvAwQJT6h4IZdy+SWvFjcS5eVh6vpjceidNSmfL7Jhaz408VllLl33REULOEwx0YZDX6xjxzrZyBW/m6LV/o5/LGSq3IGQQxljGZhlLKDBjluPqNm24XifwpHLB8hsFxy4bGhgeuBuFMfOm/41/oab+WnsWPpJZfsmNvu8lmrtyv+/p+1PhacH3TEbDsR2jub/Q7r2k19cy40pi/Y+tH0NBws1iq4H8yoWpqsbxXMnDQTQAY643oP3fWjoDO6A3RxVvifsYhPgp0NQv3QQb7ab3hP3yDWYe2wC/t0oGdOhuzmItbenreOB9H/9MmZ5iwd/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=A//WmfDP8jaP9cQL60tcNuZqRYc3P4DRJkuKhkvJP0I=; b=ggPYlNw8jhNchV3gmkfmx4OOC2a8cu9gW8q4zkc1EqxPcAHyViuT3GzNhBUBQDlAuWMxzaRkK1kEk+oigx4fPSKNOXtyc9XVD+qNsrmnxYA4SEwB7YG4OEkfgKpzrC5rDrL4FBmA5rb+ks3g2uVAhuyZ/+xzqTZDBkLsBBcpV5QMTffaTiKLvItH8bxUXkWJjsFzuVW647C5ds/otwg8KDBwyYvksqkOhwTmtgeEjys2PZdyGg0a7aIGOEh6rzvTq6TdbLn2BFx1fFDfAlK8aD/wd1CUyQm+s0KHIiQd6blI1EvmuznMSJdC9KSj2Lc0q99wpYIMuBeAcfd07eZY+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=btesa.com; dmarc=pass action=none header.from=btesa.com; dkim=pass header.d=btesa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btesa.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A//WmfDP8jaP9cQL60tcNuZqRYc3P4DRJkuKhkvJP0I=; b=C9E6k4IkNBg2HIm7zhCYSqwEBRlf1mS2ij2Ax/r8EpN+ldANykckC2CwITDHZKE1VByLCImTdiz0RGCgkpMoEymPAkA0Mo4Q82dDuwg2y6d/g9qaqgPEV4iDIGr5iRGdeW56aEBDbBHijuJZ4Y2lHr74f3WPFhrlgsb2fXoub/O1hmQH8pxXTbcqoL7KFYagLc3H5YF+d4WBIfUXlZQvqV7xJymgwFJ8/gYWWXbxriedWliyrbJTH40cKNrATgpjIbPFDoLQarIZpxca3P/1uVq3mpNUVAYW3wtl5x2dLMS5uBHrQnJvf3sTEv7RShXFfautn+U/b7tYTNfwNZlJxQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=btesa.com; Received: from AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) by DB5PR07MB9562.eurprd07.prod.outlook.com (2603:10a6:10:4a6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3; Fri, 14 Aug 2026 12:49:47 +0000 Received: from AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e]) by AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e%5]) with mapi id 15.21.0339.002; Fri, 14 Aug 2026 12:49:47 +0000 From: =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= To: Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann Cc: Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Bing-Jhong Billy Jheng , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= Subject: [PATCH v2 bpf 3/4] bpf: Read producer_pos before overwrite_pos in ringbuf_avail_data_sz() Date: Fri, 14 Aug 2026 14:48:42 +0200 Message-ID: <20260814124843.22041-4-i.tellez@btesa.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260814124843.22041-1-i.tellez@btesa.com> References: <20260814124843.22041-1-i.tellez@btesa.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0058.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::7) To AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR07MB5384:EE_|DB5PR07MB9562:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a96c19c-38e7-4e95-ecf4-08defa02858a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|7416014|376014|366016|1800799024|38350700014|10067099003|56012099006|5023799004|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 4wb+EKwmD+4DA6EnrxvfmLZXf0yWuYblwfzZRxIYojPfAA4LHok9stnC8cR5Smu8coIPp063CQ4tkkIPW9Xi9R0Fhaq7wk2bhid9TOkIORNP3OxkWm8RbPYu/lcKbfLfJ6TgULcxUKbRysXMB7N941gvsfJohv5zIqPtb8cx+eFrVZQka/9BOkEUSlLiTJyYx0LMRRC87GsO0k08b2o5aAfpeWZZmqhjqrZr9wFwp0HYcsPrQZIzDy2r0M/zY1LP5gPuKi1tBkHyLnWcxZZOKPVC9m0zlVXIt90yj+ayEvkW7awiRUAjP765cAnocnS5vJ92QGCzV5THcZRrE3iml3y9MiIjcRhMYp6XiSKgUxkx3NBjkYoZ3yy6mrblE3FVB6JjOO6hKzNxVTuxetresbh5vPO0sCNLBG7gygQEIosLLYvZeAlu/dp56rg4K7sMO3jaPgB+o0yhydaneRmgYNOWjWFDZ5m4qWQ6Lhu0JbqeI8rX/LPRdDOJccIt74lxdi1b+5ef0ulxGze46FGFSXZWeqTT7X+bAoIDNDUaKqRry3rvvIKcgv7CGVaHwgmjeQq82UN2pBjHE5dXRjiCOALJCjHyCxJO1a+FhR2zG2dfgk+VcDiCiaG85uwrtt19dVZ5wIT9UF35bKy/bbKpP5Hva9Lti7YD3fxR+rFfzuOBbUepv/C9D7mED2Lx7FjaFjTsgOw1pzC1dIXzjwuywQxDNYttSKcksAocqw3rV0o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR07MB5384.eurprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(52116014)(7416014)(376014)(366016)(1800799024)(38350700014)(10067099003)(56012099006)(5023799004)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TWN1S2svZ080UmhrZlRZd3JGRER2cVVwMzd1N09KYUVuR0l6dEowa25VVWQv?= =?utf-8?B?TXdzSzRyajNqQmhxcEpmR2hidVpzeUI0Z1l1ZXBhZ3FtQ3paYmxHbXU1bjFi?= =?utf-8?B?VWJ0SzVncW1GandFNlh3aGF2UlNKdytINHZYbm9sY1MzRjBnMHRpMUdaaDll?= =?utf-8?B?dUVvRkpXTVk5MkFTV05TbHpaYWhKMU9zTlk3Q0JCQkw2ZGxVM2VUek1ERFdv?= =?utf-8?B?UjNaNmlPV3o1aTRNQUtWa1ZzQ01BL0VlK0F2bzFwcW9hcEZWeTBzaXpEMkw5?= =?utf-8?B?dVhuM2d2d0Q5cHR0dUwwNDdPMnZTd2J6RlBZaGtkUkQzMzdMNFI4d3kra0ZS?= =?utf-8?B?YkVUa2NwMDdrd1dwOXVHREp4aS9pUmV5RGdENEx6TXBOb3dhclNFUTZuVlRL?= =?utf-8?B?TitTMlNCVkhUWDk4LzdlSUNkYzFkZ05jcmFiUEFKamtxajRSTDk2VzF3ZzBR?= =?utf-8?B?c2lKWERXdWtyZGNVVks1UkxaZm0wMTFhUlVzeTlMZitZQ09oSjE0SytSeVNp?= =?utf-8?B?WGpEdnlidmxOZ2NTdFBPaDlhVlJEL2orZDBGTnJYcmZYcjJ0UjZ6bFo5TEQ5?= =?utf-8?B?TndXNFFxcFBVRlB0KzE5QVIyVlBEeks1Q0t3cHUwQVBvZXVPWWhkWGhuY1VI?= =?utf-8?B?VzVKQ0RBcGhzKzdtNllCUm9BS2RBMnhnU0NCSkpUeEJqQUN0QTR3S1JRZTJs?= =?utf-8?B?VklKZytQbU1kWEVDYk5GRHJqUHVKTnVtSWVzd25ha1MvTlhIQnpoZktmQ2lj?= =?utf-8?B?REhIaG1nOWxXQ0xQZ01nem40YzFtSWlaRzNJWHRsOEhjOEFKOGViOUdiSjdG?= =?utf-8?B?OU4zZEFxZUpLZkZxUTdveWdPcU1WR1BoZFBWci9yUE9JWnMzbTdzMFdKM1Q1?= =?utf-8?B?R01tQ0hXUDJjUmE2V2xGR3diVjgzdk5KSXNySE14Uld0SkltLytELzcrTUgx?= =?utf-8?B?RU4ySGRaek1lc05hdTdCaTU0K3VpdnVyaDkvUlJpMlRLUXI5MkFBU1lFTXI2?= =?utf-8?B?WHJ6YVZCVXRCSktiaW1kTmVkTE9DQ1lsSlR1Z2tPM0pScDdPdXpJN21LTHJR?= =?utf-8?B?MG1VZC9NYlZTK2x2RURzOEg1NG1IbVNiQ1dXU0tCZnNtNGxLcFk4bGtSWGVw?= =?utf-8?B?cVVRbytMQ3RLUklDNnVxbzc2dnBxaDJkTDVaZHpJa1Q5TC9QekJzMlYwTDlv?= =?utf-8?B?cXdLNnVxQUlEK0RWNWlJL0oxTThXei9SNmNsMkhuS21IY3EzNXNGSDQrYjVM?= =?utf-8?B?K0ZhVDF0eGl6ZUtKbEJ1TGN6d0txdVhQMHAvdlMyTUx5VlV4bkFuVzdXTTNK?= =?utf-8?B?WDFMWWVNZjRQMk1qUDM3TjRCMlF5U3ZOYVpTRnhVRUtqUGE3KzcybExkREgw?= =?utf-8?B?cVNRTGR4NWFtekpRclBva1NyMXNOeVhnaE1qMnQvZElvckFpTURsZ0lxd1JL?= =?utf-8?B?emZjdXpYb0pxU3E5NDJmR2VxTDByQ3VSUTlmTXJuOTNxOFpMNm5BU0dzT0FK?= =?utf-8?B?cm11Vi9vV3g5M0RwZjU2RG1odTdZdnZzNkxBQ2w4U2JtSWw0NSszRE1JclZl?= =?utf-8?B?WitOYVJxL0FRRTd5QWRKMFpsUk1URm43ZGQvRU5RcjVmcG85RFd2QzhmZnNs?= =?utf-8?B?WWJ1cDFESEFqMSt3V0p2SnQyZGRodU5lV2lqZGN3YlVBNVJyamxYNTVKSmpq?= =?utf-8?B?cllDaFg1QjdDSXVxOFNFOFBCZnlwN0Vpc1FrallmM0FlUGRZWmowTXovdExj?= =?utf-8?B?eC9kSWZZdnFHenNLMVBvbGh4cjhpRUo5QXhZaWl0bW5iYWxCdWtHRlovaHg5?= =?utf-8?B?TFFnbVlmUUExQ0xsVVUxa1ovOTFpZXF6OEoya3h0RjFUd2xlOWtnVUJTRThs?= =?utf-8?B?R2gxK0FldU4wanJXVjdKN1hTeWhQRTAyaTh0bE5pcFBqUWYzSWhYSFd6RkRI?= =?utf-8?B?Vzh4WmhDbGJRNEpBekNPeHNKdWZCUit1SjdCZ3V1UlRYLzZNbzZwenZJbVJQ?= =?utf-8?B?Mnk3dmk0d0VaSXQ5S1JFVkdVSkVFNWxVTmlEVWpmZ3VYWDYxZ3JIS2dyY01i?= =?utf-8?B?UkFnWUoyTHdpOTF4ZVViaGo3QUk4enROb21FUEJWZkozTnJZQitCSGVPdEpp?= =?utf-8?B?b3B1VytkQXIxOGdyMk1KR3kxaFVGM0tjRTF1d1pza1ZUVFhXYVpQbzFNRmJt?= =?utf-8?B?UVk0Sko1ZlBtL3BnV0Y3MVJ0eXJFUUlFWnFFZW5zWXhVVm44clJUTXZUL3My?= =?utf-8?B?MWFmeE5JK3hYZnhJVGxTOXFXOWlxa0hZNXpDVVMrRnp0TnlaUTFpZUVrM1Jw?= =?utf-8?B?aGtrTTFwSlRjN1l6NTY5K2JjZFhoYnZOMW04czhOdEVvVVdkU3RWUT09?= X-OriginatorOrg: btesa.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a96c19c-38e7-4e95-ecf4-08defa02858a X-MS-Exchange-CrossTenant-AuthSource: AM6PR07MB5384.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2026 12:49:47.1690 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f51efa09-da77-4b78-95dd-fde75cdb9c62 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jwlAMlWzwQNvAdwwr+AqJNlhpCFw39pjzTQ0M86Qxj8dAi7JcbpRwRzzW1H/JXS7fGyCWjgYyQdJKuHXa/iBeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB9562 The producer documents the order the consumer has to use, in __bpf_ringbuf_reserve(): * smp_store_release(&rb->producer_pos, new_prod_pos) at * the end of the function ensures that when consumer sees * the updated rb->producer_pos, it always sees the updated * rb->overwrite_pos, so when consumer reads overwrite_pos * after smp_load_acquire(r->producer_pos), the overwrite_pos * will always be valid. ringbuf_avail_data_sz() reads them the other way round, so the acquire load of producer_pos no longer orders the load of overwrite_pos. Nothing then prevents the pair from being observed as a stale overwrite_pos next to an already advanced producer_pos, which overstates the amount of available data by however far the producer moved in between. Swap the two loads so the documented contract holds, and say why in a comment. Signed-off-by: Israel T=C3=A9llez Garc=C3=ADa --- kernel/bpf/ringbuf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/ringbuf.c b/kernel/bpf/ringbuf.c index 0fefa89039be..89a9c15a260f 100644 --- a/kernel/bpf/ringbuf.c +++ b/kernel/bpf/ringbuf.c @@ -319,8 +319,14 @@ static unsigned long ringbuf_avail_data_sz(struct bpf_= ringbuf *rb) cons_pos =3D smp_load_acquire(&rb->consumer_pos); =20 if (unlikely(rb->overwrite_mode)) { - over_pos =3D smp_load_acquire(&rb->overwrite_pos); + /* + * Read producer_pos first: its release store in + * __bpf_ringbuf_reserve() is what publishes the matching + * overwrite_pos. + */ prod_pos =3D smp_load_acquire(&rb->producer_pos); + /* Ordered after the acquire load above, per that contract. */ + over_pos =3D smp_load_acquire(&rb->overwrite_pos); return min(prod_pos - cons_pos, prod_pos - over_pos); } else { prod_pos =3D smp_load_acquire(&rb->producer_pos); --=20 2.39.5 From nobody Fri Aug 14 15:50:38 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021110.outbound.protection.outlook.com [52.101.70.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 80546471436; Fri, 14 Aug 2026 12:49:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711799; cv=fail; b=k2dm6vv5ISV4pAsfPq34B4/ClkOJ2QFyeU62bNzg/564RWR2oz+XHZ0fr7Ksgb5H9mXJ0lOLN6WnfFizzL0fsyETyFizjxm2/5HwOp1PNNiHOmLygNvZd1Wc0D1CeGzpcdFmBa/+psHmT0YMp2ucwX+nS4haYGOTinThPWOLZ+A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786711799; c=relaxed/simple; bh=BI5/zbG4Vz5qyyJS/5NNaGWRVMqUe6k8P1i8WuSrHp0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZFH1BoGNBl1qYZlQAB0sieGePaBZcZqECiPERB36F7tjqXhhx/wqzDC5TpryNV7RnJVdjTj2lqs3eUolK/9mgSz5inq7pnu2fhd3GTSAmvz7AnJ5kbEtlh102FbSyWMXG4pT5GEyvihm1aufDNjOVt7gAMmJ/NKb5FQBxh1o9dE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com; spf=pass smtp.mailfrom=btesa.com; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b=qx2fRLhy; arc=fail smtp.client-ip=52.101.70.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=btesa.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=btesa.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=btesa.com header.i=@btesa.com header.b="qx2fRLhy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PHBzW6I7oMtpfTr/U0DZRYMw5vMzZ5Z4dRU+AnqU2H7oU1mw1faIf5HhrHzCw4nSaNHRQ/55os426wBj6NscVrR+MyRWb+K01SQeHgTFcjVwrOKn2UFZAkoiHX/VomIvwKHGtm3yVv+aofWWo4nEnQiXmcXTiU1Jj1ATVNejBjDnA74zZgtw0Ww4icwrn9i7mN8TZ54Cap+MHdlqAEu7daJeeGQhR0A/9+Z68pEYy4HV3r3iGaIH9EPwkZi6aAdFTUyxSyCX26RjwjPeD/PgcCRy1J2H7+9PGGhvC0kzwn/F06CdCeWw4hFafi8MayPMgvS0WiK7EzniH80R+AL0jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Okzdz4oxiYRDuMQwQCRkEm8NvZvhL9Z80xWDYjw6J1s=; b=FjDonaSO7TGPmvyDN+TXm7GEWHjx7Qxp4arK4FAHWLnssmu9YIsrhu9cXxxEgL4DlTft5ISlguGaF7pjZX7GkfZJTdR0+y+Rrcksmj878/12MqN/IgjOtnlVyJADRKAaN50YThJwZUKbS0rXd/DPRKV6XIoj4k81gOuEhhVMj3ZYhhR5pahqhZcYMoaJzrypnE+t3mXNaYqKgCcK+7DesCvXoxUPAxIQ6k6DuXb4WYQ5RC+M8+vJinVOpyMPYCjiMyBVILuuR5Vuz59siGdUBhboutrrGqzh2qc68TlggsaBTX+j8UA5+MajZFKNsu6lr0EuH6EVXXGYZp7W/3ZYYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=btesa.com; dmarc=pass action=none header.from=btesa.com; dkim=pass header.d=btesa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btesa.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Okzdz4oxiYRDuMQwQCRkEm8NvZvhL9Z80xWDYjw6J1s=; b=qx2fRLhyLHigDGp/xhNLjci8YybFDOfXObu7LQKQYgf/MrDrFbG3Bdi4VHKQuUKhXp4Nz44B3wJxnBcmcwW2+x1+S9VybKXFg0z2R1fFRBOn9cCQ6tTSpoPu2ZRVNAOUIZi4CQKrDiHqa+2Fmhgl1SAyI8RhkGXdWvoySmlzMY7jQqkcyNqrvgW7/IjIKMQ7/f835/GtDITlgNzxdVT78pyaEUxSNGf+b3Yl8cwN/KGpIdxNjwTKUtEJVugzixk0NA3peefDQnrPsNgC7Hpk83kIknVBoiSt6ClqZXYceCVxJgHCnVo0C6lTggZW5ugT3OtAgpfB4zhYp5DX9hkZSQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=btesa.com; Received: from AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) by DB5PR07MB9562.eurprd07.prod.outlook.com (2603:10a6:10:4a6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3; Fri, 14 Aug 2026 12:49:53 +0000 Received: from AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e]) by AM6PR07MB5384.eurprd07.prod.outlook.com ([fe80::b45:9ec:1126:f27e%5]) with mapi id 15.21.0339.002; Fri, 14 Aug 2026 12:49:53 +0000 From: =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= To: Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann Cc: Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Bing-Jhong Billy Jheng , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Israel=20T=C3=A9llez=20Garc=C3=ADa?= Subject: [PATCH v2 bpf 4/4] libbpf: Fix ring buffer consumer loop on 32-bit position wrap Date: Fri, 14 Aug 2026 14:48:43 +0200 Message-ID: <20260814124843.22041-5-i.tellez@btesa.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260814124843.22041-1-i.tellez@btesa.com> References: <20260814124843.22041-1-i.tellez@btesa.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0058.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::7) To AM6PR07MB5384.eurprd07.prod.outlook.com (2603:10a6:20b:80::25) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR07MB5384:EE_|DB5PR07MB9562:EE_ X-MS-Office365-Filtering-Correlation-Id: 44bb7426-1585-4b98-3734-08defa02897b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|7416014|376014|366016|1800799024|38350700014|6133799003|10067099003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: tR9iurCxyUMJcgiIQw7QtlVU06Y0RM+4n/jtyJ5gLjTiTPNju3+R6pL+t4bWVJ/75y0gl12exDWX93e6ofkDVcxqKtmoNQrybfZSQcjrncyNWBsHHiMvrDDzdJWtptxj8J1Tpm9PKy03aal1Xrg5sr6MdU5DdEz1jR2GVSru3eGVeyzNW2KYhsRddnuQICM8zNf8rYbsrPKQfwVEiH9PHCc82ucTDTCPJQxpOiJJS9XvsdY/vfo1rya2P3XBL7HxMtCiUTZTvb8tEMLKdEVYXLGrKO6yEg8L5JRAQGPglrm7IOl9LaqEs5tvl+TI2fkGqk3YH+N0MhJYKQJHaLy6sgV4bD/y+VDer0WA9kwFlBIhXsIFTi+HVvyrFVdCCOD2IlUnRM0Nab6779OugEZtgD1BCJThZJjKZhUm0LVfKGpmePWn/eoz+9Bvyap9InJH+EQkckZcLTqJP78YKmBdLganNnpfKoZYBNmNv14kUaLrWecuaq5Loomzpoy/AQObvr+6l+zzJr/zfuxjGFxiwBBZuo+Eik47S+zBUYjEBZSLCQfqVY5NjlnScPFGjHjEGz15z7MfRa77ZMQnlmFaaEiFQslm0Mo5ywntVSTLHHO1fbi8sDji8sxx2BCYMUJXcZ3axkW5vFU3P4gU3BO4I6GyEyFKYET65rgJ2vwJRlluadbRslweXFaZtJfOd5hd+s0SiWY2iveyB9WadwwBeGL2qfhiIDIMqpC+R+cDTro= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR07MB5384.eurprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(52116014)(7416014)(376014)(366016)(1800799024)(38350700014)(6133799003)(10067099003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ay9VR2k3WUwycXlDSXkySjhLT05MWHQvdEVyS2ZjWFl1OUxWZEVTK1RKRkR1?= =?utf-8?B?Wk1RUEl1S3JVUk1pVGh6TldQQ3l6dGlOeE0rVXJIdmR0WUJXM213eEIydk9k?= =?utf-8?B?SWZNbUNlYTFEUWt6Z2NsSkV5TVlBT1hPdGtZa0gwbGx5dWwzRno0WEZQMHEy?= =?utf-8?B?Sm83SXc2cGZFQ1djdEJtU2l2dXk5TmdOVS96UUNnbDlKT3lkWitkYkZWMjNo?= =?utf-8?B?cVNFK1A1RG9QVXAxRDJPRnNudHMzYk1JREh3NE9rU3dCMFlaNTBFSnZ6TWdO?= =?utf-8?B?blIya2doY2dXNnZWQnlENHpnYlh5emdQamU3cDQzVHkzOGtxTkNXTy8vYjdW?= =?utf-8?B?Wmg0bkRoZVhCQVpVL0wvY0MrNDluZWQ3SERyWlBLMlRtaUJvVXNOUnpGQWo1?= =?utf-8?B?b2NBNnJkTHB2K28zVmNmWmJSY3FRWEVjSFVlVGN2dFNsSjZGMkExS2ZaVXhV?= =?utf-8?B?SnN5SEM4b2Y2cmlOUHJvcHhMZDUvSUcwNTU1V1dyWFNpdGdyd0pEK2VyMlVE?= =?utf-8?B?TURCTFhST3llekZDMFljSzQweEVIV29PYU93cDh3RUxzSm9USHdONmQwR3lN?= =?utf-8?B?TnZDdWVyd043U0dnUXhnMUNRSlNnSEdyL3JBQjR3RUtUNGVYVFp5NE92enVQ?= =?utf-8?B?YjBpOHBUNEN3RUJEQUJEK0FZOUkzUWduVTFUWUwxMEtPUVk0UnlTWGF5UFJi?= =?utf-8?B?K2M2OVlWYjJyRGN0WlMwVG1HY2hIZEFxa0hHbHVaVGlnRFlZQTh0T1FjQ2lQ?= =?utf-8?B?a0hCVVYyYThjUlJXTmxFT0xMSDUzK29uNG4zUUNObVo5UkpOc0NyY1dZbVdr?= =?utf-8?B?dUxRNjJGd2xHUXVTY2lEdVBURUpUb0ZCSzduUkpoUTF0NTUvdDRiMHBvK2s3?= =?utf-8?B?eWp0Nkd5VXZXTVg3eDF2T0s3d0Y4TXMvTXRBUjVlVytQRWZ5bkhuMHdSMytt?= =?utf-8?B?R2c2UFVxYkRnb25hVlRZRHhBeWhPZjZTdkFpME9FcU1qRFNJaHlKM2g4STls?= =?utf-8?B?VFNZZzdkMkd0RVRkeVFPeE5wczNocnhEcTV3RktRWDNLS0lweXgxTTJ4dlJt?= =?utf-8?B?UzNGSWt2ZVlDUm9nYitNMG50QXBMN0k4aXBMUU52ZmRGODN2VFFHc3NLWWZ2?= =?utf-8?B?STYyZFFjRTRvSTZCVlRReW4zTTZIVUdibkVNWDc4SzlONTJVT3pzakJOdHUx?= =?utf-8?B?YU83ek9teTFMRHRHL3ZXbGVqOHNoaitVcWI1TGhzcUJBRm9vblRtNEJLTUd6?= =?utf-8?B?NFI1cUh1NnhoeG53VUJsdTllZDRkc3oyU0NzRHpKWVpIc1QwekdBaEpueWRa?= =?utf-8?B?RHhaVmJGbXJBWXFHSFQvU0hMK3lwSStFT25KVDRoTElsUkpKODlhbTFkVzZt?= =?utf-8?B?U2pBaXhmRURrZ0ttamNKZ25wT1p5Wk1UU2V0eEV6eERjRzlRQjRGUjdhb1Fr?= =?utf-8?B?Q0RYaW93K3NoV0NRK3M2ZHFsSGZLU2NQV0p6RktCWXVaRnhDYnNBai9mWUtx?= =?utf-8?B?cnBzRGhJV2hFRE9vMEl2eGxhRGhNVUkvMnNyU3NoNE1aWnp3M29ETFJET1lq?= =?utf-8?B?QkJlalNXbmczUnB1NWtNc21WaXQwakFpZzRwUytORm9xcFZCZ1VTSmQ2M3ZF?= =?utf-8?B?Mm1KZXQrZXpSd0xoK0tzV2cxc2ZWMFVuVTluNDdsR2o5WHhtQVdhVS9yRlpJ?= =?utf-8?B?bllSZHFOMkhOQXhoWlpwakNrUEYvSld5N0R3ODBhVXBsem9uZG5UaGtBTDVk?= =?utf-8?B?dnQzdE5QUFFDQ1NYMGJwOWczN1JJV0xwZ0R6WWxxYVdkK1BLbC9yK0NwVEdq?= =?utf-8?B?K1NwTHlQVWs5NHpNaUoyMXo3RUkybFRxcFhpYTFQODMyTHRzVlFBQVVRdDh5?= =?utf-8?B?VW9jeEp2UU5rWWFWbStHcUFBRi9EWU5sZmpWdk8rNFJiSlVmd3Y1UEFzUVo5?= =?utf-8?B?ZEVvdVgrL2JoVno0N1YrRGd4VzBHT2J4bStqQ1dURlJ2NUd1VXVKbzByUEpu?= =?utf-8?B?azBRWDhWMmZjUEhnaCtaYW9tZEM1d1pJWGZJNG5NaVoxenlIM1pxbTJPMGls?= =?utf-8?B?R0FlcjVhaEZhRDY0ZjJKQ05ZQlh1UkY0WTVSYUFrTWI4alNodjhCM1RlNllH?= =?utf-8?B?NEYyc3pzdXFMVU1nVmRLUEhCQjQ2SkVab1VQakI5ZTV0eHBvSjF2aHVPandT?= =?utf-8?B?NTV6bmJWTEI5RUNaMUJMZnF1SjQzTmxobGlwWUdRNC9BRGRCQ0xTVGFMdEZJ?= =?utf-8?B?YjZRRThWclVIamJSMkpqcmZEamZ1N2NHV2xXU2lSczZJVE5LL0pYMU02d2Zy?= =?utf-8?B?bDZla29iS1J4bFplWlpDQmxyazJjbVM1K2JwSGYybUNIbWFRVDk3Zz09?= X-OriginatorOrg: btesa.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44bb7426-1585-4b98-3734-08defa02897b X-MS-Exchange-CrossTenant-AuthSource: AM6PR07MB5384.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2026 12:49:53.7670 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f51efa09-da77-4b78-95dd-fde75cdb9c62 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: C9dl+OH03SF5AjUR2WC1hFAreyfO2dh403GO7tFD+pqI2IEKYSzq75CsjeEIVjgiFeEhutABmZ8GeBxfB7LTuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB9562 ringbuf_process_ring() walks the records between the consumer and the producer with an ordering comparison: while (cons_pos < prod_pos) { cons_pos and prod_pos mirror the kernel's ring positions and are unsigned long here too, so on 32-bit they wrap at 2^32 bytes of traffic. When producer_pos has wrapped and consumer_pos has not, prod_pos is the smaller of the two, the loop body never runs and no record is consumed. Since consumer_pos only advances inside that loop, it never wraps either and the consumer stops delivering samples for good, with no error returned to the caller: ring_buffer__poll() keeps reporting zero records while the kernel side fills up and starts dropping. Compare the distance instead. The consumer never runs ahead of the producer, so prod_pos - cons_pos is the amount of unconsumed data and stays correct across the wrap. 64-bit hosts are unaffected in practice: the counters would need 16 EiB to wrap. This is the userspace counterpart of the kernel-side walk fixed in "bpf: Fix pending_pos walk on 32-bit ring position wrap"; a 32-bit consumer hits whichever of the two comes first. Signed-off-by: Israel T=C3=A9llez Garc=C3=ADa --- tools/lib/bpf/ringbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lib/bpf/ringbuf.c b/tools/lib/bpf/ringbuf.c index 00ec4837a06d..c8fe57401a8b 100644 --- a/tools/lib/bpf/ringbuf.c +++ b/tools/lib/bpf/ringbuf.c @@ -244,7 +244,7 @@ static int64_t ringbuf_process_ring(struct ring *r, siz= e_t n) do { got_new_data =3D false; prod_pos =3D smp_load_acquire(r->producer_pos); - while (cons_pos < prod_pos) { + while (prod_pos - cons_pos > 0) { len_ptr =3D r->data + (cons_pos & r->mask); len =3D smp_load_acquire(len_ptr); =20 --=20 2.39.5