summaryrefslogtreecommitdiff
path: root/rust/kernel
diff options
context:
space:
mode:
authorGeorgios Androutsopoulos <georgeandrout13@gmail.com>2026-09-08 18:56:15 -0400
committerBrian Masney <bmasney@redhat.com>2026-09-23 15:33:44 -0400
commit45a68afbd4b632538a0956ba783fca45b8ceb446 (patch)
treefeb0aece4448a07d1a9eb8df2a745f5c8df63e2d /rust/kernel
parent4e39820b601221997cb2220edc830f92367cdfc2 (diff)
downloadlinux-45a68afbd4b632538a0956ba783fca45b8ceb446.tar.gz
linux-45a68afbd4b632538a0956ba783fca45b8ceb446.zip
rust: clk: document overflow panics in `Hertz` constructors
`Hertz::from_khz()`, `from_mhz()` and `from_ghz()` multiply their argument by 1_000, 1_000_000 and 1_000_000_000 respectively without checking for overflow. When `CONFIG_RUST_OVERFLOW_CHECKS` is enabled, each panics once its argument exceeds `c_ulong::MAX` divided by that factor. None of the three documents this. The panic occurs only at runtime, when the argument is not a constant expression. Add the missing `# Panics` sections stating the bound for each unit. Fixes: d01d70205601 ("rust: clk: Add initial abstractions") Signed-off-by: Georgios Androutsopoulos <georgeandrout13@gmail.com> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com> Acked-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Brian Masney <bmasney@redhat.com>
Diffstat (limited to 'rust/kernel')
-rw-r--r--rust/kernel/clk.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/rust/kernel/clk.rs b/rust/kernel/clk.rs
index 7abbd0767d8c..f04f5c4a03d6 100644
--- a/rust/kernel/clk.rs
+++ b/rust/kernel/clk.rs
@@ -35,16 +35,31 @@ impl Hertz {
const GHZ_TO_HZ: c_ulong = 1_000_000_000;
/// Create a new instance from kilohertz (kHz)
+ ///
+ /// # Panics
+ ///
+ /// Panics if `CONFIG_RUST_OVERFLOW_CHECKS` is enabled and `khz` is greater
+ /// than `c_ulong::MAX / 1_000`.
pub const fn from_khz(khz: c_ulong) -> Self {
Self(khz * Self::KHZ_TO_HZ)
}
/// Create a new instance from megahertz (MHz)
+ ///
+ /// # Panics
+ ///
+ /// Panics if `CONFIG_RUST_OVERFLOW_CHECKS` is enabled and `mhz` is greater
+ /// than `c_ulong::MAX / 1_000_000`.
pub const fn from_mhz(mhz: c_ulong) -> Self {
Self(mhz * Self::MHZ_TO_HZ)
}
/// Create a new instance from gigahertz (GHz)
+ ///
+ /// # Panics
+ ///
+ /// Panics if `CONFIG_RUST_OVERFLOW_CHECKS` is enabled and `ghz` is greater
+ /// than `c_ulong::MAX / 1_000_000_000`.
pub const fn from_ghz(ghz: c_ulong) -> Self {
Self(ghz * Self::GHZ_TO_HZ)
}