public inbox for linux-efi@vger.kernel.org
 help / color / mirror / Atom feed
* fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
       [not found]           ` <20251029233057.GA3441561@ax162>
@ 2025-10-30 13:23             ` Christian Brauner
  2025-10-30 13:38               ` Ard Biesheuvel
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-10-30 13:23 UTC (permalink / raw)
  To: Nathan Chancellor, Linus Torvalds
  Cc: Ard Biesheuvel, linux-efi, Rasmus Villemoes, Alexander Viro,
	linux-fsdevel, linux-kernel, linux-kbuild, David Sterba

On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > if it's small enough or just want to give me a stable branch I can pull
> > I'll be content. Thanks!
> 
> I do not care either way but I created a shared branch/tag since it was
> easy enough to do. If Linus wants to take these directly for -rc4, I am
> fine with that as well.
> 
> Cheers,
> Nathan
> 
> The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> 
>   Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> 
> are available in the Git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19

Thanks, I pulled this and placed it into a branch that I can base other
branches on.

_But_, I'm already running into problems. :)

I'm changing a struct ns_common in ns_common.h (struct ns_common) and
wanted to make use of the fms extensions. ns_common.h is heavily
included by virtue of the namespace stuff. So we get an include chain
like the following:

In file included from ./include/linux/cgroup.h:23,
                 from ./include/linux/memcontrol.h:13,
                 from ./include/linux/swap.h:9,
                 from ./include/asm-generic/tlb.h:15,
                 from ./arch/x86/include/asm/tlb.h:8,
                 from ./arch/x86/include/asm/efi.h:7,
                 from drivers/firmware/efi/libstub/x86-stub.c:13:
./include/linux/ns_common.h:132:31: error: declaration does not declare anything [-Werror]
  132 |                 struct ns_tree;
      |                               ^
./include/linux/ns_common.h: In function '__ns_ref_active_read':
./include/linux/ns_common.h:228:31: error: 'const struct ns_common' has no member named '__ns_ref_active'
  228 |         return atomic_read(&ns->__ns_ref_active);
      |                               ^~
In file included from ./arch/x86/include/asm/bug.h:108,
                 from ./arch/x86/include/asm/alternative.h:9,
                 from ./arch/x86/include/asm/segment.h:6,
                 from ./arch/x86/include/asm/ptrace.h:5,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:67,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/efi.h:17,
                 from drivers/firmware/efi/libstub/x86-stub.c:9:

Because struct cgroup_namespace embeddds struct ns_common and it
proliferates via mm stuff into the efi code.

So the EFI cod has it's own KBUILD_CFLAGS. It does:

# non-x86 reuses KBUILD_CFLAGS, x86 does not
cflags-y			:= $(KBUILD_CFLAGS)

<snip>

KBUILD_CFLAGS			:= $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
				   -Os -DDISABLE_BRANCH_PROFILING \
				   -include $(srctree)/include/linux/hidden.h \
				   -D__NO_FORTIFY \
				   -ffreestanding \
				   -fno-stack-protector \
				   $(call cc-option,-fno-addrsig) \
				   -D__DISABLE_EXPORTS

which means x86 doesn't get -fms-extension breaking the build. If I
manually insert:

diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index 94b05e4451dd..4ad2f8f42134 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -42,6 +42,8 @@ KBUILD_CFLAGS                 := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
                                   -ffreestanding \
                                   -fno-stack-protector \
                                   $(call cc-option,-fno-addrsig) \
+                                  -fms-extensions \
+                                  -Wno-microsoft-anon-tag \
                                   -D__DISABLE_EXPORTS

The build works...

I think we need to decide how to fix this now because as soon as someone
makes use of the extension that is indirectly included by that libstub
thing we're fscked.

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-10-30 13:23             ` fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration) Christian Brauner
@ 2025-10-30 13:38               ` Ard Biesheuvel
  2025-10-30 17:29                 ` Nathan Chancellor
  0 siblings, 1 reply; 9+ messages in thread
From: Ard Biesheuvel @ 2025-10-30 13:38 UTC (permalink / raw)
  To: Christian Brauner
  Cc: Nathan Chancellor, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
