diff options
| -rw-r--r-- | arch/arm/mm/copypage-v6.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c index 27d041574ea7..269ce6913ee9 100644 --- a/arch/arm/mm/copypage-v6.c +++ b/arch/arm/mm/copypage-v6.c | |||
| @@ -22,9 +22,7 @@ | |||
| 22 | #endif | 22 | #endif |
| 23 | 23 | ||
| 24 | #define from_address (0xffff8000) | 24 | #define from_address (0xffff8000) |
| 25 | #define from_pgprot PAGE_KERNEL | ||
| 26 | #define to_address (0xffffc000) | 25 | #define to_address (0xffffc000) |
| 27 | #define to_pgprot PAGE_KERNEL | ||
| 28 | 26 | ||
| 29 | #define TOP_PTE(x) pte_offset_kernel(top_pmd, x) | 27 | #define TOP_PTE(x) pte_offset_kernel(top_pmd, x) |
| 30 | 28 | ||
| @@ -34,7 +32,7 @@ static DEFINE_SPINLOCK(v6_lock); | |||
| 34 | * Copy the user page. No aliasing to deal with so we can just | 32 | * Copy the user page. No aliasing to deal with so we can just |
| 35 | * attack the kernel's existing mapping of these pages. | 33 | * attack the kernel's existing mapping of these pages. |
| 36 | */ | 34 | */ |
| 37 | void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long vaddr) | 35 | static void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long vaddr) |
| 38 | { | 36 | { |
| 39 | copy_page(kto, kfrom); | 37 | copy_page(kto, kfrom); |
| 40 | } | 38 | } |
| @@ -43,7 +41,7 @@ void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long v | |||
| 43 | * Clear the user page. No aliasing to deal with so we can just | 41 | * Clear the user page. No aliasing to deal with so we can just |
| 44 | * attack the kernel's existing mapping of this page. | 42 | * attack the kernel's existing mapping of this page. |
| 45 | */ | 43 | */ |
| 46 | void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr) | 44 | static void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr) |
| 47 | { | 45 | { |
| 48 | clear_page(kaddr); | 46 | clear_page(kaddr); |
| 49 | } | 47 | } |
| @@ -51,7 +49,7 @@ void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr) | |||
| 51 | /* | 49 | /* |
| 52 | * Copy the page, taking account of the cache colour. | 50 | * Copy the page, taking account of the cache colour. |
| 53 | */ | 51 | */ |
| 54 | void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vaddr) | 52 | static void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vaddr) |
| 55 | { | 53 | { |
| 56 | unsigned int offset = CACHE_COLOUR(vaddr); | 54 | unsigned int offset = CACHE_COLOUR(vaddr); |
| 57 | unsigned long from, to; | 55 | unsigned long from, to; |
| @@ -72,8 +70,8 @@ void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vadd | |||
| 72 | */ | 70 | */ |
| 73 | spin_lock(&v6_lock); | 71 | spin_lock(&v6_lock); |
| 74 | 72 | ||
| 75 | set_pte(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, from_pgprot)); | 73 | set_pte(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, PAGE_KERNEL)); |
| 76 | set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, to_pgprot)); | 74 | set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, PAGE_KERNEL)); |
| 77 | 75 | ||
| 78 | from = from_address + (offset << PAGE_SHIFT); | 76 | from = from_address + (offset << PAGE_SHIFT); |
| 79 | to = to_address + (offset << PAGE_SHIFT); | 77 | to = to_address + (offset << PAGE_SHIFT); |
| @@ -91,7 +89,7 @@ void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vadd | |||
| 91 | * so remap the kernel page into the same cache colour as the user | 89 | * so remap the kernel page into the same cache colour as the user |
| 92 | * page. | 90 | * page. |
| 93 | */ | 91 | */ |
| 94 | void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr) | 92 | static void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr) |
| 95 | { | 93 | { |
| 96 | unsigned int offset = CACHE_COLOUR(vaddr); | 94 | unsigned int offset = CACHE_COLOUR(vaddr); |
| 97 | unsigned long to = to_address + (offset << PAGE_SHIFT); | 95 | unsigned long to = to_address + (offset << PAGE_SHIFT); |
| @@ -112,7 +110,7 @@ void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr) | |||
| 112 | */ | 110 | */ |
| 113 | spin_lock(&v6_lock); | 111 | spin_lock(&v6_lock); |
| 114 | 112 | ||
| 115 | set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, to_pgprot)); | 113 | set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, PAGE_KERNEL)); |
| 116 | flush_tlb_kernel_page(to); | 114 | flush_tlb_kernel_page(to); |
| 117 | clear_page((void *)to); | 115 | clear_page((void *)to); |
| 118 | 116 | ||
