On 1/31/22 05:36, Jason Gunthorpe wrote:
...
@@ -968,15 +966,15 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask,
if (flags & MPOL_F_NODE) {
if (flags & MPOL_F_ADDR) {
/*
- * Take a refcount on the mpol, lookup_node()
- * will drop the mmap_lock, so after calling
- * lookup_node() only "pol" remains valid, "vma"
- * is stale.
+ * Take a refcount on the mpol, because we are about to
+ * drop the mmap_lock, after which only "pol" remains
+ * valid, "vma" is stale.
*/
pol_refcount = pol;
vma = NULL;
mpol_get(pol);
err = lookup_node(mm, addr);
+ mmap_read_unlock(mm);
How about move the mmap_read_unlock up one line and then use
get_user_pages_fast()
I'm guessing in most cases here the PTE will be present so that should
be a net win?
Neat, I'll do that.
thanks,
--
John Hubbard
NVIDIA