>
> On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > if it's small enough or just want to give me a stable branch I can pull
> > > I'll be content. Thanks!
> >
> > I do not care either way but I created a shared branch/tag since it was
> > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > fine with that as well.
> >
> > Cheers,
> > Nathan
> >
> > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> >
> >   Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> >
> > are available in the Git repository at:
> >
> >   git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
>
> Thanks, I pulled this and placed it into a branch that I can base other
> branches on.
>
> _But_, I'm already running into problems. :)
>
...
>
> Because struct cgroup_namespace embeddds struct ns_common and it
> proliferates via mm stuff into the efi code.
>
> So the EFI cod has it's own KBUILD_CFLAGS. It does:
>
> # non-x86 reuses KBUILD_CFLAGS, x86 does not
> cflags-y                        := $(KBUILD_CFLAGS)
>
> <snip>
>
> KBUILD_CFLAGS                   := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
>                                    -Os -DDISABLE_BRANCH_PROFILING \
>                                    -include $(srctree)/include/linux/hidden.h \
>                                    -D__NO_FORTIFY \
>                                    -ffreestanding \
>                                    -fno-stack-protector \
>                                    $(call cc-option,-fno-addrsig) \
>                                    -D__DISABLE_EXPORTS
>
> which means x86 doesn't get -fms-extension breaking the build. If I
> manually insert:
>
> diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> index 94b05e4451dd..4ad2f8f42134 100644
> --- a/drivers/firmware/efi/libstub/Makefile
> +++ b/drivers/firmware/efi/libstub/Makefile
> @@ -42,6 +42,8 @@ KBUILD_CFLAGS                 := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
>                                    -ffreestanding \
>                                    -fno-stack-protector \
>                                    $(call cc-option,-fno-addrsig) \
> +                                  -fms-extensions \
> +                                  -Wno-microsoft-anon-tag \
>                                    -D__DISABLE_EXPORTS
>
> The build works...
>
> I think we need to decide how to fix this now because as soon as someone
> makes use of the extension that is indirectly included by that libstub
> thing we're fscked.

