diff options
author | Alice Ryhl <aliceryhl@google.com> | 2024-10-22 13:14:13 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-10-22 15:53:15 +0200 |
commit | bd5ee6bcc51b617d28e54069fef818751763962b (patch) | |
tree | 37ff64fe1142b8672590fce0a69b5ad4ab6f30b3 /rust | |
parent | d723c456ef5ad60d368e62791004fd152c4380aa (diff) |
rust: miscdevice: add missing safety comments
This fixes the following four warnings:
warning: unsafe block missing a safety comment
--> /home/aliceryhl/rust-for-linux/rust/kernel/miscdevice.rs:168:15
|
168 | ..unsafe { MaybeUninit::zeroed().assume_init() }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: consider adding a safety comment on the preceding line
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#undocumented_unsafe_blocks
= note: requested on the command line with `-W clippy::undocumented-unsafe-blocks`
warning: unsafe function's docs are missing a `# Safety` section
--> /home/aliceryhl/rust-for-linux/rust/kernel/miscdevice.rs:175:1
|
175 | / unsafe extern "C" fn fops_open<T: MiscDevice>(
176 | | inode: *mut bindings::inode,
177 | | file: *mut bindings::file,
178 | | ) -> c_int {
| |__________^
|
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
= note: `-W clippy::missing-safety-doc` implied by `-W clippy::all`
= help: to override `-W clippy::all` add `#[allow(clippy::missing_safety_doc)]`
warning: unsafe function's docs are missing a `# Safety` section
--> /home/aliceryhl/rust-for-linux/rust/kernel/miscdevice.rs:196:1
|
196 | / unsafe extern "C" fn fops_release<T: MiscDevice>(
197 | | _inode: *mut bindings::inode,
198 | | file: *mut bindings::file,
199 | | ) -> c_int {
| |__________^
|
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
warning: unsafe function's docs are missing a `# Safety` section
--> /home/aliceryhl/rust-for-linux/rust/kernel/miscdevice.rs:210:1
|
210 | / unsafe extern "C" fn fops_ioctl<T: MiscDevice>(
211 | | file: *mut bindings::file,
212 | | cmd: c_uint,
213 | | arg: c_ulong,
214 | | ) -> c_long {
| |___________^
|
= help: for further information visit
https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
Note that these warnings are currently not enabled in the build, but
rust-next contains a commit that will enable them, so we should fix
them.
Reported-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Closes: https://lore.kernel.org/rust-for-linux/CANiq72kOs6vPDUzZttQNqePFHphCQ30iVmZ5MO7eCJfPG==Vzg@mail.gmail.com/
Acked-by: Miguel Ojeda <ojeda@kernel.org>
Link: https://lore.kernel.org/r/20241022-miscdevice-unsafe-warn-fix-v1-1-a78fde1740d6@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'rust')
-rw-r--r-- | rust/kernel/miscdevice.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/rust/kernel/miscdevice.rs b/rust/kernel/miscdevice.rs index 50885fb511bf..7e2a79b3ae26 100644 --- a/rust/kernel/miscdevice.rs +++ b/rust/kernel/miscdevice.rs @@ -165,6 +165,7 @@ const fn create_vtable<T: MiscDevice>() -> &'static bindings::file_operations { } else { None }, + // SAFETY: All zeros is a valid value for `bindings::file_operations`. ..unsafe { MaybeUninit::zeroed().assume_init() } }; } @@ -172,6 +173,10 @@ const fn create_vtable<T: MiscDevice>() -> &'static bindings::file_operations { &VtableHelper::<T>::VTABLE } +/// # Safety +/// +/// `file` and `inode` must be the file and inode for a file that is undergoing initialization. +/// The file must be associated with a `MiscDeviceRegistration<T>`. unsafe extern "C" fn fops_open<T: MiscDevice>( inode: *mut bindings::inode, file: *mut bindings::file, @@ -193,6 +198,10 @@ unsafe extern "C" fn fops_open<T: MiscDevice>( 0 } +/// # Safety +/// +/// `file` and `inode` must be the file and inode for a file that is being released. The file must +/// be associated with a `MiscDeviceRegistration<T>`. unsafe extern "C" fn fops_release<T: MiscDevice>( _inode: *mut bindings::inode, file: *mut bindings::file, @@ -207,6 +216,9 @@ unsafe extern "C" fn fops_release<T: MiscDevice>( 0 } +/// # Safety +/// +/// `file` must be a valid file that is associated with a `MiscDeviceRegistration<T>`. unsafe extern "C" fn fops_ioctl<T: MiscDevice>( file: *mut bindings::file, cmd: c_uint, @@ -223,6 +235,9 @@ unsafe extern "C" fn fops_ioctl<T: MiscDevice>( } } +/// # Safety +/// +/// `file` must be a valid file that is associated with a `MiscDeviceRegistration<T>`. #[cfg(CONFIG_COMPAT)] unsafe extern "C" fn fops_compat_ioctl<T: MiscDevice>( file: *mut bindings::file, |