Skip to content

Commit

Permalink
mm/hmm.c: remove superfluous RCU protection around radix tree lookup
Browse files Browse the repository at this point in the history
hmm_devmem_find() requires rcu_read_lock_held() but there's nothing which
actually uses the RCU protection.  The only caller is
hmm_devmem_pages_create() which already grabs the mutex and does
superfluous rcu_read_lock/unlock() around the function.

This doesn't add anything and just adds to confusion.  Remove the RCU
protection and open-code the radix tree lookup.  If this needs to become
more sophisticated in the future, let's add them back when necessary.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Tejun Heo <[email protected]>
Reviewed-by: Jérôme Glisse <[email protected]>
Cc: Paul E. McKenney <[email protected]>
Cc: Benjamin LaHaise <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Kent Overstreet <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
htejun authored and torvalds committed Apr 11, 2018
1 parent f88a1e9 commit 18be460
Showing 1 changed file with 2 additions and 10 deletions.
12 changes: 2 additions & 10 deletions mm/hmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1024,13 +1024,6 @@ static void hmm_devmem_release(struct device *dev, void *data)
hmm_devmem_radix_release(resource);
}

static struct hmm_devmem *hmm_devmem_find(resource_size_t phys)
{
WARN_ON_ONCE(!rcu_read_lock_held());

return radix_tree_lookup(&hmm_devmem_radix, phys >> PA_SECTION_SHIFT);
}

static int hmm_devmem_pages_create(struct hmm_devmem *devmem)
{
resource_size_t key, align_start, align_size, align_end;
Expand Down Expand Up @@ -1071,9 +1064,8 @@ static int hmm_devmem_pages_create(struct hmm_devmem *devmem)
for (key = align_start; key <= align_end; key += PA_SECTION_SIZE) {
struct hmm_devmem *dup;

rcu_read_lock();
dup = hmm_devmem_find(key);
rcu_read_unlock();
dup = radix_tree_lookup(&hmm_devmem_radix,
key >> PA_SECTION_SHIFT);
if (dup) {
dev_err(device, "%s: collides with mapping for %s\n",
__func__, dev_name(dup->device));
Expand Down

0 comments on commit 18be460

Please sign in to comment.