On Tue, Mar 1, 2022 at 11:52 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > > From: Mark Rutland <mark.rutland@xxxxxxx> > > In a subsequent patch we'll move the kernel from using `-std=gnu89` to Precisely speaking, "In a subsequent patch we'll move the userspace tools ..." The kernel part was done by 1/3. > `-std=gnu11`, permitting the use of additional C11 features such as > for-loop initial declarations. > > One contentious aspect of C99 is that it permits mixed declarations and > code, and for now at least, it seems preferable to enforce that > declarations must come first. > > These warnings were already disabled in the kernel itself, but not Is this the opposite? "These warnings were already _enabled_ in the kernel itself, ..." If you have a chance to resend this, can you please rebase on top of kbuild/for-next? This is not applicable due to the conflict with: https://patchwork.kernel.org/project/linux-kbuild/patch/20220201213542.2808035-1-quic_eberman@xxxxxxxxxxx/ > for KBUILD_USERCFLAGS or the compat VDSO on arch/arm64, which uses > a separate set of CFLAGS. > > This patch fixes an existing violation in modpost.c, which is not > reported because of the missing flag in KBUILD_USERCFLAGS: > > | scripts/mod/modpost.c: In function ‘match’: > | scripts/mod/modpost.c:837:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] > | 837 | const char *endp = p + strlen(p) - 1; > | | ^~~~~ > > Signed-off-by: Mark Rutland <mark.rutland@xxxxxxx> > [arnd: don't add a duplicate flag to the default set, update changelog] > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > Makefile | 3 ++- > arch/arm64/kernel/vdso32/Makefile | 1 + > scripts/mod/modpost.c | 4 +++- > 3 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index 94fa9a849a7a..37ef6a555dcd 100644 > --- a/Makefile > +++ b/Makefile > @@ -432,7 +432,8 @@ HOSTCXX = g++ > endif > > export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \ > - -O2 -fomit-frame-pointer -std=gnu89 > + -O2 -fomit-frame-pointer -std=gnu89 \ > + -Wdeclaration-after-statement > export KBUILD_USERLDFLAGS := > > KBUILD_HOSTCFLAGS := $(KBUILD_USERCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS) > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile > index 9378ea055bf2..ed181bedbffc 100644 > --- a/arch/arm64/kernel/vdso32/Makefile > +++ b/arch/arm64/kernel/vdso32/Makefile > @@ -68,6 +68,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ > -fno-strict-aliasing -fno-common \ > -Werror-implicit-function-declaration \ > -Wno-format-security \ > + -Wdeclaration-after-statement \ > -std=gnu11 > VDSO_CFLAGS += -O2 > # Some useful compiler-dependent flags from top-level Makefile > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c > index 6bfa33217914..fe693304b120 100644 > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -833,8 +833,10 @@ static int match(const char *sym, const char * const pat[]) > { > const char *p; > while (*pat) { > + const char *endp; > + > p = *pat++; > - const char *endp = p + strlen(p) - 1; > + endp = p + strlen(p) - 1; > > /* "*foo*" */ > if (*p == '*' && *endp == '*') { > -- > 2.29.2 > -- Best Regards Masahiro Yamada