]> git.baikalelectronics.ru Git - kernel.git/commit
mm: highmem: don't treat PKMAP_ADDR(LAST_PKMAP) as a highmem address
authorWill Deacon <will.deacon@arm.com>
Fri, 16 Nov 2012 22:15:00 +0000 (14:15 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 16 Nov 2012 22:33:04 +0000 (14:33 -0800)
commitc02453d320099c24cb8f46b95193c3cb82f31a0d
tree41263d573286cae19d99083d57165ffa0412b9e7
parent4de45f88fae7d44b4211bf92b522386a51e21145
mm: highmem: don't treat PKMAP_ADDR(LAST_PKMAP) as a highmem address

kmap_to_page returns the corresponding struct page for a virtual address
of an arbitrary mapping.  This works by checking whether the address
falls in the pkmap region and using the pkmap page tables instead of the
linear mapping if appropriate.

Unfortunately, the bounds checking means that PKMAP_ADDR(LAST_PKMAP) is
incorrectly treated as a highmem address and we can end up walking off
the end of pkmap_page_table and subsequently passing junk to pte_page.

This patch fixes the bound check to stay within the pkmap tables.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/highmem.c