* [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
@ 2025-10-20 3:12 Siyuan Huang
2025-10-20 8:18 ` Alice Ryhl
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Siyuan Huang @ 2025-10-20 3:12 UTC (permalink / raw)
To: rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
lossin, a.hindborg, aliceryhl, tmgross, dakr
Cc: linux-acpi, rust-for-linux, linux-kernel, Siyuan Huang
All types in `bindings` implement `Zeroable` if they can, so use
`pin_init::zeroed` instead of relying on `unsafe` code.
If this ends up not compiling in the future, something in bindgen or on
the C side changed and is most likely incorrect.
Link: https://github.com/Rust-for-Linux/linux/issues/1189
Suggested-by: Benno Lossin <lossin@kernel.org>
Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
---
rust/kernel/acpi.rs | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/rust/kernel/acpi.rs b/rust/kernel/acpi.rs
index 7ae317368b00..f9488be9249c 100644
--- a/rust/kernel/acpi.rs
+++ b/rust/kernel/acpi.rs
@@ -42,9 +42,7 @@ pub const fn new(id: &'static CStr) -> Self {
"ID exceeds 16 bytes"
);
let src = id.as_bytes_with_nul();
- // Replace with `bindings::acpi_device_id::default()` once stabilized for `const`.
- // SAFETY: FFI type is valid to be zero-initialized.
- let mut acpi: bindings::acpi_device_id = unsafe { core::mem::zeroed() };
+ let mut acpi: bindings::acpi_device_id = pin_init::zeroed();
let mut i = 0;
while i < src.len() {
acpi.id[i] = src[i];
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
@ 2025-10-20 8:18 ` Alice Ryhl
2025-10-20 13:11 ` Benno Lossin
2025-10-20 11:25 ` Miguel Ojeda
` (3 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Alice Ryhl @ 2025-10-20 8:18 UTC (permalink / raw)
To: Siyuan Huang
Cc: rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
lossin, a.hindborg, tmgross, dakr, linux-acpi, rust-for-linux,
linux-kernel
On Mon, Oct 20, 2025 at 11:12:04AM +0800, Siyuan Huang wrote:
> All types in `bindings` implement `Zeroable` if they can, so use
> `pin_init::zeroed` instead of relying on `unsafe` code.
>
> If this ends up not compiling in the future, something in bindgen or on
> the C side changed and is most likely incorrect.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
We should make this method accessible under kernel::ffi:: since that's
IMO a better path for it for cases like this. It doesn't really have
anything to do with pin_init in this use-case.
Regardless:
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
2025-10-20 8:18 ` Alice Ryhl
@ 2025-10-20 11:25 ` Miguel Ojeda
2025-10-27 19:30 ` Rafael J. Wysocki
2025-10-20 13:10 ` Benno Lossin
` (2 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Miguel Ojeda @ 2025-10-20 11:25 UTC (permalink / raw)
To: Siyuan Huang, Rafael J. Wysocki, Len Brown
Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, lossin,
a.hindborg, aliceryhl, tmgross, dakr, linux-acpi, rust-for-linux,
linux-kernel
On Mon, Oct 20, 2025 at 5:12 AM Siyuan Huang <huangsiyuan@kylinos.cn> wrote:
>
> All types in `bindings` implement `Zeroable` if they can, so use
> `pin_init::zeroed` instead of relying on `unsafe` code.
>
> If this ends up not compiling in the future, something in bindgen or on
> the C side changed and is most likely incorrect.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
Rafael: I guess you will take this; otherwise, please let me know -- thanks!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
2025-10-20 8:18 ` Alice Ryhl
2025-10-20 11:25 ` Miguel Ojeda
@ 2025-10-20 13:10 ` Benno Lossin
2025-10-20 13:17 ` Danilo Krummrich
2025-10-22 6:02 ` Kunwu Chan
4 siblings, 0 replies; 8+ messages in thread
From: Benno Lossin @ 2025-10-20 13:10 UTC (permalink / raw)
To: Siyuan Huang, rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary,
bjorn3_gh, a.hindborg, aliceryhl, tmgross, dakr
Cc: linux-acpi, rust-for-linux, linux-kernel
On Mon Oct 20, 2025 at 5:12 AM CEST, Siyuan Huang wrote:
> All types in `bindings` implement `Zeroable` if they can, so use
> `pin_init::zeroed` instead of relying on `unsafe` code.
>
> If this ends up not compiling in the future, something in bindgen or on
> the C side changed and is most likely incorrect.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
Thanks, great to see this.
Reviewed-by: Benno Lossin <lossin@kernel.org>
Cheers,
Benno
> ---
> rust/kernel/acpi.rs | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 8:18 ` Alice Ryhl
@ 2025-10-20 13:11 ` Benno Lossin
0 siblings, 0 replies; 8+ messages in thread
From: Benno Lossin @ 2025-10-20 13:11 UTC (permalink / raw)
To: Alice Ryhl, Siyuan Huang
Cc: rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
a.hindborg, tmgross, dakr, linux-acpi, rust-for-linux,
linux-kernel
On Mon Oct 20, 2025 at 10:18 AM CEST, Alice Ryhl wrote:
> On Mon, Oct 20, 2025 at 11:12:04AM +0800, Siyuan Huang wrote:
>> All types in `bindings` implement `Zeroable` if they can, so use
>> `pin_init::zeroed` instead of relying on `unsafe` code.
>>
>> If this ends up not compiling in the future, something in bindgen or on
>> the C side changed and is most likely incorrect.
>>
>> Link: https://github.com/Rust-for-Linux/linux/issues/1189
>> Suggested-by: Benno Lossin <lossin@kernel.org>
>> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
>
> We should make this method accessible under kernel::ffi:: since that's
> IMO a better path for it for cases like this. It doesn't really have
> anything to do with pin_init in this use-case.
Yeah, we should do that. I don't have time to do it, so if anyone wants
to go ahead, please do :)
Cheers,
Benno
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
` (2 preceding siblings ...)
2025-10-20 13:10 ` Benno Lossin
@ 2025-10-20 13:17 ` Danilo Krummrich
2025-10-22 6:02 ` Kunwu Chan
4 siblings, 0 replies; 8+ messages in thread
From: Danilo Krummrich @ 2025-10-20 13:17 UTC (permalink / raw)
To: Siyuan Huang
Cc: rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
lossin, a.hindborg, aliceryhl, tmgross, linux-acpi,
rust-for-linux, linux-kernel
On 10/20/25 5:12 AM, Siyuan Huang wrote:
> All types in `bindings` implement `Zeroable` if they can, so use
> `pin_init::zeroed` instead of relying on `unsafe` code.
>
> If this ends up not compiling in the future, something in bindgen or on
> the C side changed and is most likely incorrect.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Siyuan, there are more such cases, e.g. in OF, debugfs and a few others in case
you're interested in fixing up those as well. :)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
` (3 preceding siblings ...)
2025-10-20 13:17 ` Danilo Krummrich
@ 2025-10-22 6:02 ` Kunwu Chan
4 siblings, 0 replies; 8+ messages in thread
From: Kunwu Chan @ 2025-10-22 6:02 UTC (permalink / raw)
To: Siyuan Huang, rafael, lenb, ojeda, alex.gaynor, boqun.feng, gary,
bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross, dakr
Cc: linux-acpi, rust-for-linux, linux-kernel
On 10/20/25 11:12, Siyuan Huang wrote:
> All types in `bindings` implement `Zeroable` if they can, so use
> `pin_init::zeroed` instead of relying on `unsafe` code.
>
> If this ends up not compiling in the future, something in bindgen or on
> the C side changed and is most likely incorrect.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
> ---
> rust/kernel/acpi.rs | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/rust/kernel/acpi.rs b/rust/kernel/acpi.rs
> index 7ae317368b00..f9488be9249c 100644
> --- a/rust/kernel/acpi.rs
> +++ b/rust/kernel/acpi.rs
> @@ -42,9 +42,7 @@ pub const fn new(id: &'static CStr) -> Self {
> "ID exceeds 16 bytes"
> );
> let src = id.as_bytes_with_nul();
> - // Replace with `bindings::acpi_device_id::default()` once stabilized for `const`.
> - // SAFETY: FFI type is valid to be zero-initialized.
> - let mut acpi: bindings::acpi_device_id = unsafe { core::mem::zeroed() };
> + let mut acpi: bindings::acpi_device_id = pin_init::zeroed();
> let mut i = 0;
> while i < src.len() {
> acpi.id[i] = src[i];
Reviewed-by: Kunwu Chan <chentao@kylinos.cn>
--
Thanks,
Kunwu Chan.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`
2025-10-20 11:25 ` Miguel Ojeda
@ 2025-10-27 19:30 ` Rafael J. Wysocki
0 siblings, 0 replies; 8+ messages in thread
From: Rafael J. Wysocki @ 2025-10-27 19:30 UTC (permalink / raw)
To: Miguel Ojeda, Siyuan Huang
Cc: Len Brown, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
lossin, a.hindborg, aliceryhl, tmgross, dakr, linux-acpi,
rust-for-linux, linux-kernel
On Mon, Oct 20, 2025 at 1:26 PM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Mon, Oct 20, 2025 at 5:12 AM Siyuan Huang <huangsiyuan@kylinos.cn> wrote:
> >
> > All types in `bindings` implement `Zeroable` if they can, so use
> > `pin_init::zeroed` instead of relying on `unsafe` code.
> >
> > If this ends up not compiling in the future, something in bindgen or on
> > the C side changed and is most likely incorrect.
> >
> > Link: https://github.com/Rust-for-Linux/linux/issues/1189
> > Suggested-by: Benno Lossin <lossin@kernel.org>
> > Signed-off-by: Siyuan Huang <huangsiyuan@kylinos.cn>
>
> Rafael: I guess you will take this; otherwise, please let me know -- thanks!
Applied as 6.19 material, thanks!
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-10-27 19:30 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-20 3:12 [PATCH] rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` Siyuan Huang
2025-10-20 8:18 ` Alice Ryhl
2025-10-20 13:11 ` Benno Lossin
2025-10-20 11:25 ` Miguel Ojeda
2025-10-27 19:30 ` Rafael J. Wysocki
2025-10-20 13:10 ` Benno Lossin
2025-10-20 13:17 ` Danilo Krummrich
2025-10-22 6:02 ` Kunwu Chan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).