All of lore.kernel.org
 help / color / mirror / Atom feed
From: Akira Yokosawa <akiyks@gmail.com>
To: Kees Cook <keescook@chromium.org>
Cc: corbet@lwn.net, linux-doc@vger.kernel.org,
	linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org,
	mchehab@kernel.org, Akira Yokosawa <akiyks@gmail.com>
Subject: Re: [RFC] docs: Define c_paren_attributes for attributes with arguments
Date: Fri, 9 Sep 2022 14:08:30 +0900	[thread overview]
Message-ID: <d1af650a-1e0b-a650-4cda-57fb1d54f1af@gmail.com> (raw)
In-Reply-To: <20220902223507.2537469-1-keescook@chromium.org>

Hi Kees,

I expected some responses from Jon, but looks like he's been busy
elsewhere. Let me chime in.

On Fri,  2 Sep 2022 15:35:07 -0700, Kees Cook wrote:
> While Sphinx's "c_id_attributes" is needed for basic attributes, any
> attributes with arguments need to be defined in "c_paren_attributes"
> to avoid errors like:
> 
> include/linux/fortify-string.h:116: warning: Function parameter or member '__builtin_strncpy' not described in '__diagnose_as'
> include/linux/fortify-string.h:116: warning: Function parameter or member '1' not described in '__diagnose_as'
> include/linux/fortify-string.h:116: warning: Function parameter or member '2' not described in '__diagnose_as'
> include/linux/fortify-string.h:116: warning: Function parameter or member '3' not described in '__diagnose_as'

These warnings are from ./scripts/kernel-doc.
So I think you need to teach the script about "__diagnose_as" so that
the kernel-doc comment of strncpy() can be converted to reST doc
which Sphinx can understand.

Past changes in ./scripts/kernel-doc might give you some hints.

That said, I think Jon should be able to provide a pin-point suggestion.

HTH,

        Thanks, akira

> 
> Move such attributes to "c_paren_attributes" and add __alloc_size
> and __diagnose_as to the list.> 
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: linux-doc@vger.kernel.org
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---
> This patch is a lie (the above warning is actually not fixed), but I
> was hoping someone could help with this. The Sphinx documentation says:> 
> c_paren_attributes
>   A list of strings that the parser additionally should accept as
>   attributes with one argument. That is, if my_align_as is in the list,
>   then my_align_as(X) is parsed as an attribute for all strings X that
>   have balanced braces ((), [], and {}). This can for example be used
>   when attributes have been #define d for portability.
> 
> However, this appears to only work for attributes with literally a single
> argument not "all strings X", so things like __printf and __diagnose_as
> don't work.
> 
> Does this need fixing in Sphinx? Or am I missing something?
> ---
>  Documentation/conf.py | 20 +++++++++++++++-----
>  1 file changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/conf.py b/Documentation/conf.py
> index 934727e23e0e..17f996e3709f 100644
> --- a/Documentation/conf.py
> +++ b/Documentation/conf.py
> @@ -59,18 +59,14 @@ if major >= 3:
>  
>              # include/linux/compiler_attributes.h:
>              "__alias",
> -            "__aligned",
>              "__aligned_largest",
>              "__always_inline",
> -            "__assume_aligned",
>              "__cold",
>              "__attribute_const__",
>              "__copy",
>              "__pure",
>              "__designated_init",
>              "__visible",
> -            "__printf",
> -            "__scanf",
>              "__gnu_inline",
>              "__malloc",
>              "__mode",
> @@ -80,7 +76,6 @@ if major >= 3:
>              "__noreturn",
>              "__packed",
>              "__pure",
> -            "__section",
>              "__always_unused",
>              "__maybe_unused",
>              "__used",
> @@ -97,6 +92,21 @@ if major >= 3:
>  
>              # include/linux/linkage.h:
>              "asmlinkage",
> +
> +            # include/linux/fortify-string.h:
> +            "__FORTIFY_INLINE",
> +        ]
> +
> +        # Same as c_id_attributes above, but for those with arguments.
> +        c_paren_attributes = [
> +            # include/linux/compiler_attributes.h:
> +            "__aligned",
> +            "__alloc_size",
> +            "__assume_aligned",
> +            "__diagnose_as",
> +            "__printf",
> +            "__scanf",
> +            "__section",
>          ]
>  
>  else:
> -- 
> 2.34.1

  reply	other threads:[~2022-09-09  5:08 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 22:35 [RFC] docs: Define c_paren_attributes for attributes with arguments Kees Cook
2022-09-09  5:08 ` Akira Yokosawa [this message]
2022-09-22  5:30   ` Kees Cook
2022-09-21 21:00 ` Jonathan Corbet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d1af650a-1e0b-a650-4cda-57fb1d54f1af@gmail.com \
    --to=akiyks@gmail.com \
    --cc=corbet@lwn.net \
    --cc=keescook@chromium.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.