rust: error: Add a helper to convert a C ERR_PTR to a `Result`
authorSven Van Asbroeck <thesven73@gmail.com>
Mon, 3 Apr 2023 09:48:14 +0000 (18:48 +0900)
committerMiguel Ojeda <ojeda@kernel.org>
Wed, 12 Apr 2023 16:41:04 +0000 (18:41 +0200)
commit752417b3f0e7721f1d630f40da22d57e0dae043e
tree5baa8b2da6389cb02f89b4e58ac3957c8f9b0274
parent086fbfa3b328901fa8b369093ba468864e20544e
rust: error: Add a helper to convert a C ERR_PTR to a `Result`

Some kernel C API functions return a pointer which embeds an optional
`errno`. Callers are supposed to check the returned pointer with
`IS_ERR()` and if this returns `true`, retrieve the `errno` using
`PTR_ERR()`.

Create a Rust helper function to implement the Rust equivalent:
transform a `*mut T` to `Result<*mut T>`.

Lina: Imported from rust-for-linux/linux, with subsequent refactoring
and contributions squashed in and attributed below. Renamed the function
to from_err_ptr().

Co-developed-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Co-developed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Co-developed-by: Fox Chen <foxhlchen@gmail.com>
Signed-off-by: Fox Chen <foxhlchen@gmail.com>
Co-developed-by: Gary Guo <gary@garyguo.net>
Signed-off-by: Gary Guo <gary@garyguo.net>
Signed-off-by: Sven Van Asbroeck <thesven73@gmail.com>
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Signed-off-by: Asahi Lina <lina@asahilina.net>
Link: https://lore.kernel.org/r/20230224-rust-error-v3-5-03779bddc02b@asahilina.net
[ Add a removal of `#[allow(dead_code)]`. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/helpers.c
rust/kernel/error.rs