Re: [PATCH v4] rust: str: add {make,to}_{upper,lower}case() to CString

From: Alice Ryhl
Date: Tue Feb 20 2024 - 04:36:00 EST


> Add functions to convert a CString to upper- / lowercase, either
> in-place or by creating a copy of the original CString.
>
> Naming followes the one from the Rust stdlib, where functions starting
> with 'to' create a copy and functions starting with 'make' perform an
> in-place conversion.
>
> This is required by the Nova project (GSP only Rust successor of
> Nouveau) to convert stringified enum values (representing different GPU
> chipsets) to strings in order to generate the corresponding firmware
> paths. See also [1].
>
> [1] https://rust-for-linux.zulipchat.com/#narrow/stream/288089-General/topic/String.20manipulation.20in.20kernel.20Rust
>
> Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>

This looks good to me, so you may add my

Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>

However, it looks like this patch has some clippy warnings that need to
be fixed before it can be merged.

$ make LLVM=1 CLIPPY=1
error: unneeded `return` statement
--> rust/kernel/str.rs:267:9
|
267 | return Ok(s);
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
= note: `-D clippy::needless-return` implied by `-D clippy::style`
= help: to override `-D clippy::style` add `#[allow(clippy::needless_return)]`
help: remove `return`
|
267 - return Ok(s);
267 + Ok(s)
|

error: unneeded `return` statement
--> rust/kernel/str.rs:284:9
|
284 | return Ok(s);
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
284 - return Ok(s);
284 + Ok(s)
|

error: deref which would be done by auto-deref
--> rust/kernel/str.rs:677:58
|
677 | unsafe { CStr::from_bytes_with_nul_unchecked_mut(&mut *self.buf) }
| ^^^^^^^^^^^^^^ help: try: `&mut self.buf`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref
= note: `-D clippy::explicit-auto-deref` implied by `-D clippy::complexity`
= help: to override `-D clippy::complexity` add `#[allow(clippy::explicit_auto_deref)]`

error: aborting due to 3 previous errors

Alice