Re: [PATCH] tools/testing/vma: Fix function parameter declarations for GCC 8.3 compatibility

From: WangYuli
Date: Wed Jul 30 2025 - 22:57:31 EST


Hi Lorenzo Stoakes,

On 2025/7/29 17:06, Lorenzo Stoakes wrote:
On Tue, Jul 29, 2025 at 04:47:00PM +0800, WangYuli wrote:
The Linux kernel's minimum GCC version requirement has been bumped
from 4.3 to 8.3, but this tool still fails to compile with GCC 8.3.
Why people keep reporting this for my VMA test series but _not_ the kernel
as a whole I don't know.

$ grep "\*);" include/linux/mm.h | wc -l
9

^--- If you use such a compiler, the kernel won't build.

So the bug is whoever is saying a version of gcc that does the below (I'll
take your word for it that this is in a normal configuraiton) is OK for the
kernel.

It's clearly not.

Oh just to underline things:

$ find include/linux -name '*.h' | xargs grep "\*);" | wc -l
1899

So y'know.

Older compilers would fail if did not include parameter names in
function declarations that contained parameter types; newer compilers
are more lenient about this.
You're using a compiler that won't build linux. Stop it?

Fix many errors like this:
In file included from vma.c:10:
vma_internal.h: In function ‘arch_validate_flags’:
vma_internal.h:1218:40: error: parameter name omitted
static inline bool arch_validate_flags(unsigned long)
^~~~~~~~~~~~~
vma.c: In function ‘dummy_close’:
vma.c:281:25: error: parameter name omitted
static void dummy_close(struct vm_area_struct *)
^~~~~~~~~~~~~~~~~~~~~~~

Reported-by: Jun Zhan <zhanjun@xxxxxxxxxxxxx>
Signed-off-by: WangYuli <wangyuli@xxxxxxxxxxxxx>
NAK.

Thanks for the heads-up! I noticed that coding style in the kernel code as well.

However, GCC 8.3 (which does meet the kernel's compiler version requirements) can compile the kernel code normally, but it can't compile vma's test correctly.

Could the issue be related to differences in compilation parameters? I'll need to spend some time looking into this more closely...

By the way, this coding style has been a GNU C extension until the ISO C23 standard. So, until the kernel's C language standard is upgraded to C23 (which seems unlikely to happen anytime soon, perhaps years down the line), it actually makes sense to modify this style for a practical purpose...

[ Cc the kbuild list. ]

Thanks,

--
WangYuli

Attachment: OpenPGP_0xC5DA1F3046F40BEE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature