|
@@ -57,12 +57,17 @@ static void load_segments(void)
|
|
|
static void machine_kexec_free_page_tables(struct kimage *image)
|
|
|
{
|
|
|
free_page((unsigned long)image->arch.pgd);
|
|
|
+ image->arch.pgd = NULL;
|
|
|
#ifdef CONFIG_X86_PAE
|
|
|
free_page((unsigned long)image->arch.pmd0);
|
|
|
+ image->arch.pmd0 = NULL;
|
|
|
free_page((unsigned long)image->arch.pmd1);
|
|
|
+ image->arch.pmd1 = NULL;
|
|
|
#endif
|
|
|
free_page((unsigned long)image->arch.pte0);
|
|
|
+ image->arch.pte0 = NULL;
|
|
|
free_page((unsigned long)image->arch.pte1);
|
|
|
+ image->arch.pte1 = NULL;
|
|
|
}
|
|
|
|
|
|
static int machine_kexec_alloc_page_tables(struct kimage *image)
|
|
@@ -79,7 +84,6 @@ static int machine_kexec_alloc_page_tables(struct kimage *image)
|
|
|
!image->arch.pmd0 || !image->arch.pmd1 ||
|
|
|
#endif
|
|
|
!image->arch.pte0 || !image->arch.pte1) {
|
|
|
- machine_kexec_free_page_tables(image);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
return 0;
|