|
@@ -103,28 +103,28 @@ __setup("noexec32=", nonx32_setup);
|
|
|
*/
|
|
|
void sync_global_pgds(unsigned long start, unsigned long end)
|
|
|
{
|
|
|
- unsigned long address;
|
|
|
-
|
|
|
- for (address = start; address <= end; address += PGDIR_SIZE) {
|
|
|
- const pgd_t *pgd_ref = pgd_offset_k(address);
|
|
|
- unsigned long flags;
|
|
|
- struct page *page;
|
|
|
-
|
|
|
- if (pgd_none(*pgd_ref))
|
|
|
- continue;
|
|
|
-
|
|
|
- spin_lock_irqsave(&pgd_lock, flags);
|
|
|
- list_for_each_entry(page, &pgd_list, lru) {
|
|
|
- pgd_t *pgd;
|
|
|
- pgd = (pgd_t *)page_address(page) + pgd_index(address);
|
|
|
- if (pgd_none(*pgd))
|
|
|
- set_pgd(pgd, *pgd_ref);
|
|
|
- else
|
|
|
- BUG_ON(pgd_page_vaddr(*pgd)
|
|
|
- != pgd_page_vaddr(*pgd_ref));
|
|
|
- }
|
|
|
- spin_unlock_irqrestore(&pgd_lock, flags);
|
|
|
- }
|
|
|
+ unsigned long address;
|
|
|
+
|
|
|
+ for (address = start; address <= end; address += PGDIR_SIZE) {
|
|
|
+ const pgd_t *pgd_ref = pgd_offset_k(address);
|
|
|
+ unsigned long flags;
|
|
|
+ struct page *page;
|
|
|
+
|
|
|
+ if (pgd_none(*pgd_ref))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&pgd_lock, flags);
|
|
|
+ list_for_each_entry(page, &pgd_list, lru) {
|
|
|
+ pgd_t *pgd;
|
|
|
+ pgd = (pgd_t *)page_address(page) + pgd_index(address);
|
|
|
+ if (pgd_none(*pgd))
|
|
|
+ set_pgd(pgd, *pgd_ref);
|
|
|
+ else
|
|
|
+ BUG_ON(pgd_page_vaddr(*pgd)
|
|
|
+ != pgd_page_vaddr(*pgd_ref));
|
|
|
+ }
|
|
|
+ spin_unlock_irqrestore(&pgd_lock, flags);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|