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

From: Stephen Rothwell <[email-masked]>
Date: Tue, 15 Apr 2025 14:01:16 +1000

Hi all,

After merging the workqueues tree, today's linux-next build (x86_64
allmodconfig) failed like this:

error[E0308]: mismatched types
   --> rust/kernel/lib.rs:204:9
    |
204 |           ptr.sub(offset) as *const $type
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability
    |
   ::: rust/kernel/workqueue.rs:495:18
    |
495 |               ) -> *mut Self {
    |                    --------- expected `*mut ClosureWork<T>` because of return type
...
505 | / impl_has_work! {
506 | |     impl{T} HasWork<Self> for ClosureWork<T> { self.work }
507 | | }
    | |_- in this macro invocation
    |
    = note: expected raw pointer `*mut ClosureWork<T>`
               found raw pointer `*const ClosureWork<T>`
    = note: this error originates in the macro `$crate::container_of` which comes from the expansion of the macro `impl_has_work` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0308`.

Caused by commit

  345e029b561e ("rust: workqueue: remove HasWork::OFFSET")

I have used the workqueues tree from next-20250414 for today.

-- 
Cheers,
Stephen Rothwell