From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 ECE503ED3CF for ; Wed, 20 May 2026 15:56:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779292574; cv=none; b=SjFr+MOeLI/isRd19iWv6afZkXubZKz1wt0RQSOFPtE4ORi93YGu6UYgnQFoOiy/jId8PRTiwLHkOt0jSkGPToQ/8XZ+SB6DV3G2ooBcEYA/RcxybaaHLmiQXOkPmxk7DlNPeIyVxo7brUCmEu1vvxqZmJY3LKTarMXLpIc2834= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779292574; c=relaxed/simple; bh=52pIhwO1sx/8MqjYI640DB/wIvQ/icsM6v73JsrwAmg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tg4UApbOx/t36l9E1fL36QQ+IYn7wLiXZcnIHXGZ3vHY8JfCZh6MkaNXSviGoIKMFPHZRamYGQjNuJICCkhgm8NeVjS4zxYZPKW92U4YMBo9HSbdsvubAUUmbFmYLYJ8lQ9Tf0IGJ6liv51ewRgFQhfbWfLM658hHaVMB+ZPgYg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=n62vpcue; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n62vpcue" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-488b150559bso39181515e9.1 for ; Wed, 20 May 2026 08:56:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779292570; x=1779897370; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1T2Qb9RrZsz7qcSCkhnlZDPbWojGSBsbannTJKJ4R7U=; b=n62vpcueUnZXvic5IH+FPs2AYL0o4gqVtOYJdpv81YI40bWQ/nKOy3pht2AWFV3sfH R9TUniAydlqEI03aEOF9RrBTJX4qqAQmaYy+iesbYmnYRX+fJaepPPPXepBtK8B5cyVE oPMfLMn5OLt9ZqcborixaJEkPof8Q3sh68VQYyQrr9YRYowh5cH+r3Tv1BEOSzk5Uf+t K4kZYXEYtV6TfodqsE19OBDxq3y4aQ+OYjn7wLAiZuRrkqn8GzQWfQuL4o9JEd3T6mhg M6dofZaaXxfwze6foLho/oYHOi3QLPNj+wog3tBvCdvH4CQu3dopvD7eB5ecwf3174gy 2MCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779292570; x=1779897370; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1T2Qb9RrZsz7qcSCkhnlZDPbWojGSBsbannTJKJ4R7U=; b=gGX+VUb1O/lZ/n78G5UPwLgexInKYGuMu9i/qVgv8uu6cNJJCwb7MiTCsv1iSzX+jo sekPvokI+jMPHO+n9aHNB3DNnf+SC7YT8IAH6fgLAbSjeEX8OirrLs2PLlr/BUBzbbIN Qtjt6JJ2ms0PjICfy/jHgJTyH8lBQkJgxVFve/qDMFrpRaXf6os8FsRM8P0Io0GkSyPk A4W9KgiZkSOX/bUVcYvtMM8OcXkyPlkyYGQg0PQF5SGIVGeOphUqAI/bFVgOLrxMOJ0q giKn80hDipzxLo5QqTs+FUNYteGBSr7QD429EvrxT9AwC1uu1f9tdpYEirvbEMB+z6P3 QYIQ== X-Forwarded-Encrypted: i=1; AFNElJ/D+ZoVLR7tI51lR5RoLzfCx5YLuo7rubuZLUbzAMx5L+EM8smtpcIbEKjEzpVDaXxCmiTY0VmWP/wzAHE=@vger.kernel.org X-Gm-Message-State: AOJu0YwI9kVGzw+GFlRMRjhCO/ozxxz/F+PH63+U8GXk/rlpDY+HPiCk /QPB1+Auf/Gnjlc64fLtPwqz72hAGSIdA7Mc4f8Zs+jZ8U/VC0BN15d0 X-Gm-Gg: Acq92OFF38xMafFIHt5IdpfL7DvBj7HbZI7Pk4/+SLj8j56KEFA5C62NwzWZRHnKS9N vqH0YrfF82hUkp7NvwwXHovk3AMHPUnSrLOhZNHYt0uBusb7WH02zTP1OFzrvRAlDBup+Ai9MJ5 1shWBC78PbxApqWt4YXxMiTyTN0ptjY5Qsjjcv+UoUTlMARwzYq+j9L7e1NszF8s4X03ELykR1P LZh9C6or9J3ksFJh79Oui8Np1zvOQLwlL8CstZuWXdglrI9FMAHu2AZMbPqK4v9qeW9KbzkMZVo iiPxFYSR1uS+P7taqyTtsD9DN5vVuKG/nzYKpq0VEvSwq8brWumPhSLWjU7c1csTK58vdRg2/Ap X48fqTeoJB0LxAOKM7QZgYv+/eQEP5wpslxG6QWYcQnZcVh/1qQEEIW1cJrcIKRJ3r+R7JOGaPn bnaetxyMBdw2Eb2eow1i7rvgdLv+elIAgaplESxn/Oig== X-Received: by 2002:a05:600c:470e:b0:489:1c32:210d with SMTP id 5b1f17b1804b1-48fe60f195amr364284635e9.15.1779292570096; Wed, 20 May 2026 08:56:10 -0700 (PDT) Received: from RTRKW671-LIN.domain.local ([89.216.37.146]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feab290e1sm215565025e9.2.2026.05.20.08.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 08:56:09 -0700 (PDT) From: Milan Tripkovic To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Kees Cook Cc: Alexandre Ghiti , Andy Shevchenko , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Dusan Stojkovic , Milan Tripkovic Subject: [PATCH 2/2] lib/string_kunit: extend benchmarks and unit test to memchr() Date: Wed, 20 May 2026 17:55:31 +0200 Message-ID: <20260520155532.1139471-3-milant2002@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260520155532.1139471-1-milant2002@gmail.com> References: <20260520155532.1139471-1-milant2002@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Milan Tripkovic Extend the string benchmarking suite to include memchr(). Extend the string unit test to include memchr() Signed-off-by: Milan Tripkovic --- lib/tests/string_kunit.c | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/lib/tests/string_kunit.c b/lib/tests/string_kunit.c index 0819ace5b027..3a7d96e292da 100644 --- a/lib/tests/string_kunit.c +++ b/lib/tests/string_kunit.c @@ -881,6 +881,57 @@ static void string_bench_strrchr(struct kunit *test) STRING_BENCH_BUF(test, buf, len, strrchr, buf, '\0'); } +static void string_test_memchr(struct kunit *test) +{ + char *buf; + size_t max_len = 128; + size_t off, len, match_pos; + char *res; + char target = 0x88; + + buf = kunit_kzalloc(test, max_len + 64, GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf); + + memset(buf, 'A', max_len + 64); + + for (off = 0; off < 16; off++) { + for (len = 1; len < max_len; len++) { + match_pos = len / 2; + buf[off + match_pos] = target; + + res = memchr(buf + off, target, len); + KUNIT_EXPECT_PTR_EQ_MSG(test, res, buf + off + match_pos, + "Failed at:%zu len:%zu pos:%zu", off, len, + match_pos); + + buf[off + match_pos] = 'A'; + } + } + + memset(buf, 'A', max_len); + buf[10] = 'B'; + buf[20] = 'B'; + res = memchr(buf, 'B', max_len); + KUNIT_EXPECT_PTR_EQ(test, res, &buf[10]); + + buf[50] = (char)0xFF; + res = memchr(buf, 0xFF, max_len); + KUNIT_EXPECT_PTR_EQ(test, res, &buf[50]); + + buf[60] = '\0'; + res = memchr(buf, '\0', max_len); + KUNIT_EXPECT_PTR_EQ(test, res, &buf[60]); + + buf[max_len - 1] = 'Z'; + res = memchr(buf, 'Z', max_len); + KUNIT_EXPECT_PTR_EQ(test, res, &buf[max_len - 1]); +} + +static void string_bench_memchr(struct kunit *test) +{ + STRING_BENCH_BUF(test, buf, len, memchr, buf, '\0', len); +} + static struct kunit_case string_test_cases[] = { KUNIT_CASE(string_test_memset16), KUNIT_CASE(string_test_memset32), @@ -910,6 +961,8 @@ static struct kunit_case string_test_cases[] = { KUNIT_CASE(string_bench_strnlen), KUNIT_CASE(string_bench_strchr), KUNIT_CASE(string_bench_strrchr), + KUNIT_CASE(string_test_memchr), + KUNIT_CASE(string_bench_memchr), {} }; -- 2.43.0