In base kernel 2.6.9-rc4, function hugetlb_get_unmapped_area failed to
find an unmapped area while unmapped area is huge. That's because
hugetlb_get_unmapped_area just searches forward from
mm->free_area_cache. If reaching TASK_SIZE, it does not go back to
TASK_UNMAPPED_BASE, just returns -ENOMEM.
The attachment is a simple case to trigger it on IA32 machine.
The other attachment is the patch to fix it.
1) Add a specific hugetlb_get_unmapped_area on i386.
2) Generic hugetlb_get_unmapped_area is also fixed.
Signed-off-by: Zhang Yanmin <[email protected]>
<<case.tar>> <<hugetlb_unmapped_area_2.6.9_rc4_i386.patch.diff>>