diff options
author | Andy Lutomirski <luto@kernel.org> | 2016-07-14 16:22:51 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-07-15 04:26:26 -0400 |
commit | d92fc69ccac4c0a20679fdbdc81b2010685a6f33 (patch) | |
tree | 7d2f143912fd073f8052980205f05c4a2471aa21 /arch/x86/mm | |
parent | 360cb4d15567a7eca07a5f3ade6de308bbfb4e70 (diff) |
x86/mm: Remove kernel_unmap_pages_in_pgd() and efi_cleanup_page_tables()
kernel_unmap_pages_in_pgd() is dangerous: if a PGD entry in
init_mm.pgd were to be cleared, callers would need to ensure that
the pgd entry hadn't been propagated to any other pgd.
Its only caller was efi_cleanup_page_tables(), and that, in turn,
was unused, so just delete both functions. This leaves a couple of
other helpers unused, so delete them, too.
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
Acked-by: Borislav Petkov <bp@suse.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/77ff20fdde3b75cd393be5559ad8218870520248.1468527351.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/pageattr.c | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 26aa487ae4ef..26c93c6e04a0 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -746,18 +746,6 @@ static bool try_to_free_pmd_page(pmd_t *pmd) | |||
746 | return true; | 746 | return true; |
747 | } | 747 | } |
748 | 748 | ||
749 | static bool try_to_free_pud_page(pud_t *pud) | ||
750 | { | ||
751 | int i; | ||
752 | |||
753 | for (i = 0; i < PTRS_PER_PUD; i++) | ||
754 | if (!pud_none(pud[i])) | ||
755 | return false; | ||
756 | |||
757 | free_page((unsigned long)pud); | ||
758 | return true; | ||
759 | } | ||
760 | |||
761 | static bool unmap_pte_range(pmd_t *pmd, unsigned long start, unsigned long end) | 749 | static bool unmap_pte_range(pmd_t *pmd, unsigned long start, unsigned long end) |
762 | { | 750 | { |
763 | pte_t *pte = pte_offset_kernel(pmd, start); | 751 | pte_t *pte = pte_offset_kernel(pmd, start); |
@@ -871,16 +859,6 @@ static void unmap_pud_range(pgd_t *pgd, unsigned long start, unsigned long end) | |||
871 | */ | 859 | */ |
872 | } | 860 | } |
873 | 861 | ||
874 | static void unmap_pgd_range(pgd_t *root, unsigned long addr, unsigned long end) | ||
875 | { | ||
876 | pgd_t *pgd_entry = root + pgd_index(addr); | ||
877 | |||
878 | unmap_pud_range(pgd_entry, addr, end); | ||
879 | |||
880 | if (try_to_free_pud_page((pud_t *)pgd_page_vaddr(*pgd_entry))) | ||
881 | pgd_clear(pgd_entry); | ||
882 | } | ||
883 | |||
884 | static int alloc_pte_page(pmd_t *pmd) | 862 | static int alloc_pte_page(pmd_t *pmd) |
885 | { | 863 | { |
886 | pte_t *pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); | 864 | pte_t *pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); |
@@ -1994,12 +1972,6 @@ out: | |||
1994 | return retval; | 1972 | return retval; |
1995 | } | 1973 | } |
1996 | 1974 | ||
1997 | void kernel_unmap_pages_in_pgd(pgd_t *root, unsigned long address, | ||
1998 | unsigned numpages) | ||
1999 | { | ||
2000 | unmap_pgd_range(root, address, address + (numpages << PAGE_SHIFT)); | ||
2001 | } | ||
2002 | |||
2003 | /* | 1975 | /* |
2004 | * The testcases use internal knowledge of the implementation that shouldn't | 1976 | * The testcases use internal knowledge of the implementation that shouldn't |
2005 | * be exposed to the rest of the kernel. Include these directly here. | 1977 | * be exposed to the rest of the kernel. Include these directly here. |