Subject: Re: linux-next: build failure after merge of the rust tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 24 Mar 2025 22:06:29 +1100

Hi all,

On Mon, 24 Mar 2025 21:57:02 +1100 Stephen Rothwell <[email-masked]> wrote:
>
> After merging the rust tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
> 
> error[E0277]: `*mut MyStruct` cannot be sent between threads safely
>   --> samples/rust/rust_dma.rs:47:22  
>    |
> 47 | impl pci::Driver for DmaSampleDriver {
>    |                      ^^^^^^^^^^^^^^^ `*mut MyStruct` cannot be sent between threads safely
>    |
>    = help: within `DmaSampleDriver`, the trait `Send` is not implemented for `*mut MyStruct`, which is required by `DmaSampleDriver: Send`
> note: required because it appears within the type `CoherentAllocation<MyStruct>`
>   --> rust/kernel/dma.rs:132:12  
> note: required because it appears within the type `DmaSampleDriver`
>   --> samples/rust/rust_dma.rs:9:8  
>    |
> 9  | struct DmaSampleDriver {
>    |        ^^^^^^^^^^^^^^^
> note: required by a bound in `kernel::pci::Driver`
>   --> rust/kernel/pci.rs:225:1  
> 
> error: aborting due to 1 previous error
> 
> For more information about this error, try `rustc --explain E0277`.
> 
> I have no idea what caused this - it built in next-20250321, but that
> no longer builds, so I have reset to the version of the rust tree in
> next-20250320 (commit 4a47eec07be6).

Actually, the driver-core tree gained these commits over the weekend:

  51d0de7596a4 ("rust: platform: require Send for Driver trait implementers")
  935e1d90bf6f ("rust: pci: require Send for Driver trait implementers")
  455943aa187f ("rust: platform: impl Send + Sync for platform::Device")
  e2942bb4e629 ("rust: pci: impl Send + Sync for pci::Device")

A heads up would have been nice ... and maybe even a test merge and
build against -next (given how late we are in the cycle).
-- 
Cheers,
Stephen Rothwell