From: Tejun Heo <tj@kernel.org> To: torvalds@linux-foundation.org, jannh@google.com, paulmck@linux.vnet.ibm.com, bcrl@kvack.org, viro@zeniv.linux.org.uk, kent.overstreet@gmail.com Cc: security@kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com, "Tejun Heo" <tj@kernel.org>, "Jérôme Glisse" <jglisse@redhat.com>, linux-mm@kvack.org Subject: [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup Date: Tue, 6 Mar 2018 09:33:13 -0800 [thread overview] Message-ID: <20180306173316.3088458-4-tj@kernel.org> (raw) In-Reply-To: <20180306173316.3088458-1-tj@kernel.org> 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 superflous 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. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jérôme Glisse <jglisse@redhat.com> Cc: linux-mm@kvack.org Cc: Linus Torvalds <torvalds@linux-foundation.org> --- Hello, Jérôme. This came up while auditing percpu_ref users for missing explicit RCU grace periods. HMM doesn't seem to depend on RCU protection at all, so I thought it'd be better to remove it for now. It's only compile tested. Thanks. mm/hmm.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/mm/hmm.c b/mm/hmm.c index 320545b98..d4627c5 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -845,13 +845,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; @@ -892,9 +885,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)); -- 2.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org> To: torvalds@linux-foundation.org, jannh@google.com, paulmck@linux.vnet.ibm.com, bcrl@kvack.org, viro@zeniv.linux.org.uk, kent.overstreet@gmail.com Cc: security@kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com, "Tejun Heo" <tj@kernel.org>, "Jérôme Glisse" <jglisse@redhat.com>, linux-mm@kvack.org Subject: [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup Date: Tue, 6 Mar 2018 09:33:13 -0800 [thread overview] Message-ID: <20180306173316.3088458-4-tj@kernel.org> (raw) In-Reply-To: <20180306173316.3088458-1-tj@kernel.org> 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 superflous 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. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: JA(C)rA'me Glisse <jglisse@redhat.com> Cc: linux-mm@kvack.org Cc: Linus Torvalds <torvalds@linux-foundation.org> --- Hello, JA(C)rA'me. This came up while auditing percpu_ref users for missing explicit RCU grace periods. HMM doesn't seem to depend on RCU protection at all, so I thought it'd be better to remove it for now. It's only compile tested. Thanks. mm/hmm.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/mm/hmm.c b/mm/hmm.c index 320545b98..d4627c5 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -845,13 +845,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; @@ -892,9 +885,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)); -- 2.9.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2018-03-06 17:33 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-06 17:26 [PATCHSET] percpu_ref, RCU: Audit RCU usages in percpu_ref users Tejun Heo 2018-03-06 17:33 ` [PATCH 1/7] fs/aio: Add explicit RCU grace period when freeing kioctx Tejun Heo 2018-03-06 17:33 ` [PATCH 2/7] fs/aio: Use RCU accessors for kioctx_table->table[] Tejun Heo 2018-03-06 17:33 ` [PATCH 3/7] RDMAVT: Fix synchronization around percpu_ref Tejun Heo 2018-03-07 15:39 ` Dennis Dalessandro 2018-03-06 17:33 ` Tejun Heo [this message] 2018-03-06 17:33 ` [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup Tejun Heo 2018-03-06 17:59 ` Jerome Glisse 2018-03-06 17:59 ` Jerome Glisse 2018-03-06 17:33 ` [PATCH 5/7] block: Remove superflous rcu_read_[un]lock_sched() in blk_queue_enter() Tejun Heo 2018-03-06 17:52 ` Bart Van Assche 2018-03-14 18:46 ` tj 2018-03-14 20:05 ` Bart Van Assche 2018-03-14 20:08 ` Peter Zijlstra 2018-03-14 20:14 ` Bart Van Assche 2018-03-06 17:33 ` [PATCH 6/7] percpu_ref: Update doc to dissuade users from depending on internal RCU grace periods Tejun Heo 2018-03-06 17:33 ` [PATCH 7/7] RCU, workqueue: Implement rcu_work Tejun Heo 2018-03-06 18:30 ` Linus Torvalds 2018-03-09 15:37 ` Tejun Heo 2018-03-07 2:49 ` Lai Jiangshan 2018-03-07 14:54 ` Paul E. McKenney 2018-03-07 16:23 ` Peter Zijlstra 2018-03-07 17:58 ` Paul E. McKenney 2018-03-08 0:29 ` Lai Jiangshan 2018-03-08 17:28 ` Paul E. McKenney 2018-03-09 16:21 ` Tejun Heo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180306173316.3088458-4-tj@kernel.org \ --to=tj@kernel.org \ --cc=bcrl@kvack.org \ --cc=jannh@google.com \ --cc=jglisse@redhat.com \ --cc=kent.overstreet@gmail.com \ --cc=kernel-team@fb.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=paulmck@linux.vnet.ibm.com \ --cc=security@kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.