From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrea Arcangeli <aarcange@redhat.com>
Cc: Rik van Riel <riel@redhat.com>, Dan Carpenter <error27@gmail.com>,
Izik Eidus <ieidus@redhat.com>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel-janitors@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [patch] ksm: check for ERR_PTR from follow_page()
Date: Wed, 21 Apr 2010 20:53:05 +0000 [thread overview]
Message-ID: <20100421205305.GO20640@cmpxchg.org> (raw)
In-Reply-To: <20100421174615.GO32034@random.random>
On Wed, Apr 21, 2010 at 07:46:15PM +0200, Andrea Arcangeli wrote:
> On Wed, Apr 21, 2010 at 11:24:24AM -0400, Rik van Riel wrote:
> > On 04/21/2010 06:27 AM, Dan Carpenter wrote:
> > > The follow_page() function can potentially return -EFAULT so I added
> > > checks for this.
> > >
> > > Also I silenced an uninitialized variable warning on my version of gcc
> > > (version 4.3.2).
> > >
> > > Signed-off-by: Dan Carpenter<error27@gmail.com>
> >
> > Acked-by: Rik van Riel <riel@redhat.com>
>
> while (!(page = follow_page(vma, start, foll_flags)))
> {
>
> gup only checks for null, so when exactly is follow_page going to
> return -EFAULT? It's not immediately clear.
Check below that loop. If it returns non-null, the first check is
whether it IS_ERR().
How about the below?
Hannes
---
From: Johannes Weiner <hannes@cmpxchg.org>
Subject: mm: document follow_page()
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
---
mm/memory.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/mm/memory.c b/mm/memory.c
index 833952d..119b7cc 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1227,8 +1227,17 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
}
EXPORT_SYMBOL_GPL(zap_vma_ptes);
-/*
- * Do a quick page-table lookup for a single page.
+/**
+ * follow_page - look up a page descriptor from a user-virtual address
+ * @vma: vm_area_struct mapping @address
+ * @address: virtual address to look up
+ * @flags: flags modifying lookup behaviour
+ *
+ * @flags can have FOLL_ flags set, defined in <linux/mm.h>
+ *
+ * Returns the mapped (struct page *), %NULL if no mapping exists, or
+ * an error pointer if there is a mapping to something not represented
+ * by a page descriptor (see also vm_normal_page()).
*/
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int flags)
--
1.7.0.2
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrea Arcangeli <aarcange@redhat.com>
Cc: Rik van Riel <riel@redhat.com>, Dan Carpenter <error27@gmail.com>,
Izik Eidus <ieidus@redhat.com>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel-janitors@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [patch] ksm: check for ERR_PTR from follow_page()
Date: Wed, 21 Apr 2010 22:53:05 +0200 [thread overview]
Message-ID: <20100421205305.GO20640@cmpxchg.org> (raw)
In-Reply-To: <20100421174615.GO32034@random.random>
On Wed, Apr 21, 2010 at 07:46:15PM +0200, Andrea Arcangeli wrote:
> On Wed, Apr 21, 2010 at 11:24:24AM -0400, Rik van Riel wrote:
> > On 04/21/2010 06:27 AM, Dan Carpenter wrote:
> > > The follow_page() function can potentially return -EFAULT so I added
> > > checks for this.
> > >
> > > Also I silenced an uninitialized variable warning on my version of gcc
> > > (version 4.3.2).
> > >
> > > Signed-off-by: Dan Carpenter<error27@gmail.com>
> >
> > Acked-by: Rik van Riel <riel@redhat.com>
>
> while (!(page = follow_page(vma, start, foll_flags)))
> {
>
> gup only checks for null, so when exactly is follow_page going to
> return -EFAULT? It's not immediately clear.
Check below that loop. If it returns non-null, the first check is
whether it IS_ERR().
How about the below?
Hannes
---
From: Johannes Weiner <hannes@cmpxchg.org>
Subject: mm: document follow_page()
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
---
mm/memory.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/mm/memory.c b/mm/memory.c
index 833952d..119b7cc 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1227,8 +1227,17 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
}
EXPORT_SYMBOL_GPL(zap_vma_ptes);
-/*
- * Do a quick page-table lookup for a single page.
+/**
+ * follow_page - look up a page descriptor from a user-virtual address
+ * @vma: vm_area_struct mapping @address
+ * @address: virtual address to look up
+ * @flags: flags modifying lookup behaviour
+ *
+ * @flags can have FOLL_ flags set, defined in <linux/mm.h>
+ *
+ * Returns the mapped (struct page *), %NULL if no mapping exists, or
+ * an error pointer if there is a mapping to something not represented
+ * by a page descriptor (see also vm_normal_page()).
*/
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int flags)
--
1.7.0.2
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrea Arcangeli <aarcange@redhat.com>
Cc: Rik van Riel <riel@redhat.com>, Dan Carpenter <error27@gmail.com>,
Izik Eidus <ieidus@redhat.com>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel-janitors@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [patch] ksm: check for ERR_PTR from follow_page()
Date: Wed, 21 Apr 2010 22:53:05 +0200 [thread overview]
Message-ID: <20100421205305.GO20640@cmpxchg.org> (raw)
In-Reply-To: <20100421174615.GO32034@random.random>
On Wed, Apr 21, 2010 at 07:46:15PM +0200, Andrea Arcangeli wrote:
> On Wed, Apr 21, 2010 at 11:24:24AM -0400, Rik van Riel wrote:
> > On 04/21/2010 06:27 AM, Dan Carpenter wrote:
> > > The follow_page() function can potentially return -EFAULT so I added
> > > checks for this.
> > >
> > > Also I silenced an uninitialized variable warning on my version of gcc
> > > (version 4.3.2).
> > >
> > > Signed-off-by: Dan Carpenter<error27@gmail.com>
> >
> > Acked-by: Rik van Riel <riel@redhat.com>
>
> while (!(page = follow_page(vma, start, foll_flags)))
> {
>
> gup only checks for null, so when exactly is follow_page going to
> return -EFAULT? It's not immediately clear.
Check below that loop. If it returns non-null, the first check is
whether it IS_ERR().
How about the below?
Hannes
---
From: Johannes Weiner <hannes@cmpxchg.org>
Subject: mm: document follow_page()
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
---
mm/memory.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/mm/memory.c b/mm/memory.c
index 833952d..119b7cc 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1227,8 +1227,17 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
}
EXPORT_SYMBOL_GPL(zap_vma_ptes);
-/*
- * Do a quick page-table lookup for a single page.
+/**
+ * follow_page - look up a page descriptor from a user-virtual address
+ * @vma: vm_area_struct mapping @address
+ * @address: virtual address to look up
+ * @flags: flags modifying lookup behaviour
+ *
+ * @flags can have FOLL_ flags set, defined in <linux/mm.h>
+ *
+ * Returns the mapped (struct page *), %NULL if no mapping exists, or
+ * an error pointer if there is a mapping to something not represented
+ * by a page descriptor (see also vm_normal_page()).
*/
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int flags)
--
1.7.0.2
--
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:[~2010-04-21 20:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-21 10:27 [patch] ksm: check for ERR_PTR from follow_page() Dan Carpenter
2010-04-21 10:27 ` Dan Carpenter
2010-04-21 10:27 ` Dan Carpenter
2010-04-21 15:24 ` Rik van Riel
2010-04-21 15:24 ` Rik van Riel
2010-04-21 15:24 ` Rik van Riel
2010-04-21 17:46 ` Andrea Arcangeli
2010-04-21 17:46 ` Andrea Arcangeli
2010-04-21 17:46 ` Andrea Arcangeli
2010-04-21 20:53 ` Johannes Weiner [this message]
2010-04-21 20:53 ` Johannes Weiner
2010-04-21 20:53 ` Johannes Weiner
2010-04-21 20:58 ` Andrea Arcangeli
2010-04-21 20:58 ` Andrea Arcangeli
2010-04-21 20:58 ` Andrea Arcangeli
2010-04-21 21:10 ` Johannes Weiner
2010-04-21 21:10 ` Johannes Weiner
2010-04-21 21:10 ` Johannes Weiner
2010-04-21 23:51 ` Izik Eidus
2010-04-21 23:51 ` Izik Eidus
2010-04-21 23:51 ` Izik Eidus
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=20100421205305.GO20640@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=error27@gmail.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=ieidus@redhat.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@redhat.com \
/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.