Re: [PATCH v4] rust: num: restrict bool conversion to unsigned Bounded
"Alexandre Courbot" <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On Sat Aug 22, 2026 at 5:44 PM JST, Younes Akhouayri via B4 Relay wrote: > From: Younes Akhouayri <[email protected]> > > From<bool> turns true into 1. A signed Bounded with N = 1 can hold > only -1 and 0. The current implementation can therefore create a value > that breaks Bounded's invariant. Deref relies on that invariant and > calls unreachable_unchecked() when it is broken, so safe Rust can reach > undefined behavior. > > The other primitive conversions require the source and destination to > have the same signedness. Treat bool as an unsigned one-bit value and > allow conversions between bool and Bounded only when the backing integer > type is unsigned. > > Fixes: 01e345e82ec3 ("rust: num: add Bounded integer wrapping type") > Closes: https://lore.kernel.org/rust-for-linux/[email protected]/ > Cc: [email protected] > Suggested-by: Alexandre Courbot <[email protected]> > Assisted-by: Codex:gpt-5.6-sol > Signed-off-by: Younes Akhouayri <[email protected]> Thanks for this fix! Reviewed-by: Alexandre Courbot <[email protected]>