author | Jonathan Steel
<jon.steel@esentire.com> 2008-09-22 20:57:45 UTC |
committer | Linus Torvalds
<torvalds@linux-foundation.org> 2008-09-23 15:09:14 UTC |
parent | 39f00c087d31f668eb6eaf97508af22a32c5b1d9 |
kernel/kexec.c | +7 | -1 |
diff --git a/kernel/kexec.c b/kernel/kexec.c index 59f3f0df35d..aef265325cd 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;