diff --git a/[refs] b/[refs] index 2cf6a2ec10fe..42dd98dc0497 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 39f00c087d31f668eb6eaf97508af22a32c5b1d9 +refs/heads/master: f9092f358bc2ec5367621478811f046f82873376 diff --git a/trunk/kernel/kexec.c b/trunk/kernel/kexec.c index 59f3f0df35d4..aef265325cd3 100644 --- a/trunk/kernel/kexec.c +++ b/trunk/kernel/kexec.c @@ -753,8 +753,14 @@ static struct page *kimage_alloc_page(struct kimage *image, *old = addr | (*old & ~PAGE_MASK); /* The old page I have found cannot be a - * destination page, so return it. + * destination page, so return it if it's + * gfp_flags honor the ones passed in. */ + if (!(gfp_mask & __GFP_HIGHMEM) && + PageHighMem(old_page)) { + kimage_free_pages(old_page); + continue; + } addr = old_addr; page = old_page; break;