diff options
Diffstat (limited to 'kernel/kexec.c')
| -rw-r--r-- | kernel/kexec.c | 8 | 
1 files changed, 7 insertions, 1 deletions
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;  | 
