From: Jerome Glisse <jglisse@redhat.com>
To: Tejun Heo <tj@kernel.org>
Cc: torvalds@linux-foundation.org, jannh@google.com,
paulmck@linux.vnet.ibm.com, bcrl@kvack.org,
viro@zeniv.linux.org.uk, kent.overstreet@gmail.com,
security@kernel.org, linux-kernel@vger.kernel.org,
kernel-team@fb.com, linux-mm@kvack.org
Subject: Re: [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup
Date: Tue, 6 Mar 2018 12:59:48 -0500 [thread overview]
Message-ID: <20180306175948.GA4791@redhat.com> (raw)
In-Reply-To: <20180306173316.3088458-4-tj@kernel.org>
On Tue, Mar 06, 2018 at 09:33:13AM -0800, Tejun Heo wrote:
> 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>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
> Cc: linux-mm@kvack.org
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> ---
> Hello, Jerome.
>
> 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.
Good catch some left over of old logic. I have more cleanup queued up
now that i am about to post nouveau patches to use all this. Thanks for
fixing this.
>
> 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>
WARNING: multiple messages have this Message-ID (diff)
From: Jerome Glisse <jglisse@redhat.com>
To: Tejun Heo <tj@kernel.org>
Cc: torvalds@linux-foundation.org, jannh@google.com,
paulmck@linux.vnet.ibm.com, bcrl@kvack.org,
viro@zeniv.linux.org.uk, kent.overstreet@gmail.com,
security@kernel.org, linux-kernel@vger.kernel.org,
kernel-team@fb.com, linux-mm@kvack.org
Subject: Re: [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup
Date: Tue, 6 Mar 2018 12:59:48 -0500 [thread overview]
Message-ID: <20180306175948.GA4791@redhat.com> (raw)
In-Reply-To: <20180306173316.3088458-4-tj@kernel.org>
On Tue, Mar 06, 2018 at 09:33:13AM -0800, Tejun Heo wrote:
> 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>
Reviewed-by: 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.
Good catch some left over of old logic. I have more cleanup queued up
now that i am about to post nouveau patches to use all this. Thanks for
fixing this.
>
> 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
>
next prev parent reply other threads:[~2018-03-06 17:59 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 ` [PATCH 4/7] HMM: Remove superflous RCU protection around radix tree lookup Tejun Heo
2018-03-06 17:33 ` Tejun Heo
2018-03-06 17:59 ` Jerome Glisse [this message]
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=20180306175948.GA4791@redhat.com \
--to=jglisse@redhat.com \
--cc=bcrl@kvack.org \
--cc=jannh@google.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=tj@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: link
Be 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.