Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 266b9f87 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar
Browse files

x86: fix ioremap RAM check



Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 950f9d95
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -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);