* Re: [PATCH] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
2009-12-08 12:19 [PATCH] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable Andi Kleen
@ 2009-12-08 11:26 ` Nick Piggin
2009-12-08 14:03 ` [tip:core/urgent] " tip-bot for Andi Kleen
1 sibling, 0 replies; 3+ messages in thread
From: Nick Piggin @ 2009-12-08 11:26 UTC (permalink / raw)
To: Andi Kleen; +Cc: akpm, linux-kernel, tglx, dvhltc, stable
On Tue, Dec 08, 2009 at 01:19:42PM +0100, Andi Kleen wrote:
> futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
>
> gup() requires mmap_sem, so take it before running it. The
> recent fault_in_user_writeable() didn't do that.
>
> I didn't find a good futex test case, so untested.
>
> Likely a stable candidate.
>
> Cc: npiggin@suse.de
> Cc: tglx@linutronix.de
> Cc: dvhltc@us.ibm.com
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
I agree it should go to .stable.
Acked-by: Nick Piggin <npiggin@suse.de>
> ---
> kernel/futex.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> Index: linux-2.6.32-ak/kernel/futex.c
> ===================================================================
> --- linux-2.6.32-ak.orig/kernel/futex.c
> +++ linux-2.6.32-ak/kernel/futex.c
> @@ -304,8 +304,13 @@ void put_futex_key(int fshared, union fu
> */
> static int fault_in_user_writeable(u32 __user *uaddr)
> {
> - int ret = get_user_pages(current, current->mm, (unsigned long)uaddr,
> + int ret;
> + struct mm_struct *mm = current->mm;
> +
> + down_read(&mm->mmap_sem);
> + ret = get_user_pages(current, mm, (unsigned long)uaddr,
> 1, 1, 0, NULL, NULL);
> + up_read(&mm->mmap_sem);
> return ret < 0 ? ret : 0;
> }
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
@ 2009-12-08 12:19 Andi Kleen
2009-12-08 11:26 ` Nick Piggin
2009-12-08 14:03 ` [tip:core/urgent] " tip-bot for Andi Kleen
0 siblings, 2 replies; 3+ messages in thread
From: Andi Kleen @ 2009-12-08 12:19 UTC (permalink / raw)
To: akpm, linux-kernel, npiggin, tglx, dvhltc; +Cc: stable
futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
gup() requires mmap_sem, so take it before running it. The
recent fault_in_user_writeable() didn't do that.
I didn't find a good futex test case, so untested.
Likely a stable candidate.
Cc: npiggin@suse.de
Cc: tglx@linutronix.de
Cc: dvhltc@us.ibm.com
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
kernel/futex.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Index: linux-2.6.32-ak/kernel/futex.c
===================================================================
--- linux-2.6.32-ak.orig/kernel/futex.c
+++ linux-2.6.32-ak/kernel/futex.c
@@ -304,8 +304,13 @@ void put_futex_key(int fshared, union fu
*/
static int fault_in_user_writeable(u32 __user *uaddr)
{
- int ret = get_user_pages(current, current->mm, (unsigned long)uaddr,
+ int ret;
+ struct mm_struct *mm = current->mm;
+
+ down_read(&mm->mmap_sem);
+ ret = get_user_pages(current, mm, (unsigned long)uaddr,
1, 1, 0, NULL, NULL);
+ up_read(&mm->mmap_sem);
return ret < 0 ? ret : 0;
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tip:core/urgent] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
2009-12-08 12:19 [PATCH] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable Andi Kleen
2009-12-08 11:26 ` Nick Piggin
@ 2009-12-08 14:03 ` tip-bot for Andi Kleen
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Andi Kleen @ 2009-12-08 14:03 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, dvhltc, akpm, hpa, mingo, andi, peterz, npiggin, ak,
tglx
Commit-ID: 722d0172377a5697919b9f7e5beb95165b1dec4e
Gitweb: http://git.kernel.org/tip/722d0172377a5697919b9f7e5beb95165b1dec4e
Author: Andi Kleen <andi@firstfloor.org>
AuthorDate: Tue, 8 Dec 2009 13:19:42 +0100
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Tue, 8 Dec 2009 14:59:36 +0100
futex: Take mmap_sem for get_user_pages in fault_in_user_writeable
get_user_pages() must be called with mmap_sem held.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: stable@kernel.org
Cc: Andrew Morton <akpm@linuxfoundation.org>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Darren Hart <dvhltc@us.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <20091208121942.GA21298@basil.fritz.box>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/futex.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/kernel/futex.c b/kernel/futex.c
index fb65e82..d73ef1f 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -304,8 +304,14 @@ void put_futex_key(int fshared, union futex_key *key)
*/
static int fault_in_user_writeable(u32 __user *uaddr)
{
- int ret = get_user_pages(current, current->mm, (unsigned long)uaddr,
- 1, 1, 0, NULL, NULL);
+ struct mm_struct *mm = current->mm;
+ int ret;
+
+ down_read(&mm->mmap_sem);
+ ret = get_user_pages(current, mm, (unsigned long)uaddr,
+ 1, 1, 0, NULL, NULL);
+ up_read(&mm->mmap_sem);
+
return ret < 0 ? ret : 0;
}
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-12-08 14:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-08 12:19 [PATCH] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable Andi Kleen
2009-12-08 11:26 ` Nick Piggin
2009-12-08 14:03 ` [tip:core/urgent] " tip-bot for Andi Kleen
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.