All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

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.