mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
mm: fix potential infinite loop in dissolve_free_huge_pages()
It is possible for some platforms, such as powerpc to set HPAGE_SHIFT to 0 to indicate huge pages not supported. When this is the case, hugetlbfs could be disabled during boot time: hugetlbfs: disabling because there are no supported hugepage sizes Then in dissolve_free_huge_pages(), order is kept maximum (64 for 64bits), and the for loop below won't end: for (pfn = start_pfn; pfn < end_pfn; pfn += 1 << order) As suggested by Naoya, below fix checks hugepages_supported() before calling dissolve_free_huge_pages(). [[email protected]: no legitimate reason to call dissolve_free_huge_pages() when !hugepages_supported()] Signed-off-by: Li Zhong <[email protected]> Acked-by: Naoya Horiguchi <[email protected]> Acked-by: David Rientjes <[email protected]> Signed-off-by: David Rientjes <[email protected]> Cc: <[email protected]> [3.12+] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
8fe780484d
commit
d017763931
1 changed files with 3 additions and 0 deletions
|
|
@ -1088,6 +1088,9 @@ void dissolve_free_huge_pages(unsigned long start_pfn, unsigned long end_pfn)
|
|||
unsigned long pfn;
|
||||
struct hstate *h;
|
||||
|
||||
if (!hugepages_supported())
|
||||
return;
|
||||
|
||||
/* Set scan step to minimum hugepage size */
|
||||
for_each_hstate(h)
|
||||
if (order > huge_page_order(h))
|
||||
|
|
|
|||
Loading…
Reference in a new issue