]> err.no Git - linux-2.6/commit
[PATCH] mm: compound release fix
authorNick Piggin <npiggin@suse.de>
Tue, 7 Feb 2006 20:58:52 +0000 (12:58 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 8 Feb 2006 00:12:33 +0000 (16:12 -0800)
commit8519fb30e438f8088b71a94a7d5a660a814d3872
tree8d29a7b1fa33e5f65e649d363cfa10e83c4fab97
parent99f6d61bda82d09b2d94414d413d39f66a0b7da2
[PATCH] mm: compound release fix

Compound pages on SMP systems can now often be freed from pagetables via
the release_pages path.  This uses put_page_testzero which does not handle
compound pages at all.  Releasing constituent pages from process mappings
decrements their count to a large negative number and leaks the reference
at the head page - net result is a memory leak.

The problem was hidden because the debug check in put_page_testzero itself
actually did take compound pages into consideration.

Fix the bug and the debug check.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Acked-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
include/linux/mm.h
mm/swap.c