Re: [RFC v3 07/27] rust: error: impl From<FromBytesWithNulError> for Kernel Error

From: Alistair Francis

Date: Thu Mar 12 2026 - 22:21:02 EST


On Fri, Feb 20, 2026 at 12:49 AM Gary Guo <gary@xxxxxxxxxxx> wrote:
>
> On 2026-02-11 03:29, alistair23@xxxxxxxxx wrote:
> > From: Alistair Francis <alistair.francis@xxxxxxx>
> >
> > Implement From<FromBytesWithNulError> for the Kernel Error type
> >
> > Signed-off-by: Alistair Francis <alistair.francis@xxxxxxx>
> > ---
> > rust/kernel/error.rs | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/rust/kernel/error.rs b/rust/kernel/error.rs
> > index 258b12afdcba..569d9d032ab3 100644
> > --- a/rust/kernel/error.rs
> > +++ b/rust/kernel/error.rs
> > @@ -12,6 +12,7 @@
> > str::CStr,
> > };
> >
> > +use core::ffi::FromBytesWithNulError;
> > use core::num::NonZeroI32;
> > use core::num::TryFromIntError;
> > use core::str::Utf8Error;
> > @@ -251,6 +252,12 @@ fn from(e: core::convert::Infallible) -> Error {
> > }
> > }
> >
> > +impl From<FromBytesWithNulError> for Error {
> > + fn from(_: FromBytesWithNulError) -> Error {
> > + code::EINVAL
> > + }
> > +}
>
> Are we sure that `FromBytesWithNulError` maps cleanly to the `EINVAL`
> error code?

`FromBytesWithNulError` means "An error indicating that a nul byte was
not in the expected position." [1]

To me that maps with `EINVAL`

1: https://doc.rust-lang.org/std/ffi/enum.FromBytesWithNulError.html

>
> Anyhow, please add `#[inline]` for such simple functions.

I can, just noting that none of the others have `#[inline]`

Alistair

>
> Best,
> Gary
>
> > +
> > /// A [`Result`] with an [`Error`] error type.
> > ///
> > /// To be used as the return type for functions that may fail.