[PATCH v2 0/3] tip:x86/entry: fix vdso build restructuring fallout

H. Peter Anvin posted 3 patches 3 weeks ago
arch/x86/Makefile                                | 6 +++---
arch/x86/entry/vdso/common/Makefile.include      | 6 +++---
tools/testing/selftests/vDSO/vgetrandom-chacha.S | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
[PATCH v2 0/3] tip:x86/entry: fix vdso build restructuring fallout
Posted by H. Peter Anvin 3 weeks ago
After integration in linux-next, the movement of files from the vdso
restructuring broke "make vdso_install" and one of the kernel self
tests. [Thorsten Leemhuis, kernel test robot]

It also contained an incorrect filtering pattern which although
non-manifest at this point, is a forward compatibility bug [Chris
Mason]

    x86/entry/vdso, selftest: update location of vgetrandom-chacha.S
    x86/entry/vdso: x86/entry/vdso: fix filtering of compiler flags
    x86/entry/vdso: update the object paths for "make vdso_install"

--- 
 arch/x86/Makefile                                | 6 +++---
 arch/x86/entry/vdso/common/Makefile.include      | 6 +++---
 tools/testing/selftests/vDSO/vgetrandom-chacha.S | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 9ab7522ced18..5f881460a8b5 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -318,9 +318,9 @@ PHONY += install
 install:
 	$(call cmd,install)
 
-vdso-install-$(CONFIG_X86_64)		+= arch/x86/entry/vdso/vdso64.so.dbg
-vdso-install-$(CONFIG_X86_X32_ABI)	+= arch/x86/entry/vdso/vdsox32.so.dbg
-vdso-install-$(CONFIG_COMPAT_32)	+= arch/x86/entry/vdso/vdso32.so.dbg
+vdso-install-$(CONFIG_X86_64)	   += arch/x86/entry/vdso/vdso64/vdso64.so.dbg
+vdso-install-$(CONFIG_X86_X32_ABI) += arch/x86/entry/vdso/vdso64/vdsox32.so.dbg
+vdso-install-$(CONFIG_COMPAT_32)   += arch/x86/entry/vdso/vdso32/vdso32.so.dbg
 
 archprepare: checkbin
 checkbin:
diff --git a/arch/x86/entry/vdso/common/Makefile.include b/arch/x86/entry/vdso/common/Makefile.include
index 3514b4a6869b..bf5798cb6781 100644
--- a/arch/x86/entry/vdso/common/Makefile.include
+++ b/arch/x86/entry/vdso/common/Makefile.include
@@ -23,9 +23,9 @@ $(obj)/%.lds : KBUILD_CPPFLAGS += $(CPPFLAGS_VDSO_LDS)
 #
 flags-remove-y += \
 	-D__KERNEL__ -mcmodel=kernel -mregparm=3 \
-	-fno-pic -fno-PIC -fno-pie fno-PIE \
+	-fno-pic -fno-PIC -fno-pie -fno-PIE \
 	-mfentry -pg \
