[PATCH 1/2] ARM: mm: avoid setting nG bit for user mappings that aren't present
Catalin Marinas
catalin.marinas at arm.com
Thu Jul 26 12:49:08 EDT 2012
On Thu, Jul 26, 2012 at 05:01:07PM +0100, Will Deacon wrote:
> Swap entries are encoding in ptes such that !pte_present(pte) and
> pte_file(pte). The remaining bits of the descriptor are used to identify
> the swapfile and offset within it to the swap entry.
>
> When writing such a pte for a user virtual address, set_pte_at
> unconditionally sets the nG bit, which (in the case of LPAE) will
> corrupt the swapfile offset and lead to a BUG:
>
> [ 140.494067] swap_free: Unused swap offset entry 000763b4
> [ 140.509989] BUG: Bad page map in process rs:main Q:Reg pte:0ec76800 pmd:8f92e003
>
> This patch fixes the problem by only setting the nG bit for user
> mappings that are actually present.
>
> Signed-off-by: Will Deacon <will.deacon at arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
More information about the linux-arm-kernel
mailing list