Loading arch/x86/mm/pageattr_64.c +7 −2 Original line number Original line Diff line number Diff line Loading @@ -230,9 +230,14 @@ void global_flush_tlb(void) struct page *pg, *next; struct page *pg, *next; struct list_head l; struct list_head l; down_read(&init_mm.mmap_sem); /* * Write-protect the semaphore, to exclude two contexts * doing a list_replace_init() call in parallel and to * exclude new additions to the deferred_pages list: */ down_write(&init_mm.mmap_sem); list_replace_init(&deferred_pages, &l); list_replace_init(&deferred_pages, &l); up_read(&init_mm.mmap_sem); up_write(&init_mm.mmap_sem); flush_map(&l); flush_map(&l); Loading Loading
arch/x86/mm/pageattr_64.c +7 −2 Original line number Original line Diff line number Diff line Loading @@ -230,9 +230,14 @@ void global_flush_tlb(void) struct page *pg, *next; struct page *pg, *next; struct list_head l; struct list_head l; down_read(&init_mm.mmap_sem); /* * Write-protect the semaphore, to exclude two contexts * doing a list_replace_init() call in parallel and to * exclude new additions to the deferred_pages list: */ down_write(&init_mm.mmap_sem); list_replace_init(&deferred_pages, &l); list_replace_init(&deferred_pages, &l); up_read(&init_mm.mmap_sem); up_write(&init_mm.mmap_sem); flush_map(&l); flush_map(&l); Loading