Unless anyone is feeling brave and wants to untangle the x86 command
line delta between the stub and core kernel, I suggest we just add
these flags just like you proposed (assuming all supported compilers
tolerate their presence)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-10-30 13:38               ` Ard Biesheuvel
@ 2025-10-30 17:29                 ` Nathan Chancellor
  2025-10-30 20:16                   ` Christian Brauner
  0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-10-30 17:29 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Christian Brauner, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Thu, Oct 30, 2025 at 02:38:50PM +0100, Ard Biesheuvel wrote:
> On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
> >
> > On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > > if it's small enough or just want to give me a stable branch I can pull
> > > > I'll be content. Thanks!
> > >
> > > I do not care either way but I created a shared branch/tag since it was
> > > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > > fine with that as well.
> > >
> > > Cheers,
> > > Nathan
> > >
> > > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> > >
> > >   Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> > >
> > > are available in the Git repository at:
> > >
> > >   git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
> >
> > Thanks, I pulled this and placed it into a branch that I can base other
> > branches on.
> >
> > _But_, I'm already running into problems. :)
> >
> ...
> >
> > Because struct cgroup_namespace embeddds struct ns_common and it
> > proliferates via mm stuff into the efi code.
> >
> > So the EFI cod has it's own KBUILD_CFLAGS. It does:
> >
> > # non-x86 reuses KBUILD_CFLAGS, x86 does not
> > cflags-y                        := $(KBUILD_CFLAGS)
> >
> > <snip>
> >
> > KBUILD_CFLAGS                   := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> >                                    -Os -DDISABLE_BRANCH_PROFILING \
> >                                    -include $(srctree)/include/linux/hidden.h \
> >                                    -D__NO_FORTIFY \
> >                                    -ffreestanding \
> >                                    -fno-stack-protector \
> >                                    $(call cc-option,-fno-addrsig) \
> >                                    -D__DISABLE_EXPORTS
> >
> > which means x86 doesn't get -fms-extension breaking the build. If I
> > manually insert:
> >
> > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > index 94b05e4451dd..4ad2f8f42134 100644
> > --- a/drivers/firmware/efi/libstub/Makefile
> > +++ b/drivers/firmware/efi/libstub/Makefile
> > @@ -42,6 +42,8 @@ KBUILD_CFLAGS                 := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> >                                    -ffreestanding \
> >                                    -fno-stack-protector \
> >                                    $(call cc-option,-fno-addrsig) \
> > +                                  -fms-extensions \
> > +                                  -Wno-microsoft-anon-tag \
> >                                    -D__DISABLE_EXPORTS
> >
> > The build works...
> >
> > I think we need to decide how to fix this now because as soon as someone
> > makes use of the extension that is indirectly included by that libstub
> > thing we're fscked.
> 
> Unless anyone is feeling brave and wants to untangle the x86 command
> line delta between the stub and core kernel, I suggest we just add
> these flags just like you proposed (assuming all supported compilers
> tolerate their presence)

There are several other places in the kernel that blow away
KBUILD_CFLAGS like this that will need the same fix (I went off of
searching for -std=gnu11, as that was needed in many places to fix GCC
15). It is possible that we might want to take the opportunity to unify
these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
just bothered with adding the flags in the existing places.

diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
index ffa3536581f6..9d0efed91414 100644
--- a/arch/arm64/kernel/vdso32/Makefile
+++ b/arch/arm64/kernel/vdso32/Makefile
@@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
                $(filter -Werror,$(KBUILD_CPPFLAGS)) \
                -Werror-implicit-function-declaration \
                -Wno-format-security \
-               -std=gnu11
+               -std=gnu11 -fms-extensions
 VDSO_CFLAGS  += -O2
 # Some useful compiler-dependent flags from top-level Makefile
 VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
@@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
 VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
 VDSO_CFLAGS += -Werror=date-time
 VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
+VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
 
 # Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
 # unreliable.
diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
index d8316f993482..c0cc3ca5da9f 100644
--- a/arch/loongarch/vdso/Makefile
+++ b/arch/loongarch/vdso/Makefile
@@ -19,7 +19,7 @@ ccflags-vdso := \
 cflags-vdso := $(ccflags-vdso) \
 	-isystem $(shell $(CC) -print-file-name=include) \
 	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
-	-std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
+	-std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
 	-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
 	$(call cc-option, -fno-asynchronous-unwind-tables) \
 	$(call cc-option, -fno-stack-protector)
diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
index 17c42d718eb3..f8481e4e9d21 100644
--- a/arch/parisc/boot/compressed/Makefile
+++ b/arch/parisc/boot/compressed/Makefile
@@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
 ifndef CONFIG_64BIT
 KBUILD_CFLAGS += -mfast-indirect-calls
 endif
-KBUILD_CFLAGS += -std=gnu11
+KBUILD_CFLAGS += -std=gnu11 -fms-extensions
 
 LDFLAGS_vmlinux := -X -e startup --as-needed -T
 $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index c47b78c1d3e7..f1a4761ebd44 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -70,7 +70,7 @@ BOOTCPPFLAGS	:= -nostdinc $(LINUXINCLUDE)
 BOOTCPPFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)
 
 BOOTCFLAGS	:= $(BOOTTARGETFLAGS) \
-		   -std=gnu11 \
+		   -std=gnu11 -fms-extensions \
 		   -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 		   -fno-strict-aliasing -O2 \
 		   -msoft-float -mno-altivec -mno-vsx \
@@ -86,6 +86,7 @@ BOOTARFLAGS	:= -crD
 
 ifdef CONFIG_CC_IS_CLANG
 BOOTCFLAGS += $(CLANG_FLAGS)
+BOOTCFLAGS += -Wno-microsoft-anon-tag
 BOOTAFLAGS += $(CLANG_FLAGS)
 endif
 
diff --git a/arch/s390/Makefile b/arch/s390/Makefile
index b4769241332b..8578361133a4 100644
--- a/arch/s390/Makefile
+++ b/arch/s390/Makefile
@@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
 ifndef CONFIG_AS_IS_LLVM
 KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
 endif
-KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
+KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
 KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
 KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
 KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
@@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
 KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
 KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
 KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
+KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
 
 UTS_MACHINE	:= s390x
 STACK_SIZE	:= $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
index bd39b36e7bd6..0c196a5b194a 100644
--- a/arch/s390/purgatory/Makefile
+++ b/arch/s390/purgatory/Makefile
@@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
 $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
 	$(call if_changed_rule,as_o_S)
 
-KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
+KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
 KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
 KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
 KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
@@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
 KBUILD_CFLAGS += -D__DISABLE_EXPORTS
 KBUILD_CFLAGS += $(CLANG_FLAGS)
+KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
 KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
 KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
 KBUILD_AFLAGS += -D__DISABLE_EXPORTS
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 4db7e4bf69f5..e20e25b8b16c 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -48,7 +48,8 @@ endif
 
 # How to compile the 16-bit code.  Note we always compile for -march=i386;
 # that way we can complain to the user if the CPU is insufficient.
-REALMODE_CFLAGS	:= -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
+REALMODE_CFLAGS	:= -std=gnu11 -fms-extensions -m16 -g -Os \
+		   -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
 		   -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
 		   -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
 		   -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
@@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
 REALMODE_CFLAGS += $(CLANG_FLAGS)
 ifdef CONFIG_CC_IS_CLANG
 REALMODE_CFLAGS += -Wno-gnu
+REALMODE_CFLAGS += -Wno-microsoft-anon-tag
 endif
 export REALMODE_CFLAGS
 
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index 74657589264d..68f9d7a1683b 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
 # avoid errors with '-march=i386', and future flags may depend on the target to
 # be valid.
 KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
-KBUILD_CFLAGS += -std=gnu11
+KBUILD_CFLAGS += -std=gnu11 -fms-extensions
 KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
 KBUILD_CFLAGS += -Wundef
 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
@@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
 KBUILD_CFLAGS += -ffreestanding -fshort-wchar
 KBUILD_CFLAGS += -fno-stack-protector
 KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
-KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
+ifdef CONFIG_CC_IS_CLANG
+KBUILD_CFLAGS += -Wno-gnu
+KBUILD_CFLAGS += -Wno-microsoft-anon-tag
+endif
 KBUILD_CFLAGS += -Wno-pointer-sign
 KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 KBUILD_CFLAGS += -D__DISABLE_EXPORTS
diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index 94b05e4451dd..7d15a85d579f 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -11,12 +11,12 @@ cflags-y			:= $(KBUILD_CFLAGS)
 
 cflags-$(CONFIG_X86_32)		:= -march=i386
 cflags-$(CONFIG_X86_64)		:= -mcmodel=small
-cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 \
+cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
 				   -fPIC -fno-strict-aliasing -mno-red-zone \
 				   -mno-mmx -mno-sse -fshort-wchar \
 				   -Wno-pointer-sign \
 				   $(call cc-disable-warning, address-of-packed-member) \
-				   $(call cc-disable-warning, gnu) \
+				   $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
 				   -fno-asynchronous-unwind-tables \
 				   $(CLANG_FLAGS)
 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-10-30 17:29                 ` Nathan Chancellor
