|
@@ -1013,7 +1013,7 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
|
|
{
|
|
{
|
|
int rc = 0;
|
|
int rc = 0;
|
|
int *result = NULL;
|
|
int *result = NULL;
|
|
- struct page *new_hpage = get_new_page(hpage, private, &result);
|
|
|
|
|
|
+ struct page *new_hpage;
|
|
struct anon_vma *anon_vma = NULL;
|
|
struct anon_vma *anon_vma = NULL;
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -1023,9 +1023,12 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
|
|
* tables or check whether the hugepage is pmd-based or not before
|
|
* tables or check whether the hugepage is pmd-based or not before
|
|
* kicking migration.
|
|
* kicking migration.
|
|
*/
|
|
*/
|
|
- if (!hugepage_migration_support(page_hstate(hpage)))
|
|
|
|
|
|
+ if (!hugepage_migration_support(page_hstate(hpage))) {
|
|
|
|
+ putback_active_hugepage(hpage);
|
|
return -ENOSYS;
|
|
return -ENOSYS;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ new_hpage = get_new_page(hpage, private, &result);
|
|
if (!new_hpage)
|
|
if (!new_hpage)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|