2006-11-09 21:27:47

by Aaron Durbin

[permalink] [raw]
Subject: [PATCH] x86_64: Fix partial page check to ensure unusable memory is not being marked usable.

Fix partial page check in e820_register_active_regions to ensure
partial pages are
not being marked as active in the memory pool.

Signed-off-by: Aaron Durbin <[email protected]>

---
This was causing a machine to reboot w/ an area in the e820 that was less
than the page size because the upper address was being use to mark a hole as
active in the memory pool.

arch/x86_64/kernel/e820.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c
index a75c829..855b561 100644
--- a/arch/x86_64/kernel/e820.c
+++ b/arch/x86_64/kernel/e820.c
@@ -278,7 +278,7 @@ e820_register_active_regions(int nid, un
>> PAGE_SHIFT;

/* Skip map entries smaller than a page */
- if (ei_startpfn > ei_endpfn)
+ if (ei_startpfn >= ei_endpfn)
continue;

/* Check if end_pfn_map should be updated */
--
1.4.2.GIT


2006-11-10 09:58:50

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] x86_64: Fix partial page check to ensure unusable memory is not being marked usable.

On Thursday 09 November 2006 22:27, Aaron Durbin wrote:
> Fix partial page check in e820_register_active_regions to ensure
> partial pages are
> not being marked as active in the memory pool.

Added thanks.

Critical fix for .19 i guess

-Andi

2006-11-10 10:04:18

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] x86_64: Fix partial page check to ensure unusable memory is not being marked usable.

On Thu, 9 Nov 2006, Aaron Durbin wrote:

> Fix partial page check in e820_register_active_regions to ensure
> partial pages are
> not being marked as active in the memory pool.
>
> Signed-off-by: Aaron Durbin <[email protected]>
>

Acked-by: Mel Gorman <[email protected]>

This bug is in 2.6.19-rc5 and the patch will be needed for 2.6.19.

Thanks Aaron.

> ---
> This was causing a machine to reboot w/ an area in the e820 that was less
> than the page size because the upper address was being use to mark a hole as
> active in the memory pool.
>
> arch/x86_64/kernel/e820.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c
> index a75c829..855b561 100644
> --- a/arch/x86_64/kernel/e820.c
> +++ b/arch/x86_64/kernel/e820.c
> @@ -278,7 +278,7 @@ e820_register_active_regions(int nid, un
> >>
> PAGE_SHIFT;
>
> /* Skip map entries smaller than a page */
> - if (ei_startpfn > ei_endpfn)
> + if (ei_startpfn >= ei_endpfn)
> continue;
>
> /* Check if end_pfn_map should be updated */
> --
> 1.4.2.GIT
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab