[PATCH] makedumpfile: Fix the variable pfn_needed leaking
Minfei Huang
mhuang at redhat.com
Tue Nov 11 00:54:39 PST 2014
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;
}
--
1.8.3.1
More information about the kexec
mailing list