2015-12-02 08:41:01

by Xunlei Pang

[permalink] [raw]
Subject: [PATCH v2] kexec: Set KEXEC_TYPE_CRASH before sanity_check_segment_list()

sanity_check_segment_list() checks KEXEC_TYPE_CRASH flag to ensure
all the segments of the loaded crash kernel are winthin the kernel
crash resource limits, so set the flag beforehand.

Signed-off-by: Xunlei Pang <[email protected]>
Acked-by: Dave Young <[email protected]>
---
v1 -> v2:
Improved some comments.

kernel/kexec.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/kernel/kexec.c b/kernel/kexec.c
index d873b64..ee70aef 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -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
--
2.5.0


2015-12-11 02:59:51

by Baoquan He

[permalink] [raw]
Subject: Re: [PATCH v2] kexec: Set KEXEC_TYPE_CRASH before sanity_check_segment_list()

On 12/02/15 at 04:39pm, Xunlei Pang wrote:
> sanity_check_segment_list() checks KEXEC_TYPE_CRASH flag to ensure
> all the segments of the loaded crash kernel are winthin the kernel
> crash resource limits, so set the flag beforehand.
>
> Signed-off-by: Xunlei Pang <[email protected]>
> Acked-by: Dave Young <[email protected]>
> ---
> v1 -> v2:
> Improved some comments.
>
> kernel/kexec.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/kexec.c b/kernel/kexec.c
> index d873b64..ee70aef 100644
> --- a/kernel/kexec.c
> +++ b/kernel/kexec.c
> @@ -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;
> }

Good catch. This is hard to be found because kexec-tools user space
utility has make sure it's well located. It must be a code reviewing
finding. Ack it.

Acked-by: Baoquan He <[email protected]>

Thanks
Baoquan

>
> + 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
> --
> 2.5.0
>
>
> _______________________________________________
> kexec mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/kexec