[PATCH] makedumpfile: Fix the variable pfn_needed leaking
"Zhou, Wenjian/周文剑"
zhouwj-fnst at cn.fujitsu.com
Tue Nov 11 01:29:23 PST 2014
On 11/11/2014 04:54 PM, Minfei Huang wrote:
> If the page pfn calculated by read_from_splitblock_table is bigger than
> pfn_needed, the variable pfn_needed will leak.
>
> makedumpfile cannot assign the pfn averagely bacause of condition
> pfn_needed invalid.
>
> Signed-off-by: Minfei Huang<mhuang at redhat.com>
> ---
> makedumpfile.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/makedumpfile.c b/makedumpfile.c
> index 59c4952..8807a90 100644
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -8415,7 +8415,7 @@ calculate_end_pfn_by_splitblock(mdf_pfn_t start_pfn,
> return info->max_mapnr;
>
> mdf_pfn_t end_pfn;
> - long long pfn_needed, offset;
> + long long pfn_needed, offset, per_splitblock_pfn;
> char *splitblock_value_offset;
>
> pfn_needed = info->num_dumpable / info->num_dumpfile;
> @@ -8424,7 +8424,8 @@ calculate_end_pfn_by_splitblock(mdf_pfn_t start_pfn,
> end_pfn = start_pfn;
>
> while (*cur_splitblock_num< splitblock->num&& pfn_needed> 0) {
> - pfn_needed -= read_from_splitblock_table(splitblock_value_offset);
> + per_splitblock_pfn = read_from_splitblock_table(splitblock_value_offset);
> + pfn_needed = pfn_needed< per_splitblock_pfn ? 0 : pfn_needed - per_splitblock_pfn;
> splitblock_value_offset += splitblock->entry_size;
> ++*cur_splitblock_num;
> }
Hello Huang,
Actually, pfn_needed is used to indicate whether the dumpfile have enough pfn or not.
It doesn't matter whether pfn_needed == 0 or pfn_needed < 0.
I know what you want to express. Maybe you can get some useful information at
http://lists.infradead.org/pipermail/kexec/2014-October/012805.html
--
Thanks
Zhou Wenjian
More information about the kexec
mailing list