lib: Improve the is_signed_type() kunit test
authorBart Van Assche <bvanassche@acm.org>
Wed, 7 Sep 2022 18:03:29 +0000 (11:03 -0700)
committerKees Cook <keescook@chromium.org>
Wed, 7 Sep 2022 23:37:27 +0000 (16:37 -0700)
Since the definition of is_signed_type() has been moved from
<linux/overflow.h> to <linux/compiler.h>, include the latter header file
instead of the former. Additionally, add a test for the type 'char'.

Cc: Isabella Basso <isabbasso@riseup.net>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20220907180329.3825417-1-bvanassche@acm.org
lib/is_signed_type_kunit.c

index f2eedb1..2072075 100644 (file)
@@ -5,7 +5,7 @@
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
 #include <kunit/test.h>
-#include <linux/overflow.h>
+#include <linux/compiler.h>
 
 enum unsigned_enum {
        constant_a = 3,
@@ -21,6 +21,11 @@ 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);
+#ifdef __CHAR_UNSIGNED__
+       KUNIT_EXPECT_EQ(test, is_signed_type(char), false);
+#else
+       KUNIT_EXPECT_EQ(test, is_signed_type(char), true);
+#endif
        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);