The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
@ 2026-06-03 16:09 ` Francis Laniel
  2026-07-27 11:15   ` Michal Wilczynski
  2026-08-11  5:04   ` Uwe Kleine-König
  0 siblings, 2 replies; 9+ messages in thread
From: Francis Laniel @ 2026-06-03 16:09 UTC (permalink / raw)
  To: Michal Wilczynski, Miguel Ojeda, Uwe Kleine-König,
	Benno Lossin, Gary Guo
  Cc: Francis Laniel, Alexandre Courbot, Boqun Feng,
	Björn Roy Baron, Andreas Hindborg, Alice Ryhl, Trevor Gross,
	Danilo Krummrich, linux-pwm, rust-for-linux, linux-kernel

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.

Suggested-by: Benno Lossin <lossin@kernel.org>
Link: https://github.com/Rust-for-Linux/linux/issues/1189
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Acked-by: Michal Wilczynski <m.wilczynski@samsung.com>
Signed-off-by: Francis Laniel <laniel_francis@privacyrequired.com>
---
 rust/kernel/pwm.rs | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/rust/kernel/pwm.rs b/rust/kernel/pwm.rs
index 6c9d667009ef..3427b7d93a03 100644
--- a/rust/kernel/pwm.rs
+++ b/rust/kernel/pwm.rs
@@ -494,9 +494,7 @@ pub(crate) fn as_raw(&self) -> *const bindings::pwm_ops {
 /// This is used to bridge Rust trait implementations to the C `struct pwm_ops`
 /// expected by the kernel.
 pub const fn create_pwm_ops<T: PwmOps>() -> PwmOpsVTable {
-    // SAFETY: `core::mem::zeroed()` is unsafe. For `pwm_ops`, all fields are
-    // `Option<extern "C" fn(...)>` or data, so a zeroed pattern (None/0) is valid initially.
-    let mut ops: bindings::pwm_ops = unsafe { core::mem::zeroed() };
+    let mut ops: bindings::pwm_ops = pin_init::zeroed();
 
     ops.request = Some(Adapter::<T>::request_callback);
     ops.capture = Some(Adapter::<T>::capture_callback);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-06-03 16:09 ` [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed` Francis Laniel
@ 2026-07-27 11:15   ` Michal Wilczynski
  2026-08-11  5:04   ` Uwe Kleine-König
  1 sibling, 0 replies; 9+ messages in thread
From: Michal Wilczynski @ 2026-07-27 11:15 UTC (permalink / raw)
  To: Francis Laniel, Miguel Ojeda, Uwe Kleine-König, Benno Lossin,
	Gary Guo
  Cc: Alexandre Courbot, Boqun Feng, Björn Roy Baron,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	linux-pwm, rust-for-linux, linux-kernel

Hi Uwe,

On 6/3/26 18:09, Francis Laniel 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.
> 
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Link: https://protect2.fireeye.com/v1/url?k=851847ef-eca32f5d-8519cca0-905a08a8515a-5adce8ef7cc40eb1&q=1&e=6c6d6a32-0f0e-4805-8882-718eae7641a8&u=https%3A%2F%2Fgithub.com%2FRust-for-Linux%2Flinux%2Fissues%2F1189
> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> Acked-by: Michal Wilczynski <m.wilczynski@samsung.com>
> Signed-off-by: Francis Laniel <laniel_francis@privacyrequired.com>
> ---
>  rust/kernel/pwm.rs | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/rust/kernel/pwm.rs b/rust/kernel/pwm.rs
> index 6c9d667009ef..3427b7d93a03 100644
> --- a/rust/kernel/pwm.rs
> +++ b/rust/kernel/pwm.rs
> @@ -494,9 +494,7 @@ pub(crate) fn as_raw(&self) -> *const bindings::pwm_ops {
>  /// This is used to bridge Rust trait implementations to the C `struct pwm_ops`
>  /// expected by the kernel.
>  pub const fn create_pwm_ops<T: PwmOps>() -> PwmOpsVTable {
> -    // SAFETY: `core::mem::zeroed()` is unsafe. For `pwm_ops`, all fields are
> -    // `Option<extern "C" fn(...)>` or data, so a zeroed pattern (None/0) is valid initially.
> -    let mut ops: bindings::pwm_ops = unsafe { core::mem::zeroed() };
> +    let mut ops: bindings::pwm_ops = pin_init::zeroed();
>  
>      ops.request = Some(Adapter::<T>::request_callback);
>      ops.capture = Some(Adapter::<T>::capture_callback);

I believe this commit is good to go, if you could take it through your
tree it would be great.

Best regards,
-- 
Michal Wilczynski <m.wilczynski@samsung.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-06-03 16:09 ` [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed` Francis Laniel
  2026-07-27 11:15   ` Michal Wilczynski
@ 2026-08-11  5:04   ` Uwe Kleine-König
  2026-08-11 20:54     ` Konstantin Ryabitsev
  1 sibling, 1 reply; 9+ messages in thread
From: Uwe Kleine-König @ 2026-08-11  5:04 UTC (permalink / raw)
  To: Francis Laniel
  Cc: Michal Wilczynski, Miguel Ojeda, Benno Lossin, Gary Guo,
	Alexandre Courbot, Boqun Feng, Björn Roy Baron,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	linux-pwm, rust-for-linux, linux-kernel, tools

[-- Attachment #1: Type: text/plain, Size: 2963 bytes --]

Hello,

On Wed, Jun 03, 2026 at 07:09:09PM +0300, Francis Laniel 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.
> 
> Suggested-by: Benno Lossin <lossin@kernel.org>
> Link: https://github.com/Rust-for-Linux/linux/issues/1189
> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> Acked-by: Michal Wilczynski <m.wilczynski@samsung.com>
> Signed-off-by: Francis Laniel <laniel_francis@privacyrequired.com>

Applied to

	https://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux.git pwm/for-next

for the 7.3 merge window.

b4 behaved strange on that patch:

	$ b4 am -s -l -t -3 20260603160910.159307-1-laniel_francis@privacyrequired.com
	Grabbing thread from lore.kernel.org/all/20260603160910.159307-1-laniel_francis@privacyrequired.com/t.mbox.gz
	Analyzing 2 messages in the thread
	Looking for additional code-review trailers on lore.kernel.org
	Analyzing 23 code-review messages
	Checking attestation on all messages, may take a moment...
	---
	  ✓ [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
	    + Link: https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com
	    + Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
	  ---
	  ✓ Signed: DKIM/privacyrequired.com
	---
	Total patches: 1
	---
	NOTE: some trailers ignored due to from/email mismatches:
	    ! Trailer: Suggested-by: Benno Lossin <lossin@kernel.org>
	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
	    ! Trailer: Acked-by: Michal Wilczynski <m.wilczynski@samsung.com>
	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
	    ! Trailer: Signed-off-by: Francis Laniel <laniel_francis@privacyrequired.com>
	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
	    ! Trailer: Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
	NOTE: Rerun with -S to apply them anyway
	Preparing fake-am for v3: rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
	  range: 2707b9df955d..81c3f2b030a1
	Preared a fake commit range for 3-way merge (2707b9df955d..81c3f2b030a1)
	---
	 Link: https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com
	 Base: applies clean to current tree
	       git checkout -b v3_20260603_laniel_francis_privacyrequired_com HEAD
	       git am -3 ./v3_20260603_laniel_francis_rust_pwm_replace_core_mem_zeroed_with_pin_init_zeroed.mbx

I didn't research what went wrong there and the trailer made it into the
patch anyhow and adding -S doesn't change the patch. I added the
tools@k.o mailing list to Cc:, maybe someone there wants to debug that.

Best regards and thanks for your contribution,
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11  5:04   ` Uwe Kleine-König
@ 2026-08-11 20:54     ` Konstantin Ryabitsev
  2026-08-11 21:00       ` Miguel Ojeda
  2026-08-11 22:56       ` Uwe Kleine-König
  0 siblings, 2 replies; 9+ messages in thread
From: Konstantin Ryabitsev @ 2026-08-11 20:54 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Francis Laniel, Michal Wilczynski, Miguel Ojeda, Benno Lossin,
	Gary Guo, Alexandre Courbot, Boqun Feng, Björn Roy Baron,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	linux-pwm, rust-for-linux, linux-kernel, tools

On Tue, Aug 11, 2026 at 07:04:49AM +0200, Uwe Kleine-König wrote:
> Applied to
> 
> 	https://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux.git pwm/for-next
> 
> for the 7.3 merge window.
> 
> b4 behaved strange on that patch:
> 
> 	$ b4 am -s -l -t -3 20260603160910.159307-1-laniel_francis@privacyrequired.com
> 	Grabbing thread from lore.kernel.org/all/20260603160910.159307-1-laniel_francis@privacyrequired.com/t.mbox.gz
> 	Analyzing 2 messages in the thread
> 	Looking for additional code-review trailers on lore.kernel.org
> 	Analyzing 23 code-review messages
> 	Checking attestation on all messages, may take a moment...
> 	---
> 	  ✓ [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
> 	    + Link: https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com
> 	    + Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
> 	  ---
> 	  ✓ Signed: DKIM/privacyrequired.com
> 	---
> 	Total patches: 1
> 	---
> 	NOTE: some trailers ignored due to from/email mismatches:
> 	    ! Trailer: Suggested-by: Benno Lossin <lossin@kernel.org>
> 	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
> 	    ! Trailer: Acked-by: Michal Wilczynski <m.wilczynski@samsung.com>
> 	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
> 	    ! Trailer: Signed-off-by: Francis Laniel <laniel_francis@privacyrequired.com>
> 	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
> 	    ! Trailer: Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> 	     Msg From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
> 	NOTE: Rerun with -S to apply them anyway
> 	Preparing fake-am for v3: rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
> 	  range: 2707b9df955d..81c3f2b030a1
> 	Preared a fake commit range for 3-way merge (2707b9df955d..81c3f2b030a1)
> 	---
> 	 Link: https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com
> 	 Base: applies clean to current tree
> 	       git checkout -b v3_20260603_laniel_francis_privacyrequired_com HEAD
> 	       git am -3 ./v3_20260603_laniel_francis_rust_pwm_replace_core_mem_zeroed_with_pin_init_zeroed.mbx
> 
> I didn't research what went wrong there and the trailer made it into the
> patch anyhow and adding -S doesn't change the patch. I added the
> tools@k.o mailing list to Cc:, maybe someone there wants to debug that.

It was just Miguel responding with a suggestion how to better reorder
trailers. Since we can't tell this case from the case when someone actually
replies with a follow-up trailer, hence the error.

I added a special case where we ignore trailers we find in the follow-up if
these trailers already exist in the patch anyway, so, at least for this
particular case, the problem shouldn't resurface.

-K

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11 20:54     ` Konstantin Ryabitsev
@ 2026-08-11 21:00       ` Miguel Ojeda
  2026-08-11 21:17         ` Konstantin Ryabitsev
  2026-08-11 22:56       ` Uwe Kleine-König
  1 sibling, 1 reply; 9+ messages in thread
From: Miguel Ojeda @ 2026-08-11 21:00 UTC (permalink / raw)
  To: Konstantin Ryabitsev
  Cc: Uwe Kleine-König, Francis Laniel, Michal Wilczynski,
	Miguel Ojeda, Benno Lossin, Gary Guo, Alexandre Courbot,
	Boqun Feng, Björn Roy Baron, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, linux-pwm, rust-for-linux,
	linux-kernel, tools

On Tue, Aug 11, 2026 at 10:54 PM Konstantin Ryabitsev <mricon@kernel.org> wrote:
>
> It was just Miguel responding with a suggestion how to better reorder
> trailers. Since we can't tell this case from the case when someone actually
> replies with a follow-up trailer, hence the error.
>
> I added a special case where we ignore trailers we find in the follow-up if
> these trailers already exist in the patch anyway, so, at least for this
> particular case, the problem shouldn't resurface.

Hmm... I usually indent with 2 or 4 spaces my "non-tags" to
distinguish them from actual tags; perhaps I should mark them
differently? Is there a "standard" prefix to ignore them instead of
several spaces?

Thanks!

Cheers,
Miguel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11 21:00       ` Miguel Ojeda
@ 2026-08-11 21:17         ` Konstantin Ryabitsev
  2026-08-11 22:13           ` Miguel Ojeda
  0 siblings, 1 reply; 9+ messages in thread
From: Konstantin Ryabitsev @ 2026-08-11 21:17 UTC (permalink / raw)
  To: Miguel Ojeda
  Cc: Uwe Kleine-König, Francis Laniel, Michal Wilczynski,
	Miguel Ojeda, Benno Lossin, Gary Guo, Alexandre Courbot,
	Boqun Feng, Björn Roy Baron, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, linux-pwm, rust-for-linux,
	linux-kernel, tools

On Tue, Aug 11, 2026 at 11:00:54PM +0200, Miguel Ojeda wrote:
> > I added a special case where we ignore trailers we find in the follow-up if
> > these trailers already exist in the patch anyway, so, at least for this
> > particular case, the problem shouldn't resurface.
> 
> Hmm... I usually indent with 2 or 4 spaces my "non-tags" to
> distinguish them from actual tags; perhaps I should mark them
> differently? Is there a "standard" prefix to ignore them instead of
> several spaces?

Unfortunately, some prominent maintainers indent their code review trailers,
which is why we have to pay attention to those.

I generally recommend using "|" when adding trailers that aren't part of
actual code review, e.g.:

| Fixes: abcde12345 ("Foo bar baz")
| Reviewed-by: Alex Dev <adev@example.com>

These are guaranteed to be ignored.

-K

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11 21:17         ` Konstantin Ryabitsev
@ 2026-08-11 22:13           ` Miguel Ojeda
  0 siblings, 0 replies; 9+ messages in thread
From: Miguel Ojeda @ 2026-08-11 22:13 UTC (permalink / raw)
  To: Konstantin Ryabitsev
  Cc: Uwe Kleine-König, Francis Laniel, Michal Wilczynski,
	Miguel Ojeda, Benno Lossin, Gary Guo, Alexandre Courbot,
	Boqun Feng, Björn Roy Baron, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, linux-pwm, rust-for-linux,
	linux-kernel, tools

On Tue, Aug 11, 2026 at 11:17 PM Konstantin Ryabitsev <mricon@kernel.org> wrote:
>
> Unfortunately, some prominent maintainers indent their code review trailers,
> which is why we have to pay attention to those.
>
> I generally recommend using "|" when adding trailers that aren't part of
> actual code review, e.g.:
>
> | Fixes: abcde12345 ("Foo bar baz")
> | Reviewed-by: Alex Dev <adev@example.com>
>
> These are guaranteed to be ignored.

Sounds good, thanks! I will try to adapt :)

Cheers,
Miguel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11 20:54     ` Konstantin Ryabitsev
  2026-08-11 21:00       ` Miguel Ojeda
@ 2026-08-11 22:56       ` Uwe Kleine-König
  2026-08-11 23:01         ` Konstantin Ryabitsev
  1 sibling, 1 reply; 9+ messages in thread
From: Uwe Kleine-König @ 2026-08-11 22:56 UTC (permalink / raw)
  To: Konstantin Ryabitsev
  Cc: Francis Laniel, Michal Wilczynski, Miguel Ojeda, Benno Lossin,
	Gary Guo, Alexandre Courbot, Boqun Feng, Björn Roy Baron,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	linux-pwm, rust-for-linux, linux-kernel, tools

[-- Attachment #1: Type: text/plain, Size: 832 bytes --]

Hello Konstantin,

On Tue, Aug 11, 2026 at 04:54:47PM -0400, Konstantin Ryabitsev wrote:
> On Tue, Aug 11, 2026 at 07:04:49AM +0200, Uwe Kleine-König wrote:
> > I didn't research what went wrong there and the trailer made it into the
> > patch anyhow and adding -S doesn't change the patch. I added the
> > tools@k.o mailing list to Cc:, maybe someone there wants to debug that.
> 
> It was just Miguel responding with a suggestion how to better reorder
> trailers. Since we can't tell this case from the case when someone actually
> replies with a follow-up trailer, hence the error.

The strange thing from my POV is that before your mail Miguel didn't
participate in that thread according to
https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com .
I'm confused.

Best regards
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed`
  2026-08-11 22:56       ` Uwe Kleine-König
@ 2026-08-11 23:01         ` Konstantin Ryabitsev
  0 siblings, 0 replies; 9+ messages in thread
From: Konstantin Ryabitsev @ 2026-08-11 23:01 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Francis Laniel, Michal Wilczynski, Miguel Ojeda, Benno Lossin,
	Gary Guo, Alexandre Courbot, Boqun Feng, Björn Roy Baron,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	linux-pwm, rust-for-linux, linux-kernel, tools

On Wed, Aug 12, 2026 at 12:56:05AM +0200, Uwe Kleine-König wrote:
> On Tue, Aug 11, 2026 at 04:54:47PM -0400, Konstantin Ryabitsev wrote:
> > On Tue, Aug 11, 2026 at 07:04:49AM +0200, Uwe Kleine-König wrote:
> > > I didn't research what went wrong there and the trailer made it into the
> > > patch anyhow and adding -S doesn't change the patch. I added the
> > > tools@k.o mailing list to Cc:, maybe someone there wants to debug that.
> > 
> > It was just Miguel responding with a suggestion how to better reorder
> > trailers. Since we can't tell this case from the case when someone actually
> > replies with a follow-up trailer, hence the error.
> 
> The strange thing from my POV is that before your mail Miguel didn't
> participate in that thread according to
> https://patch.msgid.link/20260603160910.159307-1-laniel_francis@privacyrequired.com .
> I'm confused.

It came from v2 of the series and was carried over because the patch-id hasn't
changed (meaning it's the same patch, so any code review trailers still apply).

https://lore.kernel.org/all/CANiq72n+tyDcabpwZOR1gHb4mycbpTQbzr0QNgi9c48cSnrZ8w@mail.gmail.com/

-K


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-08-11 23:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20260603160927eucas1p1ae24e871a8ef0771d72fae6462d96318@eucas1p1.samsung.com>
2026-06-03 16:09 ` [PATCH v3] rust: pwm: replace `core::mem::zeroed` with `pin_init::zeroed` Francis Laniel
2026-07-27 11:15   ` Michal Wilczynski
2026-08-11  5:04   ` Uwe Kleine-König
2026-08-11 20:54     ` Konstantin Ryabitsev
2026-08-11 21:00       ` Miguel Ojeda
2026-08-11 21:17         ` Konstantin Ryabitsev
2026-08-11 22:13           ` Miguel Ojeda
2026-08-11 22:56       ` Uwe Kleine-König
2026-08-11 23:01         ` Konstantin Ryabitsev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox