Loading arch/x86/mm/ioremap.c +6 −8 Original line number Diff line number Diff line Loading @@ -114,9 +114,8 @@ static int ioremap_change_attr(unsigned long paddr, unsigned long size, static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, enum ioremap_mode mode) { void __iomem *addr; unsigned long pfn, offset, last_addr, vaddr; struct vm_struct *area; unsigned long pfn, offset, last_addr; pgprot_t prot; /* Don't allow wraparound or zero size */ Loading Loading @@ -164,19 +163,18 @@ static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, if (!area) return NULL; area->phys_addr = phys_addr; addr = (void __iomem *) area->addr; if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, phys_addr, prot)) { remove_vm_area((void *)(PAGE_MASK & (unsigned long) addr)); vaddr = (unsigned long) area->addr; if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { remove_vm_area((void *)(vaddr & PAGE_MASK)); return NULL; } if (ioremap_change_attr(phys_addr, size, mode) < 0) { vunmap(addr); vunmap(area->addr); return NULL; } return (void __iomem *) (offset + (char __iomem *)addr); return (void __iomem *) (vaddr + offset); } /** Loading Loading
arch/x86/mm/ioremap.c +6 −8 Original line number Diff line number Diff line Loading @@ -114,9 +114,8 @@ static int ioremap_change_attr(unsigned long paddr, unsigned long size, static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, enum ioremap_mode mode) { void __iomem *addr; unsigned long pfn, offset, last_addr, vaddr; struct vm_struct *area; unsigned long pfn, offset, last_addr; pgprot_t prot; /* Don't allow wraparound or zero size */ Loading Loading @@ -164,19 +163,18 @@ static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, if (!area) return NULL; area->phys_addr = phys_addr; addr = (void __iomem *) area->addr; if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, phys_addr, prot)) { remove_vm_area((void *)(PAGE_MASK & (unsigned long) addr)); vaddr = (unsigned long) area->addr; if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { remove_vm_area((void *)(vaddr & PAGE_MASK)); return NULL; } if (ioremap_change_attr(phys_addr, size, mode) < 0) { vunmap(addr); vunmap(area->addr); return NULL; } return (void __iomem *) (offset + (char __iomem *)addr); return (void __iomem *) (vaddr + offset); } /** Loading