mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
rust: block: fix wrong usage of lockdep API
When allocating `struct gendisk`, `GenDiskBuilder` is using a dynamic
lock class key without registering the key. This is an incorrect use of
the API, which causes a `WARN` trace.
Fix the issue by using a static lock class key, which is more appropriate
for the situation anyway.
Fixes: 3253aba340
("rust: block: introduce `kernel::block::mq` module")
Reported-by: Behme Dirk (XC-CP/ESB5) <Dirk.Behme@de.bosch.com>
Closes: https://rust-for-linux.zulipchat.com/#narrow/stream/x/topic/x/near/457090036
Signed-off-by: Andreas Hindborg <a.hindborg@samsung.com>
Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
Link: https://lore.kernel.org/r/20240815074519.2684107-3-nmi@metaspace.dk
[ Applied `rustfmt`, reworded slightly and made Zulip link
a permalink. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
b8673d5693
commit
fd764e74e5
@ -6,8 +6,8 @@
|
||||
//! C header: [`include/linux/blk_mq.h`](srctree/include/linux/blk_mq.h)
|
||||
|
||||
use crate::block::mq::{raw_writer::RawWriter, Operations, TagSet};
|
||||
use crate::error;
|
||||
use crate::{bindings, error::from_err_ptr, error::Result, sync::Arc};
|
||||
use crate::{error, static_lock_class};
|
||||
use core::fmt::{self, Write};
|
||||
|
||||
/// A builder for [`GenDisk`].
|
||||
@ -93,8 +93,6 @@ impl GenDiskBuilder {
|
||||
name: fmt::Arguments<'_>,
|
||||
tagset: Arc<TagSet<T>>,
|
||||
) -> Result<GenDisk<T>> {
|
||||
let lock_class_key = crate::sync::LockClassKey::new();
|
||||
|
||||
// SAFETY: `bindings::queue_limits` contain only fields that are valid when zeroed.
|
||||
let mut lim: bindings::queue_limits = unsafe { core::mem::zeroed() };
|
||||
|
||||
@ -110,7 +108,7 @@ impl GenDiskBuilder {
|
||||
tagset.raw_tag_set(),
|
||||
&mut lim,
|
||||
core::ptr::null_mut(),
|
||||
lock_class_key.as_ptr(),
|
||||
static_lock_class!().as_ptr(),
|
||||
)
|
||||
})?;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user