From: Nathan Chancellor <nathan@kernel.org>
To: Bert Karwatzki <spasswolf@web.de>
Cc: Harry Yoo <harry@kernel.org>,
linux-kernel@vger.kernel.org, linux-next@vger.kernel.org,
Vlastimil Babka <vbabka@kernel.org>,
Alice Ryhl <aliceryhl@google.com>, Boqun Feng <boqun@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
rust-for-linux@vger.kernel.org
Subject: Re: rust compile failure in next-20260730
Date: Fri, 31 Jul 2026 12:25:22 -0700 [thread overview]
Message-ID: <20260731192522.GA1014697@ax162> (raw)
In-Reply-To: <20260731122826.737703-1-spasswolf@web.de>
+ folks from e5e86df8b666
On Fri, Jul 31, 2026 at 02:28:25PM +0200, Bert Karwatzki wrote:
> With next-20260730 building a kernel with CONFIG_RUST=y fails with
> the following error:
>
> RUSTC L rust/kernel.o
> error[E0308]: mismatched types
> --> rust/kernel/sync/poll.rs:175:44
> |
> 175 | unsafe { bindings::kvfree_call_rcu((*ptr).rcu.get(), ptr.cast::<ffi::c_void>()) };
> | ------------------------- ^^^^^^^^^^^^^^^^ expected `*mut kvfree_rcu_head`, found `*mut callback_head`
> | |
> | arguments to this function are incorrect
> |
> = note: expected raw pointer `*mut bindings::kvfree_rcu_head`
> found raw pointer `*mut bindings::callback_head`
> note: function defined here
> --> /mnt/data/linux-forest/linux-next/rust/bindings/bindings_generated.rs:73708:12
> |
> 73708 | pub fn kvfree_call_rcu(head: *mut kvfree_rcu_head, ptr: *mut ffi::c_void);
> | ^^^^^^^^^^^^^^^
>
> error: aborting due to 1 previous error
>
> For more information about this error, try `rustc --explain E0308`.
> make[5]: *** [rust/Makefile:781: rust/kernel.o] Fehler 1
> make[4]: *** [Makefile:1420: prepare] Fehler 2
> make[3]: *** [debian/rules:80: build-arch] Fehler 2
>
> Reverting the following commits:
> ef32a74f8f6a ("mm/slab: introduce kfree_rcu_nolock()")
> bdd0cc9f0ffc ("mm/slab: introduce struct kvfree_rcu_head for kvfree_rcu batching")
>
> make the compilation work again.
This is a collision between commit e5e86df8b666 ("rust: poll: use
kfree_rcu() for PollCondVar") in the char-misc tree and the
aforementioned commit bdd0cc9f0ffc ("mm/slab: introduce struct
kvfree_rcu_head for kvfree_rcu batching") in the slab tree.
Something like this avoids the error for me but I am not sure if it is
a proper fix.
diff --git a/rust/kernel/sync/poll.rs b/rust/kernel/sync/poll.rs
index 684dfa242b1a..5b12d5d4e9af 100644
--- a/rust/kernel/sync/poll.rs
+++ b/rust/kernel/sync/poll.rs
@@ -124,6 +124,9 @@ pub struct PollCondVarBox {
struct PollCondVarBoxInner {
#[pin]
inner: PollCondVar,
+ #[cfg(CONFIG_KVFREE_RCU_BATCHED)]
+ rcu: Opaque<bindings::kvfree_rcu_head>,
+ #[cfg(not(CONFIG_KVFREE_RCU_BATCHED))]
rcu: Opaque<bindings::callback_head>,
}
--
Cheers,
Nathan
prev parent reply other threads:[~2026-07-31 19:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-31 12:28 rust compile failure in next-20260730 Bert Karwatzki
2026-07-31 13:19 ` Thorsten Leemhuis
2026-07-31 13:48 ` Luna Jernberg
2026-07-31 19:25 ` Nathan Chancellor [this message]
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=20260731192522.GA1014697@ax162 \
--to=nathan@kernel.org \
--cc=aliceryhl@google.com \
--cc=boqun@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=harry@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=spasswolf@web.de \
--cc=vbabka@kernel.org \
/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.