diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-01-19 10:24:11 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-01-19 10:24:11 +0100 |
| commit | 5ac87cd859eca21ebf657d94affd29f40003bede (patch) | |
| tree | 7323330be011e06131e279c0c108b59f94d70a2d /rust/kernel/maple_tree.rs | |
| parent | fa3bb5011f33cccd246072954e64d64483d0d774 (diff) | |
| parent | 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 (diff) | |
Merge 6.19-rc6 usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'rust/kernel/maple_tree.rs')
| -rw-r--r-- | rust/kernel/maple_tree.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/rust/kernel/maple_tree.rs b/rust/kernel/maple_tree.rs index e72eec56bf57..265d6396a78a 100644 --- a/rust/kernel/maple_tree.rs +++ b/rust/kernel/maple_tree.rs @@ -265,7 +265,16 @@ impl<T: ForeignOwnable> MapleTree<T> { loop { // This uses the raw accessor because we're destroying pointers without removing them // from the maple tree, which is only valid because this is the destructor. - let ptr = ma_state.mas_find_raw(usize::MAX); + // + // Take the rcu lock because mas_find_raw() requires that you hold either the spinlock + // or the rcu read lock. This is only really required if memory reclaim might + // reallocate entries in the tree, as we otherwise have exclusive access. That feature + // doesn't exist yet, so for now, taking the rcu lock only serves the purpose of + // silencing lockdep. + let ptr = { + let _rcu = kernel::sync::rcu::Guard::new(); + ma_state.mas_find_raw(usize::MAX) + }; if ptr.is_null() { break; } |
