mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
hugetlb, mbind: fall back to default policy if vma is NULL
Dan Carpenter has noticed that mbind migration callback (new_page) can get a NULL vma pointer and choke on it inside alloc_huge_page_vma which relies on the VMA to get the hstate. We used to BUG_ON this case but the BUG_+ON has been removed recently by "hugetlb, mempolicy: fix the mbind hugetlb migration". The proper way to handle this is to get the hstate from the migrated page and rely on huge_node (resp. get_vma_policy) do the right thing with null VMA. We are currently falling back to the default mempolicy in that case which is in line what THP path is doing here. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Michal Hocko <[email protected]> Reported-by: Dan Carpenter <[email protected]> Cc: Naoya Horiguchi <[email protected]> Cc: Mike Kravetz <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
ebd6372358
commit
389c8178d0
3 changed files with 7 additions and 6 deletions
|
|
@ -1121,7 +1121,8 @@ static struct page *new_page(struct page *page, unsigned long start, int **x)
|
|||
}
|
||||
|
||||
if (PageHuge(page)) {
|
||||
return alloc_huge_page_vma(vma, address);
|
||||
return alloc_huge_page_vma(page_hstate(compound_head(page)),
|
||||
vma, address);
|
||||
} else if (thp_migration_supported() && PageTransHuge(page)) {
|
||||
struct page *thp;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue