kexec-tools/kexec-tools-2.0.4-makedumpfile-Use-divideup-to-calculate-maximum-required-bit.patch

45 lines
1.9 KiB
Diff
Raw Normal View History

From f8c8218856effc43ea01cd9394761cfb8aeaa8df Mon Sep 17 00:00:00 2001
Message-Id: <f8c8218856effc43ea01cd9394761cfb8aeaa8df.1382423400.git.bhe@redhat.com>
In-Reply-To: <a785fa7dd7a7bd7dcbb017d0bea8848243b0924f.1382423400.git.bhe@redhat.com>
References: <a785fa7dd7a7bd7dcbb017d0bea8848243b0924f.1382423400.git.bhe@redhat.com>
From: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Date: Thu, 12 Sep 2013 13:19:00 +0900
Subject: [PATCH 2/2] [PATCH] Use divideup() to calculate maximum required
bitmap size.
Currently, check_cyclic_buffer_overrun() wrongly calculates maximum
bitmap size required to represent maximum block size managed by buddy
allocator with roundup(). Then, max_block_size is BITPERBYTE-time
larger than its correct size. As a result, although the bug never
affect free-page filtering since roundup(max_order_nr_pages,
BITPERBYTE) is a multiple of divideup(max_order_nr_pages, BITPERBYTE),
the following sanity check, (max_block_size > info->bufsize_cyclic),
and recalculation of info->bufsize_cyclic becomes BITPERBYTE-time
conservative and inefficient.
Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
---
makedumpfile.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/makedumpfile-1.5.4/makedumpfile.c b/makedumpfile-1.5.4/makedumpfile.c
index 164b3f1..1718f88 100644
--- a/makedumpfile-1.5.4/makedumpfile.c
+++ b/makedumpfile-1.5.4/makedumpfile.c
@@ -4078,10 +4078,9 @@ check_cyclic_buffer_overrun(void)
{
int max_order = ARRAY_LENGTH(zone.free_area);
int max_order_nr_pages = 1 << (max_order - 1);
- unsigned long max_block_size = roundup(max_order_nr_pages, BITPERBYTE);
+ unsigned long max_block_size = divideup(max_order_nr_pages, BITPERBYTE);
- if (info->bufsize_cyclic %
- roundup(max_order_nr_pages, BITPERBYTE)) {
+ if (info->bufsize_cyclic % max_block_size) {
unsigned long bufsize;
if (max_block_size > info->bufsize_cyclic) {
--
1.8.3.1