From: Martin Schwidefsky Date: Mon, 17 Dec 2007 15:25:48 +0000 (+0100) Subject: [S390] pud_present/pmd_present bug. X-Git-Tag: v2.6.24-rc6~69^2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d01792300c4d7425eabac9095c603cdb411d2a5;p=pandora-kernel.git [S390] pud_present/pmd_present bug. Git commit 3610cce87af0693603db171d5b6f6735f5e3dc5b (yeah my own :-/) introduced a bug in regard to pud/pmd table entries. If the address of the page table refered to by a pud/pmd value happens to have zeroes in the lower 32 bits, pud_present and pmd_present return false. The obvious effect is that this triggers the BUG_ON in exit_mmap because some ptes will not get released on process end. Worse is that the next fault for memory covered by that pud/pmd will allocate another pmd/pte table and populate the pud/pmd entry. The old page table entries hanging below this entry are lost! The fix is simple, properly check against 0. The check is added for pud_none/pmd_none as well even if these two functions work because the invalid bit is in the lower 32 bits. Signed-off-by: Martin Schwidefsky --- Reading git-diff-tree failed