2004-10-19 01:10:32

by Zhang, Yanmin

[permalink] [raw]
Subject:

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>>


Attachments:
case.tar (10.00 kB)
case.tar
hugetlb_unmapped_area_2.6.9_rc4_i386.patch.diff (5.69 kB)
hugetlb_unmapped_area_2.6.9_rc4_i386.patch.diff
Download all attachments