From 7bca7e34e59e0a219051b1af366de2c818970d35 Mon Sep 17 00:00:00 2001 From: Jonathan Steel Date: Mon, 22 Sep 2008 13:57:45 -0700 Subject: [PATCH] --- yaml --- r: 109941 b: refs/heads/master c: f9092f358bc2ec5367621478811f046f82873376 h: refs/heads/master i: 109939: 7eb79115c8aaa73754b71178bc6702341bfc363b v: v3 --- [refs] | 2 +- trunk/kernel/kexec.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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;