From nobody Mon Sep 30 12:23:44 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4XHKxF2DZcz5YD7P; Mon, 30 Sep 2024 12:23:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4XHKxF1Q9Yz4Lw2; Mon, 30 Sep 2024 12:23:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1727699025; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xRIDa2cBiev/qLK0YWVB6ywFoYCkp1MS64opzDSnj0o=; b=qCz5oc6r4719bt8iPKT8gSf7mq1up+lk9VR/ARaCHmprRUb71if+IvAUnltVMr81Yp9pPT eBsxesFiJIjW5wWDNpQIWgzc9mExzbaLqyd3DkqWmG2rslJPYe77KeTHk/SC+P8+DBK0Cs fXp8k/2CSZ06YzqNHsAUcNOByUjIpgqQTmE53fZOSFJH3bfOfzDcfugLQMn6RYVjtBV1T/ wmrnlDYLpTggqltN/7cntY2B4ab4GkZkmc/MdqCDbFjtU83sfTCh0nyIuV6CaOLPXdgiSs O72dcqaz7iWRGkEQ/NLnUULPVl3xwQlqNtSd0mqpPNcVNHuAuQ+CRR+fZTOBSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1727699025; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xRIDa2cBiev/qLK0YWVB6ywFoYCkp1MS64opzDSnj0o=; b=FcfalCgAlQOQBpteCTjKvIhI8XxPi038g5UJ3d1dH2a0dSpc2ryuCTjk7oQaXBMztxJcZw bETTbCvLyl5z9pIXCkDR04yziwW4ubvzvMolPNZnIiqgaJ1nlJ7o588dEtLpaOpw3i2yHz UbfdLrkJRsSsNBDab3fJcelS9qGcdCP08It6o9mnlHACapDIpZ4vLggTiBYgYiRnwCkRTn QvOa85mDBQ48IoQHLaIaXRHVVDftEn4UBUt2L94fMv+ZSNumim4/LuQjuaCG5/ceVFZse1 +h7KfhnhFNvOnl7ZasBv42BbEESLjxtiwg1kSNNILTbbP16y8RF1EY5j2Hen6w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1727699025; a=rsa-sha256; cv=none; b=yrTEyOFIh5vWB+kEKMvmJGACBKxUTBGcEWuD/Bvs0Y/9Za1Q+IG7o16Tc3YqS+75Ujl9jD e7YnmFMef7li6XI20renhnPOZqoJFKuvTOjZamFSI0dNXPnKAER6LyW0f4sM1Ff2iYf2bt 8paXIIHdPtapg6fBWwmRgDq+xYcQEcw/YLbZNzukbkA+hpT1dh6k7v5SggG6Lktr4mJslH PZw4aOqT8bdjYJHp6rVQJkTZWZiInzurUbjWzxdOx26IkMHJwr4kVnuw2BYJzfzNXFlkQD PI5OWkVc0EHOxEODordrzliPwZnuY5VOHSDv9IfIZ6yb5uybquN7guvXFSJ8iw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4XHKxF0jwPztBy; Mon, 30 Sep 2024 12:23:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 48UCNiXC071249; Mon, 30 Sep 2024 12:23:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 48UCNis9071246; Mon, 30 Sep 2024 12:23:44 GMT (envelope-from git) Date: Mon, 30 Sep 2024 12:23:44 GMT Message-Id: <202409301223.48UCNis9071246@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: e189296153a2 - main - tests: Add buf_ring overflow checks List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e189296153a232e6066af7e4ddab0430d3b6677d Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=e189296153a232e6066af7e4ddab0430d3b6677d commit e189296153a232e6066af7e4ddab0430d3b6677d Author: Andrew Turner AuthorDate: 2024-09-27 15:13:53 +0000 Commit: Andrew Turner CommitDate: 2024-09-30 12:04:24 +0000 tests: Add buf_ring overflow checks Check enqueue works correctly when the offsets overflow Reviewed by: imp Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D46156 --- tests/sys/sys/buf_ring_test.c | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/sys/sys/buf_ring_test.c b/tests/sys/sys/buf_ring_test.c index 5ee1b1cc094b..611fb23788cc 100644 --- a/tests/sys/sys/buf_ring_test.c +++ b/tests/sys/sys/buf_ring_test.c @@ -10,6 +10,7 @@ #include #include +#include #include @@ -116,11 +117,64 @@ MC_SC_TEST(buf_ring_dequeue_mc) MC_SC_TEST(buf_ring_dequeue_peek) MC_SC_TEST(buf_ring_dequeue_peek_clear_sc) +ATF_TC_WITHOUT_HEAD(overflow); +ATF_TC_BODY(overflow, tc) +{ + struct buf_ring *br; + + br = buf_ring_alloc(4); + ATF_REQUIRE_MSG(br != NULL, "buf_ring_alloc returned NULL"); + + br->br_prod_head = br->br_cons_head = br->br_prod_tail = + br->br_cons_tail = UINT32_MAX - 1; + ATF_REQUIRE(buf_ring_count(br) == 0); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(buf_ring_empty(br)); + + ATF_REQUIRE(buf_ring_enqueue(br, (void *)1) == 0); + ATF_REQUIRE(buf_ring_count(br) == 1); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(!buf_ring_empty(br)); + + ATF_REQUIRE(buf_ring_enqueue(br, (void *)2) == 0); + ATF_REQUIRE(buf_ring_count(br) == 2); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(!buf_ring_empty(br)); + + ATF_REQUIRE(buf_ring_enqueue(br, (void *)3) == 0); + ATF_REQUIRE(buf_ring_count(br) == 3); + ATF_REQUIRE(buf_ring_full(br)); + ATF_REQUIRE(!buf_ring_empty(br)); + + ATF_REQUIRE(br->br_prod_head == 1); + ATF_REQUIRE(br->br_prod_tail == 1); + ATF_REQUIRE(br->br_cons_head == UINT32_MAX - 1); + ATF_REQUIRE(br->br_cons_tail == UINT32_MAX - 1); + + ATF_REQUIRE(buf_ring_dequeue_sc(br) == (void *)1); + ATF_REQUIRE(buf_ring_count(br) == 2); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(!buf_ring_empty(br)); + + ATF_REQUIRE(buf_ring_dequeue_sc(br) == (void *)2); + ATF_REQUIRE(buf_ring_count(br) == 1); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(!buf_ring_empty(br)); + + ATF_REQUIRE(buf_ring_dequeue_sc(br) == (void *)3); + ATF_REQUIRE(buf_ring_count(br) == 0); + ATF_REQUIRE(!buf_ring_full(br)); + ATF_REQUIRE(buf_ring_empty(br)); + + buf_ring_free(br); +} + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, buf_ring_dequeue_sc); ATF_TP_ADD_TC(tp, buf_ring_dequeue_mc); ATF_TP_ADD_TC(tp, buf_ring_dequeue_peek); ATF_TP_ADD_TC(tp, buf_ring_dequeue_peek_clear_sc); + ATF_TP_ADD_TC(tp, overflow); return (atf_no_error()); }