if (nr_segments > 0) {
                unsigned long i;
 
-               /* Loading another kernel to reboot into */
-               if ((flags & KEXEC_ON_CRASH) == 0)
-                       result = kimage_alloc_init(&image, entry, nr_segments,
-                                                  segments, flags);
-               /* Loading another kernel to switch to if this one crashes */
-               else if (flags & KEXEC_ON_CRASH) {
-                       /* Free any current crash dump kernel before
+               if (flags & KEXEC_ON_CRASH) {
+                       /*
+                        * Loading another kernel to switch to if this one
+                        * crashes.  Free any current crash dump kernel before
                         * we corrupt it.
                         */
+
                        kimage_free(xchg(&kexec_crash_image, NULL));
                        result = kimage_alloc_init(&image, entry, nr_segments,
                                                   segments, flags);
                        crash_map_reserved_pages();
+               } else {
+                       /* Loading another kernel to reboot into. */
+
+                       result = kimage_alloc_init(&image, entry, nr_segments,
+                                                  segments, flags);
                }
                if (result)
                        goto out;