| From foo@baz Wed Jan 3 20:37:21 CET 2018 |
| From: Hugh Dickins <hughd@google.com> |
| Date: Sun, 3 Sep 2017 19:23:08 -0700 |
| Subject: kaiser: tidied up kaiser_add/remove_mapping slightly |
| |
| From: Hugh Dickins <hughd@google.com> |
| |
| |
| Yes, unmap_pud_range_nofree()'s declaration ought to be in a |
| header file really, but I'm not sure we want to use it anyway: |
| so for now just declare it inside kaiser_remove_mapping(). |
| And there doesn't seem to be such a thing as unmap_p4d_range(), |
| even in a 5-level paging tree. |
| |
| Signed-off-by: Hugh Dickins <hughd@google.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/mm/kaiser.c | 9 +++------ |
| 1 file changed, 3 insertions(+), 6 deletions(-) |
| |
| --- a/arch/x86/mm/kaiser.c |
| +++ b/arch/x86/mm/kaiser.c |
| @@ -285,8 +285,7 @@ void __init kaiser_init(void) |
| __PAGE_KERNEL); |
| } |
| |
| -extern void unmap_pud_range_nofree(pgd_t *pgd, unsigned long start, unsigned long end); |
| -// add a mapping to the shadow-mapping, and synchronize the mappings |
| +/* Add a mapping to the shadow mapping, and synchronize the mappings */ |
| int kaiser_add_mapping(unsigned long addr, unsigned long size, unsigned long flags) |
| { |
| return kaiser_add_user_map((const void *)addr, size, flags); |
| @@ -294,15 +293,13 @@ int kaiser_add_mapping(unsigned long add |
| |
| void kaiser_remove_mapping(unsigned long start, unsigned long size) |
| { |
| + extern void unmap_pud_range_nofree(pgd_t *pgd, |
| + unsigned long start, unsigned long end); |
| unsigned long end = start + size; |
| unsigned long addr; |
| |
| for (addr = start; addr < end; addr += PGDIR_SIZE) { |
| pgd_t *pgd = native_get_shadow_pgd(pgd_offset_k(addr)); |
| - /* |
| - * unmap_p4d_range() handles > P4D_SIZE unmaps, |
| - * so no need to trim 'end'. |
| - */ |
| unmap_pud_range_nofree(pgd, addr, end); |
| } |
| } |