diff --git a/[refs] b/[refs] index 77e80da1f4e8..e3469214ea2f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d2e626f45cc450c00f5f98a89b8b4c4ac3c9bf5f +refs/heads/master: 1c17f4d615f34a4ecfcf9132d643126b226f5e79 diff --git a/trunk/arch/x86/mm/ioremap_64.c b/trunk/arch/x86/mm/ioremap_64.c index 2815ab60009b..0a05f024dc22 100644 --- a/trunk/arch/x86/mm/ioremap_64.c +++ b/trunk/arch/x86/mm/ioremap_64.c @@ -41,7 +41,14 @@ ioremap_change_attr(unsigned long phys_addr, unsigned long size, if (phys_addr + size - 1 < (end_pfn_map << PAGE_SHIFT)) { unsigned long npages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; unsigned long vaddr = (unsigned long) __va(phys_addr); + int level; + /* + * If there is no identity map for this address, + * change_page_attr_addr is unnecessary + */ + if (!lookup_address(vaddr, &level)) + return err; /* * Must use a address here and not struct page because the phys addr * can be a in hole between nodes and not have an memmap entry.