diff options
author | Yinghai Lu <[email protected]> | 2008-03-24 12:29:45 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2008-03-24 19:22:19 -0700 |
commit | 5a982cbc7b3fe6cf72266f319286f29963c71b9e (patch) | |
tree | 97afbc2ebc81b31ec13e261d0127f5e1639f0e26 /Documentation/filesystems/configfs/configfs_example.c | |
parent | 2875fb65f8e40401c4b781ebc5002df10485f635 (diff) |
mm: fix boundary checking in free_bootmem_core
With numa enabled, some callers could have a range of memory on one node
but try to free that on other node. This can cause some pages to be
freed wrongly.
For example: when we try to allocate 128g boot ram early for
gart/swiotlb, and free that range later so gart/swiotlb can get some
range afterwards.
With this patch, we don't need to care which node holds the range, just
loop to call free_bootmem_node for all online nodes.
This patch makes free_bootmem_core() more robust by trimming the sidx
and eidx according the ram range that the node has.
And make the free_bootmem_core handle this out of range case. We could
use bdata_list to make sure the range can be freed for sure. So next
time, we don't need to loop online nodes and could use free_bootmem
directly.
Signed-off-by: Yinghai Lu <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Yasunori Goto <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Acked-by: Ingo Molnar <[email protected]>
Tested-by: Ingo Molnar <[email protected]>
Cc: Christoph Lameter <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'Documentation/filesystems/configfs/configfs_example.c')
0 files changed, 0 insertions, 0 deletions