rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).