@ 2025-10-30 20:16                   ` Christian Brauner
  2025-10-31  1:34                     ` Nathan Chancellor
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-10-30 20:16 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 02:38:50PM +0100, Ard Biesheuvel wrote:
> > On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
> > >
> > > On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > > > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > > > if it's small enough or just want to give me a stable branch I can pull
> > > > > I'll be content. Thanks!
> > > >
> > > > I do not care either way but I created a shared branch/tag since it was
> > > > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > > > fine with that as well.
> > > >
> > > > Cheers,
> > > > Nathan
> > > >
> > > > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> > > >
> > > >   Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> > > >
> > > > are available in the Git repository at:
> > > >
> > > >   git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
> > >
> > > Thanks, I pulled this and placed it into a branch that I can base other
> > > branches on.
> > >
> > > _But_, I'm already running into problems. :)
> > >
> > ...
> > >
> > > Because struct cgroup_namespace embeddds struct ns_common and it
> > > proliferates via mm stuff into the efi code.
> > >
> > > So the EFI cod has it's own KBUILD_CFLAGS. It does:
> > >
> > > # non-x86 reuses KBUILD_CFLAGS, x86 does not
> > > cflags-y                        := $(KBUILD_CFLAGS)
> > >
> > > <snip>
> > >
> > > KBUILD_CFLAGS                   := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > >                                    -Os -DDISABLE_BRANCH_PROFILING \
> > >                                    -include $(srctree)/include/linux/hidden.h \
> > >                                    -D__NO_FORTIFY \
> > >                                    -ffreestanding \
> > >                                    -fno-stack-protector \
> > >                                    $(call cc-option,-fno-addrsig) \
> > >                                    -D__DISABLE_EXPORTS
> > >
> > > which means x86 doesn't get -fms-extension breaking the build. If I
> > > manually insert:
> > >
> > > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > > index 94b05e4451dd..4ad2f8f42134 100644
> > > --- a/drivers/firmware/efi/libstub/Makefile
> > > +++ b/drivers/firmware/efi/libstub/Makefile
> > > @@ -42,6 +42,8 @@ KBUILD_CFLAGS                 := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > >                                    -ffreestanding \
> > >                                    -fno-stack-protector \
> > >                                    $(call cc-option,-fno-addrsig) \
> > > +                                  -fms-extensions \
> > > +                                  -Wno-microsoft-anon-tag \
> > >                                    -D__DISABLE_EXPORTS
> > >
> > > The build works...
> > >
> > > I think we need to decide how to fix this now because as soon as someone
> > > makes use of the extension that is indirectly included by that libstub
> > > thing we're fscked.
> > 
> > Unless anyone is feeling brave and wants to untangle the x86 command
> > line delta between the stub and core kernel, I suggest we just add
> > these flags just like you proposed (assuming all supported compilers
> > tolerate their presence)
> 
> There are several other places in the kernel that blow away
> KBUILD_CFLAGS like this that will need the same fix (I went off of
> searching for -std=gnu11, as that was needed in many places to fix GCC
> 15). It is possible that we might want to take the opportunity to unify
> these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> just bothered with adding the flags in the existing places.

That should hopefully do it. Can you update the shared branch with that
and then tell me when I can repull?

