diff options
Diffstat (limited to 'mm/highmem.c')
| -rw-r--r-- | mm/highmem.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/mm/highmem.c b/mm/highmem.c index 57d82c6250c..d517cd16a6e 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -94,6 +94,18 @@ static DECLARE_WAIT_QUEUE_HEAD(pkmap_map_wait);  		do { spin_unlock(&kmap_lock); (void)(flags); } while (0)  #endif +struct page *kmap_to_page(void *vaddr) +{ +	unsigned long addr = (unsigned long)vaddr; + +	if (addr >= PKMAP_ADDR(0) && addr <= PKMAP_ADDR(LAST_PKMAP)) { +		int i = (addr - PKMAP_ADDR(0)) >> PAGE_SHIFT; +		return pte_page(pkmap_page_table[i]); +	} + +	return virt_to_page(addr); +} +  static void flush_all_zero_pkmaps(void)  {  	int i;  |