From: Stephen Rothwell Date: Tue, 25 Feb 2025 05:07:32 +0000 (+1100) Subject: Merge branch 'for-next/kspp' of git://git.kernel.org/pub/scm/linux/kernel/git/kees... X-Git-Tag: next-20250225~5 X-Git-Url: https://gentwo.org/gitweb/?a=commitdiff_plain;h=49a3e7299144da601ba1f7292751b597562fd37a;p=linux%2F.git Merge branch 'for-next/kspp' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git --- 49a3e7299144da601ba1f7292751b597562fd37a diff --cc include/linux/compiler.h index 58543dbada9a,b4140bb332a3..93758b5c8fa3 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@@ -206,42 -206,28 +206,58 @@@ void ftrace_likely_update(struct ftrace #define __must_be_byte_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_byte_array(a), \ "must be byte array") + /* + * If the "nonstring" attribute isn't available, we have to return true + * so the __must_*() checks pass when "nonstring" isn't supported. + */ + #if __has_attribute(__nonstring__) + #define __is_cstr(a) (!__annotated(a, nonstring)) + #define __is_noncstr(a) (__annotated(a, nonstring)) + #else + #define __is_cstr(a) (true) + #define __is_noncstr(a) (true) + #endif + /* Require C Strings (i.e. NUL-terminated) lack the "nonstring" attribute. */ #define __must_be_cstr(p) \ - __BUILD_BUG_ON_ZERO_MSG(__annotated(p, nonstring), "must be cstr (NUL-terminated)") + __BUILD_BUG_ON_ZERO_MSG(!__is_cstr(p), \ + "must be C-string (NUL-terminated)") + #define __must_be_noncstr(p) \ + __BUILD_BUG_ON_ZERO_MSG(!__is_noncstr(p), \ + "must be non-C-string (not NUL-terminated)") +/* + * Use __typeof_unqual__() when available. + * + * XXX: Remove test for __CHECKER__ once + * sparse learns about __typeof_unqual__(). + */ +#if CC_HAS_TYPEOF_UNQUAL && !defined(__CHECKER__) +# define USE_TYPEOF_UNQUAL 1 +#endif + +/* + * Define TYPEOF_UNQUAL() to use __typeof_unqual__() as typeof + * operator when available, to return an unqualified type of the exp. + */ +#if defined(USE_TYPEOF_UNQUAL) +# define TYPEOF_UNQUAL(exp) __typeof_unqual__(exp) +#else +# define TYPEOF_UNQUAL(exp) __typeof__(exp) +#endif + #endif /* __KERNEL__ */ +#if defined(CONFIG_CFI_CLANG) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO) +/* + * Force a reference to the external symbol so the compiler generates + * __kcfi_typid. + */ +#define KCFI_REFERENCE(sym) __ADDRESSABLE(sym) +#else +#define KCFI_REFERENCE(sym) +#endif + /** * offset_to_ptr - convert a relative memory offset to an absolute pointer * @off: the address of the 32-bit offset value diff --cc lib/Makefile index 66e44569b141,1e886482a6a3..bc05750e32ca --- a/lib/Makefile +++ b/lib/Makefile @@@ -131,7 -121,7 +120,7 @@@ endi obj-$(CONFIG_DEBUG_INFO_REDUCED) += debug_info.o CFLAGS_debug_info.o += $(call cc-option, -femit-struct-debug-detailed=any) - obj-y += math/ crypto/ vdso/ -obj-y += math/ crypto/ tests/ ++obj-y += math/ crypto/ vdso/ tests/ obj-$(CONFIG_GENERIC_IOMAP) += iomap.o obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o diff --cc lib/tests/Makefile index 8e4f42cb9c54,8696d778d92f..8961fbcff7a4 --- a/lib/tests/Makefile +++ b/lib/tests/Makefile @@@ -1,1 -1,42 +1,43 @@@ + # SPDX-License-Identifier: GPL-2.0 + # + # Makefile for tests of kernel library functions. + + # KUnit tests + CFLAGS_bitfield_kunit.o := $(DISABLE_STRUCTLEAK_PLUGIN) + obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o + obj-$(CONFIG_BITS_TEST) += test_bits.o ++obj-$(CONFIG_BLACKHOLE_DEV_KUNIT_TEST) += blackhole_dev_kunit.o + obj-$(CONFIG_CHECKSUM_KUNIT) += checksum_kunit.o + obj-$(CONFIG_CMDLINE_KUNIT_TEST) += cmdline_kunit.o + obj-$(CONFIG_CPUMASK_KUNIT_TEST) += cpumask_kunit.o + obj-$(CONFIG_CRC_KUNIT_TEST) += crc_kunit.o + CFLAGS_fortify_kunit.o += $(call cc-disable-warning, unsequenced) + CFLAGS_fortify_kunit.o += $(call cc-disable-warning, stringop-overread) + CFLAGS_fortify_kunit.o += $(call cc-disable-warning, stringop-truncation) + CFLAGS_fortify_kunit.o += $(DISABLE_STRUCTLEAK_PLUGIN) + obj-$(CONFIG_FORTIFY_KUNIT_TEST) += fortify_kunit.o + CFLAGS_test_fprobe.o += $(CC_FLAGS_FTRACE) + obj-$(CONFIG_FPROBE_SANITY_TEST) += test_fprobe.o + obj-$(CONFIG_HASHTABLE_KUNIT_TEST) += hashtable_test.o + obj-$(CONFIG_HASH_KUNIT_TEST) += test_hash.o + obj-$(CONFIG_TEST_IOV_ITER) += kunit_iov_iter.o + obj-$(CONFIG_IS_SIGNED_TYPE_KUNIT_TEST) += is_signed_type_kunit.o + obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o + obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o + obj-$(CONFIG_KFIFO_KUNIT_TEST) += kfifo_kunit.o + obj-$(CONFIG_TEST_LIST_SORT) += test_list_sort.o + obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o + obj-$(CONFIG_MEMCPY_KUNIT_TEST) += memcpy_kunit.o + CFLAGS_overflow_kunit.o = $(call cc-disable-warning, tautological-constant-out-of-range-compare) + obj-$(CONFIG_OVERFLOW_KUNIT_TEST) += overflow_kunit.o + obj-$(CONFIG_SIPHASH_KUNIT_TEST) += siphash_kunit.o + obj-$(CONFIG_SLUB_KUNIT_TEST) += slub_kunit.o + obj-$(CONFIG_TEST_SORT) += test_sort.o + CFLAGS_stackinit_kunit.o += $(call cc-disable-warning, switch-unreachable) + obj-$(CONFIG_STACKINIT_KUNIT_TEST) += stackinit_kunit.o + obj-$(CONFIG_STRING_KUNIT_TEST) += string_kunit.o + obj-$(CONFIG_STRING_HELPERS_KUNIT_TEST) += string_helpers_kunit.o + obj-$(CONFIG_USERCOPY_KUNIT_TEST) += usercopy_kunit.o + obj-$(CONFIG_UTIL_MACROS_KUNIT) += util_macros_kunit.o + obj-$(CONFIG_TEST_RUNTIME_MODULE) += module/