kexec: set KEXEC_TYPE_CRASH before sanity_check_segment_list()
authorXunlei Pang <xlpang@redhat.com>
Wed, 20 Jan 2016 23:00:31 +0000 (15:00 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 21 Jan 2016 01:09:18 +0000 (17:09 -0800)
sanity_check_segment_list() checks KEXEC_TYPE_CRASH flag to ensure all the
segments of the loaded crash kernel are within the kernel crash resource
limits, so set the flag beforehand.

Signed-off-by: Xunlei Pang <xlpang@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Acked-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/kexec.c

index d873b64fbddcdd9e1666738f2b6192c6c5dc0029..ee70aef5cd81dfb7ee5c4397b91810b0109a58b8 100644 (file)
@@ -63,16 +63,16 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry,
        if (ret)
                goto out_free_image;
 
-       ret = sanity_check_segment_list(image);
-       if (ret)
-               goto out_free_image;
-
-        /* Enable the special crash kernel control page allocation policy. */
        if (kexec_on_panic) {
+               /* Enable special crash kernel control page alloc policy. */
                image->control_page = crashk_res.start;
                image->type = KEXEC_TYPE_CRASH;
        }
 
+       ret = sanity_check_segment_list(image);
+       if (ret)
+               goto out_free_image;
+
        /*
         * Find a location for the control code buffer, and add it
         * the vector of segments so that it's pages will also be