rust: enable `clippy::undocumented_unsafe_blocks` lint
authorMiguel Ojeda <ojeda@kernel.org>
Wed, 4 Sep 2024 20:43:32 +0000 (22:43 +0200)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 7 Oct 2024 19:39:05 +0000 (21:39 +0200)
commitdb4f72c904cb116e2bf56afdd67fc5167a607a7b
tree594e72551aeda1a38bbf185f3e10e68443871f7e
parent567cdff53e71de56ae67eaf4309db38778b7bcd3
rust: enable `clippy::undocumented_unsafe_blocks` lint

Checking that we are not missing any `// SAFETY` comments in our `unsafe`
blocks is something we have wanted to do for a long time, as well as
cleaning up the remaining cases that were not documented [1].

Back when Rust for Linux started, this was something that could have
been done via a script, like Rust's `tidy`. Soon after, in Rust 1.58.0,
Clippy implemented the `undocumented_unsafe_blocks` lint [2].

Even though the lint has a few false positives, e.g. in some cases where
attributes appear between the comment and the `unsafe` block [3], there
are workarounds and the lint seems quite usable already.

Thus enable the lint now.

We still have a few cases to clean up, so just allow those for the moment
by writing a `TODO` comment -- some of those may be good candidates for
new contributors.

Link: https://github.com/Rust-for-Linux/linux/issues/351
Link: https://rust-lang.github.io/rust-clippy/master/#/undocumented_unsafe_blocks
Link: https://github.com/rust-lang/rust-clippy/issues/13189
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Trevor Gross <tmgross@umich.edu>
Tested-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://lore.kernel.org/r/20240904204347.168520-5-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
16 files changed:
Makefile
mm/kasan/kasan_test_rust.rs
rust/bindings/lib.rs
rust/kernel/alloc/allocator.rs
rust/kernel/error.rs
rust/kernel/init.rs
rust/kernel/init/__internal.rs
rust/kernel/init/macros.rs
rust/kernel/list.rs
rust/kernel/print.rs
rust/kernel/str.rs
rust/kernel/sync/condvar.rs
rust/kernel/sync/lock.rs
rust/kernel/types.rs
rust/kernel/workqueue.rs
rust/uapi/lib.rs