• Yujie Liu's avatar
    scripts/kernel-doc: match -Werror flag strictly · 91f950e8
    Yujie Liu authored
    In our CI testing, we use some commands as below to only turn a specific
    type of warnings into errors, but we notice that kernel-doc warnings
    are also turned into errors unexpectedly.
    
    $ make KCFLAGS="-Werror=return-type" W=1 kernel/fork.o
    
    kernel/fork.c:1406: warning: Function parameter or member 'mm' not described in 'set_mm_exe_file'
    kernel/fork.c:1406: warning: Function parameter or member 'new_exe_file' not described in 'set_mm_exe_file'
    kernel/fork.c:1441: warning: Function parameter or member 'mm' not described in 'replace_mm_exe_file'
    kernel/fork.c:1441: warning: Function parameter or member 'new_exe_file' not described in 'replace_mm_exe_file'
    kernel/fork.c:1491: warning: Function parameter or member 'mm' not described in 'get_mm_exe_file'
    kernel/fork.c:1510: warning: Function parameter or member 'task' not described in 'get_task_exe_file'
    kernel/fork.c:1534: warning: Function parameter or member 'task' not described in 'get_task_mm'
    kernel/fork.c:2109: warning: bad line:
    kernel/fork.c:2130: warning: Function parameter or member 'ret' not described in '__pidfd_prepare'
    kernel/fork.c:2130: warning: Excess function parameter 'pidfd' description in '__pidfd_prepare'
    kernel/fork.c:2179: warning: Function parameter or member 'ret' not described in 'pidfd_prepare'
    kernel/fork.c:2179: warning: Excess function parameter 'pidfd' description in 'pidfd_prepare'
    kernel/fork.c:3195: warning: expecting prototype for clone3(). Prototype was for sys_clone3() instead
    13 warnings as Errors
    make[3]: *** [scripts/Makefile.build:243: kernel/fork.o] Error 13
    make[3]: *** Deleting file 'kernel/fork.o'
    make[2]: *** [scripts/Makefile.build:480: kernel] Error 2
    make[1]: *** [/root/linux/Makefile:1913: .] Error 2
    make: *** [Makefile:234: __sub-make] Error 2
    
    >From the git history, commit 2c12c810 ("scripts/kernel-doc:
    optionally treat warnings as errors") introduces a new command-line
    option to make kernel-doc warnings into errors. It can also read the
    KCFLAGS environment variable to decide whether to turn this option on,
    but the regex used for matching may not be accurate enough. It can match
    both "-Werror" and "-Werror=<diagnostic-type>", so the option is turned
    on by mistake in the latter case.
    
    Fix this by strictly matching the flag "-Werror": there must be a space
    or start of string in the front, and a space or end of string at the
    end. This can handle all the following cases correctly:
    
    KCFLAGS="-Werror" make W=1 [MATCH]
    KCFLAGS="-Werror=return-type" make W=1 [NO MATCH]
    KCFLAGS="-Wcomment -Werror -Wundef" make W=1 [MATCH]
    KCFLAGS="-Wcomment -Werror=return-type -Wundef" make W=1 [NO MATCH]
    
    Fixes: 2c12c810 ("scripts/kernel-doc: optionally treat warnings as errors")
    Signed-off-by: default avatarYujie Liu <yujie.liu@intel.com>
    Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
    Message-ID: <20231019095637.2471840-1-yujie.liu@intel.com>
    91f950e8
kernel-doc 67.2 KB