Re: [PATCH] string: Rewrite and add more kern-doc for the str*() functions

From: Akira Yokosawa
Date: Sat Sep 24 2022 - 03:14:08 EST


Hi Kees,
Thank you for sharing your devel branch.

On Wed, 21 Sep 2022 23:28:17 -0700, Kees Cook wrote:
> While there were varying degrees of kern-doc for various str*()-family
> functions, many needed updating and clarification, or to just be
> entirely written. Update (and relocate) existing kern-doc and add missing
> functions, sadly shaking my head at how many times I have written "Do
> not use this function". Include the results in the core kernel API doc.
>
> Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx>
> ---
> Follow up to https://lore.kernel.org/lkml/20220902223507.2537469-1-keescook@xxxxxxxxxxxx
> Note that this is on top of my recent fortify-string.h series:
> https://lore.kernel.org/lkml/20220920192202.190793-1-keescook@xxxxxxxxxxxx/
[...]
> diff --git a/scripts/kernel-doc b/scripts/kernel-doc
> index 8bb89deb9a91..adbc4d307770 100755
> --- a/scripts/kernel-doc
> +++ b/scripts/kernel-doc
> @@ -1448,6 +1448,8 @@ sub create_parameterlist($$$$) {
> foreach my $arg (split($splitter, $args)) {
> # strip comments
> $arg =~ s/\/\*.*\*\///;
> + # ignore argument attributes
> + $arg =~ s/\sPOS0?\s/ /;
> # strip leading/trailing spaces
> $arg =~ s/^\s*//;
> $arg =~ s/\s*$//;
> @@ -1657,6 +1659,7 @@ sub dump_function($$) {
> $prototype =~ s/^__inline +//;
> $prototype =~ s/^__always_inline +//;
> $prototype =~ s/^noinline +//;
> + $prototype =~ s/^__FORTIFY_INLINE +//;
> $prototype =~ s/__init +//;
> $prototype =~ s/__init_or_module +//;
> $prototype =~ s/__deprecated +//;
> @@ -1667,6 +1670,7 @@ sub dump_function($$) {
> $prototype =~ s/__sched +//;
> $prototype =~ s/__printf\s*\(\s*\d*\s*,\s*\d*\s*\) +//;
> $prototype =~ s/__(?:re)?alloc_size\s*\(\s*\d+\s*(?:,\s*\d+\s*)?\) +//;
> + $prototype =~ s/__diagnose_as\s*\(\s*\S+\s*(?:,\s*\d+\s*)*\) +//;
> my $define = $prototype =~ s/^#\s*define\s+//; #ak added
> $prototype =~ s/__attribute_const__ +//;
> $prototype =~ s/__attribute__\s*\(\(

This hunk in the corresponding commit 87cb97a66ae9 of your devel branch
looks a little different:

@@ -1666,7 +1669,8 @@ sub dump_function($$) {
$prototype =~ s/__weak +//;
$prototype =~ s/__sched +//;
$prototype =~ s/__printf\s*\(\s*\d*\s*,\s*\d*\s*\) +//;
- $prototype =~ s/__alloc_size\s*\(\s*\d+\s*(?:,\s*\d+\s*)?\) +//;
+ $prototype =~ s/__(?:re)?alloc_size\s*\(\s*\d+\s*(?:,\s*\d+\s*)?\) +//;
+ $prototype =~ s/__diagnose_as\s*\(\s*\S+\s*(?:,\s*\d+\s*)*\) +//;
my $define = $prototype =~ s/^#\s*define\s+//; #ak added
$prototype =~ s/__attribute_const__ +//;
$prototype =~ s/__attribute__\s*\(\(

This was what prevented me from applying the patch.

Anyway, "make htmldocs" works just fine now. FWIW,

Tested-by: Akira Yokosawa <akiyks@xxxxxxxxx>

Thanks, Akira