Patch "lib/bitmap: workaround const_eval test build failure" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    lib/bitmap: workaround const_eval test build failure

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     lib-bitmap-workaround-const_eval-test-build-failure.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4b3871264abb0a1444618dd7d57b6bcc58e9b206
Author: Yury Norov <yury.norov@xxxxxxxxx>
Date:   Mon Jul 17 12:17:03 2023 -0700

    lib/bitmap: workaround const_eval test build failure
    
    [ Upstream commit 2356d198d2b4ddec24efea98271cb3be230bc787 ]
    
    When building with Clang, and when KASAN and GCOV_PROFILE_ALL are both
    enabled, the test fails to build [1]:
    
    >> lib/test_bitmap.c:920:2: error: call to '__compiletime_assert_239' declared with 'error' attribute: BUILD_BUG_ON failed: !__builtin_constant_p(res)
               BUILD_BUG_ON(!__builtin_constant_p(res));
               ^
       include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON'
               BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
               ^
       include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
       #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                           ^
       include/linux/compiler_types.h:352:2: note: expanded from macro 'compiletime_assert'
               _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
               ^
       include/linux/compiler_types.h:340:2: note: expanded from macro '_compiletime_assert'
               __compiletime_assert(condition, msg, prefix, suffix)
               ^
       include/linux/compiler_types.h:333:4: note: expanded from macro '__compiletime_assert'
                               prefix ## suffix();                             \
                               ^
       <scratch space>:185:1: note: expanded from here
       __compiletime_assert_239
    
    Originally it was attributed to s390, which now looks seemingly wrong. The
    issue is not related to bitmap code itself, but it breaks build for a given
    configuration.
    
    Disabling the const_eval test under that config may potentially hide other
    bugs. Instead, workaround it by disabling GCOV for the test_bitmap unless
    the compiler will get fixed.
    
    [1] https://github.com/ClangBuiltLinux/linux/issues/1874
    
    Reported-by: kernel test robot <lkp@xxxxxxxxx>
    Closes: https://lore.kernel.org/oe-kbuild-all/202307171254.yFcH97ej-lkp@xxxxxxxxx/
    Fixes: dc34d5036692 ("lib: test_bitmap: add compile-time optimization/evaluations assertions")
    Co-developed-by: Nathan Chancellor <nathan@xxxxxxxxxx>
    Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx>
    Signed-off-by: Yury Norov <yury.norov@xxxxxxxxx>
    Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
    Reviewed-by: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/lib/Makefile b/lib/Makefile
index 59bd7c2f793a7..5ffe72ec99797 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -81,8 +81,14 @@ obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o
 obj-$(CONFIG_TEST_DYNAMIC_DEBUG) += test_dynamic_debug.o
 obj-$(CONFIG_TEST_PRINTF) += test_printf.o
 obj-$(CONFIG_TEST_SCANF) += test_scanf.o
+
 obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o
 obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o
+ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_KASAN),yy)
+# FIXME: Clang breaks test_bitmap_const_eval when KASAN and GCOV are enabled
+GCOV_PROFILE_test_bitmap.o := n
+endif
+
 obj-$(CONFIG_TEST_UUID) += test_uuid.o
 obj-$(CONFIG_TEST_XARRAY) += test_xarray.o
 obj-$(CONFIG_TEST_MAPLE_TREE) += test_maple_tree.o
diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c
index a8005ad3bd589..37a9108c4f588 100644
--- a/lib/test_bitmap.c
+++ b/lib/test_bitmap.c
@@ -1149,6 +1149,10 @@ static void __init test_bitmap_print_buf(void)
 	}
 }
 
+/*
+ * FIXME: Clang breaks compile-time evaluations when KASAN and GCOV are enabled.
+ * To workaround it, GCOV is force-disabled in Makefile for this configuration.
+ */
 static void __init test_bitmap_const_eval(void)
 {
 	DECLARE_BITMAP(bitmap, BITS_PER_LONG);
@@ -1174,11 +1178,7 @@ static void __init test_bitmap_const_eval(void)
 	 * the compiler is fixed.
 	 */
 	bitmap_clear(bitmap, 0, BITS_PER_LONG);
-#if defined(__s390__) && defined(__clang__)
-	if (!const_test_bit(7, bitmap))
-#else
 	if (!test_bit(7, bitmap))
-#endif
 		bitmap_set(bitmap, 5, 2);
 
 	/* Equals to `unsigned long bitopvar = BIT(20)` */



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux