Hi, On Mon, Oct 30, 2023 at 09:02:32AM +0900, Akira Yokosawa wrote: > Hi, > > On Date: Sun, 29 Oct 2023 12:06:58 -0600, Jonathan Corbet wrote: > > Swarup Laxman Kotiaklapudi <swarupkotikalapudi@xxxxxxxxx> writes: > > > >> make htmldocs has below warnings: > >> > >> .. > >> Variable length lookbehind is experimental in regex; > >> marked by <-- HERE in m/(?<=^|\s)-Werror(?=$|\s) > >> <-- HERE / at ./scripts/kernel-doc line 188. > >> ... > > > > So how do you get this warning? I've not seen it. Which version of > > Perl? > > I get this warning on Ubuntu 22.04LTS, whose perl is v5.34.0. > > Swarup's change silences the warning there. > > I could provide a tested-by: tag if I was familiar with that > "variable length lookbehind" thing ... > > Thanks, Akira > > > > >> "-Werror" option in make command, > >> needs "-Werror" to have space before > >> and after while running make command, > >> hence space checking is sepratly done, > >> and is not part of lookbehind regular expression. Thanks a lot for the input, but I'm afraid that "have space before and after -Werror" is not very general use case. For example, the following command only has "-Werror" in KCFLAGS env variable, no space before or after it. The purpose of this command is to turn all warnings into errors, including kernel-doc ones, but after applying your fix patch, the kernel-doc warnings are not considered as errors: $ make W=1 KCFLAGS="-Werror" kernel/fork.o ... CC kernel/fork.o kernel/fork.c:1405: warning: Function parameter or member 'mm' not described in 'set_mm_exe_file' kernel/fork.c:1405: warning: Function parameter or member 'new_exe_file' not described in 'set_mm_exe_file' kernel/fork.c:1442: warning: Function parameter or member 'mm' not described in 'replace_mm_exe_file' kernel/fork.c:1442: warning: Function parameter or member 'new_exe_file' not described in 'replace_mm_exe_file' kernel/fork.c:1494: warning: Function parameter or member 'mm' not described in 'get_mm_exe_file' kernel/fork.c:1513: warning: Function parameter or member 'task' not described in 'get_task_exe_file' kernel/fork.c:1537: warning: Function parameter or member 'task' not described in 'get_task_mm' kernel/fork.c:2112: warning: bad line: kernel/fork.c:2133: warning: Function parameter or member 'ret' not described in '__pidfd_prepare' kernel/fork.c:2133: warning: Excess function parameter 'pidfd' description in '__pidfd_prepare' kernel/fork.c:2182: warning: Function parameter or member 'ret' not described in 'pidfd_prepare' kernel/fork.c:2182: warning: Excess function parameter 'pidfd' description in 'pidfd_prepare' kernel/fork.c:3198: warning: expecting prototype for clone3(). Prototype was for sys_clone3() instead $ echo $? 0 As I described in the message of commit 91f950e8b9d8, this regex should match the general case that "there needs to be a space *OR* start of string before -Werror, and a space *OR* end of string after -Werror." Please feel free to try the followinn cases to see if all of them can work as expected. MATCH means kernel-doc warnings are considered as errors, while NO MATCH means not. KCFLAGS="-Werror" make W=1 kernel/fork.o [MATCH] KCFLAGS="-Werror=return-type" make W=1 kernel/fork.o [NO MATCH] KCFLAGS="-Wcomment -Werror" make W=1 kernel/fork.o [MATCH] KCFLAGS="-Wcomment -Werror=return-type" make W=1 kernel/fork.o [NO MATCH] KCFLAGS="-Werror -Wundef" make W=1 kernel/fork.o [MATCH] KCFLAGS="-Werror=return-type -Wundef" make W=1 kernel/fork.o [NO MATCH] KCFLAGS="-Wcomment -Werror -Wundef" make W=1 kernel/fork.o [MATCH] KCFLAGS="-Wcomment -Werror=return-type -Wundef" make W=1 kernel/fork.o [NO MATCH] Best Regards, Yujie > >> > >> Below command also didn't > >> show any error: > >> make KCFLAGS="-Werror=return-type" W=1 kernel/fork.o > >> > >> Fixes: 91f950e8b9d8 ("scripts/kernel-doc: match -Werror flag strictly") > >> Signed-off-by: Swarup Laxman Kotiaklapudi <swarupkotikalapudi@xxxxxxxxx> > >> --- > >> scripts/kernel-doc | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/scripts/kernel-doc b/scripts/kernel-doc > >> index d660e1f4b483..aa9e3e198d12 100755 > >> --- a/scripts/kernel-doc > >> +++ b/scripts/kernel-doc > >> @@ -185,7 +185,7 @@ if (defined($ENV{'KBUILD_VERBOSE'}) && $ENV{'KBUILD_VERBOSE'} =~ '1') { > >> if (defined($ENV{'KCFLAGS'})) { > >> my $kcflags = "$ENV{'KCFLAGS'}"; > >> > >> - if ($kcflags =~ /(?<=^|\s)-Werror(?=$|\s)/) { > >> + if ($kcflags =~ /(?<=^|)(\s)-Werror(?=$|)(\s)/) { > >> $Werror = 1; > >> } > >> } > > > > Thanks, > > > > jon >