Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp3753405rwe; Mon, 29 Aug 2022 19:53:35 -0700 (PDT) X-Google-Smtp-Source: AA6agR7v574vto5p7UKmBqieJiEZv/H8RnKcdr/y5aWHgXdgi9CSstzR32UOwQXuy5KzZXVdo/jT X-Received: by 2002:a17:907:c14:b0:741:6823:11c with SMTP id ga20-20020a1709070c1400b007416823011cmr7169036ejc.295.1661828015427; Mon, 29 Aug 2022 19:53:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661828015; cv=none; d=google.com; s=arc-20160816; b=Lr6IevqoirNg5szRbND4iFR/QGLBkLBYh2NGpftw5LV5pTY+mbM0+YUhYRguZOP0EH svl3R0QP7q4yceNUH6G0QCJjx8qeClnM402PK3o3Jyd1wbFpzKQWi20cn2Xnz1VTTHDM yiZdCrt0Ub0FSRwdC3pKjvL2/+fwdd++tR6MWX/XT96glkFilEJ0FXN0G+7AVHdnukgO qDfKIok3rfx6GJVCDil68YtR7BbbR5CbpO1B/mU3RmVRTvKMnA0y2V+vfcLm7/UnjrD+ T3fSrNA1JJ8rFzGHJfSUB3QUc/w4LgNj9W2jEBa6orG95cRzLSZPG8L59vzZtpL9fuzG nPFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature; bh=ZhxEPM8kM++5Ud92Ma5uyVI7Xyid34Zi3PjFMcG+S6E=; b=iW42zdC6O4vJluUkzdpX5qZb9FYzJ41hRItXNp9agp5YS3TDpnXaTpWv5gCh65W14U hwdS8efR/xSgSttxkVWaNx3EO1JHfKpM9Rtr+E2eGNK6akmPM7j0lzd8FCW4jeMt0yoh MX407A3ASEvYHojtew22j9bzsk4RXZ8hXDNPhBz+P28c6vn3zDyl1MbiIuYp0A6rg8I0 iMjI5DdnTh680M5jy7nCKg/FNtfpWDIML7IDS4UBiv13IGu7imDAcK44ZSvDrB4JFgHZ h157+//6rq/FcuQR4Ti4MD3VvJOm9XrRhRhOuiFiPeARb6D/pz/FBs8tQAzPh+AdAKpj YAiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@riseup.net header.s=squak header.b=skPASDkc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=riseup.net Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o17-20020a509b11000000b00447916529casi6319962edi.115.2022.08.29.19.53.09; Mon, 29 Aug 2022 19:53:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@riseup.net header.s=squak header.b=skPASDkc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=riseup.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229892AbiH3CeD (ORCPT + 99 others); Mon, 29 Aug 2022 22:34:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229684AbiH3CeB (ORCPT ); Mon, 29 Aug 2022 22:34:01 -0400 Received: from mx1.riseup.net (mx1.riseup.net [198.252.153.129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F92190C7C for ; Mon, 29 Aug 2022 19:34:00 -0700 (PDT) Received: from fews2.riseup.net (fews2-pn.riseup.net [10.0.1.84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.riseup.net", Issuer "R3" (not verified)) by mx1.riseup.net (Postfix) with ESMTPS id 4MGrwR0z6YzDqNy; Tue, 30 Aug 2022 02:33:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1661826839; bh=FBA7vMb+rgG7Qoy28W2Z07a8D5nOpV54IOm0PHU9X+4=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=skPASDkcQSSFSas3Z56yj28qCarMA6dolky44XaBZgvSHqN4sBQx5YLeLOKoLoiRO qPsB+rlHCW6+E5R2w9shk6vaMdeQ4xZMFeAVtAzRRMcBITuDikPOfwX/Cy2AtCC/NH 1atKAxKrMP7cjg+W/vkN4trOBg+m4KPKgu7aZ/7k= X-Riseup-User-ID: DA68E99367F6891740E74145F1354C44AA2E3FF34314E3D12E4572AD807607F0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by fews2.riseup.net (Postfix) with ESMTPSA id 4MGrwK0WcYz1yQt; Tue, 30 Aug 2022 02:33:52 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: [PATCH 1/2] testing/selftests: Add tests for the is_signed_type() macro From: Isabella Basso In-Reply-To: <20220826162116.1050972-2-bvanassche@acm.org> Date: Mon, 29 Aug 2022 23:33:50 -0300 Cc: Kees Cook , kernel list , Andrew Morton , Arnd Bergmann , Dan Williams , Eric Dumazet , Ingo Molnar , "Jason A. Donenfeld" , Josh Poimboeuf , Luc Van Oostenryck , Masami Hiramatsu , Nathan Chancellor , Peter Zijlstra , Rasmus Villemoes , Sander Vanheule , Steven Rostedt , Vlastimil Babka , Yury Norov Content-Transfer-Encoding: quoted-printable Message-Id: <74370E0B-AC37-435F-A44C-5DBAA8A38496@riseup.net> References: <20220826162116.1050972-1-bvanassche@acm.org> <20220826162116.1050972-2-bvanassche@acm.org> To: Bart Van Assche X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Bart, Glad to see some more KUnit tests making it inside of the kernel=E2=80=99s= lib folder :). > Am 26/08/2022 um 1:21 PM schrieb Bart Van Assche : >=20 > Although not documented, is_signed_type() must support the 'bool' and > pointer types next to scalar and enumeration types. Add a selftest = that > verifies that this macro handles all supported types correctly. >=20 > Cc: Andrew Morton > Cc: Arnd Bergmann > Cc: Dan Williams > Cc: Eric Dumazet > Cc: Ingo Molnar > Cc: Isabella Basso > Cc: "Jason A. Donenfeld" > Cc: Josh Poimboeuf > Cc: Luc Van Oostenryck > Cc: Masami Hiramatsu > Cc: Nathan Chancellor > Cc: Peter Zijlstra > Cc: Rasmus Villemoes > Cc: Sander Vanheule > Cc: Steven Rostedt > Cc: Vlastimil Babka > Cc: Yury Norov > Signed-off-by: Bart Van Assche > --- > lib/Kconfig.debug | 12 ++++++++++ > lib/Makefile | 1 + > lib/is_signed_type_test.c | 48 +++++++++++++++++++++++++++++++++++++++ > 3 files changed, 61 insertions(+) > create mode 100644 lib/is_signed_type_test.c >=20 > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 072e4b289c13..36455953d306 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -2506,6 +2506,18 @@ config MEMCPY_KUNIT_TEST >=20 > If unsure, say N. >=20 > +config IS_SIGNED_TYPE_KUNIT_TEST > + tristate "Test is_signed_type() macro" if !KUNIT_ALL_TESTS > + depends on KUNIT > + default KUNIT_ALL_TESTS > + help > + Builds unit tests for the is_signed_type() macro. > + > + For more information on KUnit and unit tests in general please = refer > + to the KUnit documentation in Documentation/dev-tools/kunit/. > + > + If unsure, say N. > + > config OVERFLOW_KUNIT_TEST > tristate "Test check_*_overflow() functions at runtime" if = !KUNIT_ALL_TESTS > depends on KUNIT > diff --git a/lib/Makefile b/lib/Makefile > index 5927d7fa0806..70176ff17023 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -377,6 +377,7 @@ obj-$(CONFIG_BITS_TEST) +=3D test_bits.o > obj-$(CONFIG_CMDLINE_KUNIT_TEST) +=3D cmdline_kunit.o > obj-$(CONFIG_SLUB_KUNIT_TEST) +=3D slub_kunit.o > obj-$(CONFIG_MEMCPY_KUNIT_TEST) +=3D memcpy_kunit.o > +obj-$(CONFIG_IS_SIGNED_TYPE_KUNIT_TEST) +=3D is_signed_type_test.o > obj-$(CONFIG_OVERFLOW_KUNIT_TEST) +=3D overflow_kunit.o > CFLAGS_stackinit_kunit.o +=3D $(call cc-disable-warning, = switch-unreachable) > obj-$(CONFIG_STACKINIT_KUNIT_TEST) +=3D stackinit_kunit.o > diff --git a/lib/is_signed_type_test.c b/lib/is_signed_type_test.c > new file mode 100644 > index 000000000000..f2eedb1f0935 > --- /dev/null > +++ b/lib/is_signed_type_test.c > @@ -0,0 +1,48 @@ > +// SPDX-License-Identifier: GPL-2.0 OR MIT > +/* > + * ./tools/testing/kunit/kunit.py run is_signed_type [--raw_output] > + */ > +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > + > +#include > +#include Nit: I don=E2=80=99t know if that makes a huge difference but you might = include `` directly to make the final object smaller. Of = course, that would ideally be a change happening in 2/2 but that was already merged = :). > + > +enum unsigned_enum { > + constant_a =3D 3, > +}; > + > +enum signed_enum { > + constant_b =3D -1, > + constant_c =3D 2, > +}; > + > +static void is_signed_type_test(struct kunit *test) > +{ > + KUNIT_EXPECT_EQ(test, is_signed_type(bool), false); > + KUNIT_EXPECT_EQ(test, is_signed_type(signed char), true); > + KUNIT_EXPECT_EQ(test, is_signed_type(unsigned char), false); > + KUNIT_EXPECT_EQ(test, is_signed_type(int), true); > + KUNIT_EXPECT_EQ(test, is_signed_type(unsigned int), false); > + KUNIT_EXPECT_EQ(test, is_signed_type(long), true); > + KUNIT_EXPECT_EQ(test, is_signed_type(unsigned long), false); > + KUNIT_EXPECT_EQ(test, is_signed_type(long long), true); > + KUNIT_EXPECT_EQ(test, is_signed_type(unsigned long long), = false); > + KUNIT_EXPECT_EQ(test, is_signed_type(enum unsigned_enum), = false); > + KUNIT_EXPECT_EQ(test, is_signed_type(enum signed_enum), true); > + KUNIT_EXPECT_EQ(test, is_signed_type(void *), false); > + KUNIT_EXPECT_EQ(test, is_signed_type(const char *), false); > +} > + > +static struct kunit_case is_signed_type_test_cases[] =3D { > + KUNIT_CASE(is_signed_type_test), > + {} > +}; > + > +static struct kunit_suite is_signed_type_test_suite =3D { > + .name =3D "is_signed_type", > + .test_cases =3D is_signed_type_test_cases, > +}; > + > +kunit_test_suite(is_signed_type_test_suite); > + > +MODULE_LICENSE("Dual MIT/GPL=E2=80=9C); Tested-by: Isabella Basso Cheers, -- Isabella Basso=