X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=kernel%2Fkexec.c;h=aef265325cd3596db981ed2515efec42f255804e;hb=8eb88c80d444fd249edaa7d895666cde79e7b3b8;hp=59f3f0df35d4e04365480f5362aac097a236b63d;hpb=3cf430b0636045dc524759a0852293ba037732a7;p=linux-2.6-block.git diff --git a/kernel/kexec.c b/kernel/kexec.c index 59f3f0df35d4..aef265325cd3 100644 --- a/kernel/kexec.c +++ b/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;