From: Miguel Ojeda <ojeda@kernel.org>
To: Miguel Ojeda <ojeda@kernel.org>,
Wedson Almeida Filho <wedsonaf@gmail.com>,
Alex Gaynor <alex.gaynor@gmail.com>
Cc: "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@samsung.com>,
"Alice Ryhl" <aliceryhl@google.com>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
patches@lists.linux.dev
Subject: [PATCH v2 02/13] rust: init: simplify from `map_err` to `inspect_err`
Date: Tue, 9 Jul 2024 18:05:57 +0200 [thread overview]
Message-ID: <20240709160615.998336-3-ojeda@kernel.org> (raw)
In-Reply-To: <20240709160615.998336-1-ojeda@kernel.org>
A new complexity lint, `manual_inspect` [1], has been introduced in
the upcoming Rust 1.81 (currently in nightly), which checks for uses of
`map*` which return the original item:
error:
--> rust/kernel/init.rs:846:23
|
846 | (self.1)(val).map_err(|e| {
| ^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect
= note: `-D clippy::manual-inspect` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(clippy::manual_inspect)]`
help: try
|
846 ~ (self.1)(val).inspect_err(|e| {
847 | // SAFETY: `slot` was initialized above.
848 ~ unsafe { core::ptr::drop_in_place(slot) };
|
Thus clean them up.
Link: https://rust-lang.github.io/rust-clippy/master/index.html#/manual_inspect [1]
Tested-by: Benno Lossin <benno.lossin@proton.me>
Tested-by: Andreas Hindborg <a.hindborg@samsung.com>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
v2:
- Moved `SAFETY` comment out of the closure, in one of the instances
only. In the other, it would mean putting two `SAFETY` comments in
a row, which is even more confusing. Open coding it may be clearer,
though -- happy to get a patch for that later on (with some docs
about guidelines for using or avoiding `inspect_*`). (Björn, Benno,
Alice)
rust/kernel/init.rs | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/rust/kernel/init.rs b/rust/kernel/init.rs
index 68605b633e73..495c09ebe3a3 100644
--- a/rust/kernel/init.rs
+++ b/rust/kernel/init.rs
@@ -843,11 +843,8 @@ unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E> {
let val = unsafe { &mut *slot };
// SAFETY: `slot` is considered pinned.
let val = unsafe { Pin::new_unchecked(val) };
- (self.1)(val).map_err(|e| {
- // SAFETY: `slot` was initialized above.
- unsafe { core::ptr::drop_in_place(slot) };
- e
- })
+ // SAFETY: `slot` was initialized above.
+ (self.1)(val).inspect_err(|_| unsafe { core::ptr::drop_in_place(slot) })
}
}
@@ -941,11 +938,9 @@ unsafe fn __init(self, slot: *mut T) -> Result<(), E> {
// SAFETY: All requirements fulfilled since this function is `__init`.
unsafe { self.0.__pinned_init(slot)? };
// SAFETY: The above call initialized `slot` and we still have unique access.
- (self.1)(unsafe { &mut *slot }).map_err(|e| {
+ (self.1)(unsafe { &mut *slot }).inspect_err(|_|
// SAFETY: `slot` was initialized above.
- unsafe { core::ptr::drop_in_place(slot) };
- e
- })
+ unsafe { core::ptr::drop_in_place(slot) })
}
}
--
2.45.2
next prev parent reply other threads:[~2024-07-09 16:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-09 16:05 [PATCH v2 00/13] Support several Rust toolchain versions Miguel Ojeda
2024-07-09 16:05 ` [PATCH v2 01/13] rust: macros: indent list item in `paste!`'s docs Miguel Ojeda
2024-07-09 16:05 ` Miguel Ojeda [this message]
2024-07-09 16:05 ` [PATCH v2 03/13] rust: allow `dead_code` for never constructed bindings Miguel Ojeda
2024-07-09 16:05 ` [PATCH v2 04/13] rust: relax most deny-level lints to warnings Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 05/13] rust: simplify Clippy warning flags set Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 06/13] rust: start supporting several compiler versions Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 07/13] rust: avoid assuming a particular `bindgen` build Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 08/13] rust: work around `bindgen` 0.69.0 issue Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 09/13] rust: start supporting several `bindgen` versions Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 10/13] rust: warn about `bindgen` versions 0.66.0 and 0.66.1 Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 11/13] kbuild: rust: add `rustc-version` support Miguel Ojeda
2024-07-09 17:26 ` Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 12/13] rust: support the new `-Zub-checks` flag Miguel Ojeda
2024-07-09 16:06 ` [PATCH v2 13/13] docs: rust: quick-start: add section on Linux distributions Miguel Ojeda
2024-07-10 9:04 ` [PATCH v2 00/13] Support several Rust toolchain versions 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=20240709160615.998336-3-ojeda@kernel.org \
--to=ojeda@kernel.org \
--cc=a.hindborg@samsung.com \
--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=linux-kernel@vger.kernel.org \
--cc=patches@lists.linux.dev \
--cc=rust-for-linux@vger.kernel.org \
--cc=wedsonaf@gmail.com \
/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.