diff options
Diffstat (limited to 'rust/kernel/pci.rs')
-rw-r--r-- | rust/kernel/pci.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs index d5e7f0b15303..4c98b5b9aa1e 100644 --- a/rust/kernel/pci.rs +++ b/rust/kernel/pci.rs @@ -23,10 +23,12 @@ use kernel::prelude::*; /// An adapter for the registration of PCI drivers. pub struct Adapter<T: Driver>(T); -impl<T: Driver + 'static> driver::RegistrationOps for Adapter<T> { +// SAFETY: A call to `unregister` for a given instance of `RegType` is guaranteed to be valid if +// a preceding call to `register` has been successful. +unsafe impl<T: Driver + 'static> driver::RegistrationOps for Adapter<T> { type RegType = bindings::pci_driver; - fn register( + unsafe fn register( pdrv: &Opaque<Self::RegType>, name: &'static CStr, module: &'static ThisModule, @@ -45,7 +47,7 @@ impl<T: Driver + 'static> driver::RegistrationOps for Adapter<T> { }) } - fn unregister(pdrv: &Opaque<Self::RegType>) { + unsafe fn unregister(pdrv: &Opaque<Self::RegType>) { // SAFETY: `pdrv` is guaranteed to be a valid `RegType`. unsafe { bindings::pci_unregister_driver(pdrv.get()) } } |