linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [Patch] mmu_notifiers destroyed by __mmu_notifier_release() retain extra mm_count.
@ 2009-02-05 17:23 Robin Holt
  2009-02-05 19:30 ` Christoph Lameter
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Robin Holt @ 2009-02-05 17:23 UTC (permalink / raw)
  To: linux-mm, Andrea Arcangeli
  Cc: Nick Piggin, Christoph Lameter, Andrew Morton, linux-kernel


An application relying upon mmu_notifier_release for teardown of the
mmu_notifiers will leak mm_structs.  At the do_mmu_notifier_register
increments mm_count, but __mmu_notifier_release() does not decrement it.

Signed-off-by: Robin Holt <holt@sgi.com>
CC: Stable kernel maintainers <stable@vger.kernel.org>

---

I detected this while running a 2.6.27 kernel.  Could this get added to
the stable trees when accepted as well?  It does cause a denial of
service with OOM.

 mm/mmu_notifier.c |    1 +
 1 file changed, 1 insertion(+)

Index: linux-2.6.27/mm/mmu_notifier.c
===================================================================
--- linux-2.6.27.orig/mm/mmu_notifier.c	2008-10-09 17:13:53.000000000 -0500
+++ linux-2.6.27/mm/mmu_notifier.c	2009-02-05 10:55:07.076561592 -0600
@@ -61,6 +61,7 @@ void __mmu_notifier_release(struct mm_st
 		if (mn->ops->release)
 			mn->ops->release(mn, mm);
 		rcu_read_unlock();
+		mmdrop(mm);	/* matches do_mmu_notifier_register's inc */
 		spin_lock(&mm->mmu_notifier_mm->lock);
 	}
 	spin_unlock(&mm->mmu_notifier_mm->lock);

--
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>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-02-06 16:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-05 17:23 [Patch] mmu_notifiers destroyed by __mmu_notifier_release() retain extra mm_count Robin Holt
2009-02-05 19:30 ` Christoph Lameter
2009-02-05 20:02   ` Robin Holt
2009-02-05 23:54     ` Christoph Lameter
2009-02-06  1:38       ` Andrea Arcangeli
2009-02-06  1:44         ` Andrea Arcangeli
2009-02-06 12:58           ` Robin Holt
2009-02-06 16:56             ` Andrea Arcangeli
2009-02-05 21:20 ` Andrea Arcangeli
2009-02-05 22:25 ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox