diff options
Diffstat (limited to 'rust/kernel/i2c.rs')
| -rw-r--r-- | rust/kernel/i2c.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 31f2cfe6be31..2d2191164e25 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -149,8 +149,10 @@ impl<T: Driver> Adapter<T> { // INVARIANT: `idev` is valid for the duration of `probe_callback()`. let idev = unsafe { &*idev.cast::<I2cClient<device::CoreInternal<'_>>>() }; - let info = - Self::i2c_id_info(idev).or_else(|| <Self as driver::Adapter>::id_info(idev.as_ref())); + let info = Self::i2c_id_info(idev).or_else(|| { + // SAFETY: `idev` matched data is of type `Self::IdInfo`. + unsafe { <Self as driver::Adapter>::id_info(idev.as_ref()) } + }); from_result(|| { let data = T::probe(idev, info); |
