All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rasmus Villemoes <ravi@prevas.dk>
To: Konstantin Andrikopoulos <kernel@mandragore.io>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v2] rust: add safety comment in rust_fmt_argument
Date: Thu, 21 Nov 2024 10:42:23 +0100	[thread overview]
Message-ID: <87ed34ly80.fsf@prevas.dk> (raw)
In-Reply-To: <20241118031225.38080-1-kernel@mandragore.io> (Konstantin Andrikopoulos's message of "Mon, 18 Nov 2024 03:14:17 +0000")

On Mon, Nov 18 2024, Konstantin Andrikopoulos <kernel@mandragore.io> wrote:

> The function rust_fmt_argument dereferences a pointer, and thus it
> needs an unsafe block. The safety comment for that block was missing.
>
>  
> -// Called from `vsprintf` with format specifier `%pA`.
> -#[expect(clippy::missing_safety_doc)]
> +/// Handles the `%pA` format specifier.
> +///
> +/// This function is called by [`vsprintf`] when it encounters a
> `%pA` format specifier in a

Nit: The file implementing this is vsprintf.c, but the actual workhorse
is vsnprintf() (note the n); all other *printf() variants are wrappers
around that, and I'm pretty sure no code path called from Rust ends up
passing through sprintf() or vsprintf(). Yes, I see that the original
code said vsprintf, but please fix while here.

> +/// format string. `ptr` points to the corresponding argument, `buf` points to a buffer to hold
> +/// the formatted argument, and `end` points at the buffer's end.
> +///
> +/// `rust_fmt_argument` treats `ptr` as a pointer to a [`core::fmt::Arguments`], which it formats,
> +/// and writes the result to `buf`.
> +///
> +/// It returns the address after the last byte it has written in `buf`.
> +///
> +/// # Safety
> +///
> +/// `buf` and `end` must follow the requirements of [`RawFormatter`]. `ptr` must be valid for
> +/// reading a [`core::fmt::Arguments`].
> +///
> +/// `vsprintf` guarantees that `buf` and `end` will uphold their
> requirements. However, it will

Same here.

> +/// just forward the argument that corresponds to `%pA`. Callers that provide format strings must
> +/// guarantee that arguments which correspond to `%pA` are valid pointers.
> +///
> +/// [`vsprintf`]: srctree/lib/vsprintf.c

Same here (the filename is correct).

Rasmus

  parent reply	other threads:[~2024-11-21  9:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-18  3:14 [PATCH v2] rust: add safety comment in rust_fmt_argument Konstantin Andrikopoulos
2024-11-19 19:41 ` Alice Ryhl
2024-11-21  9:42 ` Rasmus Villemoes [this message]
2024-11-23 21:56   ` Konstantin Andrikopoulos
2024-11-26  9:07     ` Rasmus Villemoes
2024-12-01 15:37       ` Miguel Ojeda

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=87ed34ly80.fsf@prevas.dk \
    --to=ravi@prevas.dk \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=gary@garyguo.net \
    --cc=kernel@mandragore.io \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    /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.