diff options
| -rw-r--r-- | mm/vmalloc.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 7350a124524b..93b2dca2aadb 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
| @@ -2123,7 +2123,6 @@ static inline void set_area_direct_map(const struct vm_struct *area, | |||
| 2123 | /* Handle removing and resetting vm mappings related to the vm_struct. */ | 2123 | /* Handle removing and resetting vm mappings related to the vm_struct. */ |
| 2124 | static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) | 2124 | static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) |
| 2125 | { | 2125 | { |
| 2126 | unsigned long addr = (unsigned long)area->addr; | ||
| 2127 | unsigned long start = ULONG_MAX, end = 0; | 2126 | unsigned long start = ULONG_MAX, end = 0; |
| 2128 | int flush_reset = area->flags & VM_FLUSH_RESET_PERMS; | 2127 | int flush_reset = area->flags & VM_FLUSH_RESET_PERMS; |
| 2129 | int i; | 2128 | int i; |
| @@ -2135,8 +2134,8 @@ static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) | |||
| 2135 | * execute permissions, without leaving a RW+X window. | 2134 | * execute permissions, without leaving a RW+X window. |
| 2136 | */ | 2135 | */ |
| 2137 | if (flush_reset && !IS_ENABLED(CONFIG_ARCH_HAS_SET_DIRECT_MAP)) { | 2136 | if (flush_reset && !IS_ENABLED(CONFIG_ARCH_HAS_SET_DIRECT_MAP)) { |
| 2138 | set_memory_nx(addr, area->nr_pages); | 2137 | set_memory_nx((unsigned long)area->addr, area->nr_pages); |
| 2139 | set_memory_rw(addr, area->nr_pages); | 2138 | set_memory_rw((unsigned long)area->addr, area->nr_pages); |
| 2140 | } | 2139 | } |
| 2141 | 2140 | ||
| 2142 | remove_vm_area(area->addr); | 2141 | remove_vm_area(area->addr); |
| @@ -2160,9 +2159,10 @@ static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) | |||
| 2160 | * the vm_unmap_aliases() flush includes the direct map. | 2159 | * the vm_unmap_aliases() flush includes the direct map. |
| 2161 | */ | 2160 | */ |
| 2162 | for (i = 0; i < area->nr_pages; i++) { | 2161 | for (i = 0; i < area->nr_pages; i++) { |
| 2163 | if (page_address(area->pages[i])) { | 2162 | unsigned long addr = (unsigned long)page_address(area->pages[i]); |
| 2163 | if (addr) { | ||
| 2164 | start = min(addr, start); | 2164 | start = min(addr, start); |
| 2165 | end = max(addr, end); | 2165 | end = max(addr + PAGE_SIZE, end); |
| 2166 | } | 2166 | } |
| 2167 | } | 2167 | } |
| 2168 | 2168 | ||
