diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-12-17 16:25:48 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-12-17 16:25:56 +0100 |
commit | 0d01792300c4d7425eabac9095c603cdb411d2a5 (patch) | |
tree | 91c84873a7ece09888542d612a928e54c2fba6a3 /include/asm-sparc64/emergency-restart.h | |
parent | da8cadb31b82c9d41fc593c8deab6aa20b162d6b (diff) |
[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 <schwidefsky@de.ibm.com>
Diffstat (limited to 'include/asm-sparc64/emergency-restart.h')
0 files changed, 0 insertions, 0 deletions