-	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGIN_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
+	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
 	$(RETPOLINE_CFLAGS) $(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \
 	$(PADDING_CFLAGS)
 
@@ -45,7 +45,7 @@ flags-y += -fasynchronous-unwind-tables
 
 # Reset cf protections enabled by compiler default
 flags-y += $(call cc-option, -fcf-protection=none)
-flags-$(X86_USER_SHADOW_STACK) += $(call cc-option, -fcf-protection=return)
+flags-$(CONFIG_X86_USER_SHADOW_STACK) += $(call cc-option, -fcf-protection=return)
 # When user space IBT is supported, enable this.
 # flags-$(CONFIG_USER_IBT) += $(call cc-option, -fcf-protection=branch)
 
diff --git a/tools/testing/selftests/vDSO/vgetrandom-chacha.S b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
index a4a82e1c28a9..10f982157a1f 100644
--- a/tools/testing/selftests/vDSO/vgetrandom-chacha.S
+++ b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
@@ -16,5 +16,5 @@
 #elif defined(__s390x__)
 #include "../../../../arch/s390/kernel/vdso64/vgetrandom-chacha.S"
 #elif defined(__x86_64__)
-#include "../../../../arch/x86/entry/vdso/vgetrandom-chacha.S"
+#include "../../../../arch/x86/entry/vdso/vdso64/vgetrandom-chacha.S"
 #endif
[PATCH v2 1/3] x86/entry/vdso: update the object paths for "make vdso_install"
Posted by H. Peter Anvin 3 weeks ago
The location of the vdso binary files in the object tree has changed;
update "make vdso_install" to match.

Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Closes: https://lore.kernel.org/16ea64d1-2a9b-46f9-9fcc-42958f599eb6@leemhuis.info
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
---
 arch/x86/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 9ab7522ced18..5f881460a8b5 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -318,9 +318,9 @@ PHONY += install
 install:
 	$(call cmd,install)
 
-vdso-install-$(CONFIG_X86_64)		+= arch/x86/entry/vdso/vdso64.so.dbg
-vdso-install-$(CONFIG_X86_X32_ABI)	+= arch/x86/entry/vdso/vdsox32.so.dbg
-vdso-install-$(CONFIG_COMPAT_32)	+= arch/x86/entry/vdso/vdso32.so.dbg
+vdso-install-$(CONFIG_X86_64)	   += arch/x86/entry/vdso/vdso64/vdso64.so.dbg
+vdso-install-$(CONFIG_X86_X32_ABI) += arch/x86/entry/vdso/vdso64/vdsox32.so.dbg
+vdso-install-$(CONFIG_COMPAT_32)   += arch/x86/entry/vdso/vdso32/vdso32.so.dbg
 
 archprepare: checkbin
 checkbin:
-- 
2.52.0
[tip: x86/entry] x86/entry/vdso: Update the object paths for "make vdso_install"
Posted by tip-bot2 for H. Peter Anvin 3 weeks ago
The following commit has been merged into the x86/entry branch of tip:

Commit-ID:     b3683f3ba079940f91f4a26004250559f170eda9
Gitweb:        https://git.kernel.org/tip/b3683f3ba079940f91f4a26004250559f170eda9
Author:        H. Peter Anvin <hpa@zytor.com>
AuthorDate:    Fri, 16 Jan 2026 12:40:54 -08:00
Committer:     Dave Hansen <dave.hansen@linux.intel.com>
CommitterDate: Fri, 16 Jan 2026 12:58:45 -08:00

x86/entry/vdso: Update the object paths for "make vdso_install"

The location of the vdso binary files in the object tree has changed;
update "make vdso_install" to match.

Closes: https://lore.kernel.org/16ea64d1-2a9b-46f9-9fcc-42958f599eb6@leemhuis.info
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20260116204057.386268-2-hpa@zytor.com
---
 arch/x86/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 9ab7522..5f88146 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -318,9 +318,9 @@ PHONY += install
 install:
 	$(call cmd,install)
 
-vdso-install-$(CONFIG_X86_64)		+= arch/x86/entry/vdso/vdso64.so.dbg
-vdso-install-$(CONFIG_X86_X32_ABI)	+= arch/x86/entry/vdso/vdsox32.so.dbg
-vdso-install-$(CONFIG_COMPAT_32)	+= arch/x86/entry/vdso/vdso32.so.dbg
+vdso-install-$(CONFIG_X86_64)	   += arch/x86/entry/vdso/vdso64/vdso64.so.dbg
+vdso-install-$(CONFIG_X86_X32_ABI) += arch/x86/entry/vdso/vdso64/vdsox32.so.dbg
+vdso-install-$(CONFIG_COMPAT_32)   += arch/x86/entry/vdso/vdso32/vdso32.so.dbg
 
 archprepare: checkbin
 checkbin:
[PATCH v2 2/3] x86/entry/vdso: fix filtering of vdso compiler flags
Posted by H. Peter Anvin 3 weeks ago
This fixes several typos in the filtering of compiler flags for vdso,
discovered by Chris Mason using an AI script:

1. "-fno-PIE" was written as "fno-PIE".
2. "CC_PLUGINS_FLAGS" was written as "CC_PLUGIN_FLAGS"
3. "CONFIG_X86_USER_SHADOW_STACK" was missing "CONFIG_".

To the best of my knowledge, none of these actually had any real
impact on the build at this time (the shadow stack option, in
particular, used happens to not generate any code), but they are
genuine bugs which could break things at any point in the future.

Reported-by: Chris Mason <clm@meta.com>
Closes: https://lore.kernel.org/20260116035807.2307742-1-clm@meta.com
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
---
 arch/x86/entry/vdso/common/Makefile.include | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/entry/vdso/common/Makefile.include b/arch/x86/entry/vdso/common/Makefile.include
index 3514b4a6869b..bf5798cb6781 100644
--- a/arch/x86/entry/vdso/common/Makefile.include
+++ b/arch/x86/entry/vdso/common/Makefile.include
@@ -23,9 +23,9 @@ $(obj)/%.lds : KBUILD_CPPFLAGS += $(CPPFLAGS_VDSO_LDS)
 #
 flags-remove-y += \
 	-D__KERNEL__ -mcmodel=kernel -mregparm=3 \
-	-fno-pic -fno-PIC -fno-pie fno-PIE \
+	-fno-pic -fno-PIC -fno-pie -fno-PIE \
 	-mfentry -pg \
-	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGIN_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
+	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
 	$(RETPOLINE_CFLAGS) $(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \
 	$(PADDING_CFLAGS)
 
@@ -45,7 +45,7 @@ flags-y += -fasynchronous-unwind-tables
 
 # Reset cf protections enabled by compiler default
 flags-y += $(call cc-option, -fcf-protection=none)
-flags-$(X86_USER_SHADOW_STACK) += $(call cc-option, -fcf-protection=return)
+flags-$(CONFIG_X86_USER_SHADOW_STACK) += $(call cc-option, -fcf-protection=return)
 # When user space IBT is supported, enable this.
 # flags-$(CONFIG_USER_IBT) += $(call cc-option, -fcf-protection=branch)
 
-- 
2.52.0
Re: [PATCH v2 2/3] x86/entry/vdso: fix filtering of vdso compiler flags
Posted by kernel test robot 2 weeks, 6 days ago
Hi Peter,

First bad commit (maybe != root cause):

kernel test robot noticed the following build errors:

[auto build test ERROR on tip/master]
[also build test ERROR on next-20260116]
[cannot apply to tip/auto-latest linus/master v6.19-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/H-Peter-Anvin/x86-entry-vdso-update-the-object-paths-for-make-vdso_install/20260117-044522
base:   tip/master
patch link:    https://lore.kernel.org/r/20260116204057.386268-3-hpa%40zytor.com
patch subject: [PATCH v2 2/3] x86/entry/vdso: fix filtering of vdso compiler flags
config: x86_64-rhel-9.4-func (https://download.01.org/0day-ci/archive/20260118/202601180025.lLCHWiad-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260118/202601180025.lLCHWiad-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202601180025.lLCHWiad-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/compiler_types.h:44,
                    from <command-line>:
   include/linux/compiler-context-analysis.h: In function '_context_unsafe_alias':
>> include/linux/compiler-context-analysis.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     237 | static inline void _context_unsafe_alias(void **p) { }
         | ^~~~~~
   In file included from include/linux/export.h:5,
                    from include/linux/linkage.h:7,
                    from arch/x86/include/asm/cache.h:5,
                    from include/vdso/cache.h:5,
                    from include/linux/cache.h:6,
                    from include/linux/time.h:5,
                    from arch/x86/entry/vdso/vdso64/../common/vclock_gettime.c:11,
                    from arch/x86/entry/vdso/vdso64/vclock_gettime.c:1:
   include/linux/compiler.h: In function 'offset_to_ptr':
   include/linux/compiler.h:272:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     272 | {
         | ^
   In file included from include/asm-generic/rwonce.h:26,
                    from ./arch/x86/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:382:
   include/linux/kasan-checks.h: In function 'kasan_check_read':
   include/linux/kasan-checks.h:41:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
      41 | {
         | ^
   include/linux/kasan-checks.h: In function 'kasan_check_write':
   include/linux/kasan-checks.h:45:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
      45 | {
         | ^
   In file included from include/asm-generic/rwonce.h:27:
   include/linux/kcsan-checks.h: In function '__kcsan_check_access':
   include/linux/kcsan-checks.h:190:41: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     190 |                                         int type) { }
         |                                         ^~~
   include/linux/kcsan-checks.h: In function '__kcsan_mb':
   include/linux/kcsan-checks.h:192:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     192 | static inline void __kcsan_mb(void)                     { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function '__kcsan_wmb':
   include/linux/kcsan-checks.h:193:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     193 | static inline void __kcsan_wmb(void)                    { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function '__kcsan_rmb':
   include/linux/kcsan-checks.h:194:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     194 | static inline void __kcsan_rmb(void)                    { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function '__kcsan_release':
   include/linux/kcsan-checks.h:195:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     195 | static inline void __kcsan_release(void)                { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_disable_current':
   include/linux/kcsan-checks.h:196:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     196 | static inline void kcsan_disable_current(void)          { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_enable_current':
   include/linux/kcsan-checks.h:197:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     197 | static inline void kcsan_enable_current(void)           { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_enable_current_nowarn':
   include/linux/kcsan-checks.h:198:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     198 | static inline void kcsan_enable_current_nowarn(void)    { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_nestable_atomic_begin':
   include/linux/kcsan-checks.h:199:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     199 | static inline void kcsan_nestable_atomic_begin(void)    { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_nestable_atomic_end':
   include/linux/kcsan-checks.h:200:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     200 | static inline void kcsan_nestable_atomic_end(void)      { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_flat_atomic_begin':
   include/linux/kcsan-checks.h:201:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     201 | static inline void kcsan_flat_atomic_begin(void)        { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_flat_atomic_end':
   include/linux/kcsan-checks.h:202:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     202 | static inline void kcsan_flat_atomic_end(void)          { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_atomic_next':
   include/linux/kcsan-checks.h:203:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     203 | static inline void kcsan_atomic_next(int n)             { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_set_access_mask':
   include/linux/kcsan-checks.h:204:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     204 | static inline void kcsan_set_access_mask(unsigned long mask) { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_begin_scoped_access':
   include/linux/kcsan-checks.h:210:34: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     210 |                           struct kcsan_scoped_access *sa) { return sa; }
         |                                  ^~~~~~~~~~~~~~~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_end_scoped_access':
   include/linux/kcsan-checks.h:211:51: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     211 | static inline void kcsan_end_scoped_access(struct kcsan_scoped_access *sa) { }
         |                                                   ^~~~~~~~~~~~~~~~~~~
   include/linux/kcsan-checks.h: In function 'kcsan_check_access':
   include/linux/kcsan-checks.h:230:39: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     230 |                                       int type) { }
         |                                       ^~~
   include/linux/kcsan-checks.h: In function '__kcsan_enable_current':
   include/linux/kcsan-checks.h:231:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     231 | static inline void __kcsan_enable_current(void)  { }
         | ^~~~~~
   include/linux/kcsan-checks.h: In function '__kcsan_disable_current':
   include/linux/kcsan-checks.h:232:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
--
   include/linux/find.h: In function 'find_first_bit':
   include/linux/find.h:207:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     207 | {
         | ^
   include/linux/find.h: In function 'find_nth_bit':
   include/linux/find.h:233:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     233 | {
         | ^
   include/linux/find.h: In function 'find_nth_and_bit':
   include/linux/find.h:259:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     259 | {
         | ^
   include/linux/find.h: In function 'find_nth_and_andnot_bit':
   include/linux/find.h:289:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     289 | {
         | ^
   include/linux/find.h: In function 'find_first_and_bit':
   include/linux/find.h:316:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     316 | {
         | ^
   include/linux/find.h: In function 'find_first_andnot_bit':
   include/linux/find.h:340:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     340 | {
         | ^
   include/linux/find.h: In function 'find_first_and_and_bit':
   include/linux/find.h:365:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     365 | {
         | ^
   include/linux/find.h: In function 'find_first_zero_bit':
   include/linux/find.h:386:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     386 | {
         | ^
   include/linux/find.h: In function 'find_last_bit':
   include/linux/find.h:407:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     407 | {
         | ^
   include/linux/find.h: In function 'find_next_and_bit_wrap':
   include/linux/find.h:432:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     432 | {
         | ^
   include/linux/find.h: In function 'find_next_bit_wrap':
   include/linux/find.h:454:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     454 | {
         | ^
   include/linux/find.h: In function '__for_each_wrap':
   include/linux/find.h:471:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     471 | {
         | ^
   include/linux/find.h: In function 'find_next_zero_bit_le':
   include/linux/find.h:511:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     511 | {
         | ^
   include/linux/find.h: In function 'find_next_bit_le':
   include/linux/find.h:517:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     517 | {
         | ^
   include/linux/find.h: In function 'find_first_zero_bit_le':
   include/linux/find.h:523:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     523 | {
         | ^
   In file included from include/linux/bitmap.h:13:
   include/linux/string.h: In function 'memdup_array_user':
   include/linux/string.h:33:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
      33 | {
         | ^
   include/linux/string.h: In function 'vmemdup_array_user':
   include/linux/string.h:53:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
      53 | {
         | ^
   include/linux/string.h: In function 'strstrip':
   include/linux/string.h:190:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     190 | {
         | ^
   include/linux/string.h: In function 'memset_l':
   include/linux/string.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     237 | {
         | ^
   include/linux/string.h: In function 'memset_p':
   include/linux/string.h:245:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     245 | {
         | ^
   include/linux/string.h: In function 'mem_is_zero':
   include/linux/string.h:295:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     295 | {
         | ^
   include/linux/string.h: In function '__free_argv_free':
   include/linux/string.h:316:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     316 | DEFINE_FREE(argv_free, char **, if (!IS_ERR_OR_NULL(_T)) argv_free(_T))
         | ^~~~~~~~~~~
   include/linux/string.h: In function 'memzero_explicit':
   include/linux/string.h:365:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     365 | {
         | ^
   include/linux/string.h: In function 'kbasename':
   include/linux/string.h:380:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     380 | {
         | ^
   In file included from include/linux/fortify-string.h:5,
                    from include/linux/string.h:386:
   include/linux/bitfield.h: In function 'field_multiplier':
>> include/linux/bitfield.h:202:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     202 | {
         | ^
   include/linux/bitfield.h: In function 'field_mask':
   include/linux/bitfield.h:208:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     208 | {
         | ^
   include/linux/bitfield.h: In function 'u8_encode_bits':
   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     237 | ____MAKE_OP(u8,u8,,)
         | ^~~~~~~~~~~
   include/linux/bitfield.h: In function 'u8_replace_bits':
   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u8p_replace_bits':
   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u8_get_bits':
   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le16_encode_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     238 | __MAKE_OP(16)
         | ^~~~~~~~~
   include/linux/bitfield.h: In function 'le16_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le16p_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le16_get_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be16_encode_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be16_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be16p_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be16_get_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u16_encode_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u16_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u16p_replace_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u16_get_bits':
   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le32_encode_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     239 | __MAKE_OP(32)
         | ^~~~~~~~~
   include/linux/bitfield.h: In function 'le32_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le32p_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le32_get_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be32_encode_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be32_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be32p_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be32_get_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u32_encode_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u32_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u32p_replace_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u32_get_bits':
   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le64_encode_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     240 | __MAKE_OP(64)
         | ^~~~~~~~~
   include/linux/bitfield.h: In function 'le64_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le64p_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'le64_get_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be64_encode_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be64_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be64p_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'be64_get_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u64_encode_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u64_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u64p_replace_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/bitfield.h: In function 'u64_get_bits':
   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
   include/linux/fortify-string.h: In function 'strncpy':
   include/linux/fortify-string.h:198:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
     198 | {
         | ^
   include/linux/fortify-string.h: In function 'strnlen':
   include/linux/fortify-string.h:220:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
..


vim +237 include/linux/compiler-context-analysis.h

3269701cb25662 Marco Elver 2025-12-19  221  
3269701cb25662 Marco Elver 2025-12-19  222  /**
3269701cb25662 Marco Elver 2025-12-19  223   * context_unsafe_alias() - helper to insert a context lock "alias barrier"
3269701cb25662 Marco Elver 2025-12-19  224   * @p: pointer aliasing a context lock or object containing context locks
3269701cb25662 Marco Elver 2025-12-19  225   *
3269701cb25662 Marco Elver 2025-12-19  226   * No-op function that acts as a "context lock alias barrier", where the
3269701cb25662 Marco Elver 2025-12-19  227   * analysis rightfully detects that we're switching aliases, but the switch is
3269701cb25662 Marco Elver 2025-12-19  228   * considered safe but beyond the analysis reasoning abilities.
3269701cb25662 Marco Elver 2025-12-19  229   *
3269701cb25662 Marco Elver 2025-12-19  230   * This should be inserted before the first use of such an alias.
3269701cb25662 Marco Elver 2025-12-19  231   *
3269701cb25662 Marco Elver 2025-12-19  232   * Implementation Note: The compiler ignores aliases that may be reassigned but
3269701cb25662 Marco Elver 2025-12-19  233   * their value cannot be determined (e.g. when passing a non-const pointer to an
3269701cb25662 Marco Elver 2025-12-19  234   * alias as a function argument).
3269701cb25662 Marco Elver 2025-12-19  235   */
3269701cb25662 Marco Elver 2025-12-19  236  #define context_unsafe_alias(p) _context_unsafe_alias((void **)&(p))
3269701cb25662 Marco Elver 2025-12-19 @237  static inline void _context_unsafe_alias(void **p) { }
3269701cb25662 Marco Elver 2025-12-19  238  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH v2 2/3] x86/entry/vdso: fix filtering of vdso compiler flags
Posted by H. Peter Anvin 2 weeks, 6 days ago
On January 17, 2026 6:17:20 PM PST, kernel test robot <lkp@intel.com> wrote:
>Hi Peter,
>
>First bad commit (maybe != root cause):
>
>kernel test robot noticed the following build errors:
>
>[auto build test ERROR on tip/master]
>[also build test ERROR on next-20260116]
>[cannot apply to tip/auto-latest linus/master v6.19-rc5]
>[If your patch is applied to the wrong git tree, kindly drop us a note.
>And when submitting patch, we suggest to use '--base' as documented in
>https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
>url:    https://github.com/intel-lab-lkp/linux/commits/H-Peter-Anvin/x86-entry-vdso-update-the-object-paths-for-make-vdso_install/20260117-044522
>base:   tip/master
>patch link:    https://lore.kernel.org/r/20260116204057.386268-3-hpa%40zytor.com
>patch subject: [PATCH v2 2/3] x86/entry/vdso: fix filtering of vdso compiler flags
>config: x86_64-rhel-9.4-func (https://download.01.org/0day-ci/archive/20260118/202601180025.lLCHWiad-lkp@intel.com/config)
>compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
>reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260118/202601180025.lLCHWiad-lkp@intel.com/reproduce)
>
>If you fix the issue in a separate patch/commit (i.e. not just a new version of
>the same patch/commit), kindly add following tags
>| Reported-by: kernel test robot <lkp@intel.com>
>| Closes: https://lore.kernel.org/r/202601180025.lLCHWiad-lkp@intel.com/
>
>All errors (new ones prefixed by >>):
>
>   In file included from include/linux/compiler_types.h:44,
>                    from <command-line>:
>   include/linux/compiler-context-analysis.h: In function '_context_unsafe_alias':
>>> include/linux/compiler-context-analysis.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     237 | static inline void _context_unsafe_alias(void **p) { }
>         | ^~~~~~
>   In file included from include/linux/export.h:5,
>                    from include/linux/linkage.h:7,
>                    from arch/x86/include/asm/cache.h:5,
>                    from include/vdso/cache.h:5,
>                    from include/linux/cache.h:6,
>                    from include/linux/time.h:5,
>                    from arch/x86/entry/vdso/vdso64/../common/vclock_gettime.c:11,
>                    from arch/x86/entry/vdso/vdso64/vclock_gettime.c:1:
>   include/linux/compiler.h: In function 'offset_to_ptr':
>   include/linux/compiler.h:272:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     272 | {
>         | ^
>   In file included from include/asm-generic/rwonce.h:26,
>                    from ./arch/x86/include/generated/asm/rwonce.h:1,
>                    from include/linux/compiler.h:382:
>   include/linux/kasan-checks.h: In function 'kasan_check_read':
>   include/linux/kasan-checks.h:41:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>      41 | {
>         | ^
>   include/linux/kasan-checks.h: In function 'kasan_check_write':
>   include/linux/kasan-checks.h:45:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>      45 | {
>         | ^
>   In file included from include/asm-generic/rwonce.h:27:
>   include/linux/kcsan-checks.h: In function '__kcsan_check_access':
>   include/linux/kcsan-checks.h:190:41: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     190 |                                         int type) { }
>         |                                         ^~~
>   include/linux/kcsan-checks.h: In function '__kcsan_mb':
>   include/linux/kcsan-checks.h:192:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     192 | static inline void __kcsan_mb(void)                     { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function '__kcsan_wmb':
>   include/linux/kcsan-checks.h:193:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     193 | static inline void __kcsan_wmb(void)                    { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function '__kcsan_rmb':
>   include/linux/kcsan-checks.h:194:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     194 | static inline void __kcsan_rmb(void)                    { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function '__kcsan_release':
>   include/linux/kcsan-checks.h:195:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     195 | static inline void __kcsan_release(void)                { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_disable_current':
>   include/linux/kcsan-checks.h:196:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     196 | static inline void kcsan_disable_current(void)          { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_enable_current':
>   include/linux/kcsan-checks.h:197:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     197 | static inline void kcsan_enable_current(void)           { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_enable_current_nowarn':
>   include/linux/kcsan-checks.h:198:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     198 | static inline void kcsan_enable_current_nowarn(void)    { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_nestable_atomic_begin':
>   include/linux/kcsan-checks.h:199:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     199 | static inline void kcsan_nestable_atomic_begin(void)    { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_nestable_atomic_end':
>   include/linux/kcsan-checks.h:200:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     200 | static inline void kcsan_nestable_atomic_end(void)      { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_flat_atomic_begin':
>   include/linux/kcsan-checks.h:201:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     201 | static inline void kcsan_flat_atomic_begin(void)        { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_flat_atomic_end':
>   include/linux/kcsan-checks.h:202:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     202 | static inline void kcsan_flat_atomic_end(void)          { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_atomic_next':
>   include/linux/kcsan-checks.h:203:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     203 | static inline void kcsan_atomic_next(int n)             { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_set_access_mask':
>   include/linux/kcsan-checks.h:204:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     204 | static inline void kcsan_set_access_mask(unsigned long mask) { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_begin_scoped_access':
>   include/linux/kcsan-checks.h:210:34: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     210 |                           struct kcsan_scoped_access *sa) { return sa; }
>         |                                  ^~~~~~~~~~~~~~~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_end_scoped_access':
>   include/linux/kcsan-checks.h:211:51: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     211 | static inline void kcsan_end_scoped_access(struct kcsan_scoped_access *sa) { }
>         |                                                   ^~~~~~~~~~~~~~~~~~~
>   include/linux/kcsan-checks.h: In function 'kcsan_check_access':
>   include/linux/kcsan-checks.h:230:39: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     230 |                                       int type) { }
>         |                                       ^~~
>   include/linux/kcsan-checks.h: In function '__kcsan_enable_current':
>   include/linux/kcsan-checks.h:231:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     231 | static inline void __kcsan_enable_current(void)  { }
>         | ^~~~~~
>   include/linux/kcsan-checks.h: In function '__kcsan_disable_current':
>   include/linux/kcsan-checks.h:232:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>--
>   include/linux/find.h: In function 'find_first_bit':
>   include/linux/find.h:207:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     207 | {
>         | ^
>   include/linux/find.h: In function 'find_nth_bit':
>   include/linux/find.h:233:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     233 | {
>         | ^
>   include/linux/find.h: In function 'find_nth_and_bit':
>   include/linux/find.h:259:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     259 | {
>         | ^
>   include/linux/find.h: In function 'find_nth_and_andnot_bit':
>   include/linux/find.h:289:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     289 | {
>         | ^
>   include/linux/find.h: In function 'find_first_and_bit':
>   include/linux/find.h:316:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     316 | {
>         | ^
>   include/linux/find.h: In function 'find_first_andnot_bit':
>   include/linux/find.h:340:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     340 | {
>         | ^
>   include/linux/find.h: In function 'find_first_and_and_bit':
>   include/linux/find.h:365:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     365 | {
>         | ^
>   include/linux/find.h: In function 'find_first_zero_bit':
>   include/linux/find.h:386:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     386 | {
>         | ^
>   include/linux/find.h: In function 'find_last_bit':
>   include/linux/find.h:407:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     407 | {
>         | ^
>   include/linux/find.h: In function 'find_next_and_bit_wrap':
>   include/linux/find.h:432:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     432 | {
>         | ^
>   include/linux/find.h: In function 'find_next_bit_wrap':
>   include/linux/find.h:454:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     454 | {
>         | ^
>   include/linux/find.h: In function '__for_each_wrap':
>   include/linux/find.h:471:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     471 | {
>         | ^
>   include/linux/find.h: In function 'find_next_zero_bit_le':
>   include/linux/find.h:511:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     511 | {
>         | ^
>   include/linux/find.h: In function 'find_next_bit_le':
>   include/linux/find.h:517:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     517 | {
>         | ^
>   include/linux/find.h: In function 'find_first_zero_bit_le':
>   include/linux/find.h:523:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     523 | {
>         | ^
>   In file included from include/linux/bitmap.h:13:
>   include/linux/string.h: In function 'memdup_array_user':
>   include/linux/string.h:33:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>      33 | {
>         | ^
>   include/linux/string.h: In function 'vmemdup_array_user':
>   include/linux/string.h:53:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>      53 | {
>         | ^
>   include/linux/string.h: In function 'strstrip':
>   include/linux/string.h:190:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     190 | {
>         | ^
>   include/linux/string.h: In function 'memset_l':
>   include/linux/string.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     237 | {
>         | ^
>   include/linux/string.h: In function 'memset_p':
>   include/linux/string.h:245:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     245 | {
>         | ^
>   include/linux/string.h: In function 'mem_is_zero':
>   include/linux/string.h:295:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     295 | {
>         | ^
>   include/linux/string.h: In function '__free_argv_free':
>   include/linux/string.h:316:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     316 | DEFINE_FREE(argv_free, char **, if (!IS_ERR_OR_NULL(_T)) argv_free(_T))
>         | ^~~~~~~~~~~
>   include/linux/string.h: In function 'memzero_explicit':
>   include/linux/string.h:365:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     365 | {
>         | ^
>   include/linux/string.h: In function 'kbasename':
>   include/linux/string.h:380:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     380 | {
>         | ^
>   In file included from include/linux/fortify-string.h:5,
>                    from include/linux/string.h:386:
>   include/linux/bitfield.h: In function 'field_multiplier':
>>> include/linux/bitfield.h:202:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     202 | {
>         | ^
>   include/linux/bitfield.h: In function 'field_mask':
>   include/linux/bitfield.h:208:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     208 | {
>         | ^
>   include/linux/bitfield.h: In function 'u8_encode_bits':
>   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     237 | ____MAKE_OP(u8,u8,,)
>         | ^~~~~~~~~~~
>   include/linux/bitfield.h: In function 'u8_replace_bits':
>   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u8p_replace_bits':
>   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u8_get_bits':
>   include/linux/bitfield.h:237:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le16_encode_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     238 | __MAKE_OP(16)
>         | ^~~~~~~~~
>   include/linux/bitfield.h: In function 'le16_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le16p_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le16_get_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be16_encode_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be16_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be16p_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be16_get_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u16_encode_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u16_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u16p_replace_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u16_get_bits':
>   include/linux/bitfield.h:238:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le32_encode_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     239 | __MAKE_OP(32)
>         | ^~~~~~~~~
>   include/linux/bitfield.h: In function 'le32_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le32p_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le32_get_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be32_encode_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be32_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be32p_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be32_get_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u32_encode_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u32_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u32p_replace_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u32_get_bits':
>   include/linux/bitfield.h:239:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le64_encode_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     240 | __MAKE_OP(64)
>         | ^~~~~~~~~
>   include/linux/bitfield.h: In function 'le64_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le64p_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'le64_get_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be64_encode_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be64_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be64p_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'be64_get_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u64_encode_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u64_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u64p_replace_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/bitfield.h: In function 'u64_get_bits':
>   include/linux/bitfield.h:240:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>   include/linux/fortify-string.h: In function 'strncpy':
>   include/linux/fortify-string.h:198:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>     198 | {
>         | ^
>   include/linux/fortify-string.h: In function 'strnlen':
>   include/linux/fortify-string.h:220:1: error: '-mindirect-branch' and '-fcf-protection' are not compatible
>..
>
>
>vim +237 include/linux/compiler-context-analysis.h
>
>3269701cb25662 Marco Elver 2025-12-19  221  
>3269701cb25662 Marco Elver 2025-12-19  222  /**
>3269701cb25662 Marco Elver 2025-12-19  223   * context_unsafe_alias() - helper to insert a context lock "alias barrier"
>3269701cb25662 Marco Elver 2025-12-19  224   * @p: pointer aliasing a context lock or object containing context locks
>3269701cb25662 Marco Elver 2025-12-19  225   *
>3269701cb25662 Marco Elver 2025-12-19  226   * No-op function that acts as a "context lock alias barrier", where the
>3269701cb25662 Marco Elver 2025-12-19  227   * analysis rightfully detects that we're switching aliases, but the switch is
>3269701cb25662 Marco Elver 2025-12-19  228   * considered safe but beyond the analysis reasoning abilities.
>3269701cb25662 Marco Elver 2025-12-19  229   *
>3269701cb25662 Marco Elver 2025-12-19  230   * This should be inserted before the first use of such an alias.
>3269701cb25662 Marco Elver 2025-12-19  231   *
>3269701cb25662 Marco Elver 2025-12-19  232   * Implementation Note: The compiler ignores aliases that may be reassigned but
>3269701cb25662 Marco Elver 2025-12-19  233   * their value cannot be determined (e.g. when passing a non-const pointer to an
>3269701cb25662 Marco Elver 2025-12-19  234   * alias as a function argument).
>3269701cb25662 Marco Elver 2025-12-19  235   */
>3269701cb25662 Marco Elver 2025-12-19  236  #define context_unsafe_alias(p) _context_unsafe_alias((void **)&(p))
>3269701cb25662 Marco Elver 2025-12-19 @237  static inline void _context_unsafe_alias(void **p) { }
>3269701cb25662 Marco Elver 2025-12-19  238  
>

For the record: already fixed.
[tip: x86/entry] x86/entry/vdso: Fix filtering of vdso compiler flags
Posted by tip-bot2 for H. Peter Anvin 3 weeks ago
The following commit has been merged into the x86/entry branch of tip:

Commit-ID:     a48acbaf99d239e60a09a9e2b7d0f7e9feb62769
Gitweb:        https://git.kernel.org/tip/a48acbaf99d239e60a09a9e2b7d0f7e9feb62769
Author:        H. Peter Anvin <hpa@zytor.com>
AuthorDate:    Fri, 16 Jan 2026 12:40:55 -08:00
Committer:     Dave Hansen <dave.hansen@linux.intel.com>
CommitterDate: Fri, 16 Jan 2026 13:25:33 -08:00

x86/entry/vdso: Fix filtering of vdso compiler flags

This fixes several typos in the filtering of compiler flags for vdso,
discovered by Chris Mason using an AI script:

1. "-fno-PIE" was written as "fno-PIE".
2. "CC_PLUGINS_FLAGS" was written as "CC_PLUGIN_FLAGS"

To the best of my knowledge, none of these actually had any real
impact on the build at this time but they are genuine bugs which could
break things at any point in the future.

Chris's script also found that "CONFIG_X86_USER_SHADOW_STACK" was
missing "CONFIG_", but it needs a different fix.

[ dhansen: remove CONFIG_X86_USER_SHADOW_STACK munging,
	   add mention in changelog. ]

Closes: https://lore.kernel.org/20260116035807.2307742-1-clm@meta.com
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Reported-by: Chris Mason <clm@meta.com>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20260116204057.386268-3-hpa@zytor.com
---
 arch/x86/entry/vdso/common/Makefile.include | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/entry/vdso/common/Makefile.include b/arch/x86/entry/vdso/common/Makefile.include
index 3514b4a..687b3d8 100644
--- a/arch/x86/entry/vdso/common/Makefile.include
+++ b/arch/x86/entry/vdso/common/Makefile.include
@@ -23,9 +23,9 @@ $(obj)/%.lds : KBUILD_CPPFLAGS += $(CPPFLAGS_VDSO_LDS)
 #
 flags-remove-y += \
 	-D__KERNEL__ -mcmodel=kernel -mregparm=3 \
-	-fno-pic -fno-PIC -fno-pie fno-PIE \
+	-fno-pic -fno-PIC -fno-pie -fno-PIE \
 	-mfentry -pg \
-	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGIN_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
+	$(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) $(KSTACK_ERASE_CFLAGS) \
 	$(RETPOLINE_CFLAGS) $(CC_FLAGS_LTO) $(CC_FLAGS_CFI) \
 	$(PADDING_CFLAGS)
 
[PATCH v2 3/3] x86/entry/vdso, selftest: update location of vgetrandom-chacha.S
Posted by H. Peter Anvin 3 weeks ago
As part of the vdso build restructuring, vgetrandom-chacha.S moved
into the vdso/vdso64 subdirectory. Update the selftest #include to
match.

Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202601161608.5cd5af9a-lkp@intel.com
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
---
 tools/testing/selftests/vDSO/vgetrandom-chacha.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/vDSO/vgetrandom-chacha.S b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
index a4a82e1c28a9..10f982157a1f 100644
--- a/tools/testing/selftests/vDSO/vgetrandom-chacha.S
+++ b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
@@ -16,5 +16,5 @@
 #elif defined(__s390x__)
 #include "../../../../arch/s390/kernel/vdso64/vgetrandom-chacha.S"
 #elif defined(__x86_64__)
-#include "../../../../arch/x86/entry/vdso/vgetrandom-chacha.S"
+#include "../../../../arch/x86/entry/vdso/vdso64/vgetrandom-chacha.S"
 #endif
-- 
2.52.0
[tip: x86/entry] x86/entry/vdso/selftest: Update location of vgetrandom-chacha.S
Posted by tip-bot2 for H. Peter Anvin 3 weeks ago
The following commit has been merged into the x86/entry branch of tip:

Commit-ID:     db7855c96d4216b2ed45e2781fae9293b323c7ef
Gitweb:        https://git.kernel.org/tip/db7855c96d4216b2ed45e2781fae9293b323c7ef
Author:        H. Peter Anvin <hpa@zytor.com>
AuthorDate:    Fri, 16 Jan 2026 12:40:56 -08:00
Committer:     Dave Hansen <dave.hansen@linux.intel.com>
CommitterDate: Fri, 16 Jan 2026 13:25:44 -08:00

x86/entry/vdso/selftest: Update location of vgetrandom-chacha.S

As part of the vdso build restructuring, vgetrandom-chacha.S moved
into the vdso/vdso64 subdirectory. Update the selftest #include to
match.

Closes: https://lore.kernel.org/oe-lkp/202601161608.5cd5af9a-lkp@intel.com
Fixes: 693c819fedcd ("x86/entry/vdso: Refactor the vdso build")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20260116204057.386268-4-hpa@zytor.com
---
 tools/testing/selftests/vDSO/vgetrandom-chacha.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/vDSO/vgetrandom-chacha.S b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
index a4a82e1..10f9821 100644
--- a/tools/testing/selftests/vDSO/vgetrandom-chacha.S
+++ b/tools/testing/selftests/vDSO/vgetrandom-chacha.S
@@ -16,5 +16,5 @@
 #elif defined(__s390x__)
 #include "../../../../arch/s390/kernel/vdso64/vgetrandom-chacha.S"
 #elif defined(__x86_64__)
-#include "../../../../arch/x86/entry/vdso/vgetrandom-chacha.S"
+#include "../../../../arch/x86/entry/vdso/vdso64/vgetrandom-chacha.S"
 #endif