The Guard type for locks is marked with a #[must_use] annotation like this:
|
#[must_use = "the lock unlocks immediately when the guard is unused"] |
|
pub struct Guard<'a, T: ?Sized, B: Backend> { |
This means that trying to use Lock::lock without using the return value will result in a warning. However, this warning does not happen with Lock::try_lock, since it returns an Option<Guard<...>> and the Option type is not #[must_use].
|
/// Tries to acquire the lock. |
|
/// |
|
/// Returns a guard that can be used to access the data protected by the lock if successful. |
|
pub fn try_lock(&self) -> Option<Guard<'_, T, B>> { |
|
// SAFETY: The constructor of the type calls `init`, so the existence of the object proves |
|
// that `init` was called. |
|
unsafe { B::try_lock(self.state.get()).map(|state| Guard::new(self, state)) } |
|
} |
To fix this, add a #[must_use] annotation to Lock::try_lock directly.
This requires submitting a proper patch to the LKML and the Rust for Linux mailing list. Please recall to test your changes (including generating the documentation if changed, running the Rust doctests if changed, etc.), to use a proper title for the commit, to sign your commit under the Developer's Certificate of Origin and to add a Suggested-by: tag and a Link: tag to this issue. Please see https://rust-for-linux.com/contributing for details.
Please take this issue only if you are new to the kernel development process and you would like to use it as a test to submit your first patch to the kernel. Please do not take it if you do not plan to make other contributions to the kernel.
The
Guardtype for locks is marked with a#[must_use]annotation like this:linux/rust/kernel/sync/lock.rs
Lines 162 to 163 in 40384c8
This means that trying to use
Lock::lockwithout using the return value will result in a warning. However, this warning does not happen withLock::try_lock, since it returns anOption<Guard<...>>and theOptiontype is not#[must_use].linux/rust/kernel/sync/lock.rs
Lines 147 to 154 in 40384c8
To fix this, add a
#[must_use]annotation toLock::try_lockdirectly.This requires submitting a proper patch to the LKML and the Rust for Linux mailing list. Please recall to test your changes (including generating the documentation if changed, running the Rust doctests if changed, etc.), to use a proper title for the commit, to sign your commit under the Developer's Certificate of Origin and to add a
Suggested-by: tagand aLink:tag to this issue. Please see https://rust-for-linux.com/contributing for details.Please take this issue only if you are new to the kernel development process and you would like to use it as a test to submit your first patch to the kernel. Please do not take it if you do not plan to make other contributions to the kernel.