Messages in this thread | | | From | Johannes Weiner <> | Subject | bootmem: Double freeing a PFN on nodes spanning other nodes | Date | Sat, 17 May 2008 00:30:55 +0200 |
| |
Hi,
When memory nodes overlap each other, the bootmem allocator is not aware of this and might pass the same page twice to __free_pages_bootmem().
As I traced the code, this should result in bad_page() calls on every boot but noone has yet reported something like this and I am wondering why.
__free_pages_bootmem() boils down to either free_hot_cold_page() or __free_one_page(). Either path should lead to setting the page private or buddy:
free_hot_cold_page() sets ->private to the page block's migratetype (and sets PG_private).
__free_one_page sets ->private to the page's order (and sets PG_private and PG_buddy).
If a page is passed in twice, free_pages_check() should now warn (via bad_page()) on the flags set above.
Am I missing something? Thanks in advance.
Hannes
| |