> 
> diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
> index ffa3536581f6..9d0efed91414 100644
> --- a/arch/arm64/kernel/vdso32/Makefile
> +++ b/arch/arm64/kernel/vdso32/Makefile
> @@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
>                 $(filter -Werror,$(KBUILD_CPPFLAGS)) \
>                 -Werror-implicit-function-declaration \
>                 -Wno-format-security \
> -               -std=gnu11
> +               -std=gnu11 -fms-extensions
>  VDSO_CFLAGS  += -O2
>  # Some useful compiler-dependent flags from top-level Makefile
>  VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
> @@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
>  VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
>  VDSO_CFLAGS += -Werror=date-time
>  VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
> +VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
>  
>  # Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
>  # unreliable.
> diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
> index d8316f993482..c0cc3ca5da9f 100644
> --- a/arch/loongarch/vdso/Makefile
> +++ b/arch/loongarch/vdso/Makefile
> @@ -19,7 +19,7 @@ ccflags-vdso := \
>  cflags-vdso := $(ccflags-vdso) \
>  	-isystem $(shell $(CC) -print-file-name=include) \
>  	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
> -	-std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> +	-std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
>  	-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
>  	$(call cc-option, -fno-asynchronous-unwind-tables) \
>  	$(call cc-option, -fno-stack-protector)
> diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
> index 17c42d718eb3..f8481e4e9d21 100644
> --- a/arch/parisc/boot/compressed/Makefile
> +++ b/arch/parisc/boot/compressed/Makefile
> @@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
>  ifndef CONFIG_64BIT
>  KBUILD_CFLAGS += -mfast-indirect-calls
>  endif
> -KBUILD_CFLAGS += -std=gnu11
> +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
>  
>  LDFLAGS_vmlinux := -X -e startup --as-needed -T
>  $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index c47b78c1d3e7..f1a4761ebd44 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -70,7 +70,7 @@ BOOTCPPFLAGS	:= -nostdinc $(LINUXINCLUDE)
>  BOOTCPPFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)
>  
>  BOOTCFLAGS	:= $(BOOTTARGETFLAGS) \
> -		   -std=gnu11 \
> +		   -std=gnu11 -fms-extensions \
>  		   -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
>  		   -fno-strict-aliasing -O2 \
>  		   -msoft-float -mno-altivec -mno-vsx \
> @@ -86,6 +86,7 @@ BOOTARFLAGS	:= -crD
>  
>  ifdef CONFIG_CC_IS_CLANG
>  BOOTCFLAGS += $(CLANG_FLAGS)
> +BOOTCFLAGS += -Wno-microsoft-anon-tag
>  BOOTAFLAGS += $(CLANG_FLAGS)
>  endif
>  
> diff --git a/arch/s390/Makefile b/arch/s390/Makefile
> index b4769241332b..8578361133a4 100644
> --- a/arch/s390/Makefile
> +++ b/arch/s390/Makefile
> @@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
>  ifndef CONFIG_AS_IS_LLVM
>  KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
>  endif
> -KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
> +KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
>  KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
>  KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
>  KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
> @@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
>  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
>  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
>  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
> +KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
>  
>  UTS_MACHINE	:= s390x
>  STACK_SIZE	:= $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
> diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
> index bd39b36e7bd6..0c196a5b194a 100644
> --- a/arch/s390/purgatory/Makefile
> +++ b/arch/s390/purgatory/Makefile
> @@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
>  $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
>  	$(call if_changed_rule,as_o_S)
>  
> -KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
> +KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
>  KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
>  KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
>  KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
> @@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
>  KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
>  KBUILD_CFLAGS += -D__DISABLE_EXPORTS
>  KBUILD_CFLAGS += $(CLANG_FLAGS)
> +KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
>  KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
>  KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
>  KBUILD_AFLAGS += -D__DISABLE_EXPORTS
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 4db7e4bf69f5..e20e25b8b16c 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -48,7 +48,8 @@ endif
>  
>  # How to compile the 16-bit code.  Note we always compile for -march=i386;
>  # that way we can complain to the user if the CPU is insufficient.
> -REALMODE_CFLAGS	:= -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> +REALMODE_CFLAGS	:= -std=gnu11 -fms-extensions -m16 -g -Os \
> +		   -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
>  		   -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
>  		   -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
>  		   -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
> @@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
>  REALMODE_CFLAGS += $(CLANG_FLAGS)
>  ifdef CONFIG_CC_IS_CLANG
>  REALMODE_CFLAGS += -Wno-gnu
> +REALMODE_CFLAGS += -Wno-microsoft-anon-tag
>  endif
>  export REALMODE_CFLAGS
>  
> diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
> index 74657589264d..68f9d7a1683b 100644
> --- a/arch/x86/boot/compressed/Makefile
> +++ b/arch/x86/boot/compressed/Makefile
> @@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
>  # avoid errors with '-march=i386', and future flags may depend on the target to
>  # be valid.
>  KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
> -KBUILD_CFLAGS += -std=gnu11
> +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
>  KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
>  KBUILD_CFLAGS += -Wundef
>  KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> @@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
>  KBUILD_CFLAGS += -ffreestanding -fshort-wchar
>  KBUILD_CFLAGS += -fno-stack-protector
>  KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
> -KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
> +ifdef CONFIG_CC_IS_CLANG
> +KBUILD_CFLAGS += -Wno-gnu
> +KBUILD_CFLAGS += -Wno-microsoft-anon-tag
> +endif
>  KBUILD_CFLAGS += -Wno-pointer-sign
>  KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
>  KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> index 94b05e4451dd..7d15a85d579f 100644
> --- a/drivers/firmware/efi/libstub/Makefile
> +++ b/drivers/firmware/efi/libstub/Makefile
> @@ -11,12 +11,12 @@ cflags-y			:= $(KBUILD_CFLAGS)
>  
>  cflags-$(CONFIG_X86_32)		:= -march=i386
>  cflags-$(CONFIG_X86_64)		:= -mcmodel=small
> -cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 \
> +cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
>  				   -fPIC -fno-strict-aliasing -mno-red-zone \
>  				   -mno-mmx -mno-sse -fshort-wchar \
>  				   -Wno-pointer-sign \
>  				   $(call cc-disable-warning, address-of-packed-member) \
> -				   $(call cc-disable-warning, gnu) \
> +				   $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
>  				   -fno-asynchronous-unwind-tables \
>  				   $(CLANG_FLAGS)
>  

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-10-30 20:16                   ` Christian Brauner
@ 2025-10-31  1:34                     ` Nathan Chancellor
  2025-11-01 13:10                       ` Christian Brauner
  0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-10-31  1:34 UTC (permalink / raw)
  To: Christian Brauner
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Thu, Oct 30, 2025 at 09:16:02PM +0100, Christian Brauner wrote:
> On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> > There are several other places in the kernel that blow away
> > KBUILD_CFLAGS like this that will need the same fix (I went off of
> > searching for -std=gnu11, as that was needed in many places to fix GCC
> > 15). It is possible that we might want to take the opportunity to unify
> > these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> > just bothered with adding the flags in the existing places.
> 
> That should hopefully do it. Can you update the shared branch with that
> and then tell me when I can repull?

I have applied this as commit e066b73bd881 ("kbuild: Add
'-fms-extensions' to areas with dedicated CFLAGS") in the
kbuild-ms-extensions branch. I may solicit acks from architecture
maintainers but I would like to make sure there are no other surprises
before then.

> > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
> > index ffa3536581f6..9d0efed91414 100644
> > --- a/arch/arm64/kernel/vdso32/Makefile
> > +++ b/arch/arm64/kernel/vdso32/Makefile
> > @@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> >                 $(filter -Werror,$(KBUILD_CPPFLAGS)) \
> >                 -Werror-implicit-function-declaration \
> >                 -Wno-format-security \
> > -               -std=gnu11
> > +               -std=gnu11 -fms-extensions
> >  VDSO_CFLAGS  += -O2
> >  # Some useful compiler-dependent flags from top-level Makefile
> >  VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
> > @@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
> >  VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
> >  VDSO_CFLAGS += -Werror=date-time
> >  VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
> > +VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> >  
> >  # Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
> >  # unreliable.
> > diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
> > index d8316f993482..c0cc3ca5da9f 100644
> > --- a/arch/loongarch/vdso/Makefile
> > +++ b/arch/loongarch/vdso/Makefile
> > @@ -19,7 +19,7 @@ ccflags-vdso := \
> >  cflags-vdso := $(ccflags-vdso) \
> >  	-isystem $(shell $(CC) -print-file-name=include) \
> >  	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
> > -	-std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> > +	-std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> >  	-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
> >  	$(call cc-option, -fno-asynchronous-unwind-tables) \
> >  	$(call cc-option, -fno-stack-protector)
> > diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
> > index 17c42d718eb3..f8481e4e9d21 100644
> > --- a/arch/parisc/boot/compressed/Makefile
> > +++ b/arch/parisc/boot/compressed/Makefile
> > @@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
> >  ifndef CONFIG_64BIT
> >  KBUILD_CFLAGS += -mfast-indirect-calls
> >  endif
> > -KBUILD_CFLAGS += -std=gnu11
> > +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
> >  
> >  LDFLAGS_vmlinux := -X -e startup --as-needed -T
> >  $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
> > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> > index c47b78c1d3e7..f1a4761ebd44 100644
> > --- a/arch/powerpc/boot/Makefile
> > +++ b/arch/powerpc/boot/Makefile
> > @@ -70,7 +70,7 @@ BOOTCPPFLAGS	:= -nostdinc $(LINUXINCLUDE)
> >  BOOTCPPFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)
> >  
> >  BOOTCFLAGS	:= $(BOOTTARGETFLAGS) \
> > -		   -std=gnu11 \
> > +		   -std=gnu11 -fms-extensions \
> >  		   -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> >  		   -fno-strict-aliasing -O2 \
> >  		   -msoft-float -mno-altivec -mno-vsx \
> > @@ -86,6 +86,7 @@ BOOTARFLAGS	:= -crD
> >  
> >  ifdef CONFIG_CC_IS_CLANG
> >  BOOTCFLAGS += $(CLANG_FLAGS)
> > +BOOTCFLAGS += -Wno-microsoft-anon-tag
> >  BOOTAFLAGS += $(CLANG_FLAGS)
> >  endif
> >  
> > diff --git a/arch/s390/Makefile b/arch/s390/Makefile
> > index b4769241332b..8578361133a4 100644
> > --- a/arch/s390/Makefile
> > +++ b/arch/s390/Makefile
> > @@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
> >  ifndef CONFIG_AS_IS_LLVM
> >  KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
> >  endif
> > -KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
> > +KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
> >  KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
> >  KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
> >  KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
> > @@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
> >  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
> >  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
> >  KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
> > +KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> >  
> >  UTS_MACHINE	:= s390x
> >  STACK_SIZE	:= $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
> > diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
> > index bd39b36e7bd6..0c196a5b194a 100644
> > --- a/arch/s390/purgatory/Makefile
> > +++ b/arch/s390/purgatory/Makefile
> > @@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
> >  $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
> >  	$(call if_changed_rule,as_o_S)
> >  
> > -KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
> > +KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
> >  KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
> >  KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
> >  KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
> > @@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
> >  KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> >  KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> >  KBUILD_CFLAGS += $(CLANG_FLAGS)
> > +KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> >  KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
> >  KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
> >  KBUILD_AFLAGS += -D__DISABLE_EXPORTS
> > diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> > index 4db7e4bf69f5..e20e25b8b16c 100644
> > --- a/arch/x86/Makefile
> > +++ b/arch/x86/Makefile
> > @@ -48,7 +48,8 @@ endif
> >  
> >  # How to compile the 16-bit code.  Note we always compile for -march=i386;
> >  # that way we can complain to the user if the CPU is insufficient.
> > -REALMODE_CFLAGS	:= -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> > +REALMODE_CFLAGS	:= -std=gnu11 -fms-extensions -m16 -g -Os \
> > +		   -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> >  		   -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
> >  		   -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
> >  		   -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
> > @@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
> >  REALMODE_CFLAGS += $(CLANG_FLAGS)
> >  ifdef CONFIG_CC_IS_CLANG
> >  REALMODE_CFLAGS += -Wno-gnu
> > +REALMODE_CFLAGS += -Wno-microsoft-anon-tag
> >  endif
> >  export REALMODE_CFLAGS
> >  
> > diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
> > index 74657589264d..68f9d7a1683b 100644
> > --- a/arch/x86/boot/compressed/Makefile
> > +++ b/arch/x86/boot/compressed/Makefile
> > @@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
> >  # avoid errors with '-march=i386', and future flags may depend on the target to
> >  # be valid.
> >  KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
> > -KBUILD_CFLAGS += -std=gnu11
> > +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
> >  KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
> >  KBUILD_CFLAGS += -Wundef
> >  KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> > @@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
> >  KBUILD_CFLAGS += -ffreestanding -fshort-wchar
> >  KBUILD_CFLAGS += -fno-stack-protector
> >  KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
> > -KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
> > +ifdef CONFIG_CC_IS_CLANG
> > +KBUILD_CFLAGS += -Wno-gnu
> > +KBUILD_CFLAGS += -Wno-microsoft-anon-tag
> > +endif
> >  KBUILD_CFLAGS += -Wno-pointer-sign
> >  KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> >  KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > index 94b05e4451dd..7d15a85d579f 100644
> > --- a/drivers/firmware/efi/libstub/Makefile
> > +++ b/drivers/firmware/efi/libstub/Makefile
> > @@ -11,12 +11,12 @@ cflags-y			:= $(KBUILD_CFLAGS)
> >  
> >  cflags-$(CONFIG_X86_32)		:= -march=i386
> >  cflags-$(CONFIG_X86_64)		:= -mcmodel=small
> > -cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 \
> > +cflags-$(CONFIG_X86)		+= -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
> >  				   -fPIC -fno-strict-aliasing -mno-red-zone \
> >  				   -mno-mmx -mno-sse -fshort-wchar \
> >  				   -Wno-pointer-sign \
> >  				   $(call cc-disable-warning, address-of-packed-member) \
> > -				   $(call cc-disable-warning, gnu) \
> > +				   $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
> >  				   -fno-asynchronous-unwind-tables \
> >  				   $(CLANG_FLAGS)
> >  

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-10-31  1:34                     ` Nathan Chancellor
@ 2025-11-01 13:10                       ` Christian Brauner
  2025-11-01 16:38                         ` Nathan Chancellor
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-11-01 13:10 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Thu, Oct 30, 2025 at 09:34:57PM -0400, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 09:16:02PM +0100, Christian Brauner wrote:
> > On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> > > There are several other places in the kernel that blow away
> > > KBUILD_CFLAGS like this that will need the same fix (I went off of
> > > searching for -std=gnu11, as that was needed in many places to fix GCC
> > > 15). It is possible that we might want to take the opportunity to unify
> > > these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> > > just bothered with adding the flags in the existing places.
> > 
> > That should hopefully do it. Can you update the shared branch with that
> > and then tell me when I can repull?
> 
> I have applied this as commit e066b73bd881 ("kbuild: Add
> '-fms-extensions' to areas with dedicated CFLAGS") in the
> kbuild-ms-extensions branch. I may solicit acks from architecture
> maintainers but I would like to make sure there are no other surprises
> before then.

I'd like a stable branch before -rc5, please.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-11-01 13:10                       ` Christian Brauner
@ 2025-11-01 16:38                         ` Nathan Chancellor
  2025-11-06 22:09                           ` Christian Brauner
  0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-11-01 16:38 UTC (permalink / raw)
  To: Christian Brauner
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> I'd like a stable branch before -rc5, please.

Sure thing. I have sent the change out for Acks now:

  https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/

I will finalize the branch by Thursday at the latest and ping you when
it is ready.

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-11-01 16:38                         ` Nathan Chancellor
@ 2025-11-06 22:09                           ` Christian Brauner
  2025-11-06 23:20                             ` Nathan Chancellor
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-11-06 22:09 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

On Sat, Nov 01, 2025 at 12:38:28PM -0400, Nathan Chancellor wrote:
> On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> > I'd like a stable branch before -rc5, please.
> 
> Sure thing. I have sent the change out for Acks now:
> 
>   https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/
> 
> I will finalize the branch by Thursday at the latest and ping you when
> it is ready.

Hey Nathan!

Any status update on this?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
  2025-11-06 22:09                           ` Christian Brauner
@ 2025-11-06 23:20                             ` Nathan Chancellor
  0 siblings, 0 replies; 9+ messages in thread
From: Nathan Chancellor @ 2025-11-06 23:20 UTC (permalink / raw)
  To: Christian Brauner
  Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
	Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
	David Sterba

Hey Christian,

On Thu, Nov 06, 2025 at 11:09:25PM +0100, Christian Brauner wrote:
> On Sat, Nov 01, 2025 at 12:38:28PM -0400, Nathan Chancellor wrote:
> > On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> > > I'd like a stable branch before -rc5, please.
> > 
> > Sure thing. I have sent the change out for Acks now:
> > 
> >   https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/
> > 
> > I will finalize the branch by Thursday at the latest and ping you when
> > it is ready.
> 
> Any status update on this?

Did https://lore.kernel.org/20251106174752.GA2440428@ax162/ not make it
into your inbox?

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-11-06 23:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20251023082142.2104456-1-linux@rasmusvillemoes.dk>
     [not found] ` <20251029-redezeit-reitz-1fa3f3b4e171@brauner>
     [not found]   ` <20251029173828.GA1669504@ax162>
     [not found]     ` <20251029-wobei-rezept-bd53e76bb05b@brauner>
     [not found]       ` <CAHk-=wjGcos7LACF0J40x-Dwf4beOYj+mhptD+xcLte1RG91Ug@mail.gmail.com>
     [not found]         ` <20251030-zuruf-linken-d20795719609@brauner>
     [not found]           ` <20251029233057.GA3441561@ax162>
2025-10-30 13:23             ` fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration) Christian Brauner
2025-10-30 13:38               ` Ard Biesheuvel
2025-10-30 17:29                 ` Nathan Chancellor
2025-10-30 20:16                   ` Christian Brauner
2025-10-31  1:34                     ` Nathan Chancellor
2025-11-01 13:10                       ` Christian Brauner
2025-11-01 16:38                         ` Nathan Chancellor
2025-11-06 22:09                           ` Christian Brauner
2025-11-06 23:20                             ` Nathan Chancellor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox