From: Davidlohr Bueso <dave@stgolabs.net>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: starvik@axis.com, jesper.nilsson@axis.com,
akpm@linux-foundation.org, linux-cris-kernel@axis.com,
linux-kernel@vger.kernel.org, Davidlohr Bueso <dbueso@suse.de>
Subject: Re: [PATCH] arch/cris: use get_user_pages_fast()
Date: Sun, 21 Jan 2018 15:48:28 -0800 [thread overview]
Message-ID: <20180121234828.fro77k4pr2b364y6@linux-n805> (raw)
In-Reply-To: <20180121233943.GO13338@ZenIV.linux.org.uk>
On Sun, 21 Jan 2018, Al Viro wrote:
>On Sun, Jan 21, 2018 at 02:59:29PM -0800, Davidlohr Bueso wrote:
>> Since we currently hold mmap_sem across both gup calls (and
>> nothing more), we can substitute it with two _fast()
>> alternatives and possibly avoid grabbing the lock.
>>
>> This was found while adding mmap_sem wrappers, and was also
>> previously reported by Al: https://lkml.org/lkml/2017/11/17/777
>
>See commit 9a949e8ff92246c0753b2805c2a001cb991fffe5
>Author: Al Viro <viro@zeniv.linux.org.uk>
>Date: Sat Nov 18 14:37:46 2017 -0500
>
> cris: switch to get_user_pages_fast()
>
> no point holding ->mmap_sem over both calls.
>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Serves me for developing on Linus' tree, cool.
Now, regarding the other two which are technically bugs (not
holding mmap_sem under gup), you mention I don't see those in
next, so I'm assuming you didn't get to them.
- mthca_map_user_db(): I came to the same conclusion and tempted
to send out the same idea of unlocking the mutex for gup_fast()
so we can take mmap_sem if needed.
- ia64's store_virtual_to_phys() is a sysfs attribute and
holds no (other) locks. How about we just convert it as well?
diff --git a/arch/ia64/kernel/err_inject.c b/arch/ia64/kernel/err_inject.c
index 85bba43e7d5d..658a8e06a69b 100644
--- a/arch/ia64/kernel/err_inject.c
+++ b/arch/ia64/kernel/err_inject.c
@@ -142,7 +142,7 @@ store_virtual_to_phys(struct device *dev, struct device_attribute *attr,
u64 virt_addr=simple_strtoull(buf, NULL, 16);
int ret;
- ret = get_user_pages(virt_addr, 1, FOLL_WRITE, NULL, NULL);
+ ret = get_user_pages_fast(virt_addr, 1, FOLL_WRITE, NULL);
if (ret<=0) {
#ifdef ERR_INJ_DEBUG
printk("Virtual address %lx is not existing.\n",virt_addr);
Thanks,
Davidlohr
prev parent reply other threads:[~2018-01-21 23:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-21 22:59 [PATCH] arch/cris: use get_user_pages_fast() Davidlohr Bueso
2018-01-21 23:39 ` Al Viro
2018-01-21 23:48 ` Davidlohr Bueso [this message]
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=20180121234828.fro77k4pr2b364y6@linux-n805 \
--to=dave@stgolabs.net \
--cc=akpm@linux-foundation.org \
--cc=dbueso@suse.de \
--cc=jesper.nilsson@axis.com \
--cc=linux-cris-kernel@axis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=starvik@axis.com \
--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.