Skip to content

Commit

Permalink
x86: fix ioremap RAM check
Browse files Browse the repository at this point in the history
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Thomas Gleixner authored and Ingo Molnar committed Jan 30, 2008
1 parent 950f9d9 commit 266b9f8
Showing 1 changed file with 4 additions and 13 deletions.
17 changes: 4 additions & 13 deletions arch/x86/mm/ioremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
return NULL;
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);

Expand Down

0 comments on commit 266b9f8

Please sign in to comment.