Commit 9858db504caedb2424b9a32744c23f9a81ec1731
Committed by
Linus Torvalds
1 parent
dafb13673c
Exists in
master
and in
20 other branches
[PATCH] mm: locks_freed fix
Move the lock debug checks below the page reserved checks. Also, having debug_check_no_locks_freed in kernel_map_pages is wrong. Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 2 changed files with 5 additions and 10 deletions Side-by-side Diff
include/linux/mm.h
... | ... | @@ -1103,12 +1103,7 @@ |
1103 | 1103 | |
1104 | 1104 | #ifndef CONFIG_DEBUG_PAGEALLOC |
1105 | 1105 | static inline void |
1106 | -kernel_map_pages(struct page *page, int numpages, int enable) | |
1107 | -{ | |
1108 | - if (!PageHighMem(page) && !enable) | |
1109 | - debug_check_no_locks_freed(page_address(page), | |
1110 | - numpages * PAGE_SIZE); | |
1111 | -} | |
1106 | +kernel_map_pages(struct page *page, int numpages, int enable) {} | |
1112 | 1107 | #endif |
1113 | 1108 | |
1114 | 1109 | extern struct vm_area_struct *get_gate_vma(struct task_struct *tsk); |
mm/page_alloc.c
... | ... | @@ -495,15 +495,13 @@ |
495 | 495 | int i; |
496 | 496 | int reserved = 0; |
497 | 497 | |
498 | - if (!PageHighMem(page)) | |
499 | - debug_check_no_locks_freed(page_address(page), | |
500 | - PAGE_SIZE<<order); | |
501 | - | |
502 | 498 | for (i = 0 ; i < (1 << order) ; ++i) |
503 | 499 | reserved += free_pages_check(page + i); |
504 | 500 | if (reserved) |
505 | 501 | return; |
506 | 502 | |
503 | + if (!PageHighMem(page)) | |
504 | + debug_check_no_locks_freed(page_address(page),PAGE_SIZE<<order); | |
507 | 505 | arch_free_page(page, order); |
508 | 506 | kernel_map_pages(page, 1 << order, 0); |
509 | 507 | |
... | ... | @@ -787,6 +785,8 @@ |
787 | 785 | if (free_pages_check(page)) |
788 | 786 | return; |
789 | 787 | |
788 | + if (!PageHighMem(page)) | |
789 | + debug_check_no_locks_freed(page_address(page), PAGE_SIZE); | |
790 | 790 | arch_free_page(page, 0); |
791 | 791 | kernel_map_pages(page, 1, 0); |
792 | 792 |