From: Andreas Hindborg <a.hindborg@kernel.org>
To: "Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"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>,
"Alice Ryhl" <aliceryhl@google.com>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nicolas Schier" <nicolas@fjasle.eu>,
"Trevor Gross" <tmgross@umich.edu>,
"Adam Bratschi-Kaye" <ark.email@gmail.com>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kbuild@vger.kernel.org
Subject: Re: [PATCH v3 4/4] rust: add parameter support to the `module!` macro
Date: Wed, 08 Jan 2025 13:45:20 +0100 [thread overview]
Message-ID: <87tta9bhjz.fsf@kernel.org> (raw)
In-Reply-To: <CANiq72nBpVy911cVhNFM6teQ0EaE-xs0SB2Qx95O4=nKBdRDuQ@mail.gmail.com> (Miguel Ojeda's message of "Fri, 13 Dec 2024 18:14:37 +0100")
"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com> writes:
> On Fri, Dec 13, 2024 at 2:17 PM Andreas Hindborg <a.hindborg@kernel.org> wrote:
>>
>> scheduled for removal. Interior mutability via `SyncUnsafeCell` provides
>> the same functionality and it is my understanding that this feature is
>> on track to be stabilized.
>
> I am not sure about the last bit, but even if it is on track, we do
> not want to start using new language features or APIs that could
> potentially change.
>
> And even if it is a feature that we are sure will not change, we
> should still let upstream Rust know before using it, since we are
> actively discussing with them the remaining unstable items that the
> kernel needs and they are putting the kernel in their roadmap.
>
> So I suggest we mention it next week in the Rust/Rust for Linux meeting.
I don't think we ever discussed this?
I was going to put this in the commit trailer for v4:
---
Version 3 of this patch enabled the unstable feature `sync_unsafe_cell` [1] to
avoid `static mut` variables as suggested by Trevor Tross and Benno Lossin [2].
As we are moving closer to a new edition, it is now clear that `static mut` is
not being deprecated in the 2024 edition as first anticipated [3].
Still, `SyncUnsafeCell` allows us to use safe code when referring to the
parameter value:
```
{param_name}.as_mut_ptr().cast()
```
rather than unsafe code:
```
unsafe { addr_of_mut!(__{name}_{param_name}_value) }.cast()
```
Thus, this version (4) keeps the feature enabled.
[1] https://github.com/rust-lang/rust/issues/95439
[2] https://lore.kernel.org/all/CALNs47sqt==o+hM5M1b0vTayKH177naybg_KurcirXszYAa22A@mail.gmail.com/
[3] https://github.com/rust-lang/rust/issues/53639#issuecomment-2434023115
---
What do you think?
>
>> Not sure. `val` being null not supposed to happen in the current
>> configuration. It should be an unreachable state. So BUG is the right thing?
>
> Since you can easily return an error in this situation, I would say
> ideally a `WARN_ON_ONCE` + returning an error would be the best
> option, and covers you in case the rest changes and someone forgets to
> update this.
Returning an error and `pr_warn!` is doable. As far as I can tell, we do
not have `WARN_ON_ONCE` yet?
>
>> Not in the current configuration. The parameters can only be declared
>> "read only". It should be impossible for anyone to call this function.
>
> What I meant is, can you avoid writing the function to begin with, by
> leaving a null function pointer in the `kernel_param_ops` struct, i.e.
> `None`?
>
It turns out we can!
Best regards,
Andreas Hindborg
next prev parent reply other threads:[~2025-01-08 12:45 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <xK59-BGgPeRPn4PEeT498C5hexwXQ1H5sDle5WuMs3OtTzS0cA4NTRiBh1zLr_4p6o64eXKYOlEka_xzUHG5jA==@protonmail.internalid>
2024-12-13 11:30 ` [PATCH v3 0/4] rust: extend `module!` macro with integer parameter support Andreas Hindborg
2024-12-13 11:30 ` [PATCH v3 1/4] rust: str: implement `PartialEq` for `BStr` Andreas Hindborg
2024-12-13 12:49 ` Alice Ryhl
2024-12-13 11:30 ` [PATCH v3 2/4] rust: str: implement `strip_prefix` " Andreas Hindborg
2024-12-13 11:30 ` [PATCH v3 3/4] rust: str: add radix prefixed integer parsing functions Andreas Hindborg
2024-12-13 11:30 ` [PATCH v3 4/4] rust: add parameter support to the `module!` macro Andreas Hindborg
2024-12-13 11:46 ` Greg KH
2024-12-13 12:42 ` Andreas Hindborg
2024-12-13 12:54 ` Miguel Ojeda
2024-12-13 13:17 ` Andreas Hindborg
2024-12-13 17:14 ` Miguel Ojeda
2025-01-08 12:45 ` Andreas Hindborg [this message]
2025-01-08 13:17 ` Alice Ryhl
2025-01-08 13:43 ` Miguel Ojeda
2025-01-08 14:20 ` Andreas Hindborg
2024-12-13 11:43 ` [PATCH v3 0/4] rust: extend `module!` macro with integer parameter support Greg KH
2024-12-13 12:24 ` Andreas Hindborg
2024-12-13 12:48 ` Alice Ryhl
2024-12-13 12:57 ` Andreas Hindborg
2024-12-17 14:09 ` Simona Vetter
2024-12-13 14:23 ` Greg KH
2024-12-13 15:38 ` Andreas Hindborg
2024-12-13 16:05 ` Greg KH
2024-12-16 9:51 ` Andreas Hindborg
2024-12-16 12:14 ` Greg KH
2024-12-16 12:23 ` Greg KH
2024-12-16 13:02 ` Andreas Hindborg
2024-12-16 13:02 ` Andreas Hindborg
2024-12-16 14:43 ` Jens Axboe
2024-12-16 15:03 ` Greg KH
2024-12-16 15:08 ` Jens Axboe
2024-12-16 15:39 ` Miguel Ojeda
2024-12-16 15:48 ` Miguel Ojeda
2024-12-18 2:16 ` Josh Triplett
2024-12-13 12:28 ` Andreas Hindborg
2024-12-13 19:41 ` Luis Chamberlain
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=87tta9bhjz.fsf@kernel.org \
--to=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=ark.email@gmail.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=gary@garyguo.net \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=nathan@kernel.org \
--cc=nicolas@fjasle.eu \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@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.