All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miguel Ojeda <ojeda@kernel.org>
To: Miguel Ojeda <ojeda@kernel.org>, 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@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Danilo Krummrich" <dakr@kernel.org>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	patches@lists.linux.dev, stable@vger.kernel.org
Subject: [PATCH 2/5] rust: clean Rust 1.87.0's `clippy::ptr_eq` lints
Date: Fri,  2 May 2025 16:02:34 +0200	[thread overview]
Message-ID: <20250502140237.1659624-3-ojeda@kernel.org> (raw)
In-Reply-To: <20250502140237.1659624-1-ojeda@kernel.org>

Starting with Rust 1.87.0 (expected 2025-05-15) [1], Clippy may expand
the `ptr_eq` lint, e.g.:

    error: use `core::ptr::eq` when comparing raw pointers
       --> rust/kernel/list.rs:438:12
        |
    438 |         if self.first == item {
        |            ^^^^^^^^^^^^^^^^^^ help: try: `core::ptr::eq(self.first, item)`
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_eq
        = note: `-D clippy::ptr-eq` implied by `-D warnings`
        = help: to override `-D warnings` add `#[allow(clippy::ptr_eq)]`

Thus clean the few cases we have.

This patch may not be actually needed by the time Rust 1.87.0 releases
since a PR to relax the lint has been beta nominated [2] due to reports
of being too eager (at least by default) [3].

Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
Link: https://github.com/rust-lang/rust-clippy/pull/14339 [1]
Link: https://github.com/rust-lang/rust-clippy/pull/14526 [2]
Link: https://github.com/rust-lang/rust-clippy/issues/14525 [3]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
 rust/kernel/alloc/kvec.rs |  2 +-
 rust/kernel/list.rs       | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/rust/kernel/alloc/kvec.rs b/rust/kernel/alloc/kvec.rs
index ae9d072741ce..cde911551327 100644
--- a/rust/kernel/alloc/kvec.rs
+++ b/rust/kernel/alloc/kvec.rs
@@ -743,7 +743,7 @@ fn into_raw_parts(self) -> (*mut T, NonNull<T>, usize, usize) {
     pub fn collect(self, flags: Flags) -> Vec<T, A> {
         let old_layout = self.layout;
         let (mut ptr, buf, len, mut cap) = self.into_raw_parts();
-        let has_advanced = ptr != buf.as_ptr();
+        let has_advanced = !core::ptr::eq(ptr, buf.as_ptr());
 
         if has_advanced {
             // Copy the contents we have advanced to at the beginning of the buffer.
diff --git a/rust/kernel/list.rs b/rust/kernel/list.rs
index a335c3b1ff5e..c63cbeee3316 100644
--- a/rust/kernel/list.rs
+++ b/rust/kernel/list.rs
@@ -435,7 +435,7 @@ unsafe fn remove_internal_inner(
         //  * If `item` was the only item in the list, then `prev == item`, and we just set
         //    `item->next` to null, so this correctly sets `first` to null now that the list is
         //    empty.
-        if self.first == item {
+        if core::ptr::eq(self.first, item) {
             // SAFETY: The `prev` pointer is the value that `item->prev` had when it was in this
             // list, so it must be valid. There is no race since `prev` is still in the list and we
             // still have exclusive access to the list.
@@ -556,7 +556,7 @@ fn next(&mut self) -> Option<ArcBorrow<'a, T>> {
         let next = unsafe { (*current).next };
         // INVARIANT: If `current` was the last element of the list, then this updates it to null.
         // Otherwise, we update it to the next element.
-        self.current = if next != self.stop {
+        self.current = if !core::ptr::eq(next, self.stop) {
             next
         } else {
             ptr::null_mut()
@@ -726,7 +726,7 @@ impl<'a, T: ?Sized + ListItem<ID>, const ID: u64> Cursor<'a, T, ID> {
     fn prev_ptr(&self) -> *mut ListLinksFields {
         let mut next = self.next;
         let first = self.list.first;
-        if next == first {
+        if core::ptr::eq(next, first) {
             // We are before the first element.
             return core::ptr::null_mut();
         }
@@ -788,7 +788,7 @@ pub fn move_next(&mut self) -> bool {
         // access the `next` field.
         let mut next = unsafe { (*self.next).next };
 
-        if next == self.list.first {
+        if core::ptr::eq(next, self.list.first) {
             next = core::ptr::null_mut();
         }
 
@@ -802,7 +802,7 @@ pub fn move_next(&mut self) -> bool {
     /// If the cursor is before the first element, then this call does nothing. This call returns
     /// `true` if the cursor's position was changed.
     pub fn move_prev(&mut self) -> bool {
-        if self.next == self.list.first {
+        if core::ptr::eq(self.next, self.list.first) {
             return false;
         }
 
@@ -822,7 +822,7 @@ fn insert_inner(&mut self, item: ListArc<T, ID>) -> *mut ListLinksFields {
         // * `ptr` is an element in the list or null.
         // * if `ptr` is null, then `self.list.first` is null so the list is empty.
         let item = unsafe { self.list.insert_inner(item, ptr) };
-        if self.next == self.list.first {
+        if core::ptr::eq(self.next, self.list.first) {
             // INVARIANT: We just inserted `item`, so it's a member of list.
             self.list.first = item;
         }
-- 
2.49.0


  parent reply	other threads:[~2025-05-02 14:03 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-02 14:02 [PATCH 0/5] Rust beta (1.87) and nightly (1.88) lint cleanups Miguel Ojeda
2025-05-02 14:02 ` [PATCH 1/5] objtool/rust: add one more `noreturn` Rust function for Rust 1.87.0 Miguel Ojeda
2025-05-13 18:07   ` Joel Fernandes
2025-05-13 21:58     ` Joel Fernandes
2025-05-14  0:22       ` John Hubbard
2025-05-14  0:43         ` Timur Tabi
2025-05-14 14:52           ` Joel Fernandes
2025-05-14 19:14             ` Josh Poimboeuf
2025-05-14 19:46               ` Timur Tabi
2025-05-15 16:18                 ` Josh Poimboeuf
2025-05-15 19:06                   ` Timur Tabi
2025-05-15 21:12                     ` Kane York
2025-05-15 22:16                     ` Josh Poimboeuf
2025-05-15 22:22                       ` Timur Tabi
2025-05-20 19:49     ` Miguel Ojeda
2025-05-02 14:02 ` Miguel Ojeda [this message]
2025-05-05  9:23   ` [PATCH 2/5] rust: clean Rust 1.87.0's `clippy::ptr_eq` lints Alice Ryhl
2025-05-05 15:25     ` Miguel Ojeda
2025-05-02 14:02 ` [PATCH 3/5] rust: clean Rust 1.88.0's `unnecessary_transmutes` lint Miguel Ojeda
2025-05-02 14:02 ` [PATCH 4/5] rust: clean Rust 1.88.0's warning about `clippy::disallowed_macros` configuration Miguel Ojeda
2025-05-02 14:02 ` [PATCH 5/5] rust: clean Rust 1.88.0's `clippy::uninlined_format_args` lint Miguel Ojeda
2025-05-02 16:01   ` Tamir Duberstein
2025-05-02 18:49   ` Benno Lossin
2025-05-05  9:23 ` [PATCH 0/5] Rust beta (1.87) and nightly (1.88) lint cleanups Alice Ryhl
2025-05-06 22:22 ` 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=20250502140237.1659624-3-ojeda@kernel.org \
    --to=ojeda@kernel.org \
    --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=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=stable@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.