提交 266b9f87 编写于 作者: T Thomas Gleixner 提交者: Ingo Molnar

x86: fix ioremap RAM check

Signed-off-by: NIngo Molnar <mingo@elte.hu>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 950f9d95
......@@ -125,23 +125,14 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
if (phys_addr >= ISA_START_ADDRESS && last_addr < ISA_END_ADDRESS)
return (__force void __iomem *)phys_to_virt(phys_addr);
#ifdef CONFIG_X86_32
/*
* Don't allow anybody to remap normal RAM that we're using..
*/
if (phys_addr <= virt_to_phys(high_memory - 1)) {
char *t_addr, *t_end;
struct page *page;
t_addr = __va(phys_addr);
t_end = t_addr + (size - 1);
for (page = virt_to_page(t_addr);
page <= virt_to_page(t_end); page++)
if (!PageReserved(page))
for (offset = phys_addr >> PAGE_SHIFT; offset < max_pfn_mapped &&
(offset << PAGE_SHIFT) < last_addr; offset++) {
if (page_is_ram(offset))
return NULL;
}
#endif
pgprot = MAKE_GLOBAL(__PAGE_KERNEL | flags);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册