]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'efi-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi...
authorIngo Molnar <mingo@kernel.org>
Tue, 27 Oct 2015 17:40:47 +0000 (18:40 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 27 Oct 2015 17:40:47 +0000 (18:40 +0100)
Pull EFI fix from Matt Fleming:

  - Fix a kernel panic by not passing EFI virtual mapping addresses to
    __pa() in the x86 pageattr code. Since these virtual addreses are
    not part of the direct mapping or kernel text mapping, passing them
    to __pa() will trigger a BUG_ON() when CONFIG_DEBUG_VIRTUAL is
    enabled. (Sai Praneeth Prakhya)

Signed-off-by: Ingo Molnar <mingo@kernel.org>
1  2 
arch/x86/mm/pageattr.c

diff --combined arch/x86/mm/pageattr.c
index 2c44c07923012a58e9f430bf4754910984771556,9abe0c9b1098be7c691d4ca8884463519dd7e041..050a092b8d9a2628c03227d06c4d8a8314d5433a
@@@ -4,6 -4,7 +4,6 @@@
   */
  #include <linux/highmem.h>
  #include <linux/bootmem.h>
 -#include <linux/module.h>
  #include <linux/sched.h>
  #include <linux/mm.h>
  #include <linux/interrupt.h>
@@@ -647,9 -648,12 +647,12 @@@ __split_large_page(struct cpa_data *cpa
        for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc)
                set_pte(&pbase[i], pfn_pte(pfn, canon_pgprot(ref_prot)));
  
-       if (pfn_range_is_mapped(PFN_DOWN(__pa(address)),
-                               PFN_DOWN(__pa(address)) + 1))
-               split_page_count(level);
+       if (virt_addr_valid(address)) {
+               unsigned long pfn = PFN_DOWN(__pa(address));
+               if (pfn_range_is_mapped(pfn, pfn + 1))
+                       split_page_count(level);
+       }
  
        /*
         * Install the new, split up pagetable.