lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c7662771-ea67-43ae-a4b2-6ffac29c0509@proton.me>
Date: Wed, 25 Oct 2023 07:36:13 +0000
From: Benno Lossin <benno.lossin@...ton.me>
To: FUJITA Tomonori <fujita.tomonori@...il.com>
Cc: netdev@...r.kernel.org, rust-for-linux@...r.kernel.org, andrew@...n.ch, tmgross@...ch.edu, miguel.ojeda.sandonis@...il.com, wedsonaf@...il.com, greg@...ah.com, ojeda@...nel.org
Subject: Re: [PATCH net-next v6 3/5] rust: add second `bindgen` pass for enum exhaustiveness checking

On 25.10.23 03:33, FUJITA Tomonori wrote:
> On Tue, 24 Oct 2023 16:29:16 +0000
> Benno Lossin <benno.lossin@...ton.me> wrote:
> 
>> On 24.10.23 02:58, FUJITA Tomonori wrote:
>>> From: Miguel Ojeda <ojeda@...nel.org>
>>
>> I think this commit message should also explain what it is
>> doing and not only the error below.
> 
> Looks ok?
> 
> This patch makes sure that the C's enum phy_state is sync with Rust
> sides. If not, compiling fails. Note that this is a temporary
> solution. It will be replaced with bindgen when it supports generating
> the enum conversion code.

The solution that is implemented does not only work for `phy_state`, but
also other enums (you still have to manually add them). Also it would be
good to say that the error below is the error that one will receive when
the enum is out of sync/not all C variants are in Rust.

-- 
Cheers,
Benno

> 
>      error[E0005]: refutable pattern in function argument
>           --> rust/bindings/bindings_enum_check.rs:29:6
>            |
>      29    |       (phy_state::PHY_DOWN
>            |  ______^
>      30    | |     | phy_state::PHY_READY
>      31    | |     | phy_state::PHY_HALTED
>      32    | |     | phy_state::PHY_ERROR
>      ...     |
>      35    | |     | phy_state::PHY_NOLINK
>      36    | |     | phy_state::PHY_CABLETEST): phy_state,
>            | |______________________________^ pattern `phy_state::PHY_NEW` not covered
>            |
>      note: `phy_state` defined here
>           --> rust/bindings/bindings_generated_enum_check.rs:60739:10
>            |
>      60739 | pub enum phy_state {
>            |          ^^^^^^^^^
>      ...
>      60745 |     PHY_NEW = 5,
>            |     ------- not covered
>            = note: the matched value is of type `phy_state`
> 



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