diff options
Diffstat (limited to 'mm/highmem.c')
| -rw-r--r-- | mm/highmem.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/highmem.c b/mm/highmem.c index e16e1523b688..b36b83b920ff 100644 --- a/mm/highmem.c +++ b/mm/highmem.c | |||
| @@ -70,6 +70,7 @@ static DECLARE_WAIT_QUEUE_HEAD(pkmap_map_wait); | |||
| 70 | static void flush_all_zero_pkmaps(void) | 70 | static void flush_all_zero_pkmaps(void) |
| 71 | { | 71 | { |
| 72 | int i; | 72 | int i; |
| 73 | int need_flush = 0; | ||
| 73 | 74 | ||
| 74 | flush_cache_kmaps(); | 75 | flush_cache_kmaps(); |
| 75 | 76 | ||
| @@ -101,8 +102,10 @@ static void flush_all_zero_pkmaps(void) | |||
| 101 | &pkmap_page_table[i]); | 102 | &pkmap_page_table[i]); |
| 102 | 103 | ||
| 103 | set_page_address(page, NULL); | 104 | set_page_address(page, NULL); |
| 105 | need_flush = 1; | ||
| 104 | } | 106 | } |
| 105 | flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); | 107 | if (need_flush) |
| 108 | flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); | ||
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | /** | 111 | /** |
